Zwischenstand: CullHint-Workaround gegen liegenden Charakter + stripEmbeddedClips-Fix
- WorldScene: Charakter wird beim Laden mit CullHint.Always versteckt, erst nach setupAnimationContext (idle läuft) wieder sichtbar - WorldScene: stripEmbeddedClips nutzt jetzt AnimationLibrary.findAssetRoot() statt hartkodierter Pfad-Liste; besseres Logging wenn Datei nicht gefunden - AnimPreviewState: Modell beim Laden versteckt (CullHint.Always), erst bei playClip sichtbar; stopAll versteckt Modell wieder - PlayerInputControl: tryPlay setzt Action VOR SkinningControl-Aktivierung Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -249,9 +249,11 @@ public class AnimPreviewState extends BaseAppState {
|
||||
|
||||
try {
|
||||
Spatial model = loadFresh(assetPath);
|
||||
// SkinningControl nur aktiv lassen wenn eine Animation läuft,
|
||||
// sonst kollabiert das Mesh durch uninitalisierte Skin-Matrizen.
|
||||
// SkinningControl deaktiviert + Modell unsichtbar bis Animation läuft:
|
||||
// das Armature-Node hat Rx(90°) aus dem GLB-Import → ohne Animation liegt
|
||||
// das Mesh auf dem Boden (Bind-Pose × Rx90° = liegender Charakter).
|
||||
setSkinningEnabled(model, false);
|
||||
model.setCullHint(com.jme3.scene.Spatial.CullHint.Always);
|
||||
|
||||
// Im Animations-Editor soll der Charakter immer am Ursprung stehen.
|
||||
// Eventuelle Translation die beim GLB-Export eingebacken wurde entfernen.
|
||||
@@ -348,6 +350,8 @@ public class AnimPreviewState extends BaseAppState {
|
||||
// SkinningControls auf dem gesamten Modell aktivieren – AnimComposer und
|
||||
// SkinningControl sitzen oft auf verschiedenen Geschwisterknoten.
|
||||
setSkinningEnabled(currentModel, true);
|
||||
// Modell erst nach Animation sichtbar machen (CullHint aus loadModel)
|
||||
currentModel.setCullHint(com.jme3.scene.Spatial.CullHint.Inherit);
|
||||
playOnSpatial(currentModel, clipName);
|
||||
}
|
||||
|
||||
@@ -380,6 +384,7 @@ public class AnimPreviewState extends BaseAppState {
|
||||
if (currentModel != null) {
|
||||
stopOnSpatial(currentModel);
|
||||
setSkinningEnabled(currentModel, false);
|
||||
currentModel.setCullHint(com.jme3.scene.Spatial.CullHint.Always);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user