提交 42104287 编写于 作者: A alteredq

Garbage collection friendlier normalMatrix in Projector.

Small fix to #2610
上级 95a05c1a
......@@ -3773,6 +3773,7 @@ THREE.Projector = function() {
_viewProjectionMatrix = new THREE.Matrix4(),
_modelViewProjectionMatrix = new THREE.Matrix4(),
_normalMatrix = new THREE.Matrix3(),
_frustum = new THREE.Frustum(),
......@@ -3924,13 +3925,11 @@ THREE.Projector = function() {
var near = camera.near, far = camera.far, visible = false,
o, ol, v, vl, f, fl, n, nl, c, cl, u, ul, object,
modelMatrix, rotationMatrix,
modelMatrix,
geometry, geometryMaterials, vertices, vertex, vertexPositionScreen,
faces, face, faceVertexNormals, normal, faceVertexUvs, uvs,
v1, v2, v3, v4, isFaceMaterial, material, side;
rotationMatrix = new THREE.Matrix3();
_face3Count = 0;
_face4Count = 0;
_lineCount = 0;
......@@ -3966,8 +3965,8 @@ THREE.Projector = function() {
faces = geometry.faces;
faceVertexUvs = geometry.faceVertexUvs;
rotationMatrix.getInverse( modelMatrix );
rotationMatrix.transpose();
_normalMatrix.getInverse( modelMatrix );
_normalMatrix.transpose();
isFaceMaterial = object.material instanceof THREE.MeshFaceMaterial;
side = object.material.side;
......@@ -4071,7 +4070,7 @@ THREE.Projector = function() {
_face.normalWorld.copy( face.normal );
if ( visible === false && ( side === THREE.BackSide || side === THREE.DoubleSide ) ) _face.normalWorld.negate();
rotationMatrix.multiplyVector3( _face.normalWorld ).normalize();
_normalMatrix.multiplyVector3( _face.normalWorld ).normalize();
_face.centroidWorld.copy( face.centroid );
modelMatrix.multiplyVector3( _face.centroidWorld );
......@@ -4088,7 +4087,7 @@ THREE.Projector = function() {
if ( visible === false && ( side === THREE.BackSide || side === THREE.DoubleSide ) ) normal.negate();
rotationMatrix.multiplyVector3( normal ).normalize();
_normalMatrix.multiplyVector3( normal ).normalize();
}
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
......@@ -20,6 +20,7 @@ THREE.Projector = function() {
_viewProjectionMatrix = new THREE.Matrix4(),
_modelViewProjectionMatrix = new THREE.Matrix4(),
_normalMatrix = new THREE.Matrix3(),
_frustum = new THREE.Frustum(),
......@@ -171,13 +172,11 @@ THREE.Projector = function() {
var near = camera.near, far = camera.far, visible = false,
o, ol, v, vl, f, fl, n, nl, c, cl, u, ul, object,
modelMatrix, rotationMatrix,
modelMatrix,
geometry, geometryMaterials, vertices, vertex, vertexPositionScreen,
faces, face, faceVertexNormals, normal, faceVertexUvs, uvs,
v1, v2, v3, v4, isFaceMaterial, material, side;
rotationMatrix = new THREE.Matrix3();
_face3Count = 0;
_face4Count = 0;
_lineCount = 0;
......@@ -213,8 +212,8 @@ THREE.Projector = function() {
faces = geometry.faces;
faceVertexUvs = geometry.faceVertexUvs;
rotationMatrix.getInverse( modelMatrix );
rotationMatrix.transpose();
_normalMatrix.getInverse( modelMatrix );
_normalMatrix.transpose();
isFaceMaterial = object.material instanceof THREE.MeshFaceMaterial;
side = object.material.side;
......@@ -318,7 +317,7 @@ THREE.Projector = function() {
_face.normalWorld.copy( face.normal );
if ( visible === false && ( side === THREE.BackSide || side === THREE.DoubleSide ) ) _face.normalWorld.negate();
rotationMatrix.multiplyVector3( _face.normalWorld ).normalize();
_normalMatrix.multiplyVector3( _face.normalWorld ).normalize();
_face.centroidWorld.copy( face.centroid );
modelMatrix.multiplyVector3( _face.centroidWorld );
......@@ -335,7 +334,7 @@ THREE.Projector = function() {
if ( visible === false && ( side === THREE.BackSide || side === THREE.DoubleSide ) ) normal.negate();
rotationMatrix.multiplyVector3( normal ).normalize();
_normalMatrix.multiplyVector3( normal ).normalize();
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册