[BUG][WORK-AROUND] AssetNotFoundException when SDK sees it

I get an AssetNotFoundException loading a .j3o file made from a Blender colored cube. The converted file is copied into the assets/Models folder; [RMB] View Model on the .glTF works, and [RMB} Edit in SceneComposer works on the ,j3o. But the loadmodel() call fails. It could be a related file, but the .bin is present. Here is a view from the IDE:

Here are my steps to create the cube and to place it into the application:
Start Blender v2.93.4
Choose New File > General
Delete Cube, Light, and Camera
Add 6 planes; translate and rotate to make a cube
ZPosBlue, ZNegYellow, YPosGreen, YNegMagenta, XPosRed, XNegCyan
{Make sure normals are pointing outward}
{TAB to enter Edit Mode, Face Select, Display Overlays, Display Face Normals (Size 1)}
{Alt-N, Flip or select Face and rotate on axis}
Save Asā€¦ > ColoredCube.blend
Export > glTF 2.0 > glTF Separate (.gltf + .bin + .textures)
> Include > {nothing checked}
> Transform > +Y Up checked {by default}
Exported: ColoredCube.gltf, ColoredCube.bin
Note: Windows Explorer File Preview of ColoredCube.gltf shows a spinning gray cube

Start JME3 SDK v3.3
File > New Projectā€¦ > JME3 > Basic Gradle Game - jme3-asset-test
JME3 Projects tab has jme3-asset-test and jme3-asset-test:assets
Copy ColoredCube{.gltf,.bin} to {my-projects}\jme3-asset-test\assets\Models
jme3-asset-test > Project Assets > Models has the files
jme3-asset-test > Build Scripts > build.gradle > change jmeVer = ā€˜3.4.0-stableā€™
jme3-asset-test > Build Scripts > settings.gradle > change rootProject.name = ā€˜jme-asset-testā€™
Clean and Build Project - BUILD SUCCESSFUL, no warnings
jme3-asset-test > Project Assets > Models > ColoredCube.gltf > right-click > View Model
black cube shown on all sides when drag-rotated
Click Lightbulb
Colored cube shown on all sides when drag-rotated
Wireframe shows two triangles per face
Note: Toggle the Skybox matching the PBR: Exception Textures/SkyPath.hdr (Flipped)
jme3-asset-test > Project Assets > Models > ColoredCube.gltf > right-click > Convert to j3o Binary
ColoredCube.j3o built in jme3-asset-test > Project Assets > Models
right-click > Edit in SceneExplorer
black cube shown on all sides when drag-rotated
Click Lightbulb
Colored cube shown on all sides when drag-rotated
+X=XPosRed, -X=XNegCyan, +Y=ZPosBlue, -Y=ZNegYellow, +Z=YNegMagenta, -Z=YPosGreen
Note: I expected Y going to Z, but didnā€™t expect Z going to Y in reverse
Clean and Build Project - BUILD SUCCESSFUL, no warnings
Run Project
Note: Illegal reflective access by com.jme3.util.ReflectionAllocator
({user}/.gradle/caches/modules-2/files-2.1/org.jmonkeyengine/jme3-core/3.4.0-stable/b9ba72eb70d09a73c726e17e172652981ae7f9ed/jme3-core-3.4.0-stable.jar) to method sun.nio.ch.DirectBuffer.cleaner()
Blue cube of Basic Gradle Game displayed
End program
jme-asset-test > Source Packages > com.mygame > Main.java
Add at the end of simpleInitApp():
Spatial cube = assetManager.loadModel(ā€œModels/ColoredCube.j3oā€);
Note: IDE detects and completes ā€œModels/ColoredCube.j3oā€ path string
rootNode.attachChild(cube);
Clean and Build Project - BUILD SUCCESSFUL, no warnings
SEVERE: Uncaught exception thrown in Thread[jME3 Main,5,main]
com.jme3.asset.AssetNotFoundException: Models/ColoredCube.j3o
at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:385)
at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:439)
at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:444)
at com.mygame.Main.simpleInitApp(Main.java:34)

I wonder if this is the same problem other folks are seeing with the gradle template in the SDK.

[WORK-AROUND] Oh! I added assetManager.registerLocator("assets/", FileLocator.class); and the application ran without an error.

But I saw a blue cube intermittently being drawn with diagonals of blue. :thinking: So, I removed the default blue cube (being overwritten), and the view was completely black. :thinking: So, I added a shadow filter for a sun and everything was still black. :roll_eyes: So, I added a sun to make the shadows. And I saw three faces of my cube! Then, I added a spotlight at (-4f,-4f,-4f) pointing to (1f,1f,1f), and I saw all the faces!

The +Z=YNegMagenta was front and center. Rotating counter-clockwise, I saw -X=XNegCyan, then -Z=YPosGreen, then +X=XPosRed, with +Y=ZPosBlue on top, and -Y=ZNegYellow on the bottom.

(And I would Alt-Tab between the view and browser and editor, cutting+pasting text, and lose the cube in the view - because using the mouse to select text in other programs still had the mouse active in the view and it was rotating my camera away from the cube :smiley: )

Yeah, but you shouldnā€™t have to do that because the classpath should already have the assets in it. But something is messed up with the template.

ā€¦in the end this will cause you issues when you try to bundle the application, I guess. Until then it is an ok work-around.

Yep, this is a bug in the SDK. https://github.com/jMonkeyEngine/sdk/issues/301. For tracking.

2 Likes

What?! I donā€™t get a Forum ā€œEarned ā€˜Bug Breederā€™ā€ badge? :smiley:

1 Like

I bet fixing the bug would earn pretty cool badgeā€¦ :wink:

Baby steps ā€¦ But Iā€™ll get there.

1 Like