Rendering Isometric Tiles in Blender 3D

ISO_ExampleIsometric projection is a method of efficiently faking a third-person overhead-camera 3D plane within a 2D plane. Since squares are drawn compressed with 90° angles drawn at 120° or 60° depending on the corner, and all of the lines representing each dimension are parallel, it's possible to use 2D sprite-based tiling and animation in a game that looks 3D-ish without having to do any actual 3D calculations. The drawback is that objects in the game do not appear to get smaller or larger as they move closer or farther away. This can lead to idiosyncrasies of the sort exploited in the works of M. C. Escher.

To render isometric tiles in Blender 3D, we first need to set the camera mode to "Orthographic". This is done by selecting the camera (right click) in Object mode, switching to the "Editing" panel with F9, and pressing the "Orthographic" button. We then need to move the camera so that it is pointing at the origin {0,0,0} at a 45% angle on the XY axis, and 35 degrees off the ground. Some other articles suggest that the camera should be 30 degrees off of the ground, but 35 degrees will give you the desired 120 degree angles for isometric games.

To position the camera in this way, you can either set the camera to rotate around the cursor (placed at the origin) by pressing the period button (the one next to the comma, not the one on the number pad), and fiddling around with the camera location, or you can just download THIS BLENDER FILE with the camera all set up for you.

Tile

 

References

http://blenderartists.org/forum/archive/index.php/t-19237.html

http://wiki.blender.org/index.php/Manual/Render_Two-Point

http://en.wikipedia.org/wiki/Isometric_projection

http://blenderartists.org/forum/showthread.php?t=57499

---

Comments - Add a Comment

Funky Dude
Hi, thanks for posting this, I didn't realize there was a subject on the matter, but can be a little in-depth. I have plans to develop a game, I was going to do in in javascript/html which I think would make it interesting, but perhaps Flash is a better option, anyways, yes camera angles and orthographic rendering is the correct way to achieve this. Here's an example of something I was working on, click on the box at the top left a couple times to get it to work http://webkitstudio.com/game_grid/grid.htm.bak

Michael LĂĽftenegger
Hi! I have setup a blender project which makes life much easier. Just want to show it :-) http://www.flashgameblog.at/blog-post/2010/04/24/rendering-iso-tiles-with-blender/

Brian Hammond
Thanks for this post! I've been working on a render script for isometric game resources in blender and when I started working on tiles I could tell something was not quite right. Comparing your tiles and blend files to my script I was able to quickly find and resolve my issue.

pepeu
Hi, I'm trying to do a isometric game with a diamond shaped stage. If I use the classic 2:1 ratio instead of "true"isometric, I could use the following formula for translating mouse position to a tiles row and column: var column:int = mapSize-(((mouseY/ tileHeight) + (mouseX - (mapSize * tileHeight)) / tileWidth) - mapSize) *-1; var row:int = mapSize-(((mouseY/ tileHeight) - (mouseX - (mapSize * tileHeight)) / tileWidth) -mapSize) *-1; If the grid is 50 x 50 then mapSize is 50. But with "true" isometric the height is slightly higher. I, for instance uses very small tiles that are 15 x 8.3. (if it was the classical, "easy", 2:1 isometric the size would have been 15 x 7.5) I position them with something like this: for (var i=0; i

Generic Viagra Online
This is a great article post. Nicely explained it's awesome. Thanks for sharing the blog..Isometric projection is a method of efficiently faking a third-person overhead-camera 3D plane within a 2D plane. Keep Posting.

Jordan Shoes
Despite the bulk of information online we often fail to get the specific information which is needed this post is good & contains relevant information that I was in quest of .I appreciate your efforts in preparing this post.

Lexus
Excellent posts to read keep it up and keep going on this way. And keep sharing these types of things Thanks

Mau
Nice post.

Karahan
Thanks for such a nice post.


BLOG

SOAP Client for OSX
Developing Native iOS Apps with the Force.com Mobile SDK
Application Development with Android
Moving the Cloud - HTML5 and CSS3 on Node.js
Private Cloudwashing — No Innovation? Duh…
Painless Mobile App Development Webinar
Fluid Mobile HTML5 Design and Development
Codesign: Re-Signing an IPA between Apple accounts
Developer’s First Look at Windows 8 Metro
Storing Data Offline with Salesforce Mobile SDK SmartStore
Using XMLHttpRequest2 in iOS 5 or Android OS 3 to download binary files using HTML5/Phonegap
oAuth 2.0 for Salesforce.com
Setting Up and Using DiffDog for Salesforce.com Deployment Validation
The day the cloud stood still. Lessons learned roundup…
It’s Not Broken. You’re Just Doing It Wrong.
iOS Enterprise MDM Configuration Capabilities
Some Thoughts on Gamification
Cloud to Cloud: Using AWS Simple Email Service from Force.com
Importing a Flex 3 AIR project into Flash Builder 4
OSX Firefox Flex/Flash redraw bug workaround
Setting up automated testing in Flex SDK 3.3.0
Force.com Flex Toolkit AIRConnection updates
Clang! Powerful Memory Profiling for the iPhone
iPhone Programming: Adding a Contact to the iPhone Address Book
Lessons for the Beginning iPhone Developer
Installing a Whole-House Powered Humidifier without a Sail Switch
Eclipse IDE Irritations
Review: Zoom H4 Digital Audio Recorder
Android: Custom Spinners
Android: Custom Buttons
Android: Common Tasks
MP3 Encoding, 16 bit , 24 bit, or 32 bit?
Flash: A better sortOn() function
Rendering Isometric Tiles in Blender 3D
PHP: Replace "Smart Quotes" and other high-bit characters
Actionscript 3: Extra Timer Callback Parameters
OSC between Max/MSP and SC3
SC3: Flash and OSC
SC3 Tank Reverb (JMC)
Search SC3 Code Script
JPEG to WAV Converter
SC3 808 Kick Drum
SC3 Markov Chain
SC3 Pulse Train
Roland XP-80 Device XML for Cubase SX3