Before I go any further, note that the software necessary for this tutorial is Windows only. Sorry to all the Linux/Mac users out there. I encourage anyone with a good solution for these platforms to post them here. (Note: pmin00 has provided us with a solution that works in Linux and Windows; if there is enough interest for Mac he can compile the tools for that platform. Find his tutorial here. I highly recommend giving it a go even if you use Windows, since his software is more suited to the task.)
I'd like to share the solution I found for making easy-to-follow blueprints that can be used to recreate any 3D model at any resolution you desire in Minecraft. It's really pretty simple once you have the necessary programs. The best part is that it's all freeware — you don't need expensive programs like 3D Studio Max. Let's get started, shall we?
First, let's download the programs we'll need. There are two of them, both by the same author, Ken Silverman. The first is a utility called poly2vox. This is a command line utility that takes a 3D model and converts it to a voxel file format. The 3D file formats supported are 3DS/ASC (3D Studio Max) and MD2/MD3 (Quake 2 and 3). Fortunately for us, 3DS is the de facto standard for 3D models and can be found everywhere. And other formats can be easily converted to 3DS. (Such conversion goes beyond the scope of this tutorial.)
Download poly2vox here. All you need is the executable called poly2vox. Place it somewhere you can get to it. I just put mine on my desktop.
Next, we'll need a viewer program to view the voxel files that poly2vox spits out. Ken wrote one himself called slab6. Download it here. Once again, it's just a single executable (with several sample voxel files you can use if you wish). The cool thing about this program is not only is it a fully capable viewer and editor of voxels, but it has a slice editor. That means we can step through each layer of the voxels one by one like a brain scan. This functions as an easy-to-follow blueprint that we can use to build any model in Minecraft layer by layer.
Next, let's search for a 3D model we'd like to recreate in Minecraft. For this tutorial, we'll build this rhinoceros:
The 3DS file for this rhino be downloaded here. If you wish to find a different model to use for the sake of this tutorial, please do so! I highly recommend you make sure it is in 3DS format, though. High quality 3DS models can be found all over the internet.
Right, so now we have all the programs we need and the 3D model we wish to build in Minecraft. Next, we need to use poly2vox to convert the 3DS file to a voxel format (file extension kv6) that slab6 can read. Let's do so now. poly2vox is a command line program, which means nothing will happen if you try to run it by double-clicking its icon. This means we need to open the console.
To do this, go to start, then run (or search in Vista/7), type cmd, and hit enter.
You'll see a console window pop up that looks like this:
Since I saved poly2vox to my desktop, I'm going to use the cd command to change my directory:
After typing cd Desktop and hitting enter, we are now in the same directory where poly2vox is:
Next, we use poly2vox to create a voxel file from the 3DS model. I put my 3DS file (called rhino.3ds) in the same directory as poly2vox, the desktop, to be safe, but I believe the utility is pretty intelligent and will automatically search for the filename you enter in the next step. Now we type poly2vox rhino into the console and press enter. Watch the magic happen!
The program was successful and a .kv6 file named rhino was created on the desktop.
(Special note: execute poly2vox without any arguments to see the options you can give it. You may want to mess with them, but it shouldn't be necessary for this tutorial.)
Now we open slab6 by double-clicking on it. The default shape shown by the program is a sphere. Try experimenting with the controls. They're very intuitive. Use WASD to move around and click & drag the mouse to change directions. Here's what it should look like:
Now let's load our rhino model! Go to file, then open (or just press L in the program) and select rhino.kv6 from wherever you stored it. In my case, that'd be the desktop. Here's what it should look like:
Again, practice moving around. You'll notice if you get really close that it is actually composed of a bunch of tiny cubes, or voxels. These are analogous to the building blocks in Minecraft. But wait, look at how fine all the cubes are! It'd take forever to build, and it might not even fit in Minecraft. Remember, we only have 64 blocks to work with above sea level. So let's fix this. We can halve the dimensions of the model by going to tools -> halve dimensions. Now look at it:
Ah, much more manageable. Sure, it looks a bit less like a rhinoceros, but remember that we've just decreased the resolution of our voxel model, so that's to be expected. Now let's find out just how manageable it will really be to build this thing in Minecraft terms. Hit enter to bring up the slice editor. Your screen should now look like this:
Notice how it gives some dimensions for X, Y, and Z. In my case, it says Z: 7/38 Y: 18/35 X: 23/64. The number before the slash indicates the current slice that you are viewing. The number after the slash indicates the overall dimensions of the model. This means that after halving our rhino's dimensions, it fits into a 64x35x38 rectangular prism.
Not bad! That actually sounds pretty doable in Minecraft terms. This means that our rhino statue will stand 38 blocks tall and be about 64 blocks long. Sounds like a pretty big building project, so let's halve it again. Since we're decreasing the resolution again it won't look as nice, but slab6 still produces the optimal voxels for the model at this resolution. (Important note: if you halve dimensions then double the dimensions, it won't return to normal. It will merely double the halved dimensions. i.e., it will be bigger but still be just as blocky. If you don't like the results of a halving, you'll have to reload the model and get back to the size you want.)
Now, we could just use the viewer and try to create it in Minecraft, but that's a little cumbersome and not very accurate. I have a better way. Click and drag the 'Z' slice window near the center of the screen and press * on the keypad a few times. (Note: I know this is buggy. If you can't get it, try moving the whole window to a different location on the screen and try again.) This will increase the size of the Z slice window. Your screen should now look like this:
Notice how we're looking at slice 9 of 19. That means we're halfway up the rhino. We want to start on the ground with the feet, so let's change the slice we're viewing. To do this, first press enter to make the slice editor disappear. Now, place your cursor on the lowest level of voxels; the very bottom of the feet. Now press enter. You should be looking at slice 18/19:
(Special note: 18/19 is the very bottom layer and 0/19 is the very top! There is no 19/19.)
There! Now we can start building in Minecraft! This is the blueprint for our first 'layer' of building. I recommend placing torches as markers so you can tell where the 'corners' of the blueprints are. Also note how if you mouse over the slice viewer in slab6, you can see the grid of squares so you can get precise counts.
I recommend setting up your windows so you can see them both at once, like this:
It is a lot of counting, but it's worth it to see such a cool 3D model springing to life in Minecraft.
Here is what my project looks like after building the first layer:
I have the four corners of my workspace set up and I also have signs marked with coordinates to aid my counting. You guys are pretty smart. I'm sure you can come up with your own systems to figure out where to place blocks. Now that I'm done with the bottom layer, I change the Z slice to 17/19 by pressing enter to remove the window, then hover the mouse over the second layer of voxels and press enter. Now I have the blueprints for the second layer of the model.
Notice the pink spots? They indicate the areas that are hollow. If you wish to build a solid statue, then fill in these pink spots. But if you want to minimize the number of blocks you use, leave the pink spots empty. If you do this then you will create a model with no gaps and the least number of blocks (not to mention, in our case, a Trojan rhino!).
The rest is very simple. Just rinse and repeat until you're finished with slice 0/19. Enjoy your awesome statue.
3 slices done:
5 slices done:
10 slices done:
15 slices done:
Here is my first application of this technique (on a multiplayer server):
It's the statue of liberty, created from this model:
Now get out there and build some awesome models! It's really rewarding to make something like this come to life in your world.
This looks much better than they way I've been doing it. Thanks so much for posting this here! I'm going to try a model with your software and see how I fare. I'll also add a link to your page in my main post if you don't object.
The coordinates and the ability to view multiple slices in 3D look exceptionally handy. Using slab6, it can be hard to tell how a slice relates to the slice below it. Sometimes I have to flip back and forth several times before I get it. Your software's ability to display transparent slices above and below the slice of your choosing looks superb. Can't wait to try this out.
Also, I have some time now and I'm trying pmin00's software. So far, so good.
Edit: Okay, I've had a chance to mess with it some more. Definitely better. At least five times easier to use than the software in my tutorial. I highly recommend it! The only downside is it doesn't accept 3ds files as input, but I'm sure there are converters out there, plus it supports some popular formats.
Once you get it set up, I recommend setting the viewer to orthographic projection (by pressing p), then set the view directly over the model (either z or y, depending on the model's orientation, and middle mouse button to pan). Press s to show one slice at a time. Then you can use j and k to step through the slices. If you press a, you'll get a checkerboard pattern for easy counting. Finally, you can press n and t to make neighboring slices show up and transparent. Very handy!
My initial post didn't show up so sorry if this turns out to be a repost.
This is an excellent idea! Thanks for sharing. I've been wanting to build the staue of liberty from Planet of the Apes. This method will make that doable. And of course, you've built the statue of liberty...
Nice tools. Are you generating an Open GL render with a pixel size based on the desired voxel height? If so, I'm thinking that if you set the near and far clipping planes to the size of a voxel, you would be able to generate hollow voxel models. Just a thought.
Edit: Hmm. I just realised why that wouldn't work. I'm thinking more of a veroni sweep approach and not a pixel approach.