我在 Blender 中模拟了两个对象,具有不同的 Material 和不同的纹理 UV 映射到它们。我用 CanvasRenderer 渲染它
如果我export it ,在生成的 JSON file 中有不止一种 Material 但只有一个网格.
这是我使用 Three.js 加载模型的(简化)代码:
var loader = new THREE.JSONLoader();
loader.load(myModelPath, function {
var material = geometry.materials[0];
material.morphTargets = true;
material.overdraw = true;
var mesh = new THREE.Mesh(geometry, material);
mesh.scale.set(50, 50, 50);
mesh.position.set(0, 0, 0);
scene.add(mesh);
});
如您所见,我只使用了 [0]
Material 。结果是第二个对象使用第一个对象的 Material (如果我使用 [1]
Material ,则相反)。
但我不知道如何创建使用多种 Material 的网格!
有可能吗?或者,有没有办法从 Blender 导出多个 JSON 文件(每个对象一个)?
最佳答案
你知道吗?处理这种情况有一种相对简单的方法。
- 像往常一样在 blender 中建模。
- Save as copy 与您拥有的对象一样多的副本。
- 打开每个副本,删除相关对象以外的所有内容。
现在您有obj1.blend
、obj2.blend
等。 - 在其中的每一个中,随时导出到 three.js。
- 全部载入。在我的代码中,这就像将字符串添加到数组一样简单。
请注意,如果有更直接的方法,我也想知道:)
关于javascript - 在 Three.js 中加载多个 Blender 导出的对象/网格+ Material ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11281814/