Hi,
it seems many changes were made to animation system sice I last wored with it
The problem is - animations loaded from Blender worked and now they don’t.
Could someone run this example and tell me what is wrong?
From the blender importer side everything is made as it was before.
I think some additional structures are needed for this to work.
[java]
package jme3test.model.anim;
import com.jme3.animation.AnimChannel;
import com.jme3.animation.AnimControl;
import com.jme3.app.SimpleApplication;
import com.jme3.asset.BlenderKey;
import com.jme3.light.DirectionalLight;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Quaternion;
import com.jme3.math.Vector3f;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
public class TestBlenderAnim extends SimpleApplication {
private AnimChannel channel;
private AnimControl control;
public static void main(String[] args) {
TestBlenderAnim app = new TestBlenderAnim();
app.start();
}
@Override
public void simpleInitApp() {
flyCam.setMoveSpeed(10f);
cam.setLocation(new Vector3f(6.4013605f, 7.488437f, 12.843031f));
cam.setRotation(new Quaternion(-0.060740203f, 0.93925786f, -0.2398315f, -0.2378785f));
DirectionalLight dl = new DirectionalLight();
dl.setDirection(new Vector3f(-0.1f, -0.7f, -1).normalizeLocal());
dl.setColor(new ColorRGBA(1f, 1f, 1f, 1.0f));
rootNode.addLight(dl);
BlenderKey blenderKey = new BlenderKey(“Blender/2.4x/BaseMesh_249.blend”);
blenderKey.addAnimation(“BaseMesh_01”, “run_01”, 1, 40);
Spatial scene = (Spatial) assetManager.loadModel(blenderKey);
rootNode.attachChild(scene);
Spatial model = this.findNode(rootNode, “BaseMesh_01”);
model.center();
control = model.getControl(AnimControl.class);
channel = control.createChannel();
channel.setAnim(“run_01”);
}
/**
- This method finds a node of a given name.
-
@param rootNode the root node to search
-
@param name the name of the searched node
-
@return the found node or null
*/
private Spatial findNode(Node rootNode, String name) {
if (name.equals(rootNode.getName())) {
return rootNode;
}
return rootNode.getChild(name);
}
}
[/java]
This class can be copied to its package and run.
I did not commit it because I do not know if it will be needed there.