Explorar o código

Merge pull request #12317 from looeee/FBXLoader_maps

FBXLoader: Added map support
Mr.doob %!s(int64=7) %!d(string=hai) anos
pai
achega
a31942f7ca
Modificáronse 1 ficheiros con 52 adicións e 9 borrados
  1. 52 9
      examples/js/loaders/FBXLoader.js

+ 52 - 9
examples/js/loaders/FBXLoader.js

@@ -314,7 +314,7 @@
 
 		var FBX_ID = textureNode.id;
 
-		var name = textureNode.name;
+		var name = textureNode.attrName;
 
 		var fileName;
 
@@ -488,6 +488,17 @@
 
 			parameters.color = parseColor( properties.Diffuse );
 
+		}
+		if ( properties.DisplacementFactor ) {
+
+			parameters.displacementScale = parseFloat( properties.DisplacementFactor.value );
+
+		}
+		if ( properties.ReflectionFactor ) {
+
+			parameters.envMapIntensity = parseFloat( properties.ReflectionFactor.value );
+			parameters.reflectivity = parseFloat( properties.ReflectionFactor.value );
+
 		}
 		if ( properties.Specular ) {
 
@@ -496,7 +507,7 @@
 		}
 		if ( properties.Shininess ) {
 
-			parameters.shininess = properties.Shininess.value;
+			parameters.shininess = parseFloat( properties.Shininess.value );
 
 		}
 		if ( properties.Emissive ) {
@@ -511,7 +522,7 @@
 		}
 		if ( properties.Opacity ) {
 
-			parameters.opacity = properties.Opacity.value;
+			parameters.opacity = parseFloat( properties.Opacity.value );
 
 		}
 		if ( parameters.opacity < 1.0 ) {
@@ -528,14 +539,25 @@
 
 			switch ( type ) {
 
+				case 'Bump':
+				case ' "Bump':
+					parameters.bumpMap = textureMap.get( relationship.ID );
+					break;
+
 				case 'DiffuseColor':
 				case ' "DiffuseColor':
 					parameters.map = textureMap.get( relationship.ID );
 					break;
 
-				case 'Bump':
-				case ' "Bump':
-					parameters.bumpMap = textureMap.get( relationship.ID );
+				case 'DisplacementColor':
+				case ' "DisplacementColor':
+					parameters.displacementMap = textureMap.get( relationship.ID );
+					break;
+
+
+				case 'EmissiveColor':
+				case ' "EmissiveColor':
+					parameters.emissiveMap = textureMap.get( relationship.ID );
 					break;
 
 				case 'NormalMap':
@@ -543,12 +565,33 @@
 					parameters.normalMap = textureMap.get( relationship.ID );
 					break;
 
+				case 'ReflectionColor':
+				case ' "ReflectionColor':
+					parameters.envMap = textureMap.get( relationship.ID );
+					parameters.envMap.mapping = THREE.EquirectangularReflectionMapping;
+					break;
+
+				case 'SpecularColor':
+				case ' "SpecularColor':
+					parameters.specularMap = textureMap.get( relationship.ID );
+					break;
+
+				case 'TransparentColor':
+				case ' "TransparentColor':
+					parameters.alphaMap = textureMap.get( relationship.ID );
+					parameters.transparent = true;
+					break;
+
 				case 'AmbientColor':
-				case 'EmissiveColor':
 				case ' "AmbientColor':
-				case ' "EmissiveColor':
+				case 'ShininessExponent': // AKA glossiness map
+				case ' "ShininessExponent':
+				case 'SpecularFactor': // AKA specularLevel
+				case ' "SpecularFactor':
+				case 'VectorDisplacementColor': // NOTE: Seems to be a copy of DisplacementColor
+				case ' "VectorDisplacementColor':
 				default:
-					console.warn( 'THREE.FBXLoader: Unknown texture application of type %s, skipping texture.', type );
+					console.warn( 'THREE.FBXLoader: %s map is not supported in three.js, skipping texture.', type );
 					break;
 
 			}