Jake, Print out the bounding box min,max values to see what's going on.
Brian [EMAIL PROTECTED] wrote: ----- To: [email protected] From: "Jacob Huckaby" <[EMAIL PROTECTED]> Sent by: [EMAIL PROTECTED] Date: 03/27/2008 08:40AM Subject: [osg-users] Bounding Boxes and Collision Detection Hi, I am trying to use bounding boxes for simple collision detection with a very simple model. My model is composed of six boxes of various sizes. I have imported each box from a .osg file as a node. Each node is then parented to a MatrixTransform, which allows them to rotate along different axes. The MatrixTransforms then are parented to each other (box1->box2->box3, etc.) I was able to do this rough collision detection easily with bounding spheres: osg::Node* box1 = osgDB::readNodeFile("box1.osg"); osg::MatrixTransform* rotateBox1 = new osg::MatrixTransform; rotateBox1->addChild(box1); osg::Node* box2 = osgDB::readNodeFile("box2.osg"); osg::MatrixTransform* rotateBox2 = new osg::MatrixTransform; rotateBox2->addChild(box2); const osg::BoundingSphere& bs = rotateBox1->getBound(); const osg::BoundingSphere& bs2 = rotateBox2->getBound(); if(bs.intersects(bs2)) { //Collision } My question: how can I do a similar test with bounding boxes? I read through as many of the archived posts as I could find, but I have been unable to find a solution. Bounding boxes would work perfectly for my situation (since my nodes are actually boxes) but work only for Drawables. I tried creating Box Shapes and parenting those to Geodes, which were then parented to the MatrixTransforms. osg::Box* box1 = new osg::Box(osg::Vec3(7.0f,0.0f,0.0f),8.5f,2.5f,2.5 f); osg::ShapeDrawable* box1Drawable = new osg::ShapeDrawable(box1); osg::Geode* box1Geode = new osg::Geode; box1Geode->addDrawable(box1Draw able); rotateBox1->addChild(box1Geode); osg::Box* box2 = new osg::Box(osg::Vec3(1.0f,0.0f,0.0f),2.5f,2.5f,2.5 f); osg::ShapeDrawable* box2Drawable = new osg::ShapeDrawable(box2); osg::Geode* box2Geode = new osg::Geode; box2Geode->addDrawable(box2Drawable); rotateBox2->addChild(box2Geode); const osg::BoundingBox& bb1 = box2Geode->getBoundingBox(); const osg::BoundingBox& bb2 = box2Geode->getBoundingBox(); if(bb1.intersects(bb2)) { //Collision } This didn't work either. The bounding box did not seem to reflect what was shown in the scene (it said the boxes were intersecting whereas the scene showed them as not intersecting.) I don't need precise detection, or any kind of localization. This, and the ease of using Bounding box make it seem like a nice option. So how can I use bounding boxes in this situation? Thank you very much for your help, Jake _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- This is a PRIVATE message. If you are not the intended recipient, please delete without copying and kindly advise us by e-mail of the mistake in delivery. NOTE: Regardless of content, this e-mail shall not operate to bind CSC to any order or other contract unless pursuant to explicit written agreement or government initiative expressly permitting the use of e-mail for such purpose. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

