Three.js模型隱藏或顯示


你在使用Three.js開發項目的過程中,可能需要隱藏一個模型,或者一個模型處於隱藏狀態,又希望讓它顯示出來,那么你可以繼續閱讀下去。

材質屬性.visible
查看Three.js文檔的基類Material,可以知道材質屬性.visible的作用就是控制綁定該材質的模型對象是否可見,默認值是true,LineBasicMaterial、SpriteMaterial、MeshBasicMaterial等材質都會繼承基類Material的可見性.visible屬性,也就是說無論點模型Points、線模型Line或網格模型Mesh默認都是可見的。如果想隱藏一個模型可以設置該模型材質的.visible屬性值為true。

// 隱藏網格模型mesh,visible的默認值是true
mesh.material.visible =false
1
2
// 使網格模型mesh處於顯示狀態
mesh.material.visible =true
1
2
隱藏一個層級模型
如果一個模型對象包含了多個網格模型Mesh,嵌套了很多層,形成了一個樹結構,只有根部節點是網格模型Mesh,中間節點都是組對象Group或Object3D對象。如果你想通過控制材質的.visible屬性批量隱藏該模型對象下的所有網格模型Mesh,首先需要做的就是要遞歸遍歷樹結構找到所有的網格模型Mesh,然后把所有網格模型Mesh材質的.visible屬性設置為false。

通過對象的.traverse(http://www.my516.com)方法遞歸遍歷一個模型,然后通過對象的類型屬性.type判斷該對象是不是網格模型對象Mesh,如果是的話執行obj.material.visible =false。

modelObject.traverse(function(obj) {
if (obj.type === "Mesh") {
obj.material.visible =false
}
})
1
2
3
4
5
屬性.visible本質
如果你有興趣了解Three.js底層知識,可以閱讀這段話,根據提示深入研究,如果沒有興趣,可以跳過,只要會使用.visible就可以了。

Three.js的WebGL渲染器WebGLRenderer在渲染一個點Points、線Line、網格Mesh等模型對象的時候,會判斷它綁定材質的.visible屬性值,如果一個模型綁定材質的.visible屬性是false,該模型就不會被渲染,具體可以閱讀src目錄下的WebGLRenderer.js源碼。
--------------------- 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM