Three.js加载导出的搅拌器模型

时间:2013-05-10 22:40:54

标签: javascript 3d three.js blender

我在blender中做了一个简单的3D模型并将其导出到.obj文件中。现在我使用three.js加载它,我希望名字中有'clickable'字符串的对象在点击时在Y轴上移动。

您可以在此处查看:http://three.parkz.cz/shop.html

问题是从对象名称(我在blender中设置)解析的信息与正确的对象不对应。

加载和解析:

var loader = new THREE.OBJMTLLoader();
loader.addEventListener('load', function(event) {
  object = event.content;
  object.name = 'CustomObjects';
  for(var i = 0; i < object.children.length; i++) {      

    //console.log(object.children[i]);
    var properties = object.children[i].name.split('_');
    if(properties[1] == 'clickable') {
      object.children[i].clickable = true; 
    } else object.children[i].clickable = false;

  }
  object.rotation.x = 0.5;
  object.rotation.y = 0.5;                                  
  scene.add(object);
});
loader.load('shop.obj', 'shop.mtl');

例如,中心的两个立方体(称为“005_kiosek”和“010_kiosek2”)不应该是可点击的,但它们是!您可以打开控制台,点击它后可以看到它们被错误地命名为'004_clickable'和'009_clickable'!

这是我的blender文件:http://three.parkz.cz/shop.blend

在javascript方面是问题还是blender导出错了?

提前谢谢!

马丁

P.S:有人知道为什么这个简单的网格(绿色和蓝色)不能很好地呈现?

1 个答案:

答案 0 :(得分:3)

绿色和蓝色网格未正确渲染,因为在当前实现下,obj加载器仅接受三角形作为面。由于这些网格使用多边形,因此无法正确渲染它们。

至于名称,我会尝试验证我放入blender文件中的内容是否正确。因此,当您加载模型时,只需打印名称及其可单击属性,以查看是否所有内容都是正确的,而不是将其视为理所当然。