首页 > 解决方案 > 如何单独访问/更改三个.js 中导入的 gltf 对象的材料?

问题描述

我将一个对象从 Blender 导出到一个 gltf 文件,然后将它导入到我的 three.js 项目中。(包括材料,我一共得到了2个)

let loader = new THREE.GLTFLoader();

loader.load('Objects/MyBox.gltf', (gltf) => {

let box = gltf.scene;

box.traverse((child) => {
                        if (child.isMesh) child.material = boxMaterial; // a material i created in the code earlier
                    });
                    scene.add(box);
                });

此代码导致我导入的对象(它是一个折叠的盒子)在外部和内部具有相同的材料(boxMaterial)。但是当我在 bleder 中创建它时(盒子内部有内部材料,外部有外部材料)我希望它出现在我的 three.js 项目中。我想要的是= boxMaterial(在three.js中创建)只能在外部材料(在搅拌机中创建)。

我的问题是-> 如何告诉/访问我的导入对象的特定导入材料以在 three.js 中具有某种材料?

简而言之:我的“child.material”包含来自搅拌机的我需要的材料。(总共 2 个)但是我如何只访问第一个?

我想我正在寻找 box.children[0].material.. 之类的东西。索引 0 是我的外部材料。

提前致谢!

标签: three.jsblendergltf

解决方案


推荐阅读