The test case is missing the actual hero mesh, so i replaced it with the ninja from the Bones examples. It didn't work too well, because all i got to see was the sword and some funny looking ground object. However, i got this:

Hard to tell...with this test case, i don't even see the ninja...just its sword hovering high above some strange looking thing that is supposed to be the ground. It's impossible to tell anything from this, i'm afraid. I'm not even sure what i'm looking at...

Yes, that helps. Now i can see the issue and know what happens here. It's caused by the fact that you are using the center of the ground as lookAt-point, i.e. as the center of the projector's view frustum. You then place the projector a little before/behind (i changed that in the test case to see any shadow) and above the hero. Depending on the angle between the ground plane (simplified to ease thinking...) and the lookAt-vector, the frustum doesn't cover the whole hero mesh. If that's not clear, try to make a simple drawing (it helped me).If you want to use the shadows that way, either use some point before the hero as the lookAt point instead (like projector.lookAt(position) or try to setup the projector in a way that it really acts like the sun would do, i.e. the frustum has to cover the whole ground mesh and the position never changes.

I'm not sure whether I completely get it. Perhaps if you sent me your drawing?

On a separate question, what about Object3D.mergeAll breaks the collision tests? If I store the collision objects as multiple parts, collision works. But then, I have to have a loop for each gameloop iteration to set visibility on then off again. But if I mergeAll, collision stops working.

About merging: It has no effect on collision detection. Collision detection doesn't care about the source of the mesh it's working on. Make sure to enable collision detection for the resulting mesh (merging doesn't do this) and if you use octrees, calculate for the final mesh, not for the source meshes.

How do I make the shadows less blocky now? You mentioned it was supposed to be unfiltered or something, but the result of leaving the light static, while solving most of the getting-all-the character problem, is that the shadow is now a collection of fairly large squares.