A downloadable tool


Ultimate Voxel Optimizer for Unity is now available on the Asset Store, included with source-code for real time optimization! Get it at https://assetstore.unity.com/packages/slug/233337

Want to get some extra performance in your voxel games? Or need a central application to easily export your voxel models?

The Ultimate Voxel Optimizer allows you to export voxel models made in MagicaVoxel and Qubicle with a number of options and formats, to help fit your workflow perfectly, and is available for Windows, Mac, and Linux.

Features

  • 4 export methods to choose from, including vertex colors, materials, textured, and optimised texture
  • Import any compatible .vox file
  • Export to .obj, ASCII .fbx, or binary .fbx
  • Choose whether to import an object's transformation data
  • Retain filepath structure when exporting models
  • Import a whole folder of .vox files for mass-exporting
  • In-program info buttons to help you decide what fits your workflow
  • Settings are saved between sessions to give more efficiency

New!

  • V1.2
    • Qubicle support!
    • Better rotation management
    • Support for more magicalvoxel versions
    • Full command-line support with documentation
  • V1.1
    • Cut entire sides of an object to remove unseen polygons
    • Set your objects' pivot points to any value
    • Compatibility for models with rotations, flips, and duplicates
    • Improved MacOS support

The Ultimate Voxel Optimizer imports .vox files using the latest MagicaVoxel specification. This means that some models may need to be loaded and saved in MagicaVoxel to correctly export. With version 1.2, Qubicle's .qb models are supported. The following export settings should be used:


Support

The Ultimate Voxel Optimizer is supported with Windows, Mac, and Linux.

If you encounter any bugs or unexpected behaviour, or want to request a feature, please leave a comment on this page, or direct message on twitter.

You can follow me on twitter at: https://twitter.com/nateonus to get updates on this program and other things I'm working on.

StatusOn hold
CategoryTool
Rating
Rated 5.0 out of 5 stars
(3 total ratings)
AuthorNat
Made withUnity
Tags3D, Pixel Art, Unity, Voxel
Average sessionA few seconds
LanguagesEnglish
InputsMouse

Download

Download
Command Line Instructions.txt 2.3 kB

Development log

Comments

Log in with itch.io to leave a comment.

(+1)

Oh, my cattle! 

Hello, I want to be able do make normal maps for my models. If I were to have two VOX files with identical voxel positions but different color palettes, would this program export their unwrapped textures exactly the same? Also are the unwrapped textures always oriented upwards or rotated to minimize texture size? Thanks in advance!

I don't get it, what version of magica voxel is this for??, I see this was updated 2months ago but its not working with the version of magicavoxel released june last year

(1 edit)

Seems like exported .vox files don't work atm. But exporting to .qb works for me.

Edit: Seems like saving as .vox in MagicaVoxel version 99.6.4 works.

(+1)

Hey everyone, sorry for being AWOL recently. Had some major life updates but I'll be adding some new features soon.

Thank you all for the patience.

(1 edit) (+1)

Hi. Any updates on how the progress is going? In the current state the application unfortunately doesn't work. When using it on any .vox model that I have, it says that some files are not compatible voxel models. I am using the latest MagickaVoxel (0.99.7.1). The commenter below mentioned that this is a .vox file format issue which was changed in the latest MagickaVoxel version.

EDIT: Heads up for anyone interested: I switched to older format version (MagickaVoxel 0.99.6.4) and so far haven't ran into any issues.

Hey! Thanks a lot for the comment, this has been fixed in the new version!

Heya my dude.


I bought this a few weeks ago, thinking it would be able to 
speed up my development time. Now, granted, I don't use MagicaVoxel, I use Qubicle, but, when exporting as a .vox file, it doesn't recognise it as a valid format. Which it logically should do. If you could come back and do some updates, it would be extremely great of you.

Thanks!

(+1)

Hey, thanks for leaving a comment.

Sorry that you're having this issue - Unfortunately Qubicle exports its .vox files differently to MagicaVoxel, and doesn't have any documentation on how these are done.

However, with a bit of effort, I could add in support for Qubicle's .qb files. I shall take a look and see if this will be possible!

(+1)

If you could do that, that would be amazing!
Strange though, you'd think it would follow the same rules given it's the same format.

But, if you're able too, once again, that would be amazing :D

(+1)

Unfortunately it seems they aren't actually the same format. The only information I can find regarding Qubicle's .vox format is that it's based on the Voxlap engine's file format, which is difficult to get any solid information on.

Anyway, I'll be implementing the ability to read .qb files. Hopefully this helps with a lot of people's work flow!

Oh, that's weird. But, interesting!

.qb format, is that a common format between them?I know very little about voxel work.
Since I mostly deal only in 3D modelling via Maya.

(2 edits)

Hi, just bought your optimizer, even though it seems not to be updated anymore. I just downloaded and started the app. But i can not convert any Voxel-Model. Even the files like chr_knight.vox which come with magica voxel don't load. The tool always says:

Some files are not compatible voxel models.

Can you help me with this issue?

And i second the question about a commandline versio

(1 edit)

Ok. Figured it out. Seems the latest versions of magicavoxel changed the file format version to 200, but the optimizer only works with Version 150. I wrote a simple script to change the value to 150 inside the .vox File. Now it converts without any issue.

If there where only a way to use this tool from the command line :D

Hey Mindcry, thanks for letting me know about this, and super thanks for finding a fix! What I shall likely do is add in a check for the version and allow it to import a range of versions, with a warning.

Regarding command line support, I am looking into that now. Have a look out around the next update!

Thanks again!

Are you going to support 'Command line'  in the future?

Hi, command line support is being looked at now! Keep an eye out for the next update for more information.

Hello, will you consider adding Qubicle qb support in the future?

Hi, I'm hoping to add .qb support soon.

(2 edits)

Boo~~  Not recommand! I don't get any answers to my question,passed 3 month.

Hi Starock,

My sincere apologies for the delay in getting back to you - I've had some major life changes and I'm only one person after all.

I'll be updating the optimizer soon, however I cannot see your original question. Could you please let me know what it was?

Thanks, and sorry again.

Hello Nat:

I can see features in Unity assets version that arent in the mounted app, like the scale mesh option. these options will be available soon in the mounted app of itch?

Thank you! :)

Hi Flautarian,

Thanks for asking. I've been quite AWOL from my projects lately due to personal & family stress.

Some of the features that are in the Unity plugin, specifically the mesh scale and a fix for texture sizes, will be included in the standalone program.

However, some features such as preset materials, collider generation, and Unity lightmap support will only be available on the plugin.

Is there a particularly feature you were hoping to see in the standalone version?

Thanks,

Nat

(+1)

Hello Nat,
I have another question/issue
The UVs tend to have overlaps and low coverage.  Is this something you can address?

The shells are created well, but laid out sub-optimally
( See attached image below )

Thanks

Hey Yorgo,

The unused space is actually a small bug I noticed where textures were being unnecessarily doubled in size. This'll be fixed in the next update, which should be coming sometime in the next week or two.

Regarding the UV overlap, it's the most effective way of texturing the model. Because of the changes of colours, without the overlap, textures could grow to be massive sizes with a lot of duplicated information. So unfortunately, I can't really do anything about that one.

Hope this helps!

(+1)

I see. Thanks for the reply.
I was hoping to use these UVs to create lightmaps in Unity. ( Lightmaps can't have overlaps )
Thanks, I'll find another way.

I appreciate your quick responses and updates!

I'll be adding in lightmap uvs to the next UVO for Unity update - Unfortunately I won't be able to generate lightmap UVs in the standalone program, since the code to generate them is part of the Unity Editor library.

(+1)

Oh!   I didn't even know about this asset!
Thanks, I"ll check it out!

(+1)

This is such a great Utility, thanks!

Is there any way to output larger texture maps?

Thanks for the feedback!

Regarding the textures, they are generated in the most optimal size.
If you mean make the whole texture larger, you can simply scale up the texture in an image editor.

If you mean extending the texture with more empty space, I'm afraid that's not possible right now.

Out of curiousity, what is it you're wanting to achieve?

Thanks for the response!
I am re-packing the UVS and warp-imaging the color maps once in maya. The higher-res the source image for the warp, the less likely there is color-bleeding in the final color-map.   I have been upsizing with Photoshop, but wanted to know if there was a setting somewhere..
It's all good as-is
Thanks again!

I guess that makes sense. In that case, I'll see about adding a 'texture scale' for the next update!

Wow, thanks

(+1)

Hello! I had a feature request and an issue.

Can you allow .vox files to be dragged into the application instead of requiring to use the file picker?

We're also having an issue using our material with the .obj files that are created with this program. We use a single material in Unity which takes our palette texture.

To use files created by MagicaVoxel, we just export the .obj, import to Unity, and apply this material to the .obj file. The colors all match each other. This doesn't seem to work with .obj files created by this program.

The VertexColor option says we can't use .obj files in Unity, and the Material option says one material per color (?) which also doesn't make sense for us. The two textured options are also out of the question.

What exactly should we be using to use a single material while using .obj files in Unity?

Thanks for the comment!

I know I had some issues with drag and drop files in the past - But I'll have another look to see if I can figure it out.

Regarding the palette material, I don't know why I hadn't thought of this already.
Using one palette texture for all models will certainly be a good idea, so I'll add it near the top of my to-do list.

For now, I would recommend you use the material export, and import your meshes with 'Location: Use External Materials' in the materials tab.

Thanks again for letting me know!

Thanks for listening to our issues. By 'use external materials' in unity, do you mean the legacy option? I tried that, but I couldn't get it to work either.

If I understand correctly, you will add an option to allow us to export a .obj from this software, import the model to Unity, and allow a material like this to be used with it? Then we can just assign the material to it like this.

If this can be added in the next few weeks, I don't mind waiting. We really need this program for when we start to playtest on mobile, but it would be nice to start optimizing our models sooner than later so we don't have to go back and do so many.

Thanks again for the help!

After taking a little bit of thought, exporting in that way won't add any optimization to your models, since it'll be identical to the magicavoxel export.

I'll add it into the program as an option, but if you really want to optimize your models, I would recommend using the textured methods.

(+1)

So there isn't a way to optimize the meshes while still being able to just use the color palette? Why so?

Effectively it comes down to how the color palette works. If you store the color data without using UVs, you have to split each polygon based on its color.
Say for example you have a large square that is subdivided into 4 smaller squares in voxels. Using materials, each of those smaller squares have to be independent polygons, leading to 8 polygons. If you use a texture, you can reduce that to 2 polygons. 

There are still some reductions that can be made with a palette texture or materials, however, such as batching/instancing within Unity. 

I'm currently working on a Unity plugin for the program, which will allow you to directly import your vox models through Unity with all the same properties as the standalone program. Might be of interest to you since you can batch materials using it.

(2 edits)

Does this not work with the latest beta version of magicavoxel? It says my saves are not compatible.

And can you please add a way to scale too? If that was built in we could skip blender entirely.

Hey, thanks for the comment. Having a sclae value is definitely a good idea - I'll put that into the next update!

Regarding the beta version of magicavoxel, it adds in some changes to the vox file format to support animations and per-frame objects. If you're using them features then it's doubtful they will work.
However if you haven't used these features, then the program should still work. I'll have to look into it and run some tests before the next minor update to see why it's saying things aren't compatible.

Thank you for the reply. No, none of the files I tried use animations. I'm glad to hear about the scale! 😸

Hm, then I'll take a look into fixing that for the next update. 

I recommend you use the non-beta version for now if you're using my program a lot, until I find out what's causing the issue.

(1 edit)

Hey! One more question - does this program automatically change the coordinates to Unity's? In Blender we change up to y and forward to positive Z. If not, can you add that as an option too? That would then allow us to skip Blender.

The program converts to Unity's coordinate systems, so up on your model remains up in Unity and other game engines.

Just bought the tool, it works great! One issue tho, pivot(origin) is set to corner instead of center which causes problems when I'm trying to use it in a tiling system within unity.

Origin can be re-adjusted with a mesh editor but thats an extra step also I don't know why but with binary fbx I'm having texturing problems whenever I import it into blender.. creating another step to fix.

I'd love to have an option where I can choose to have origin set to be at the very center of vox's canvas.

(1 edit)

I want to also add: exporting as *.obj appears to solve this issue.

(+1)

Thanks for the feedback! I'm actually working on a pivot system right now! 

Textures in fbx files are a massive pain, since the fbx file stores an absolute path to the texture file. If the model is moved, then the reference to the texture can be lost. How a program accesses the texture file is dependent on the program, and so it can be a massive pain to get the texture references working correctly in multiple different platforms.

I'm hoping to look into exporting as gLTF files, which may have better support for programs than fbx files.

(1 edit)

I downloaded the Mac version. However, there is no reaction when I clicked "Add Files..." or "Add Folder..." button. The cursor of "Export Path" is visible but I cannot type anything into the bar. Moreover, the font and the window are small. There is no way to adjust the font size nor the window size. 


Edit: I borrowed a Windows device to test if this product can reduce the number of tris as it suggested. Turns out that it does its job. However, the MagicaVoxel texture does not work on the reduced version. Since this product is designed for MagicaVoxel, I had expectation that the texture should work on the reduce one as well.

Hey, thanks a lot for the comment! 

Regarding the add files/folder button, as well as the export path, these are using an external cross-platform library to browse files. I'll try and figure that one out asap and have it fixed for you.

Not being able to change the window size was, frankly, an oversight on my behalf. This'll be included in the next update.

Regarding the texture - Magicavoxel's texture is effectively just a palette, and it's extremely similar to just a material or vertex colour export. A good amount of MV's lack of optimizations come down to the texture file, as it means you're unable to reduce a multicoloured surface into it's optimal amount of polygons. In effect, MV's texture is what causes the models to be inefficient, so it couldn't be supported easily.

Hope this helps. If you need anything else or have any other comments then just let me know.

I appreciate your reply. This product would be convenient if you can fix the file path and size problems on Mac. 

The number of some objects in my objects appear quite frequently. (walls, grass...) Fortunately, there are no many such kind of objects in my project. Using this product already can greatly reduce the number of tris, and I know how to paint them. Thanks for letting me know that the Magicavoxel textures are not easily supported, I was about to waste my day on it.

By the way, I did not mention that I had problem importing FBX file genereated by this product to blender. The error was "ASCII FBX files are not supported". However, I succeed in importing them into blender using some mesh combine add-ons via Unity.

Regarding importing into blender, you'll need to convert the FBX into a binary FBX. You can do this in the program on Windows, otherwise you'd need a tool such as https://www.autodesk.com/developer-network/platform-technologies/fbx-converter-archives, which is suitable for mac and Windows.

Hey Kolyn, if it's convenient for you, could you send me a message via twitter or Discord? Twitter is https://twitter.com/nateonus and discord is Nat#5389. 

I've got a version of the program to send you that hopefully has this issue fixed, but I'd really appreciate if you could test it before I push it into release.

Sure, I do be happy to do so. Discord friend request sent.

nice one and do add some demo on same!

(1 edit)

excellent stuff, congrats on the full release! Just bought my license :)