在投射Raycast.set()时检测交叉点时遇到问题。当我使用Raycast.setFromCamera()方法时,一切正常。
以下是我的一些代码:
var mesh = 'some mesh';
var raycast = new THREE.Raycaster();
var from = new THREE.Vector3(0, 0, 300);
var to = new THREE.Vector3(0, -100, 300);
raycast.set(from, to);
var intersection = raycast.IntersectObject(mesh);
if(intersection.lenght < 0) {
alert('Intersection!');
}
我做错了吗?光线肯定与网格相交,我也使用ArrowHelper来确保,但是我总是得到0个交叉点。
答案 0 :(得分:1)
是
raycaster.set( origin, direction );
和direction
是Vector3
,必须进行规范化,即长度等于1。
您可以将Vector3
标准化为:
vector.normalize();
three.js r.80