Jump to content
  • Advertisement
Sign in to follow this  
mcguile25

How to handle walls and other objects in 3D iso view

This topic is 4847 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I am making a Direct3D game engine which will have an isometric perspective (like Diablo). I know how I want to handle ground tiles -- simply have a 2D array of tiles that are rendered as textured quads. But when it comes to walls and other objects in the game (houses, etc.), how are those rendered/tie into the ground tiles? Obviously they are rendered after the ground tiles, but would it be easier if they were tiles as well or meshes from a .x file rendered from 3D studio? I guess any suggestions as to how I can handle this would be appreciated or if you can give me a short overview of how you are handling walls/other objects in your game, that would be appreciated as well :)

Share this post


Link to post
Share on other sites
Advertisement
There is really no 1 official way of doing it.

In 'standard' 2D isometric games, walls were traditionally drawn as sprites over the top of the ground. The sprites were created in a special manner to fit the edges of a diamond-shaped tile, and drawn in a certain location to line them up with the edges, be it the back edges of a diamond or the front edges. This is how I did it in my isometric games. I wrote up a quick tutorial on using Blender to create these wall sprite graphics here.

3D hardware gives you additional options. In early versions of Golem 1 I had problems with getting accurate lighting using the simple sprite method. 3D hardware, though, lets you assign vertex colors to the quads you use to draw the sprites, making lighting a piece of cake. Now you can draw walls as quads aligned with tile boundaries and mapped with the texture image, and assign vertex colors to evenly color the wall quad to correspond to lighting. You can use a denser mesh of verts for the quad to get more even, detailed lighting.

It is also possible, of course, to go with fully modelled 3D meshes. This is the approach I went with in the Golem3D engine, due to the fact that I changed it from isometric to a perspective projected viewpoint, and walls mapped on quads looks bad in that context. However, the problem I have with fully modelled 3D walls is the relative lack of detail I am able to obtain. With pre-rendered images, I can throw in as much detail as I desire--stone carving work, lots of rubble, all sorts of decorations and stuff--and not worry about the performance. With 3D walls, you need to govern the level of detail in the mesh modelling and try to finesse texture work to supply the rest, sometimes with mixed results. However, a more talented artist than I could make it work. 3D modelled walls supply the added bonus of more realistic collision detection; with standard isometric quad walls, collision detection is usually limited to a grid-based system, so collisions of things such as projectiles with the wall may not always be completely accurate. This is a minor detail, though.

Lately, with my v2.0 of the Accidental Engine, I have been experimenting with a sort of hybrid technique. I pre-render the walls as in a standard 2D isometric, but then I map them onto crude, very low-poly 3D meshes called impostors which give a rough approximation of the actual geometry of the wall or object. This provides the bonuses of better lighting and more realistic collision detection, but without the potentially heavy performance hit of full 3D models. I outlined the procedure a little bit in my journal here. This method actually works very well for an orthographic projection, even for very large objects and walls, something that poses problems in more traditional 2D approaches.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!