billboard nodes don’t update their children in updateWorldData.
this causes a problem if you move a billboard node because the objects it is looking after (usually quads) don’t get to update their worldPosition and therefore do not get to update their bounding volumes correctly.
needless to say this has been causing me quite a lot of confusion! My work around is:
(from BillboardNode.java)
/**
* <code>updateWorldData</code> defers the updating of the billboards
* orientation until rendering. This keeps the billboard from being
* needlessly oriented if the player can not actually see it.
*
* @param time
* the time between frames.
* @see com.jme.scene.Spatial#updateWorldData(float)
*/
public void updateWorldData(float time) {
// [hack]
super.updateWorldData(time);
lastTime = time;
updateWorldBound();
}