- Timestamp:
- 10/06/05 22:02:18 (8 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/examples/osgprerendercubemap/osgprerendercubemap.cpp
r4553 r4579 18 18 #include <osg/Material> 19 19 #include <osg/RefNodePath> 20 #include <osg/PositionAttitudeTransform> 20 21 21 22 #include <osgUtil/TransformCallback> … … 89 90 osg::RefNodePath createReflector() 90 91 { 91 ref_ptr<Group> scene = new Group; 92 ref_ptr<osg::PositionAttitudeTransform> pat = new osg::PositionAttitudeTransform; 93 pat->setPosition(osg::Vec3(0.0f,0.0f,0.0f)); 94 pat->setAttitude(osg::Quat(osg::inDegrees(0.0f),osg::Vec3(0.0f,0.0f,1.0f))); 95 92 96 ref_ptr<Geode> geode_1 = new Geode; 93 scene->addChild(geode_1.get());97 pat->addChild(geode_1.get()); 94 98 95 99 const float radius = 0.8f; … … 101 105 102 106 osg::RefNodePath refNodeList; 103 refNodeList.push_back( scene.get());107 refNodeList.push_back(pat.get()); 104 108 refNodeList.push_back(geode_1.get()); 105 109 … … 123 127 // first update subgraph to make sure objects are all moved into postion 124 128 traverse(node,nv); 125 129 126 130 // compute the position of the center of the reflector subgraph 127 osg::Matrixd matrix = osg::computeLocalToWorld(_reflectorNodePath);131 osg::Matrixd worldToLocal = osg::computeWorldToLocal(_reflectorNodePath); 128 132 osg::BoundingSphere bs = _reflectorNodePath.back()->getBound(); 129 osg::Vec3 position = bs.center() * matrix;133 osg::Vec3 position = bs.center(); 130 134 131 135 typedef std::pair<osg::Vec3, osg::Vec3> ImageData; … … 144 148 ++i) 145 149 { 150 osg::Matrix localOffset; 151 localOffset.makeLookAt(position,position+id[i].first,id[i].second); 152 153 osg::Matrix viewMatrix = worldToLocal*localOffset; 154 146 155 _cameraNodes[i]->setReferenceFrame(osg::CameraNode::ABSOLUTE_RF); 147 156 _cameraNodes[i]->setProjectionMatrixAsFrustum(-1.0,1.0,-1.0,1.0,1.0,10000.0); 148 _cameraNodes[i]->setViewMatrix AsLookAt(position,position+id[i].first,id[i].second);157 _cameraNodes[i]->setViewMatrix(viewMatrix); 149 158 } 150 151 159 } 152 160 … … 204 212 for(unsigned int i=0; i<6; ++i) 205 213 { 206 207 214 // create the camera 208 215 osg::CameraNode* camera = new osg::CameraNode;
