[英]Filter for one specific node in JSON, show direct parents and all children
[英]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.