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

* Projector.js: Rather than calculating the screen space centrium of each face...

* Projector.js: Rather than calculating the screen space centrium of each face per render, seemed smarter to just project the precomputed centrium. Side effect: Polygon shaking is gone \o/
上级 7f0a42cc
此差异已折叠。
此差异已折叠。
......@@ -88,13 +88,16 @@ THREE.Projector = function() {
_face3.v2.copy( v2.positionScreen );
_face3.v3.copy( v3.positionScreen );
_face3.centroidWorld.copy( face.centroid );
object.matrix.transform( _face3.centroidWorld );
_face3.normalWorld.copy( face.normal );
object.matrixRotation.transform( _face3.normalWorld );
_face3.z = Math.max( v1.positionScreen.z, Math.max( v2.positionScreen.z, v3.positionScreen.z ) );
_face3.centroidWorld.copy( face.centroid );
objectMatrix.transform( _face3.centroidWorld );
_face3.centroidScreen.copy( _face3.centroidWorld );
_projScreenMatrix.transform( _face3.centroidScreen );
_face3.z = _face3.centroidScreen.z;
_face3.meshMaterial = object.material;
_face3.faceMaterial = face.material;
......@@ -128,13 +131,16 @@ THREE.Projector = function() {
_face4.v3.copy( v3.positionScreen );
_face4.v4.copy( v4.positionScreen );
_face4.centroidWorld.copy( face.centroid );
object.matrix.transform( _face4.centroidWorld );
_face4.normalWorld.copy( face.normal );
object.matrixRotation.transform( _face4.normalWorld );
_face4.z = Math.max( v1.positionScreen.z, Math.max( v2.positionScreen.z, Math.max( v3.positionScreen.z, v4.positionScreen.z ) ) );
_face4.centroidWorld.copy( face.centroid );
objectMatrix.transform( _face4.centroidWorld );
_face4.centroidScreen.copy( _face4.centroidWorld );
_projScreenMatrix.transform( _face4.centroidScreen );
_face4.z = _face4.centroidScreen.z;
_face4.meshMaterial = object.material;
_face4.faceMaterial = face.material;
......@@ -179,7 +185,10 @@ THREE.Projector = function() {
_line = _linePool[ _lineCount ] = _linePool[ _lineCount ] || new THREE.RenderableLine();
_line.v1.copy( vertex.positionScreen );
_line.v2.copy( vertex2.positionScreen );
// TODO: Use centriums here too.
_line.z = Math.max( vertex.positionScreen.z, vertex2.positionScreen.z );
_line.material = object.material;
_renderList.push( _line );
......
......@@ -9,6 +9,8 @@ THREE.RenderableFace3 = function () {
this.v3 = new THREE.Vector2();
this.centroidWorld = new THREE.Vector3();
this.centroidScreen = new THREE.Vector3();
this.normalWorld = new THREE.Vector3();
this.z = null;
......
......@@ -10,6 +10,8 @@ THREE.RenderableFace4 = function () {
this.v4 = new THREE.Vector2();
this.centroidWorld = new THREE.Vector3();
this.centroidScreen = new THREE.Vector3();
this.normalWorld = new THREE.Vector3();
this.z = null;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册