ソースを参照

apply pre transform to normals

Lewy Blue 7 年 前
コミット
599d597a17
1 ファイル変更10 行追加1 行削除
  1. 10 1
      examples/js/loaders/FBXLoader.js

+ 10 - 1
examples/js/loaders/FBXLoader.js

@@ -1097,7 +1097,16 @@
 
 		if ( normalBuffer.length > 0 ) {
 
-			geo.addAttribute( 'normal', new THREE.Float32BufferAttribute( normalBuffer, 3 ) );
+			var normalAttribute = new THREE.Float32BufferAttribute( normalBuffer, 3 );
+
+			var normalsPreTransform = preTransform.clone().setPosition( new THREE.Vector3() );
+
+			// required when preTransform has a non-uniform scale component
+			normalsPreTransform.getInverse( normalsPreTransform ).transpose();
+
+			normalsPreTransform.applyToBufferAttribute( normalAttribute );
+
+			geo.addAttribute( 'normal', normalAttribute );
 
 		}