Hi! My name is Gabriel de Laubier, or Elbriga here on Sketchfab, I currently work as a lead artist with Vida Systems for Google Expeditions, and as a freelance 3d artist and voxel artist.
In this tutorial, we’re going to explore the different options for exporting a model from MagicaVoxel to Sketchfab.
So you’ve made a great MagicaVoxel model, and you rendered it in MagicaVoxel’s renderer: it looks amazing!
However, when importing it into Sketchfab, it doesn’t look as you expected…
Fortunately, there are some very easy tricks to improve the render of your model on Sketchfab, and even add effects like lighting and transparency without having to use any other 3d application.
In this tutorial, we will cover all the techniques to make the most out of your model with just MagicaVoxel, Sketchfab, and a 2d editing program like Krita, Gimp (both are free), or Photoshop. No special skills are required!
We will also discuss the other methods for exporting your model, like MagicaVoxel baking or baking in a 3d program like Blender, and what to expect with each method. However, editing or baking with Blender won’t be covered in detail, you can learn more about it in my previous tutorial, ‘Creating a 3D Star Wars scene in voxels using MagicaVoxel, Blender and VoxelShop‘.
About MagicaVoxel export
So, you’ve been hearing alot about MagicVoxel exports, formats, baking… it might be confusing to figure out what is the best way to export your model to Sketchfab with minimum hassle: after all, MagicaVoxel alone has nine different export formats, and it’s not always easy to know what does what.
Unfortunately, there is no “one solution” to this. The good news is, it doesn’t have to be that complicated. There are actually 3 solutions to export your model.
Exporting straight from MagicaVoxel in .obj format.
This method exports two elements: your model, and a texture containing all of the colors in your palette. All of the settings you might have set in the MagicaVoxel renderer will NOT be exported (lighting, emissive materials, transparency, metal…).
The model (mesh) exported with this method is not exactly a voxel model: it’s just the “shell” and all the voxels that are inside are not taken into account. The mesh and the texture work together in this way: each face of the mesh is “unfolded” in a specific place in the texture, and that is how Sketchfab retrieves the color information, and is able to display your model’s colors like you would expect.
Here is the model open in Blender, a 3d editing program. Each dot on the texture represents the faces that are “unfolded”, so that the program knows where to apply the texture.
Baking your model in MagicaVoxel and export in .ply format.
If you find that exporting straight in .obj doesn’t give good enough results, you might want to go to the next level: baking. Baking is a process that saves the lighting information of a model in the mesh itself. Although baking is generally done with a texture, MagicaVoxel actually stores the lighting information in each vertex (point) of the model. When exporting a baked model from MagicaVoxel, you don’t get a mesh and a texture, but only a very dense mesh that contains all the color information.
There are several downsides to this technique: first, the mesh can be heavy if your model is big and complex. Second, MagicaVoxel only bakes the lighting from the Sky and Sun in the MagicaVoxel renderer, and the lighting from emissive materials and the transparency won’t be taken into account. It will also be harder to add lighting and transparency effects in Sketchfab without using a 3d software like Blender.
Here is a baked .ply model open in Blender. No texture is needed, but note how dense the mesh is.
Exporting from MagicaVoxel in .obj format and bake and edit it in a third party program.
If you really want to go all the way and have the most advanced lighting and effects in your scene, the best solution is to import it in your favorite 3d software, like Blender, Maya, Cinema4d… And setup all the lighting, transparency and materials, then bake it onto textures and import it again into Sketchfab (learn more about it here).
While this often gives the best results, it is the most time-consuming and complicated method, especially if you are not used to using 3d software.
Here’s an example of a baked voxel model:
Importing straight from MagicaVoxel
This is our voxel model in the MagicaVoxel editor:
(You can dowload this model as a .vox file under CC-BY license here)
And this is our voxel model in the MagicaVoxel renderer, we’re going to try and mimic that look in Sketchfab. As you can see, emissive light and transparency are the key to the scene:
Before we export our scene, there is one problem we have to solve. As mentioned earlier, MagicaVoxel doesn’t export a Voxel model, but a mesh, meaning the outer shell of your model. That is a problem when using transparency, because some faces that are inside your model will show holes, like so:
To fix this problem, we’re going to adapt our model a little. Here, we just moved the glass windows so they are outside and don’t have any faces in common with other voxels. And when imported to Sketchfab, no more holes!:
Now our model is ready:
To export the mesh, just click “obj” in the “export” tab in the lower right hand corner in MagicaVoxel, and choose a folder in your computer. You’ll notice that MagicaVoxel outputs a .obj file, a .png file (the texture) and a .mtl file (the .mtl file contains the material information that links the .obj to the texture).
To import our model, just hit “upload” in the top right hand corner in Sketchfab, and drag and drop our three files:
If all goes well, you should see your model with the texture applied. If the texture isn’t applied, just check the material settings:
Now, our model looks a bit dull. First, we need some lighting effects. Emissive materials in Sketchfab don’t light the scene or cast any shadows, but we’re still going to be able to simulate a glow for those materials with the “bloom” effect.
For this, we will need a texture dedicated to emission. Remember that our mesh is “unfolded” with each face corresponding to its color on the png texture.
Let’s open the texture in Krita, Gimp, or any 2d editor:
Next, paint all of the texture black, except for the colors you want to be emissive. Here we have the orange and yellow for the fire, the green for the screen, the neon color, etc.
Save the texture as a separate file and import it in the emission tab of your material:
Still doesn’t look like much. We need to enable the bloom post-processing filter. Much better! You can adjust the bloom settings and the emission strength in your material to your liking.
Next, we need some transparency. Like we did for the emission, we need to prepare a texture, so open your .png texture again:
Let’s paint it black, except for the color(s) we want transparent, and save it as a separate .png image:
Next, let’s import it in the “transparency” tab of our material. DON’T FORGET to set the “Format” setting to “Luminance”. Um, this seems to do the exact opposite of what we want…
… so we need to check “invert”, and ta-da:
Before we go further, let’s adjust a few settings in the general tab. We’ll set the background to a flat color, and we’ll reduce the field of view:
Next, it’s time to add some lighting. In the lighting tab, you can disable the environment and enable lights. We’ll enable only the first light to begin with, and choose a “spot” light to simulate the lighting from the neons:
Then, we’ll simulate the ambient lighting in the room with a point light:
And finally, we’ll add a direction light:
We’re done with lighting!
Finally, Sketchfab offers a wide range of post-processing effects that you can use. My only advice would be: don’t overdo it. However, for this scene we used almost every filter:
- Animated noise will add a nice effect to our glowing lights
- A little depth of field will look great if people zoom in your model
- A little sharpness can look great if used in moderation
- Chromatic aberration simulates light distortion through a camera lens, once again, to use in moderation
- The vignette effect adds a little focus to the center of the image, but don’t overdo it.
- Setting tone mapping to “filmic” will make the scene much more dramatic, you can also play with the exposure slider to adjust the brightness of the scene.
And now your model is ready to publish, and share!
Baking your model in MagicaVoxel
If your model doesn’t need emissive lights or transparency, it’s probably a good idea to use MagicaVoxel baking, as it adds some nice looking shadows to your scene. However, it only takes into account the “sky” and “light” settings:
To bake your model, hit “bake”:
This exports a .ply file, that contains all the color information. The following compares the same model with and without baking, note the shadows on the left model:
To import into Sketchfab, we just need to drag and drop the.ply file as we did for the .obj. The model should show up with all the colors and shadows already, however, it looks a bit dull:
Since our model is baked, we don’t need to use the “lit” renderer, let’s switch to “shadeless” instead, and choose a background color and an appropriate field of view:
Finally, we’ll adjust post-processing filters as we did for the previous model:
If you need some emissive and transparency settings, you’ll need to edit the model in a 3d modelling software, like Blender. However, this is a little more complex and we won’t be covering it in detail in this tutorial. If you are familiar with a 3d modelling software, all you’ll have to do is select the faces you want to be emissive/transparent, and separate them into another mesh. Then, when importing into Sketchfab, you’ll be able to set values for emissive and transparency settings for each separate mesh. To learn more about using Blender to import MagicaVoxel models into Sketchfab, this tutorial might be useful.
Our finished Sketchfab model:
I hope this tutorial was helpful, if you have any questions, leave a comment below!
Thank you for reading!