|
@@ -113,12 +113,7 @@ THREE.Projector = function () {
|
|
|
_modelMatrix,
|
|
|
_modelViewProjectionMatrix = new THREE.Matrix4(),
|
|
|
|
|
|
- _normalMatrix = new THREE.Matrix3(),
|
|
|
-
|
|
|
- _frustum = new THREE.Frustum(),
|
|
|
-
|
|
|
- _clippedVertex1PositionScreen = new THREE.Vector4(),
|
|
|
- _clippedVertex2PositionScreen = new THREE.Vector4();
|
|
|
+ _frustum = new THREE.Frustum();
|
|
|
|
|
|
//
|
|
|
|
|
@@ -601,132 +596,8 @@ THREE.Projector = function () {
|
|
|
|
|
|
} else if ( geometry.isGeometry ) {
|
|
|
|
|
|
- var vertices = geometry.vertices;
|
|
|
- var faces = geometry.faces;
|
|
|
- var faceVertexUvs = geometry.faceVertexUvs[ 0 ];
|
|
|
-
|
|
|
- _normalMatrix.getNormalMatrix( _modelMatrix );
|
|
|
-
|
|
|
- var material = object.material;
|
|
|
-
|
|
|
- var isMultiMaterial = Array.isArray( material );
|
|
|
-
|
|
|
- for ( var v = 0, vl = vertices.length; v < vl; v ++ ) {
|
|
|
-
|
|
|
- var vertex = vertices[ v ];
|
|
|
-
|
|
|
- _vector3.copy( vertex );
|
|
|
-
|
|
|
- if ( material.morphTargets === true ) {
|
|
|
-
|
|
|
- var morphTargets = geometry.morphTargets;
|
|
|
- var morphInfluences = object.morphTargetInfluences;
|
|
|
-
|
|
|
- for ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) {
|
|
|
-
|
|
|
- var influence = morphInfluences[ t ];
|
|
|
-
|
|
|
- if ( influence === 0 ) continue;
|
|
|
-
|
|
|
- var target = morphTargets[ t ];
|
|
|
- var targetVertex = target.vertices[ v ];
|
|
|
-
|
|
|
- _vector3.x += ( targetVertex.x - vertex.x ) * influence;
|
|
|
- _vector3.y += ( targetVertex.y - vertex.y ) * influence;
|
|
|
- _vector3.z += ( targetVertex.z - vertex.z ) * influence;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- renderList.pushVertex( _vector3.x, _vector3.y, _vector3.z );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- for ( var f = 0, fl = faces.length; f < fl; f ++ ) {
|
|
|
-
|
|
|
- var face = faces[ f ];
|
|
|
-
|
|
|
- material = isMultiMaterial === true
|
|
|
- ? object.material[ face.materialIndex ]
|
|
|
- : object.material;
|
|
|
-
|
|
|
- if ( material === undefined ) continue;
|
|
|
-
|
|
|
- var side = material.side;
|
|
|
-
|
|
|
- var v1 = _vertexPool[ face.a ];
|
|
|
- var v2 = _vertexPool[ face.b ];
|
|
|
- var v3 = _vertexPool[ face.c ];
|
|
|
-
|
|
|
- if ( renderList.checkTriangleVisibility( v1, v2, v3 ) === false ) continue;
|
|
|
-
|
|
|
- var visible = renderList.checkBackfaceCulling( v1, v2, v3 );
|
|
|
-
|
|
|
- if ( side !== THREE.DoubleSide ) {
|
|
|
-
|
|
|
- if ( side === THREE.FrontSide && visible === false ) continue;
|
|
|
- if ( side === THREE.BackSide && visible === true ) continue;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- _face = getNextFaceInPool();
|
|
|
-
|
|
|
- _face.id = object.id;
|
|
|
- _face.v1.copy( v1 );
|
|
|
- _face.v2.copy( v2 );
|
|
|
- _face.v3.copy( v3 );
|
|
|
-
|
|
|
- _face.normalModel.copy( face.normal );
|
|
|
-
|
|
|
- if ( visible === false && ( side === THREE.BackSide || side === THREE.DoubleSide ) ) {
|
|
|
-
|
|
|
- _face.normalModel.negate();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- _face.normalModel.applyMatrix3( _normalMatrix ).normalize();
|
|
|
-
|
|
|
- var faceVertexNormals = face.vertexNormals;
|
|
|
-
|
|
|
- for ( var n = 0, nl = Math.min( faceVertexNormals.length, 3 ); n < nl; n ++ ) {
|
|
|
-
|
|
|
- var normalModel = _face.vertexNormalsModel[ n ];
|
|
|
- normalModel.copy( faceVertexNormals[ n ] );
|
|
|
-
|
|
|
- if ( visible === false && ( side === THREE.BackSide || side === THREE.DoubleSide ) ) {
|
|
|
-
|
|
|
- normalModel.negate();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- normalModel.applyMatrix3( _normalMatrix ).normalize();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- _face.vertexNormalsLength = faceVertexNormals.length;
|
|
|
-
|
|
|
- var vertexUvs = faceVertexUvs[ f ];
|
|
|
-
|
|
|
- if ( vertexUvs !== undefined ) {
|
|
|
-
|
|
|
- for ( var u = 0; u < 3; u ++ ) {
|
|
|
-
|
|
|
- _face.uvs[ u ].copy( vertexUvs[ u ] );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- _face.color = face.color;
|
|
|
- _face.material = material;
|
|
|
-
|
|
|
- _face.z = ( v1.positionScreen.z + v2.positionScreen.z + v3.positionScreen.z ) / 3;
|
|
|
- _face.renderOrder = object.renderOrder;
|
|
|
-
|
|
|
- _renderData.elements.push( _face );
|
|
|
-
|
|
|
- }
|
|
|
+ console.error( 'THREE.Projector no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );
|
|
|
+ return;
|
|
|
|
|
|
}
|
|
|
|
|
@@ -786,56 +657,8 @@ THREE.Projector = function () {
|
|
|
|
|
|
} else if ( geometry.isGeometry ) {
|
|
|
|
|
|
- var vertices = object.geometry.vertices;
|
|
|
-
|
|
|
- if ( vertices.length === 0 ) continue;
|
|
|
-
|
|
|
- v1 = getNextVertexInPool();
|
|
|
- v1.positionScreen.copy( vertices[ 0 ] ).applyMatrix4( _modelViewProjectionMatrix );
|
|
|
-
|
|
|
- var step = object.isLineSegments ? 2 : 1;
|
|
|
-
|
|
|
- for ( var v = 1, vl = vertices.length; v < vl; v ++ ) {
|
|
|
-
|
|
|
- v1 = getNextVertexInPool();
|
|
|
- v1.positionScreen.copy( vertices[ v ] ).applyMatrix4( _modelViewProjectionMatrix );
|
|
|
-
|
|
|
- if ( ( v + 1 ) % step > 0 ) continue;
|
|
|
-
|
|
|
- v2 = _vertexPool[ _vertexCount - 2 ];
|
|
|
-
|
|
|
- _clippedVertex1PositionScreen.copy( v1.positionScreen );
|
|
|
- _clippedVertex2PositionScreen.copy( v2.positionScreen );
|
|
|
-
|
|
|
- if ( clipLine( _clippedVertex1PositionScreen, _clippedVertex2PositionScreen ) === true ) {
|
|
|
-
|
|
|
- // Perform the perspective divide
|
|
|
- _clippedVertex1PositionScreen.multiplyScalar( 1 / _clippedVertex1PositionScreen.w );
|
|
|
- _clippedVertex2PositionScreen.multiplyScalar( 1 / _clippedVertex2PositionScreen.w );
|
|
|
-
|
|
|
- _line = getNextLineInPool();
|
|
|
-
|
|
|
- _line.id = object.id;
|
|
|
- _line.v1.positionScreen.copy( _clippedVertex1PositionScreen );
|
|
|
- _line.v2.positionScreen.copy( _clippedVertex2PositionScreen );
|
|
|
-
|
|
|
- _line.z = Math.max( _clippedVertex1PositionScreen.z, _clippedVertex2PositionScreen.z );
|
|
|
- _line.renderOrder = object.renderOrder;
|
|
|
-
|
|
|
- _line.material = object.material;
|
|
|
-
|
|
|
- if ( object.material.vertexColors ) {
|
|
|
-
|
|
|
- _line.vertexColors[ 0 ].copy( object.geometry.colors[ v ] );
|
|
|
- _line.vertexColors[ 1 ].copy( object.geometry.colors[ v - 1 ] );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- _renderData.elements.push( _line );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
+ console.error( 'THREE.Projector no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );
|
|
|
+ return;
|
|
|
|
|
|
}
|
|
|
|
|
@@ -845,18 +668,8 @@ THREE.Projector = function () {
|
|
|
|
|
|
if ( geometry.isGeometry ) {
|
|
|
|
|
|
- var vertices = object.geometry.vertices;
|
|
|
-
|
|
|
- for ( var v = 0, vl = vertices.length; v < vl; v ++ ) {
|
|
|
-
|
|
|
- var vertex = vertices[ v ];
|
|
|
-
|
|
|
- _vector4.set( vertex.x, vertex.y, vertex.z, 1 );
|
|
|
- _vector4.applyMatrix4( _modelViewProjectionMatrix );
|
|
|
-
|
|
|
- pushPoint( _vector4, object, camera );
|
|
|
-
|
|
|
- }
|
|
|
+ console.error( 'THREE.Projector no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );
|
|
|
+ return;
|
|
|
|
|
|
} else if ( geometry.isBufferGeometry ) {
|
|
|
|