提交 f70b609e 编写于 作者: M Mugen87

VRMLLoader: Make normal computation more robuste.

上级 e9420ca7
......@@ -1228,7 +1228,7 @@ THREE.VRMLLoader = ( function () {
function buildIndexedFaceSetNode( node ) {
var color, coord, normal, texCoord;
var ccw = true, solid = true, creaseAngle;
var ccw = true, solid = true, creaseAngle = 0;
var colorIndex, coordIndex, normalIndex, texCoordIndex;
var colorPerVertex = true, normalPerVertex = true;
......@@ -2161,13 +2161,21 @@ THREE.VRMLLoader = ( function () {
function weightedNormal( normals, vector, creaseAngle ) {
var normal = vector.clone();
var normal = new THREE.Vector3();
for ( var i = 0, l = normals.length; i < l; i ++ ) {
if ( creaseAngle === 0 ) {
if ( normals[ i ].angleTo( vector ) < creaseAngle ) {
normal.copy( vector );
normal.add( normals[ i ] );
} else {
for ( var i = 0, l = normals.length; i < l; i ++ ) {
if ( normals[ i ].angleTo( vector ) < creaseAngle ) {
normal.add( normals[ i ] );
}
}
......
......@@ -1262,7 +1262,7 @@ var VRMLLoader = ( function () {
function buildIndexedFaceSetNode( node ) {
var color, coord, normal, texCoord;
var ccw = true, solid = true, creaseAngle;
var ccw = true, solid = true, creaseAngle = 0;
var colorIndex, coordIndex, normalIndex, texCoordIndex;
var colorPerVertex = true, normalPerVertex = true;
......@@ -2195,13 +2195,21 @@ var VRMLLoader = ( function () {
function weightedNormal( normals, vector, creaseAngle ) {
var normal = vector.clone();
var normal = new Vector3();
for ( var i = 0, l = normals.length; i < l; i ++ ) {
if ( creaseAngle === 0 ) {
if ( normals[ i ].angleTo( vector ) < creaseAngle ) {
normal.copy( vector );
normal.add( normals[ i ] );
} else {
for ( var i = 0, l = normals.length; i < l; i ++ ) {
if ( normals[ i ].angleTo( vector ) < creaseAngle ) {
normal.add( normals[ i ] );
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册