#Shadows
5 messages in this thread
David,
You and Charles Blaq seem to be intent upon turning the discussion on Radiosity
into one about Shadows, so I'll oblige you and start a new thread myself. (No
need to thank me.<g>)
>> Shadow mapping is one of the things I'm really missing in Imagine. Shadows
give a scene a much better 3D effect, but at the moment I have to use trace to
get shadows which is too slow for tight deadlines or large anims. << [DH]
I too used to think that shadow mapping would be a nice addition. But after
working with a few programs that use this technique, I no longer think shadow
mapping is all it's cracked up to be.
Shadow maps are not automatic like Ray-tracing. They require tweeking and
diddling that can easily end up taking much more time than simply doing a
trace. And without care, they can look really lousy in animation. If, for
example an object or figure is rotating and casting shadows on a ground, the
program has to calculate a new shadow map for each frame, and throughout the
animation the pixels around edges of the shadow can flicker and dance
unpleasantly because of variations in the shadow bitmaps. I've seen many
animation sequences, generated with other 3D programs, plagued with this very
problem.
In general, I think you'd find that most users who've worked with
shadow-mapping programs would prefer to use ray-tracing, especially if the
lights could do soft-edged shadows. The difficult image processing (required to
get shadow mapping to work well) would probabaly take more time for Impulse to
program than a simple routine to soften traced shadows.
>>My vote would be for you guys to work on soft shadows the workaround for soft
shadows (replace lights with n x n x n arrays of lights) is really not
reasonable. I agree with others that the lack of shadows is one major
difference between the look of our Imagine work and that produced by users of
other software.<< [CB]
Automatic soft-edged *traced* shadows would be nice, but I've actually had
fairly good success with arrays. They're a bit inflexible, but I think they
look more optically correct than shadow-mapping. I suspect that a good soft
shadow routine would slow rendering dramatically. Perhaps rather than doing a
`true' soft shadow technique, Impulse could do a hybrid approach using a
`built-in' light array, and a feathering routine to blend the gradations in the
edges of the shadows. Or maybe there's something that could be used to perturb
the rays of light around the egde of a shadow without the necessity of casting
more rays, and slowing rendering.
But look… here's my BIGGEST problem with *sharp* shadows. Since light is
clipped by the edges of polygons instead of by a smooth phonged surface,
sometimes only a few isolated polygons get hit by shadows in areas of surface
parellel to the rays of light. This can cause the edges of shadows to look very
jagged, or even like there are stray black artifacts on the object. This
happens even to objects with lots of polys like Humanoid, around the middle of
his chest. I think the best way to eliminate this problem is to have rays of
light originating from a broad area. Arrays work fairly well at this. With rays
coming from many different angles, the jaggedness (caused by the abrupt
clipping of light along the edges of polygons) is nicely disguised.
– Tim
Tim,
no doubt, shadow mapping is not the only and best solution, and you can do
alot to make them look wrong or ruine the effect. But this can easyly be done
with anything in 3D animation, just place one triangle wrong and the object
will look bad.
What I mean is: I want this option so I can decide if it's better for the
specific animation or not. In many cases it will speed up rendering. BTW,
there is hardly any 3D program that does not have shadow mapping.
3DS users complained about shadows and Autodesk added raytraced shadows. Cool,
but it uses raytracing only for shadows, the rest is still scanline rendering.
They use the advantage fo accurate raytraced shadows and the advantage of fast
scanline rendering. How about this Mike?
Raytraced softshadows definately look cool. I used to experiment with light
arrays and the effects is very nice.
I know two programs that have soft shadows in raytracing. POV and Alias (there
might be other, too, but I can speak only about these two). Both use dithering
in the shadows which is no good for animation since the shadows will start to
bacome "alive" in the animation (different shadow dithering in each frame).
Alias suggests not to use soft shadows in animations. POV doesn't have
animation support, but I think it would look the same.
So there are always pros and contras in every technique and I'd like to have
the all (yeah, I want it all! <g>) so I can choose the right for the
individual task.
-David
David,
Now we're getting somewhere… I agree with most of your remarks, especially
the “I want this option so I can decide if it's better for the specific
animation or not'' remark. And apparently John Stetzer, who has used another
Scanline program, agrees with you as well, based on his following remarks about
Shadow mapping:
>>They're brutal, ugly, have to be tweaked to look right a great deal of the
time…and are sometimes the only way to get something in on time. As an
example; one of last year's projects involved 3 250,000 poly. meshes used in an
animation (the total animation count ended up being 15000+frames). W/a single
traced shadow, it took more than a half hour to render a frame on a P5-60; w/a
single shadow mapped spot, it never took more than 10 minutes. The end result
was ugly (I had to keep things low so it would get done), but added definition
that wouldn't have been there w/out shadows and met the customer's needs. I
think there should at least be the option for them; it could mean the
difference 'twixt getting things done and not (assuming you have the memory to
spare).<<
I guess I've never thought of Imagine as principally a *Scanline* renderer.
Don't get me wrong,… I'm glad Imagine does some Scanline stuff,… but I
believe Imagine's reputation was built on its strength as a `Ray-tracer', and
that's also the way Impulse has promoted it. I think it's expecting a lot for
them to do things the same way as other companies who've focused *most* of
their efforts on beefing-up Scanline procedures. Remember Ray-tracing is a
fairly new feature to programs like 3DS and LW, but it's been an integral part
of Impulse's products from the very beginning, starting with `Silver' some 6 or
7 years ago.
I guess this is one of the reasons why I keep focusing on suggestions to
beef-up their Ray-tracing. But who knows… maybe Impulse IS intent upon making
Imagine as strong a Scanline renderer, as it is a Ray-tracer. (Mike, GreG?)
Imagine is already an extremely fast Tracer. (On my P90, moderately complex
scenes with shadows and reflections typically take 2 to 10 minutes to render at
640×480.) And my hope is they can get all this stuff to work in Trace mode so
its almost as fast as other's Scanline renderers. Furthermore, with the
addition of new 3D accelerator boards (S3, Creative Labs, Cirrus-Logic, Matrox
and others) and API's coming out in the next year or so, I think the issue of
*speed* will be irrelevant, because both Scanline *and Tracing* will be fast
enough to get the job done. I guess that's why I don't think its wise for
Impulse to divert too much of their energy into Scanline technology. But I'd
hate for them to loose committed, inquisitive users like you in the meantime.
(Mind you… I'm not implying this would happen, this is strictly
hypothetical.)
I think it would help if they put in more controls to determine which objects
can RECEIVE and CAST shadows, and maybe combine some Traced elements with their
Scanline mode, as you and others have suggested. But I don't know how difficult
this would be.
-Tim
>>
But who knows… maybe Impulse IS intent upon making Imagine as strong a
Scanline renderer, as it is a Ray-tracer. (Mike, GreG?)
<<
Tim,
Mike would have to field all your questions about where Imagine is going. I
probably don't know much more than you right now. Remember, I don't work for
Impulse, and don't know the day to day discussions/developments there. You
might want to address a message to Mike.
-GreG
Tim,
A friend wrote/writes it's own anim program with tracer and renderer. He
managed to combine both ways. Don't know if that would be easy or hard to do
in Imagine.
-David