提交 73915e8a 编写于 作者: M Mr.doob

Raycaster: Check that line.geometry is instanceof Geometry. Fixes #3779.

上级 763e9ac0
......@@ -289,33 +289,39 @@
inverseMatrix.getInverse( object.matrixWorld );
localRay.copy( raycaster.ray ).applyMatrix4( inverseMatrix );
var vertices = geometry.vertices;
var nbVertices = vertices.length;
var interSegment = new THREE.Vector3();
var interRay = new THREE.Vector3();
var step = object.type === THREE.LineStrip ? 1 : 2;
/* if ( geometry instanceof THREE.BufferGeometry ) {
} else */ if ( geometry instanceof THREE.Geometry ) {
for ( var i = 0; i < nbVertices - 1; i = i + step ) {
var vertices = geometry.vertices;
var nbVertices = vertices.length;
var interSegment = new THREE.Vector3();
var interRay = new THREE.Vector3();
var step = object.type === THREE.LineStrip ? 1 : 2;
var distSq = localRay.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );
for ( var i = 0; i < nbVertices - 1; i = i + step ) {
if ( distSq > precisionSq ) continue;
var distSq = localRay.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );
var distance = localRay.origin.distanceTo( interRay );
if ( distSq > precisionSq ) continue;
if ( distance < raycaster.near || distance > raycaster.far ) continue;
var distance = localRay.origin.distanceTo( interRay );
intersects.push( {
if ( distance < raycaster.near || distance > raycaster.far ) continue;
distance: distance,
// What do we want? intersection point on the ray or on the segment??
// point: raycaster.ray.at( distance ),
point: interSegment.clone().applyMatrix4( object.matrixWorld ),
face: null,
faceIndex: null,
object: object
intersects.push( {
} );
distance: distance,
// What do we want? intersection point on the ray or on the segment??
// point: raycaster.ray.at( distance ),
point: interSegment.clone().applyMatrix4( object.matrixWorld ),
face: null,
faceIndex: null,
object: object
} );
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册