关于编辑器: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,
    });
}

});

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理