Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

jme3-plugins fails to load UnicodeTest #2124

Open
stephengold opened this issue Oct 22, 2023 · 0 comments
Open

jme3-plugins fails to load UnicodeTest #2124

stephengold opened this issue Oct 22, 2023 · 0 comments
Labels
defect Something that is supposed to work, but doesn't. Less severe than a "bug"

Comments

@stephengold
Copy link
Member

stephengold commented Oct 22, 2023

I noticed a defect in GltfLoader while developing the MonkeyWrench library.

The test data is UnicodeTest from Khronos's glTF sample models.

The test passed on my desktop computer running Mint Linux.
On my laptop computer running Microsoft Windows 11, it failed with the following diagnostic:

com.jme3.asset.AssetLoadException: An error occurred loading Unicode??Test/glTF/Unicode??Test.gltf

I reproduced this behavior using the TestGltfLoading app with the following modifications:

        assetManager.registerLocator("..\\..\\ext\\glTF-Sample-Models\\2.0", FileLocator.class);
//...
        loadModel("Unicode\u2764\u267bTest/glTF/Unicode\u2764\u267bTest.gltf", new Vector3f(0, 1, 0), 1);

I then added e.printStackTrace(); in GltfLoader.loadFromStream() and got the following stack trace:

Caused by: com.jme3.asset.AssetNotFoundException: Unicode??Test/glTF/Unicode�?�♻Binary.bin
	at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:387)
	at com.jme3.scene.plugins.gltf.GltfLoader.getBytes(GltfLoader.java:607)
	at com.jme3.scene.plugins.gltf.GltfLoader.readData(GltfLoader.java:584)
	at com.jme3.scene.plugins.gltf.GltfLoader.readBuffer(GltfLoader.java:557)
	at com.jme3.scene.plugins.gltf.GltfLoader$VertexBufferPopulator.populate(GltfLoader.java:1341)
	at com.jme3.scene.plugins.gltf.GltfLoader$VertexBufferPopulator.populate(GltfLoader.java:1309)
	at com.jme3.scene.plugins.gltf.GltfLoader.readAccessorData(GltfLoader.java:537)
	at com.jme3.scene.plugins.gltf.GltfLoader.readMeshPrimitives(GltfLoader.java:384)
	at com.jme3.scene.plugins.gltf.GltfLoader.readNode(GltfLoader.java:253)
	at com.jme3.scene.plugins.gltf.GltfLoader.readChild(GltfLoader.java:302)
	at com.jme3.scene.plugins.gltf.GltfLoader.readScenes(GltfLoader.java:219)
	at com.jme3.scene.plugins.gltf.GltfLoader.loadFromStream(GltfLoader.java:155)

The issue isn't intrinsic to jme3-core since MonkeyWrench is able to open the same .bin asset using DesktopAssetManager on Windows 11.

I'm unsure where the root cause lies. Perhaps GltfLoader.getBytes() is decoding a URI that wasn't properly encoded to begin with?

@stephengold stephengold added the defect Something that is supposed to work, but doesn't. Less severe than a "bug" label Oct 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
defect Something that is supposed to work, but doesn't. Less severe than a "bug"
Projects
None yet
Development

No branches or pull requests

1 participant