No objects appear until I move the camera a tiny bit

I'm having trouble with this too. I have a node with a CameraNode attached. The camera is set up as follows before being attached to the CameraNode:



cam.setUp(new Vector3f(0, 1, 0));
cam.setLeft(new Vector3f(1, 0, 0));
cam.setLocation(new Vector3f(0, 0, 0));
cam.setDirection(new Vector3f(0, 0, 0));
cam.update();



I added a key to print the position and direction of the camera so I could tell where it was facing when everything disappeared. It seems to happen when the camera faces close to (0, 0, 1). If I move the camera a little away from that facing, everything appears. If I face that way again, everything disappears. I'm using the Stardust class from the wiki, and the dust is set to never cull. There's a bounding box around the big stardust node as well as each of the points, although they're set to not be collidable (figured I'd try the bounding boxes per the earlier comments).

Could this have something to do with the direction of the camera?

Why is your direction 0,0,0?

Good question, although setting its direction to (0, 0, 1) doesn't seem to fix this particular issue. Somewhere in the course of things the camera gets set properly despite me mucking things up on my own.



After a bit more testing I think it's definitely choosing to cull the root node when the camera is situated at that particular spot. I'm not familiar enough yet with culling to know why that would be. Before, I had my HUD node and stardust node attached to the root node, and all my HUD text and crosshair disappeared. The FPS display didn't disappear since it's not attached to the root. I restructured things a little so the HUD node is not attached to the root anymore; I now call draw() on it directly from my render() method. Now when I hit the dead zone the HUD elements stay and the stardust (still attached to root) disappears. When I load a model in front of the camera, the model plus the stardust reappear. So… I removed the stardust from the root node as well and call draw on it directly too. No more dead zone. As I said before, when I loaded a model everything became visible again, so I think this one is solved for me now.



I'm still curious to hear any theories on why this was happening in the first place though. Under what conditions could the root node get culled when it has children that specify CULL_NEVER?

Sorry to reply to myself, but I experimented some more after I got home from work tonight and I think I now know what was going on.



I hadn't explicitly set a cull mode on my root node, and I think it must be CULL_DYNAMIC by default. I set it to CULL_NEVER and attached my stardust to it, then I attached my "npc ships" node and set it to CULL_DYNAMIC. I'm pretty certain now that it was deciding to cull the root node and therefore the stardust was getting culled despite its CULL_NEVER setting. Now that everybody has the correct cull mode, I'm not getting the dead zone I was seeing before.

Ah, ok.  Culling is still bound by the scenegraph, so if your parent is culled, you are culled.  The cull mode is just for use when making a cull determination at your node in the scenegraph.