I think I’m really narrowing in on it. I have a scene setup using only a cube object which can, of course, have tiling textures applied to the three visible faces. Here’s a screenshot of my set-up:
Pretty much all of the relevant information should be in that shot (along with the world’s ugliest brick texture image), but here’s a breakdown of the important stuff:
Under render tab / dimensions, X is 128 and Y is 256. Keeping it to powers of two.
Note that the camera has been positioned at X 10 and Y 10. The Z value was done pretty much by eye to get the bottom corner of the cube slightly past the camera border. The camera’s orthographic scale was set so that the sides of the cube are very slightly outside the borders of the camera as well.
The above camera settings are dependent on the notion that the cube will be scaled to 2 Blender units on all axes. I did it this way so that I could have the X and Y of the cube at 0, 0 and extended one unit front, back, and side-to-side. The origin of the cube has been set to the center of the bottom four vertices so that it extends two Blender units along Z. Obviously, my handling of the cube’s scale and origin are a matter of personal preference, but if you want to set this scene up for yourself, the math is already done for you with the cube as I’ve made it.
Next is the matter of handling two problems caused by anti-aliasing: semi-transparent pixels along the edges of the cube and the color bleeding caused by the Gaussian pixel filter. Go to the “film” settings on the render tab and check “transparency” to begin.
You can get away with setting the Gaussian width to .001 (the minimum value) to get rid of all anti-aliasing, but this will almost definitely lead to unsightly artifacts in the cube’s texture. Unfortunately, we can’t keep it set to the default of 1.5 either as this will cause the edges of your cube to be darkened due to bleed after we’ve boosted the contrast in the alpha channel. The best compromise I’ve found so far is to set this value to .4, which is enough to keep the invisible darkness outside of the rendered pixels from bleeding in and still have some smoothing within said pixels. However, this isn’t quite low enough to get rid of all of the semi-transparent pixels around the edges.
That’s why I used this very simple node set-up:
You can see that the black slider is set to .499. The white slider is set to .5, which leads to a smack-in-the-middle, full-contrast alpha channel which can then be plugged in to the appropriate slot on the composite node. Easy peasy.
Now let’s talk materials. A diffuse shader with a sun lamp on scene should work, but I want full control and no variance to the lighting across my faces, so I opted for an emission shader with some trickery to fake a shadow:
The mapping node can be adjusted if you wish to make your scene appear to be lit from a different angle, of course. It’s hard to tell from the screenshot, but that untextured emission shader’s color is actually 0, 0, .01 so that it will have a blue tint. A very little bit of color here goes a surprisingly long way.
Below I’ve put together an image of the resulting render. The top-left part of the image shows a render of the cube by itself. The rest is a screenshot taken from a stock-standard code that I wrote in Love2D to display the cubes as a 6x6 tile map. No editing was done other than to remove the background color from the Love window.
It was a lot of work getting here, but this should go a long way toward speeding up the process of making isometric tiles for use in 2D games. If you have any questions, suggestions, or just plain know a better way of doing this, I’m all ears. I hope that this helps at least someone.