HelloAssets - assetManager.loadModel(...); error

Hy,



First, I just tried all the helloXXXX in the tutorial section, everything is great ! After tried JME2, 5 month ago, i’m going to switch to JME3.



Just to tell you, you did an amazing job !



I just got a problem in all these helloword test, in helloAssets.



The original code work great, but after when i try to load the town if the code :

[java]

assetManager.registerLocator(“town.zip”, ZipLocator.class.getName());

Spatial gameLevel = assetManager.loadModel(“main.scene”);

gameLevel.setLocalTranslation(0, -5.2f, 0);

gameLevel.setLocalScale(2);

rootNode.attachChild(gameLevel);

[/java]



is after the code (to load the ninja) :

[java]

Spatial ninja = assetManager.loadModel(“Models/Ninja/Ninja.mesh.xml”);

ninja.scale(0.05f, 0.05f, 0.05f);

ninja.rotate(0.0f, -3.0f, 0.0f);

ninja.setLocalTranslation(0.0f, -5.0f, -2.0f);

rootNode.attachChild(ninja);

[/java]



i get this error message



Oct 7, 2010 6:43:38 PM com.jme3.app.Application handleError

SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]

java.lang.NullPointerException

at com.jme3.animation.AnimControl.resetToBind(AnimControl.java:304)

at com.jme3.animation.AnimControl.reset(AnimControl.java:293)

at com.jme3.animation.AnimControl.(AnimControl.java:122)

at com.jme3.scene.plugins.ogre.MeshLoader.compileModel(MeshLoader.java:712)

at com.jme3.scene.plugins.ogre.MeshLoader.load(MeshLoader.java:758)

at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:233)

at com.jme3.scene.plugins.ogre.SceneLoader.startElement(SceneLoader.java:246)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)

at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:377)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)

at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)

at com.jme3.scene.plugins.ogre.SceneLoader.load(SceneLoader.java:325)

at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:233)

at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:355)

at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:365)

at jme3test.helloworld.HelloAssets.simpleInitApp(HelloAssets.java:63)

at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:187)

at com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:134)

at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:183)

at java.lang.Thread.run(Thread.java:619)



but not if it’s before…



thanks for your help



Zoff

I am getting the same problem. Really hope to get it resolved because packing everything into a zip would take less hard drive space and that would be awesome.



My topic is at http://hub.jmonkeyengine.org/groups/general-2/forum/topic/null-pointer-exception-fun-with-hello-asset-tutorial/ if you care.

But did you see that it’s working if you put the code before the load of the ninja…

Putting the code before loading the ninja fixed everything. Can you explain why the order matters?

I can’t, but i would love someone to explain that !

Well, the logic makes no sense, so it seems more like a bug in the library!

Sounds like a bug indeed. I added it to the issue tracker.

This bug still exists.



It appears if you load the town after the ninja and there is another error if you load the unzipped town before the ninja:



[java]ALLVARLIG: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]

java.lang.NullPointerException

at com.jme3.scene.Node.attachChild(Node.java:242)

at com.jme3.scene.plugins.ogre.SceneLoader.startElement(SceneLoader.java:222)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)

at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:377)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)

at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)

at com.jme3.scene.plugins.ogre.SceneLoader.load(SceneLoader.java:293)

at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:175)

at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:297)

at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:307)

at jme3test.helloworld2.HelloAssets.simpleInitApp(HelloAssets.java:49)

at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:155)

at com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:102)

at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:147)

at java.lang.Thread.run(Thread.java:619)[/java]

When you release you application with jMP all data is packed in a JAR file, which is basically the same as a ZIP file, so no need to do that manually.