举荐:将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, });}
});