Quellcode durchsuchen

GltfLoader: warn if missing skinned spatial, fall back to root node (#1639)

Stephen Gold vor 3 Jahren
Ursprung
Commit
0433a63bbd

+ 9 - 1
jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/GltfLoader.java

@@ -1153,8 +1153,16 @@ public class GltfLoader implements AssetLoader {
             if (bw == null || bw.attachedSpatial == null) {
                 continue;
             }
+            String jointName = bw.joint.getName();
             SkinData skinData = fetchFromCache("skins", bw.skinIndex, SkinData.class);
-            skinData.skinningControl.getAttachmentsNode(bw.joint.getName()).attachChild(bw.attachedSpatial);
+            SkinningControl skinControl = skinData.skinningControl;
+            if (skinControl.getSpatial() == null) {
+                logger.log(Level.WARNING,
+                        "No skinned Spatial for joint \"{0}\" -- will skin the model's root node!",
+                        jointName);
+                rootNode.addControl(skinControl);
+            }
+            skinControl.getAttachmentsNode(jointName).attachChild(bw.attachedSpatial);
         }
     }