Parcourir la source

FBXLoader: Improve transparency handling. (#29544)

Michael Herzog il y a 1 an
Parent
commit
31f7abf253
1 fichiers modifiés avec 12 ajouts et 2 suppressions
  1. 12 2
      examples/jsm/loaders/FBXLoader.js

+ 12 - 2
examples/jsm/loaders/FBXLoader.js

@@ -571,9 +571,19 @@ class FBXTreeParser {
 
 		}
 
-		if ( materialNode.Opacity ) {
+		// the transparency handling is implemented based on Blender/Unity's approach: https://github.com/sobotka/blender-addons/blob/7d80f2f97161fc8e353a657b179b9aa1f8e5280b/io_scene_fbx/import_fbx.py#L1444-L1459
 
-			parameters.opacity = parseFloat( materialNode.Opacity.value );
+		parameters.opacity = ( materialNode.TransparencyFactor ? parseFloat( materialNode.TransparencyFactor.value ) : 1 );
+
+		if ( parameters.opacity === 1 || parameters.opacity === 0 ) {
+
+			parameters.opacity = ( materialNode.Opacity ? parseFloat( materialNode.Opacity.value ) : null );
+
+			if ( parameters.opacity === null ) {
+
+				parameters.opacity = ( materialNode.TransparentColor ? parseFloat( materialNode.TransparentColor.value[ 0 ] ) : 1 );
+
+			}
 
 		}
 

粤ICP备19079148号