intersectObjects不从OBJMTLLoader返回obj

时间:2015-03-02 23:12:42

标签: javascript three.js

我有一个对象,我已添加到我的场景中。我在场景中也有各种其他立方体。我使用以下代码来发射Ray并查看是否可以检测到碰撞:

var ray = new THREE.Raycaster(camera.position, vec);
var intersects = ray.intersectObjects( scene.children ); 

由于某种原因,检测到常规形状(立方体),但是从obj文件加载的对象不是。

var loader = new THREE.OBJMTLLoader();
loader.load( 'models/technicalTable1.obj', 'models/technicalTable1.mtl', function ( obj ) {

    obj.scale.set(0.4, 0.4, 0.4);
    obj.position.x = - roomWidth/2 + 100;
    obj.position.y = 36;
    obj.position.z = - roomLength/2 + 25;

    scene.add( obj );

}, onProgress, onError );

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您需要将递归标记传递给Raycaster.intersectObjects()

var intersects = ray.intersectObjects( scene.children, true ); 

three.js r.70

答案 1 :(得分:-1)

它不起作用,因为OBJMTLLoader创建了一个Three.Group 该组没有raycaster.intersectObjects (我刚刚完成了追踪,它转到了一个未实现的功能 这真的限制了OBJ对象的使用。 我已经尝试过JSON,但由于你无法加载材料并且必须创建UVmap,我发现我需要一个可以3D模型或不能使用intersectObjects的人。 不确定这是否是一个错误