<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote"><i>Originally posted by mikros</i>
The easiest way to deal with torch shadows would be to make the torch only cast the shadows from other lights and not its own. In the case of torches fixed to walls it would probably be easy to put an invisible smaller object or do a custom shadow map for thap place. An empty-hand-filler object would work when held, wouldn't it?
<hr height="1" noshade id="quote"></font id="quote"></blockquote id="quote">
It's not really possible to have 'selective' shadowing, and even if it was, if the other lights were strong enough to cast shadows of the torch model, then the flickering torch light would be washed out.
I have tried adding an invisible torch model below the actual torch, and that looks ok but the shadow movement is very distracting when multiple torches are in view. I have left this in the script as an editor option 'dynamicshadow'.
A shadow map would be a good solution, but Doom3 doesn't support them. I did try using a decal to portray a fixed shadow on the wall, and this works fine in most cases, but materials with specular highlights still appear 'shiny' through the shadow. I have left this in the script as another editor option, 'fixedshadow'.
I also experimented with adding shadows to the lightmap, but my photoshop skills aren't great.
I have also made 'lit' and 'unlit' materials for the BoD WALLTORCH texture (which will be used in the finished torch). I blended some orange light into the 'lit' material, so the parts in silhouette don't appear jet-black. I also added 'ignite' and 'extinguish' animations, so that torches can be 'used'.
The hand torch is a different entity and doesn't really need a moving light because the player is always moving his hand (even when relaxed), so shadows will already appear dynamic.
The problem with hand torches is getting the flame and smoke particles to behave correctly when the torch is moved around. By default, the func_emitter just spits out particles relative to itself, so when the emitter is moved, the particles move with it [:(]. I'm confident I'll find a solution to this though, when I get around to it.