繁体   English   中英

展示隐形父母的孩子

[英]Show children of invisible parents

在我的场景中,我有一个对象图,我将子对象添加到父对象。 但是,当我设置parent.visible = false three.js行为正确并且在层次结构中不显示任何元素。

但对于我的项目,我想要一个不同的行为。 我希望子对象在其可见性为true时显示,即使父对象被隐藏也是true

实现这一目标的最佳方法是什么? 我想到为父对象分配透明材质,但我听说这会在渲染场景时引起问题,应该省略。

看不见的父母的孩子是不可见的。

但是,有一个合理的解决方法:将材料可见性设置为false。

您将需要clone()每个对象的材质,但这没关系,因为对象(在WebGLRenderer的情况下)仍然共享相同的着色器程序。

var material = new THREE.MeshPhongMaterial();

parent = new THREE.Mesh( geometry, material.clone() );
parent.material.visible = false;

child = new THREE.Mesh( geometry, material.clone() );

编辑:根据OP建议(请参阅注释)和最近的拉取请求更新答案。

three.js r.68(CanvasRenderer的CanvasRenderer

另一种解决方法是稍微改变对象关系。

您希望变为透明的节点应该是容器节点,它们具有子节点,但没有可视化表示。 而这个容器的网格是一个具有特殊名称的孩子,比如self或类似的东西。

这样将节点设置为透明是一个将自己的孩子变为透明的功能,但这个没有孩子然后没有问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM