Three.js 如何在从OBJLoader加载的obj文件上获得鼠标单击位置?
我使用OBJLoader加载了模型,下面是加载obj文件的代码:Three.js 如何在从OBJLoader加载的obj文件上获得鼠标单击位置?,three.js,webgl,Three.js,Webgl,我使用OBJLoader加载了模型,下面是加载obj文件的代码: var loader = new THREE.OBJLoader(); loader.load('obj/teeth/teeth4_5.obj', function(object) { model = object; scene.add( model ); objects.push( model ); });
var loader = new THREE.OBJLoader();
loader.load('obj/teeth/teeth4_5.obj', function(object) {
model = object;
scene.add( model );
objects.push( model );
});
我试着用raycaster找到交叉点。我在three.js中的canvas_interactive_cubes示例()中实现了我的代码。以下是查找交叉点的代码:
function onDocumentMouseDown( event ){
event.preventDefault();
var mouseX = (event.clientX / window.innerWidth)*2-1;
var mouseY = -(event.clientY /window.innerHeight)*2+1;
var vector = new THREE.Vector3( mouseX, mouseY, 0.5 );
projector.unprojectVector( vector, camera );
var raycaster = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );
var intersects = raycaster.intersectObjects( scene.children );
console.log( intersects[0].point);
}
不幸的是,我无法获得交叉点的x、y、z坐标,无论我在哪里单击,它总是显示“TypeError:intersects[0]未定义”
我被困在这里好几天了。有人能告诉我在加载的obj文件上获取交叉点的方法吗?感谢您的帮助。尝试添加递归标志,如下所示:
var intersects = raycaster.intersectObjects( objects, true );
three.js r.58哇,真管用。。。那太容易了。好像我问了个愚蠢的问题。在一个大的obj文件上找到交集需要很长时间。非常感谢你的回答!!我花了两个小时在这上面。添加
,true
,它就会工作。我从未在我研究过的几个例子中见过它。谢谢