tommyettinger / spotvox

Renders MagicaVoxel .vox files to pixel art. Successor to IsoVoxel.
Apache License 2.0
41 stars 0 forks source link

Exception when using .vox file from MagicaVoxel #6

Open Zwaliebaba opened 1 year ago

Zwaliebaba commented 1 year ago

Hi! Great tool, but when I use a standard MagicaVoxel file like teapot.vox I get the following Exception:

Exception in thread "main" java.lang.NoClassDefFoundError: Ljava/lang/IndexOutOfBoundsException; at com.oracle.svm.jni.functions.JNIFunctions.FindClass(JNIFunctions.java:348) at java.io.FileInputStream.readBytes(FileInputStream.java) at java.io.FileInputStream.read(FileInputStream.java:276) at com.github.tommyettinger.LittleEndianDataInputStream.read(LittleEndianDataInputStream.java:89) at com.github.tommyettinger.io.VoxIOExtended.readVox(VoxIOExtended.java:230) at com.github.tommyettinger.headless.HeadlessLauncher.call(HeadlessLauncher.java:58) at com.github.tommyettinger.headless.HeadlessLauncher.call(HeadlessLauncher.java:19) at picocli.CommandLine.executeUserObject(CommandLine.java:1953) at picocli.CommandLine.access$1300(CommandLine.java:145) at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358) at picocli.CommandLine$RunLast.handle(CommandLine.java:2352) at picocli.CommandLine$RunLast.handle(CommandLine.java:2314) at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) at picocli.CommandLine$RunLast.execute(CommandLine.java:2316) at picocli.CommandLine.execute(CommandLine.java:2078) at com.github.tommyettinger.headless.HeadlessLauncher.main(HeadlessLauncher.java:46)

Any idea what is causing this?

wizzymore commented 1 year ago

Same error for me, i am using the latest Release tag of Spotvox and the version available on the MagicaVoxel website.

I can use the script on the provided .vox files but with whatever version of MagicaVoxel i want, if i export the .vox myself ( even if i open the .vox files included with Spotvox and save them myself as .vox) i get the same error.

Exception in thread "HeadlessApplication" java.lang.ArrayIndexOutOfBoundsException: Index -2 out of bounds for length 2
        at com.github.tommyettinger.Renderer.splatOnly(Renderer.java:472)
        at com.github.tommyettinger.Renderer.drawSplats(Renderer.java:519)
        at com.github.tommyettinger.SpotVox.create(SpotVox.java:78)
        at com.badlogic.gdx.backends.headless.HeadlessApplication.mainLoop(HeadlessApplication.java:108)
        at com.badlogic.gdx.backends.headless.HeadlessApplication$1.run(HeadlessApplication.java:93)
        at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:704)
        at com.oracle.svm.core.windows.WindowsPlatformThreads.osThreadStartRoutine(WindowsPlatformThreads.java:143)
wizzymore commented 1 year ago

Nvm, now i regret sending the message.

So the issue only appears if you export to .vox As I am new to this and didn't even saved a project was only testing the isomorphic part i didn't realise .vox is actually the extension of the project and that you just need to save the project normally and it will work

tommyettinger commented 1 year ago

Well, I just downloaded the latest stable release of SpotVox (0.0.6) and the latest beta of MagicaVoxel (0.99.7.1 released in May), unzipped both, copied Teapot.vox from MagicaVoxel's vox/ folder to SpotVox's folder, and dragged+dropped Teapot.vox onto the .exe and then the turntable .bat . It certainly works here:

teapot_Turntable

I know using .vox files that were most recently saved by older versions of MagicaVoxel will not work, due to breaking changes ephtracy made in the .vox format. SpotVox tries to be compatible with the current MagicaVoxel release version. I've just saved older .vox files with the current MagicaVoxel when I've encountered issues with older files; typically making any change and undoing it is enough to allow it to save over the old-format file.