Three.js: 显示/隐藏Object3D?

创建于 2011-06-10  ·  14评论  ·  资料来源: mrdoob/three.js

我试图弄清楚如何随时显示/隐藏Object3D和他的孩子。

  • 具有可见属性?
  • 把它翻译成平淡无奇的东西?
  • 任何想法 ?
Question

最有用的评论

您可以调用
myObj3D.visible = false。 这似乎隐藏了所有属于Object3D的子对象

调用myObj3D.visible = true显示所有内容。

所有14条评论

目前,您可以像这样:

THREE.SceneUtils.traverseHierarchy( object, function ( object ) { object.visible = false; } );

谢谢! 它像一种魅力。

仅供参考-要隐藏myObject3D的所有子代,上面的代码段现在应显示为:

myObject3D.traverse( function ( object ) { object.visible = false; } );

我认为此功能尚未解决。 我想隐藏一个对象(隐藏所有子对象),但是当前的实现方式(遍历)不可行,因为我想保持其子对象的可见状态。 例如,有些孩子是可见的,而另一些则不可见。 隐藏父母应该隐藏所有孩子,但是再次显示应该显示以前可见的孩子。

我同意。 WebGLRenderer需要容纳这一点。 这是我有待完成的事情。

仅供参考:现在,对父母可见的设置也会影响孩子。 (使用r71测试)

使用r72。 设置为“对父母可见”似乎不会影响孩子。 功能是否再次更改?

@agnivade不,它没有改变。 将visiblefalse意味着无论子对象visible如何,对象或其子对象都不是渲染器。 如果将visible设置为true则只有在将其visible设置为true ,子级才会渲染。

谢谢。 然后我的代码一定有问题,将检查。

谢谢

您可以调用
myObj3D.visible = false。 这似乎隐藏了所有属于Object3D的子对象

调用myObj3D.visible = true显示所有内容。

这是一个古老的讨论,但是这里有一个重要的警告,将visible设置为false,“ only”将隐藏对象及其对照相机的子级,但是对于raycaster仍然可见,除非您使用2个不同的层并将它们从该层禁用射线广播者正在观察。 如果要使其完全不可见,则需要在光线投射器使用的层中禁用它们。
我将第0层和第1层用于相机,仅将第0层用于光线投射,因此我可以看到和光线投射对象:
obj.layers.enable(0); obj.visible = true;

可见但不进行射线投射的对象:
obj.layers.disable(0); obj.layers.enable(1); obj.visible = true;

和隐藏且未进行射线投射的对象:
obj.layers.disable(0); obj.layers.enable(1); obj.visible = false;

@ jscastro76您可能对https://github.com/mrdoob/three.js/pull/19012感兴趣

谢谢,我来看看!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

zsitro picture zsitro  ·  3评论

scrubs picture scrubs  ·  3评论

konijn picture konijn  ·  3评论

filharvey picture filharvey  ·  3评论

Bandit picture Bandit  ·  3评论