乐趣区

关于编辑器:Threejs教程递归遍历层级模型修改材质

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

});

退出移动版