I have a laser scanner attached to a robot and i am visualizing everything in JME. I have a model of the robot and i am displaying the point cloud. what i want to do is when i receive a point from the laser scanner check it again my virtual robots bounding box, and if it is contained in there, throw it away. i have created bounding boxes for my robot, each bounding box is a box mesh contained in a Geometry.
the code i am currently trying to use is [java]geometry.getMesh().getBound().contains(new Vector3f(x, y, z))[/java]
the problem is that this does not seem to take in account the local translation of the geometry. if i have a 1x1x1 box centered at 0,0,0 and test the point 0,0,0 this will return true, but if i set the geometry’s local translation to 20,0,0 and again check the point 0,0,0 it will also return true.
Can anyone help me with this simple problem.
i want to put a object/bounding box in the world, update its rotation and translation and then see if a point in the world is contained inside.
Remarkably this is almost identical to something I’ve done before. The way I did this was construct a ray from the laser start point and point it in the laser direction.
[java]Node shootableNode; //this will be a node to which all shootables are attached e.g. the robot (can be the root node)
Ray ray = new Ray(startPostion,direction); //get your information for this from the laser
CollisionResults results = new CollisionResults(); //this is where things you collide with will end up
This is not exactly what i am looking for, i already have a simulation that does lasers in this way. My problem is simply is point A contained in object B. and subtracting the local translation does not take in account rotations of the bounding boxes
This takes into account things like scale, rotation, parent transforms, etc.
(Use getLocalTransform() instead of getWorldTransform if you don’t want to include parent transforms).