首页 > 其他分享 >simpread-(128 条消息) Three.js 模型隐藏或显示_郭隆邦技术博客的博客 - CSDN 博客_threejs 隐藏模型

simpread-(128 条消息) Three.js 模型隐藏或显示_郭隆邦技术博客的博客 - CSDN 博客_threejs 隐藏模型

时间:2022-11-11 09:35:00浏览次数:68  
标签:模型 网格 博客 js visible Mesh 材质 隐藏

Three.js 模型隐藏或显示

材质属性.visible

查看 Three.js 文档的基类Material,可以知道材质属性.visible的作用就是控制绑定该材质的模型对象是否可见,默认值是trueLineBasicMaterialSpriteMaterialMeshBasicMaterial等材质都会继承基类Material的可见性.visible属性,也就是说无论点模型Points、线模型Line或网格模型Mesh默认都是可见的。如果想隐藏一个模型可以设置该模型材质的.visible属性值为true

// 隐藏网格模型mesh,visible的默认值是true
mesh.material.visible =false
// 使网格模型mesh处于显示状态
mesh.material.visible =true

隐藏一个层级模型

如果一个模型对象包含了多个网格模型Mesh,嵌套了很多层,形成了一个树结构,只有根部节点是网格模型Mesh,中间节点都是组对象GroupObject3D对象。如果你想通过控制材质的.visible属性批量隐藏该模型对象下的所有网格模型Mesh,首先需要做的就是要递归遍历树结构找到所有的网格模型Mesh,然后把所有网格模型Mesh材质的.visible属性设置为false

通过对象的.traverse()方法递归遍历一个模型,然后通过对象的类型属性.type判断该对象是不是网格模型对象Mesh,如果是的话执行obj.material.visible =false

modelObject.traverse(function(obj) {
  if (obj.type === "Mesh") {
    obj.material.visible =false
  }
})

属性.visible本质

如果你有兴趣了解 Three.js 底层知识,可以阅读这段话,根据提示深入研究,如果没有兴趣,可以跳过,只要会使用.visible就可以了。

Three.js 的 WebGL 渲染器WebGLRenderer在渲染一个点Points、线Line、网格Mesh等模型对象的时候,会判断它绑定材质的.visible属性值,如果一个模型绑定材质的.visible属性是false,该模型就不会被渲染,具体可以阅读 src 目录下的WebGLRenderer.js源码。

原文地址 blog.csdn.net

标签:模型,网格,博客,js,visible,Mesh,材质,隐藏
From: https://www.cnblogs.com/zhuoss/p/16879554.html

相关文章