Shadows
BlitzMax Forums/BlitzMax Beginners Area/Shadows
| ||
I'm trying to create simple shadows for an Isometric 'wall'. At first I thought about drawing a skewed rect. However, I then checked the ZombieBlast game and thought I might do it by rotating the image itself. However, I can't get the rotation right. This is what I have so far... Strict Global scr_wide = 640, scr_high=480 Graphics scr_wide,scr_high Incbin "grass.png" 'green 640,480 image Incbin "house.png" 'iso 64*64 rectangle Global grass:TImage = LoadImage("incbin::grass.png") Global house:TImage = LoadImage("incbin::house.png") While Not KeyHit(KEY_ESCAPE) Cls DrawImage grass,0,0 SetBlend alphaBlend SetColor 0,0,0 SetAlpha 0.3 SetRotation 30 DrawImage house,120,100 SetColor 255,255,255 SetBlend maskblend SetAlpha 1.0 SetScale 1.0,1.0 SetRotation 0 DrawImage house,100,100 DrawText MouseX()+" " + MouseY(),0,0 Flip Wend End The problem is I need to rotate it along an edge line rather than a point (I think). Any ideas? |
| ||
You might want to look into raytracing / raycasting, and see if that has anything on setting up shadows and lighting. |
| ||
I've looked at lots and lots of methods. Before I get too involved with them I wondered how easy this would be. It works ok with 'normal' 2D geometry (see ZombieBlast) as the rotation is on a point (e.g. the feet). If this DOES work then it might be quicker than light/shadow maps and just need to see how many inaccuracies there would be. |
| ||
Do the math and draw a polygon for the shadow. Using set alpha you can make it blend into the floor. Do something like... drawfloor() drawshadows() drawplayersenemiestreasurewallsetcetcetc() |
| ||
I did shadows by simply drawing the original image with x and y offset 2 pixels with color set to some shade of black. Draw shadow first - draw full color image second. |
| ||
sorry Emmett, I should have been more specific. I'm trying to do shadows caused and affected by area lights. |