Shadows

BlitzMax Forums/BlitzMax Beginners Area/Shadows

tonyg(Posted 2005) [#1]
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?


Clyde(Posted 2005) [#2]
You might want to look into raytracing / raycasting, and see if that has anything on setting up shadows and lighting.


tonyg(Posted 2005) [#3]
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.


LeisureSuitLurie(Posted 2005) [#4]
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()


Emmett(Posted 2005) [#5]
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.


tonyg(Posted 2005) [#6]
sorry Emmett, I should have been more specific. I'm trying to do shadows caused and affected by area lights.