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

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

上级 763e9ac0
...@@ -289,33 +289,39 @@ ...@@ -289,33 +289,39 @@
inverseMatrix.getInverse( object.matrixWorld ); inverseMatrix.getInverse( object.matrixWorld );
localRay.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); localRay.copy( raycaster.ray ).applyMatrix4( inverseMatrix );
var vertices = geometry.vertices; /* if ( geometry instanceof THREE.BufferGeometry ) {
var nbVertices = vertices.length;
var interSegment = new THREE.Vector3(); } else */ if ( geometry instanceof THREE.Geometry ) {
var interRay = new THREE.Vector3();
var step = object.type === THREE.LineStrip ? 1 : 2;
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, intersects.push( {
// 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
} ); 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.
先完成此消息的编辑!
想要评论请 注册