2015-01-09 78 views
0

我使用JMonkeyEngine Eclipse和我无法加载模型。JMonkeyEngine不加载模型

@Override 
    public void simpleInitApp() {  
     Spatial monkey = assetManager.loadModel("Monkey.obj"); //<---line 34 
     Material mat_default = new Material( 
      assetManager, "Common/MatDefs/Misc/ShowNormals.j3md"); 
     monkey.setMaterial(mat_default); 
     rootNode.attachChild(monkey);  
    } 

我本来在“资产”文件夹中的文件,但是经过一番研究,我发现,assetManager访问的主要项目目录,我想,也许它不能访问的资产文件夹,从而代替我暂时搬到Monkey.obj到主目录。

的错误我得到这个样子的:

Jan 09, 2015 1:10:14 PM com.jme3.system.JmeDesktopSystem initialize 
INFO: Running on jMonkeyEngine 3.0.0 RC2 
Jan 09, 2015 1:10:14 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo 
INFO: Lwjgl 2.9.0 context running on thread LWJGL Renderer Thread 
Jan 09, 2015 1:10:14 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo 
INFO: Adapter: nvd3dumx,nvwgf2umx,nvwgf2umx 
Jan 09, 2015 1:10:14 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo 
INFO: Driver Version: 9.18.13.4709 
Jan 09, 2015 1:10:14 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo 
INFO: Vendor: NVIDIA Corporation 
Jan 09, 2015 1:10:14 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo 
INFO: OpenGL Version: 4.5.0 NVIDIA 347.09 
Jan 09, 2015 1:10:14 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo 
INFO: Renderer: GeForce GTX 770/PCIe/SSE2 
Jan 09, 2015 1:10:14 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo 
INFO: GLSL Ver: 4.50 NVIDIA 
Jan 09, 2015 1:10:14 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 
INFO: Audio Device: OpenAL Soft 
Jan 09, 2015 1:10:14 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 
INFO: Audio Vendor: OpenAL Community 
Jan 09, 2015 1:10:14 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 
INFO: Audio Renderer: OpenAL Soft 
Jan 09, 2015 1:10:14 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 
INFO: Audio Version: 1.1 ALSOFT 1.15.1 
Jan 09, 2015 1:10:14 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 
INFO: AudioRenderer supports 64 channels 
Jan 09, 2015 1:10:14 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 
INFO: Audio effect extension version: 1.0 
Jan 09, 2015 1:10:14 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 
INFO: Audio max auxilary sends: 4 
Jan 09, 2015 1:10:14 PM com.jme3.app.Application handleError 
SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main] 
com.jme3.asset.AssetNotFoundException: Monkey.obj 
    at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:283) 
    at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:374) 
    at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:378) 
    at MainGame.Main.simpleInitApp(Main.java:34) 
    at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:226) 
    at com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:130) 
    at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:207) 
    at java.lang.Thread.run(Unknown Source) 

我是否正确使用assetManager?

回答

0

我看了一下,其中的例外是在JME源抛出的线,它肯定是想在这一点上找到您的资源并不能找到它。诊断为什么加载程序不能找到你的模型是相当困难的。我会说,在我的项目我的模型是“资产/型号/”我用加载它们:

getAssetManager().loadModel("Models/items.blend"); 

所以我认为他们需要的“资产”目录下。除此之外

我唯一的建议是在网络上找到一些标准模型,并尝试将它们存储在“资产”并加载它们,以确保有没有与阅读目录或权限的问题。

+0

因此,我创建了资产的文件夹内的文件夹模式和移动.OBJ到该文件夹​​,但想你的方法,它仍然没有奏效。我甚至尝试过用不同的obj(因为我实际上发现我使用的obj被破坏了)。出于好奇,您是在JMonkeyEngine SDK还是在其他IDE中工作?此外,我看到你加载的文件.blend,可以JME负荷.blend文件,就像.obj文件,因为这将是非常有益的! – MagnusCaligo 2015-01-10 13:15:35

+0

@MagnusCaligo不,我没有使用JME SDK。我想使用Java 8与我当前不支持的项目。我使用NetBeans 8.0。是的,JME可以加载搅拌器文件(有一些限制 - 检查doco)。不幸的是,很难知道你的问题是什么。我想你已经遵循http://hub.jmonkeyengine.org/wiki/doku.php/jme3:advanced:asset_manager的建议?你能否确认你已经完成了'无法找到资源?'的步骤? – sprinter 2015-01-10 22:49:19

+0

我跟着你的链接,它让我把.obj转换成.j3o,但是这仍然不起作用。接下来我要尝试的是测试SDK中的程序,看它是否在那里工作。 – MagnusCaligo 2015-01-11 05:17:59