Invisible picking boxes/spheres


I just started playing around with jME a few days ago, and it’s been really fun. Here’s my first newbie question - be gentle.

I have a scene with lots of small objects that I’d like the user to pick with the mouse. To make this easier, I added low-poly spheres around each object and used this method: transparency in jME to make those spheres invisible. This works great, except for two things:

(1) it seems really inefficient to have all these textured and alpha-blended spheres in my scene; is there a way to set up a geometry that the picking methods “see” but that the renderer completely ignores?

(2) the transparency as described in the link above doesn’t always work right with particles; if a particle overlaps the geometry, the geometry is rendered in black over the particle. Again it would be much better if the sphere geometry were pickable but ignored by the renderer.

Is there a better way to do this? Thanks.

Set the cull hint to always on the spheres and they won’t be drawn at all, much faster. You are still cluttering up your scene with lots of extra items though…

I wonder if you can explicitly set your bounding box to be bigger

Thanks - zarch’s suggestion worked perfectly! Still (as you both pointed out), there must be a better solution. I saw some methods for collision that involve bounding volume (e.g., collideWith(Collidable, Matrix4f, BoundingVolume, CollisionResults) - Method in interface com.jme3.scene.CollisionData) but I can’t seem to find any documentation for them.

While we’re on the subject of lots of small objects, here’s another question. When an object is sufficiently far away (and thus sufficiently small), it is no longer rendered. I’m not talking about the clip plane here, just the fact that if something would be rendered much smaller than a pixel, then it is ignored. In my case, this results in ugly “blinking” effects.

Is there an elegant way to change this, so that all objects are always rendered as at least 1 pixel?