Skeletal animaton Ogre xml

I'am testing animation with Ogrexml importer. I use this tool :http://www.ogremax.com/ for export max to .mesh.xml.



I test with an avatar with 18.7k triangles , it's not really a low poly ^^ . But it's not really excessive.



My file whith mesh + animation + skeletal  :36.7 MB it's crazy !  :-o  Whith Binary jme(ObjToJme)  my file only 300 kb. For import my mesh.file , i need use this arguments for the jvm : -Xms512m -Xmx512m oO because the parser need an enormus quantity of memory.



It's not possible use this whith a web game … it's too heavy . It's possible to convert my mesh.file to binary jme for avoid parsing xml format and reduce the size ?



Now another question , the performance are very bad, only 56 fps for one model animate … (geforce 8800 gt).



I use a basic code :



public class TestMeshLoading extends SimpleGame {

    private Node model;

    public static void main(String[] args){
        TestMeshLoading app = new TestMeshLoading();
        app.setConfigShowMode(ConfigShowMode.AlwaysShow);
        app.start();
    }

    protected void loadMeshModel(){
        OgreLoader loader = new OgreLoader();
        MaterialLoader matLoader = new MaterialLoader();

        try {
            URL matURL = TestMeshLoading.class.getClassLoader().getResource("resources/boy.material");
            URL meshURL = TestMeshLoading.class.getClassLoader().getResource("resources/boy.mesh.xml");

            try {
                ResourceLocatorTool.addResourceLocator(
                        ResourceLocatorTool.TYPE_TEXTURE,
                        new RelativeResourceLocator(matURL));
            } catch (URISyntaxException use) {
                throw new RuntimeException(use);
            }
            matLoader.load(matURL.openStream());
            if (matLoader.getMaterials().size() > 0)
                loader.setMaterials(matLoader.getMaterials());

            model = (Node) loader.loadModel(meshURL);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    @Override
    protected void simpleInitGame() {
        ResourceLocator locator = new ClasspathResourceLocator();
        ResourceLocatorTool.addResourceLocator(
                ResourceLocatorTool.TYPE_MODEL, locator);
        ResourceLocatorTool.addResourceLocator(
                ResourceLocatorTool.TYPE_TEXTURE, locator);

        DisplaySystem.getDisplaySystem().setTitle("Test Mesh Instancing");
        display.getRenderer().setBackgroundColor(ColorRGBA.darkGray);
        ((FirstPersonHandler)input).getKeyboardLookHandler().setMoveSpeed(300);
        cam.setFrustumFar(20000f);
        loadMeshModel();
        MeshAnimationController animControl =
                        (MeshAnimationController) model.getController(0);
        rootNode.attachChild(model);
        animControl.setAnimation("acrobate");
       
        ShadeState smoothShadeState = display.getRenderer().createShadeState();
        smoothShadeState.setShadeMode( ShadeState.ShadeMode.Smooth );
        rootNode.setRenderState( smoothShadeState ); // Doesn't work why ?

        rootNode.updateGeometricState(0, true);
        rootNode.updateRenderState();
    }
}

It's not possible use this technology in a commercial game if you want 10-15 avatars animate at the screen . If i take an avatar with only 5k triangles = 75k in the scene with a small computer it's not possible .



How make  good animations and easily with jme ? I suppose the games bang! howdy or poisonville use another technology , which ?

A while ago I extended the ogre importer to be able to serialize boned model. Those changes made it to the repository, so you can use binary jme importers and exporters to load the model once, convert it to binary format, and then load the binary model in your game.