在Three.js中加载多个Blender导出的对象/网格物体

时间:2012-07-01 12:06:16

标签: javascript three.js blender material uv-mapping

我在Blender中建模了两个物体,不同的材质和不同的纹理紫外线映射到它们。我用CanvasRenderer

渲染它

如果我export it,则生成的JSON file中只有一个网格,但只有一个网格。

这是我用来加载带有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文件(每个对象一个)?

3 个答案:

答案 0 :(得分:3)

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

  1. 像往常一样在搅拌机中模型。
  2. 另存为副本与您拥有的对象一样多的副本。
  3. 打开每个副本,删除除相关对象以外的所有内容 现在您有obj1.blendobj2.blend
  4. 在每一项中,当你去的时候导出到three.js.
  5. 全部加载。在我的代码中,这就像向数组中添加字符串一样简单。
  6. 请注意,如果有更直接的方式,我也想知道:)

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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