[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Shadows (Yet Another Object Graphics Question)



Karl Schultz wrote:
> 
> 
> The short answer is that there is no magic shadow switch in object graphics.
> 
> But here is a reference that might be of help.  There is a section on
> shadows in the OpenGL ("red book") Programming Guide about generating
> shadows.  It involves computing a projection transform that projects your
> objects onto a plane along the light direction, which is exactly what you
> want.  The book tells how to come up with the matrix given the plane
> equation of your ground plane and the direction vector of your light source.
> 
> You can create an object graphics model structure where you have your
> objects and their "normal" transform in one model (IDLgrModel).  You would
> also create an additional model whose parent is the first model, and add the
> same graphic objects (sans ground plane) to it with the /ALIAS keyword, to
> avoid complete duplication.  Finally you adjust the transform in the second
> model using the transform derived from the red book.  The intent is to draw
> the same objects twice, using a different transform each time.
> 
> I haven't actually tried it, but I think it would work and would make an
> interesting project.
> 
> There is one additional problem that you may run into.  The shadow polygons
> will be drawn onto the same plane as the ground plane (we are trying to do
> this!), so you may get Z-buffer "fights" or stitching effects, because the
> rasterizer may not generate the same Z-coords for each pixel since the plane
> equations for the polygons may not be exactly the same.  If you encounter
> this, I would try moving the shadow plane slightly away from the light
> source so that the shadow polygons sort of float over the ground plane.  You
> would use the original ground plane plane equation when computing the shadow
> transform matrix, but actually draw the ground plane with a slightly
> different plane equation.  If the ground plane is perpendicular to the light
> source direction, then it would be a simple matter of adjusting D in the
> ground plane plane equation.
> 
> Hope this helps,
> Karl

Wow!  This works great!  I had already suspected the Z-buffer fight
problem and had pre-positioned the ground plane so it wouldn't be an
issue.  It does help that I have a simple geometry case.

Once again thanks!
-- 
Jason Meyers
Ph.D. Student, Center for Imaging Science
Rochester Institute of Technology
jpm7934@rit.edu