An issue with FBX animation


#1

I am having an issue with getting my FBX model (dangerdeacon_fbx.fbx) to animate.

I have the animation set up according to the sample, and according to my debugging it is playing and looping like it’s supposed to, but the model itself does not move (though its leg is shifted upwards a little bit at the beginning).

You wouldn’t be the first to suggest that there is a problem with the FBX model. However, I have tested it in Autodesk FBX Review, and it animates just fine.

In my project, I have also included a very basic “test_arm_fbx.fbx” that is just a prism with an armature on it that waves. Trying to display that one gives me an “invalid data” error in Firefox. All of my models have been using the FBX exporter from Blender 2.7, set to “FBX 7.4 binary.” I am using the Visual Studio Code extensions and workflow as suggested by the documentation.

I would appreciate any insight or pointers pertaining to this issue.

class Main extends hxd.App
{
	var cache : h3d.prim.ModelCache = new h3d.prim.ModelCache();
	var deacon_obj : h3d.scene.Object;
	var deacon_walk_anim : h3d.anim.Animation;

	function displayModel(model : hxd.res.Model, skin : h3d.mat.Texture, anim : String)
	{
		deacon_obj = cache.loadModel(model);
		deacon_obj.setScale(0.1);
		s3d.addChild(deacon_obj);

		for (mat in deacon_obj.getMaterials())
		{
			mat.texture = skin;
			mat.castShadows = false;
			mat.receiveShadows = false;
		}

		deacon_walk_anim = cache.loadAnimation(model, anim);
		deacon_walk_anim.loop = true;
		deacon_walk_anim = deacon_obj.playAnimation(deacon_walk_anim);
	}

	override function init()
	{
		super.init();
		
		displayModel(hxd.Res.dangerdeacon_fbx, hxd.Res.dangerdeacon_skin.toTexture(), "dangerdeacon_skeleton|dangerdeacon_walk");
		//displayModel(hxd.Res.hidoshu_fbx, hxd.Res.hidoshu_skin.toTexture(), "Hidoshu_Armature|Main");
                //displayModel(hxd.Res.test_arm_fbx, hxd.Res.test_arm_skin.toTexture(), "Armature|wave");

		cache.dispose();

		var sun = new h3d.scene.fwd.DirLight(new h3d.Vector(0.5, 0.5, -0.5), s3d);
		sun.color.set(1.0, 1.0, 1.0);
		s3d.lightSystem.ambientLight.set(0.5, 0.5, 0.5);

		s3d.camera.pos.set(0, -10, 0);
		s3d.camera.target.set(0, 0, 0);
	}
	override function update(dt : Float)
	{
		deacon_obj.rotate(0.0, 0.0, dt);
	}
	static function main()
	{
		hxd.Res.initEmbed();
		new Main();
	}
}

Here is my project file, assets included. Note that it initially tries to display the “test_arm_fbx” and not the “dangerdeacon_fbx”: https://drive.google.com/file/d/1B02B8AWnr9SwTDslYPcd-RMIDHn7IGOu/view?usp=sharing