提交 3c0413ae 编写于 作者: A alteredq

Added handling of vertex normals to GeometryUtils.tessellate.

上级 70ee0cf5
因为 它太大了无法显示 source diff 。你可以改为 查看blob
因为 它太大了无法显示 source diff 。你可以改为 查看blob
......@@ -645,6 +645,7 @@ THREE.GeometryUtils = {
dab, dbc, dac, dcd, dad,
m, m1, m2,
vm, vm1, vm2,
vnm, vnm1, vnm2,
triA, triB,
quadA, quadB,
edge;
......@@ -687,6 +688,16 @@ THREE.GeometryUtils = {
triB.b = b;
triB.c = c;
if ( face.vertexNormals.length === 3 ) {
vnm = face.vertexNormals[ 0 ].clone();
vnm.lerpSelf( face.vertexNormals[ 1 ], 0.5 );
triA.vertexNormals[ 1 ].copy( vnm );
triB.vertexNormals[ 0 ].copy( vnm );
}
edge = 0;
} else if ( dbc >= dab && dbc >= dac ) {
......@@ -702,6 +713,19 @@ THREE.GeometryUtils = {
triB.b = c;
triB.c = a;
if ( face.vertexNormals.length === 3 ) {
vnm = face.vertexNormals[ 1 ].clone();
vnm.lerpSelf( face.vertexNormals[ 2 ], 0.5 );
triA.vertexNormals[ 2 ].copy( vnm );
triB.vertexNormals[ 0 ].copy( vnm );
triB.vertexNormals[ 1 ].copy( face.vertexNormals[ 2 ] );
triB.vertexNormals[ 2 ].copy( face.vertexNormals[ 0 ] );
}
edge = 1;
} else {
......@@ -717,6 +741,16 @@ THREE.GeometryUtils = {
triB.b = b;
triB.c = c;
if ( face.vertexNormals.length === 3 ) {
vnm = face.vertexNormals[ 0 ].clone();
vnm.lerpSelf( face.vertexNormals[ 2 ], 0.5 );
triA.vertexNormals[ 2 ].copy( vnm );
triB.vertexNormals[ 0 ].copy( vnm );
}
edge = 2;
}
......@@ -819,6 +853,22 @@ THREE.GeometryUtils = {
quadB.c = c;
quadB.d = m2;
if ( face.vertexNormals.length === 4 ) {
vnm1 = face.vertexNormals[ 0 ].clone();
vnm1.lerpSelf( face.vertexNormals[ 1 ], 0.5 );
vnm2 = face.vertexNormals[ 2 ].clone();
vnm2.lerpSelf( face.vertexNormals[ 3 ], 0.5 );
quadA.vertexNormals[ 1 ].copy( vnm1 );
quadA.vertexNormals[ 2 ].copy( vnm2 );
quadB.vertexNormals[ 0 ].copy( vnm1 );
quadB.vertexNormals[ 3 ].copy( vnm2 );
}
edge = 0;
} else {
......@@ -839,6 +889,22 @@ THREE.GeometryUtils = {
quadB.c = c;
quadB.d = d;
if ( face.vertexNormals.length === 4 ) {
vnm1 = face.vertexNormals[ 1 ].clone();
vnm1.lerpSelf( face.vertexNormals[ 2 ], 0.5 );
vnm2 = face.vertexNormals[ 3 ].clone();
vnm2.lerpSelf( face.vertexNormals[ 0 ], 0.5 );
quadA.vertexNormals[ 2 ].copy( vnm1 );
quadA.vertexNormals[ 3 ].copy( vnm2 );
quadB.vertexNormals[ 0 ].copy( vnm2 );
quadB.vertexNormals[ 1 ].copy( vnm1 );
}
edge = 1;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册