Shadows disappear

When I run the PSSM shadow tutorial (http://code.google.com/p/jmonkeyengine/source/browse/trunk/engine/src/test/jme3test/light/TestPssmShadow.java) everything works fine, I see the shadows properly, but when I activate PSSM with the same code in my own application I have to move the camera very close to the objects to see the shadows, they disappear as soon as I move it away. What might be the problem?

hard to say without a code sample

I initialize the shadows:

[java]pssmRenderer = new PssmShadowRenderer(assetManager, 1024, 4);

pssmRenderer.setDirection(new Vector3f(-1, -1, -1).normalizeLocal());

pssmRenderer.setLambda(0.55f);



pssmRenderer.setShadowIntensity(0.6f);

pssmRenderer.setCompareMode(CompareMode.Software);

pssmRenderer.setFilterMode(FilterMode.Bilinear);

//pssmRenderer.displayDebug();

viewPort.addProcessor(pssmRenderer);[/java]

and for the objects I want to cast and recieve I change the ShadowMode:

[java]dice_spatial.setShadowMode(ShadowMode.CastAndReceive);[/java]

And I do see the shadows, but only if I move the camera very close to the objects I want to cast shadows. If I move away they start to disappear.

Have you checked your scene wirh the example model? Other source for differences could be the lights.

yeah…what i meant by code sample was a test case of some sort that exhibit the issue. The TestPSSMShadows does not produce this issue so there might be something in your code that is causing it.

maybe some custom camera setup…but without a test case we only can do random guesses, and that probably won’t help you much.

Ok, I figured out what the problem is… I have a transparent “plane” (flat box) parallel to the “ground” (shadow receiving surface), and when looking at the ground through plane, the shadows disappear. How can I remedy that?



[java]

Texture tex = assetManager.loadTexture(“Textures/transparent.png”);

plane_mat.setTexture(“ColorMap”, tex);

plane_mat.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);

plane_geo.setMaterial(plane_mat);

plane_geo.setQueueBucket(Bucket.Transparent);[/java]

this is how I define the material for the plane (transparent.png is just an image file with alpha channel of some dimensions)

place the transparent plane in the transluscent bucket and set it to not receive nor cast shadows



translucent bucket is rendered after the processors