我有一个对象,我已添加到我的场景中。我在场景中也有各种其他立方体。我使用以下代码来发射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 );
感谢您的帮助!
答案 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的人。 不确定这是否是一个错误