Animation rotation rna_path in BlenderModelLoader

I have a blender file with a simple object animation (Blender 2.62), sample blend file here Box



Loading this with BlenderModelLoader fails because it’s looking for an animation RNA key named “rotation”, but the keys are actually named “rotation_euler”:


SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]
org.jruby.exceptions.RaiseException: Native Exception: 'class java.lang.IllegalStateException'; Message: Unknown curve rna path: rotation_euler; StackTrace: java.lang.IllegalStateException: Unknown curve rna path: rotation_euler
at com.jme3.scene.plugins.blender.animations.IpoHelper.getCurveType(IpoHelper.java:136)
at com.jme3.scene.plugins.blender.animations.IpoHelper.fromAction(IpoHelper.java:93)
at com.jme3.scene.plugins.blender.modifiers.ModifierHelper.readAnimationModifier250(ModifierHelper.java:188)
at com.jme3.scene.plugins.blender.modifiers.ModifierHelper.readModifiers(ModifierHelper.java:111)
at com.jme3.scene.plugins.blender.objects.ObjectHelper.toObject(ObjectHelper.java:169)
at com.jme3.scene.plugins.blender.AbstractBlenderLoader.toObject(AbstractBlenderLoader.java:133)
[...]


Here is a patch to IpoHelper that fixes the problem for me:

[patch]Index: engine/src/blender/com/jme3/scene/plugins/blender/animations/IpoHelper.java
===================================================================
--- engine/src/blender/com/jme3/scene/plugins/blender/animations/IpoHelper.java (revision 9371)
+++ engine/src/blender/com/jme3/scene/plugins/blender/animations/IpoHelper.java (working copy)
@@ -130,7 +130,7 @@
if (rnaPath.endsWith("scale")) {
return Ipo.AC_SIZE_X + arrayIndex;
}
- if (rnaPath.endsWith("rotation")) {
+ if (rnaPath.endsWith("rotation_euler")) {
return Ipo.OB_ROT_X + arrayIndex;
}
throw new IllegalStateException("Unknown curve rna path: " + rnaPath);
[/patch]
1 Like

@Kaelthas?

OK, sorry for late response. I wan’t home since thursday evening.



I made a fix in an IpoHelper:

[java]

if (rnaPath.endsWith(“rotation”) || rnaPath.endsWith(“rotation_euler”)) {

return Ipo.OB_ROT_X + arrayIndex;

}

[/java]



It works for me. Please @reactlogic check it out if everything works fine for you as well :slight_smile:

@Kaelthas said:It works for me. Please @reactlogic check it out if everything works fine for you as well :)

Yes, this works thanks.