Isometric Lighting and 3D

Started by
8 comments, last by fdaniels 14 years ago
Hi guys, My game is currently in 2D dimetric. Everything is working nicely except I have reached a roadblock. I would love to implement dynamic lighting in my game, but being a 2D engine - lighting isn't easy to implement. Walls won't automatically block light and the light won't automatically bend on walls, etc. So I was considering rewriting my game in 3D. This will give me access to nice particle and lighting effects.The problem is that ALL of my assets have been rendered in 2D but with a dimetric angle. The trouble that I am having is trying to comprehend how I will port these assets to 3D without their models. Should I just stick to trying to hack a lighting effect into my 2D engine, or should I try and port it to 3D? Would this be possible without having to have someone create a bunch of 3D models for me? Thanks in advance - Frank
Advertisement
Well, not that going in 3d will just solve all your problems.
Did you think how would you do the lighting in 3d?

Without an artist I don't think there is a way to get 3d data.
Games like the old Diablo did get 2d data from the 3d modeling package and creating sprite sheets. But the other way... I don't think it's possible.
At least to get standard 3d data like x,y,z normals and so on.

You could try to hack some 2d filters to get a sort of bump map from the 2d and try to make some sort of 3d normal mapping work assuming some simple models for walls. But I doubt this approach will get you very far (animated characters?).

I remember some old article using visibility checks with a tile grid that could fake some decent lighting, without too much hassle. Sorry, I can't provide link... googling old stuff is not easy [lol]
Thanks for your answer. It pretty much summed up what I was thinking.

In a way I am very happy now that I know that going 3d won't help me. Not having to re-engineer a new game engine is going to save me a lot of time. :D One of the reasons that I was considering going 3D was so that I could design a neater architecture. A lot of what I have done have been hacked together as the need for a new feature arose.

Now to figure this lighting thing out. :)


I searched around a bit on GDNet and found the following material, which you will hopefully find useful:
2D soft shadows
Razorblade's Isometric Dynamic Lighting Algorithm

Good luck!
Wow, those are GREAT! Thank you so very much.
If you are still interested in going 3d, this thread might help you out. O-san's approach does not require that you replace any of your assets :)

http://www.gamedev.net/community/forums/topic.asp?topic_id=481967

Enjoy :)
I've made a short YouTube video showing some path finding code. However, the shadows and lighting can also be seen in the video.

">Space Patrol 3000 @ YouTube

The video first shows some menus, skip to 40-50sec into it if you want to see the ingame part.

I think it should be possible to get reasonable lighting results with 2D graphics too. I believe however that it is quite much easier to get lighting using 3D graphics as it then comes practically for free. Instead the effort lays in converting the engine to a 3D one, which can be quite the undertaking.
Nice one O-san. I've been reading your posts with much awe. Love your work.

Thanks for the advice and pointers. It got me thinking a little. I was sitting down with some paper working out isometric lighting (aka hacking). While very possible, it is going to require some hacking on my part to determine which side of a wall or object a light is, then to decide where the light stops.

Then I thought of another plan, which seems like it will work very well. Use 3d rendering. Model the entire world using 3d. I can still use my current assets if I use billboarding to render the textures on the objects.

This shouldn't be a problem because my camera will always be locked to a certain angle. Additionally I won't need to remodel anything because I can create a simple application to generate 8 vertices per object. This should allow me to map a 2d texture onto a box in 3d space. While I am sure that it will display properly I am not sure if it will allow me to use 3d lighting to get the desired effect.

What do you think?


Edit: It seems like I was misunderstanding billboarding. I thought that billboarding was the ability to apply a 2d texture to a 3d model, whereby the appearance of the model was the same irrelevant of the angle. Clearly it is not [:D]

Now I am going to check to see if it is possible to setup a 3d quad without a texture (invisible?) that I can used to block the light. Not sure if this is possible. As you can see I've stubbornly avoiding 3d up until now.

[Edited by - fdaniels on April 13, 2010 12:59:17 PM]
I'm not here to help with details, just to nudge you in the right direction:

Honestly, using full-blown 3D is just way easier once you start to need transformations, lighting etc. Making the switch wasn't nearly as hard as I had expected... As long as you've got some understanding of linear algebra it's easy (enough).

Make the world a 3D model, then make your sprites quads that always face camera on some axes. (Alternatively ditch the sprites and use 3D models instead.)
Thanks for the nudge!

This topic is closed to new replies.

Advertisement