Thanks for the answer Luke. I have 2 comments that maybe you can shed some light on.
As far as the bounding boxes go:
I use the bounding box check in the same way the irrlicht engine(atleast the 1.3.1) does, in picking. So does that code need to be changed as well? If you look at:
getSceneNodeFromScreenCoordinatesBB
which calls:
getPickedNodeBB
which does:
const core::aabbox3df& box = current->getBoundingBox();
if (box.intersectsWithLine(line))
What I really want is a way to screen scene nodes rather then doing a triangle test on every single one.
This falls into the 2nd comment, you mention using the physics engine to do these things. It seems to me that all the animation art work is moving meshs around, and you would have to move the physics model every frame to match the mesh. There are 2 big issues here. I am using newton and your supposed to apply forces to move things. I don't know how warping things around will effect the realisitic ness of things. The 2nd issue is matching up complex joint movement and physics bodies to match. With joints its more possible now but like in 1.3.1 there would be no way to match body parts from the mesh with physics bodies to synch them up. This is why I chose to ray trace in the scene node side of things, and just let physics control rotation and position.
Moving to a 100% match of what you see on screen with scene nodes and what your bodies are in your physics engine is a task that seems very daunting to me. What I have now is basically a simple cylinder for character models and then more complex shapes can easily exist for non animated scene nodes. All ray tracing is done scene node side and then the user always sees what they expect and you don't have bullets passing through body parts.
Phew that was long winded.
So to sumarize if bounding boxes are no good, and I want to stay scene node side, what do you suggest i use for ray tracing screening to avoid a hundred triangle selector tests each frame. And finally you mention if I have the triangle ID, the triangle3d class has no ID that I can see. Its just a collection of points. Thats what i get back from the getTriangle function in irrlicht.
If you made it all the way to the bottom of this post, thank you very much
![Smile :)](./images/smilies/icon_smile.gif)
and Thanks for you hard work.