4

我在搅拌机中做了一个简单的 3d 模型并将其导出到 .obj 文件。现在我正在使用 three.js 加载它,并且我希望名称中包含字符串“可点击”的对象在点击时在 Y 轴上移动。

您可以在这里查看:http: //three.parkz.cz/shop.html

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

加载和解析:

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”!

这是我的搅拌机文件:http ://three.parkz.cz/shop.blend

是javascript方面的问题还是blender导出错误?

先感谢您!

马丁

PS:有谁知道为什么简单的网格(绿色和蓝色)渲染得不好?

4

1 回答 1

4

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

至于名称,我会尝试验证我放入搅拌机文件中的内容是否正确。因此,当您加载模型时,只需打印名称及其可点击属性,以查看是否一切正确,而不是认为它是理所当然的。

于 2013-05-11T12:22:17.347 回答