共计 751 个字符,预计需要花费 2 分钟才能阅读完成。
举荐:将 NSDT 场景编辑器退出你的 3D 工具链其余工具集:NSDT 简石数字孪生递归遍历层级模型批改材质加载一个内部模型,比方 gltf 模型,如果你想批量批改每个 Mesh 的材质,一个一个设置比拟麻烦,能够通过递归遍历办法.traverse() 批量操作更加不便。递归遍历办法.traverse() 递归遍历 gltf 所有的模型节点。// 递归遍历所有模型节点批量批改材质
gltf.scene.traverse(function(obj) {
if (obj.isMesh) {// 判断是否是网格模型
console.log('模型节点',obj);
console.log('模型节点名字',obj.name);
}
});
查看 gltf 默认的材质.obj、.gltf、.fbx 等不同格局的模型,threejs 加载默认的材质可能不同,不过也不必刻意记忆,通过浏览器控制台 log 打印即可 console.log(obj.material)。
threejs 解析 gltf 模型默认材质个别是 MeshStandardMaterial 或 MeshPhysicalMaterial,相比拟其它网格材质,这两个材质属于 PBR 物理材质,能够提供更加实在的材质成果 // 递归遍历所有模型节点批量批改材质
gltf.scene.traverse(function(obj) {
if (obj.isMesh) {console.log('gltf 默认材质',obj.material);
}
});
批量批改 gltf 所有 Mesh 的材质 gltf.scene.traverse(function(obj) {
if (obj.isMesh) {
// 从新设置材质
obj.material = new THREE.MeshLambertMaterial({color:0xffffff,});
}
});
正文完