Shademaster opened this issue on Dec 18, 2002 ยท 10 posts
williamsheil posted Wed, 18 December 2002 at 3:58 PM
I don't believe the shadow map functionality is actually implemented by 'painting' the textures or objects, but instead is effectively a camera 'depth map' with some added layering for transparencies. When a pixel is to be drawn by Firefly or the P4 renderer, the distance and direction between the pixel and each shadowed light source is calculated and the pixel is either illuminated or shadowed depending on the (distance) value of the corresponding 'z-buffer' entry in the shadow map. For infinite lights, the area that the shadow map covers is scaled to include all (shadow receiveing) objects in the scene. In practical terms, this means that if you have a very big object (typically a ground plane) or several objects dispersed across a wide area, the shadow map will also cover this wide area, and hence each pixel in the shadow map, at any given resolution, will also cover a large area of the scene. Hence you can suffer a severe loss of shadow resolution, or even lose entire object shadows, simply because they occupy less than a pixel's resolution when projected onto the shadow map. The only practical solutions are to reduce the size of the ground plane, increase the resolution of the shadowmap or resort to spotlights and try to blend them with the a 'global' infinite light. For a more impractical solution (never tested this in P5) there was a third, undocumented, type of light in Poser 4 designated a 'local light' which was only accessible through ProPack Python, or editing the pz3 file (light type 2, I believe) which acted like a shadow casting spotlight within the limits of its falloff angles, and acted like a non-shadow casting infinite light, with the same pointing angle, outside the angular limits. This could allow shadows to be focused on single objects in the centre on the scene, but still provide a global light source without blending artifacts for the background. Bill