MiEx: A Minecraft Exporter

I often get hired to produce or work on animations set in the world of Minecraft, a popular video game where everything is made out of blocks. The sets are generally made in the game itself and they then need to be exported from the game and imported into our animation software. Solutions for this do already exist, but they all have their limitations requiring lots of manual modifications to the exported sets, to make them useable in production. For use in my and my client’s productions, I have developed a custom exporter called MiEx.

MiEx is written to be able to handle any world from any Minecraft edition, including Java and Bedrock editions. It supports modded worlds and custom resource packs. Specific blocks can easily be replaced with props that animators can interact with. Materials are automatically created based on templates. And, MiEx creates geometry optimised for raytracing, allowing sets exported using MiEx to render up to 3x faster compared to sets exported using other existing solutions.

Artists can open up Minecraft worlds in MiEx, pan around using a top-down view of the world, select the area to export, and then export that section out. MiEx will separate the world into large chunks of configurable size. When selecting the area to export, the artist can also specify which chunks are the foreground part of the set and which chunks are the background part of the set. This allows MiEx to optimise the set for its usage and allows it to provide a proxy version of the set with just the foreground that can be used by animators so that they don’t have to animate in a very large set that slows down their scene.

MiEx uses the same resource pack system as Minecraft itself, giving it support for any resource pack and enabling MiEx to export out the worlds exactly how they are in the game. It makes use of custom noise to create random block variations, specifically designed to remove noticeable patterns. It also supports the mcmeta files used with textures, giving it full support of animated textures.

Render times are very important in production and MiEx is specifically designed to reduce render times and to allow for really large sets to become feasible to use. Textures are combined into atlases which significantly reduce the amount of materials, better utilising render engines’ design. But, the main thing that helps reduce render times is a specific optimiser that optimises the geometry to make it much more efficient to ray trace. Other exporters produce large objects with large overlapping bounding boxes that contain large amounts of voids. When a ray needs to be traced, it will hit many of those bounding boxes, even though it never hits any of the polygons inside of it, due to the large voids. This can have a detrimental effect on performance. The optimiser found in MiEx, splits these large objects up into smaller objects in a smart way that reduces the amount of voids to a configurable amount. This means that when a ray needs to be traced, it will hit only a couple of bounding boxes, significantly reducing the amount of objects to check and thereby increasing rendering performance. By how much the performance increases heavily depends on the set, but I have had performance increasements of 3x.

Preview

Here is a sneak peak at MiEx, including an interactive render of a set exported using MiEx, rendered using Renderman running on my CPU, an AMD Ryzen 9 7950X.

HomeProjectsMiExWeb BooksContactNederlands