1

我在Blender中对两个对象进行了建模,它们具有不同的材质和不同的纹理 UV 映射到它们。我用CanvasRenderer渲染它

如果我导出它,生成的JSON 文件中有不止一种材料,但只有一个网格。

这是我使用 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]材料。结果是第二个对象使用了第一个对象的材质(如果我使用[1]材质,则相反)。

但我不知道如何创建使用多种材料的网格!

甚至可能吗?或者,有没有办法从 Blender 导出多个 JSON 文件(每个对象一个)?

4

3 回答 3

3

你知道吗?有一种相对简单的方法可以处理这样的案例。

  1. 像往常一样在搅拌机中建模。
  2. Save as copy与您拥有的对象一样多的副本。
  3. 打开每个副本,并删除除相关对象之外的所有内容
    现在你有obj1.blend,obj2.blend等。
  4. 在其中的每一个中,随时导出到 three.js。
  5. 全部加载。在我的代码中,这就像将字符串添加到数组一样简单。

请注意,如果有更直接的方法,我也想知道:)

于 2012-07-01T17:00:58.943 回答
1

自从提出这个问题以来,他们可能已经对 json 导出器进行了改进,但现在可以了。在设置下靠近底部的导出选项中,所有网格都有一个复选框。取消选中,仅导出选定的网格。

于 2014-11-25T02:37:14.367 回答
0

您必须使用 THREE.ObjLoader。在搅拌机导出设置中,您可以在导出选项的底部选择场景和材质。瞧

于 2017-09-19T00:43:11.887 回答