Re: [osg-users] HeadUpDisplay Problem
On Mon, 2008-11-03 at 18:56 +0200, Ümit Uzun wrote: Hi Folks, I have tried to create HUD for textured quad. I have read all about archive and looked to osgHUD sample but it isn't working for textured quad. And same time given code works for text. I can create HUD text on the screen but can not create textured quad on the screen. I know giving lots of code isn't good for you but I will paste all of them if anyone want to look for find out the problem. I really think you should try using osgWidget; even in it's very young stage of development, it can handle easy stuff like this without a hitch. And, of course, I'm very responsive to questions about it so you're bound to get the help you need (except on the weekends, which I waste playing video games). If I have my way, all e-mails about creating custom HUDs will be gone. :) If created texture quad add as a child to the root node, it works without giving any problem. But if add as a child to the osg::Camera node it get visible and is seen nothing. I think so, the problem is in osg::Camera node which was initilazed by; /--Camera-/ // create a camera to set up the projection and model view matrices, and the subgraph to drawn in the HUD osg::ref_ptrosg::Camera camera = new osg::Camera; // set the projection matrix camera-setProjectionMatrix(osg::Matrix::ortho2D(0,1280,0,1024)); // set the view matrix camera-setReferenceFrame(osg::Transform::ABSOLUTE_RF); camera-setViewMatrix(osg::Matrix::identity()); // only clear the depth buffer camera-setClearMask(GL_DEPTH_BUFFER_BIT); // draw subgraph after main camera view. camera-setRenderOrder(osg::Camera::POST_RENDER); // add geode to the camera node as a child camera-addChild( geode ); /--Camera-/ Best Regards. -- Ümit Uzun, Environmental Tectonics Corporation Turkey ODTU Teknokent Gumus Bloklar A Blok Zemin Kat Bati Cephe Suit 1 06531 ODTU Ankara, Turkey Tel: 90 (312) 210 17 80 Fax: 90 (312) 210 17 84 E-Mail: umituzun84atgmaildotcom Website: http://www.etc-turkey.com /---HUD---/ int main() { osg::Vec3 coords[] = { osg::Vec3(-1, 0.f ,-1), //LL osg::Vec3( 1, 0.f, -1), //LR osg::Vec3( 1, 0.f, 1), //UR osg::Vec3( -1, 0.f, 1) //UL }; osg::Vec2 tCoords[] = { osg::Vec2(0,0), osg::Vec2(1,0), osg::Vec2(1,1), osg::Vec2(0,1) }; int numCoords = sizeof(coords) / sizeof(osg::Vec3); int numTexCoords = sizeof(tCoords) / sizeof(osg::Vec2); osg::ref_ptrosg::Group root = new osg::Group(); osgViewer::Viewer viewer; osg::Geode *geode = new osg::Geode(); osg::Geometry *quad = new osg::Geometry(); quad-setVertexArray(new osg::Vec3Array(numCoords, coords)); quad-setTexCoordArray(0, new osg::Vec2Array(numTexCoords, tCoords)); quad-addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS, 0, numCoords)); geode-addDrawable(quad); osg::Image* image = osgDB::readImageFile( RWR_256_256.bmp ); if (image == NULL) { osg::notify(osg::WARN) Can't find texture file: std::endl; } osg::Texture2D* texture = new osg::Texture2D(); texture-setImage(image); texture-setWrap(osg::Texture2D::WRAP_T,osg::Texture2D::REPEAT); texture-setWrap(osg::Texture2D::WRAP_S,osg::Texture2D::REPEAT); osg::StateSet *stateSet = quad-getOrCreateStateSet(); stateSet-setTextureAttributeAndModes(0, texture, osg::StateAttribute::ON); stateSet-setMode(GL_BLEND,osg::StateAttribute::ON); stateSet-setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF); stateSet-setRenderingHint(osg::StateSet::TRANSPARENT_BIN); // create a camera to set up the projection and model view matrices, and the subgraph to drawn in the HUD osg::ref_ptrosg::Camera camera = new osg::Camera; // set the projection matrix camera-setProjectionMatrix(osg::Matrix::ortho2D(0,1280,0,1024)); // set the view matrix camera-setReferenceFrame(osg::Transform::ABSOLUTE_RF); camera-setViewMatrix(osg::Matrix::identity()); // only clear the depth buffer camera-setClearMask(GL_DEPTH_BUFFER_BIT); // draw subgraph after main camera view. camera-setRenderOrder(osg::Camera::POST_RENDER); // add geode to the camera node as a child camera-addChild(geode); // add camera to the root node as a child root-addChild(camera.get()); viewer.setSceneData(root.get()); viewer.setCameraManipulator(new osgGA::TrackballManipulator()); viewer.run(); return 0; } /---HUD---/ ___ osg-users mailing list osg-users@lists.openscenegraph.org
Re: [osg-users] HeadUpDisplay Problem
Hi Jeremy, Thanks for reply. My target with creating HUD display is playing osgMovie imagestreamed texture in it. If I can achive this operation by osgWidget I glad to use this API. And if it is possible, which osgWidget sample should I glimps? Because I have never tried osgWidget before except looking built-in samples in osg. Best Regards. 2008/11/3 Jeremy Moles [EMAIL PROTECTED] On Mon, 2008-11-03 at 18:56 +0200, Ümit Uzun wrote: Hi Folks, I have tried to create HUD for textured quad. I have read all about archive and looked to osgHUD sample but it isn't working for textured quad. And same time given code works for text. I can create HUD text on the screen but can not create textured quad on the screen. I know giving lots of code isn't good for you but I will paste all of them if anyone want to look for find out the problem. I really think you should try using osgWidget; even in it's very young stage of development, it can handle easy stuff like this without a hitch. And, of course, I'm very responsive to questions about it so you're bound to get the help you need (except on the weekends, which I waste playing video games). If I have my way, all e-mails about creating custom HUDs will be gone. :) If created texture quad add as a child to the root node, it works without giving any problem. But if add as a child to the osg::Camera node it get visible and is seen nothing. I think so, the problem is in osg::Camera node which was initilazed by; /--Camera-/ // create a camera to set up the projection and model view matrices, and the subgraph to drawn in the HUD osg::ref_ptrosg::Camera camera = new osg::Camera; // set the projection matrix camera-setProjectionMatrix(osg::Matrix::ortho2D(0,1280,0,1024)); // set the view matrix camera-setReferenceFrame(osg::Transform::ABSOLUTE_RF); camera-setViewMatrix(osg::Matrix::identity()); // only clear the depth buffer camera-setClearMask(GL_DEPTH_BUFFER_BIT); // draw subgraph after main camera view. camera-setRenderOrder(osg::Camera::POST_RENDER); // add geode to the camera node as a child camera-addChild( geode ); /--Camera-/ Best Regards. -- Ümit Uzun, Environmental Tectonics Corporation Turkey ODTU Teknokent Gumus Bloklar A Blok Zemin Kat Bati Cephe Suit 1 06531 ODTU Ankara, Turkey Tel: 90 (312) 210 17 80 Fax: 90 (312) 210 17 84 E-Mail: umituzun84atgmaildotcom Website: http://www.etc-turkey.com /---HUD---/ int main() { osg::Vec3 coords[] = { osg::Vec3(-1, 0.f ,-1), //LL osg::Vec3( 1, 0.f, -1), //LR osg::Vec3( 1, 0.f, 1), //UR osg::Vec3( -1, 0.f, 1) //UL }; osg::Vec2 tCoords[] = { osg::Vec2(0,0), osg::Vec2(1,0), osg::Vec2(1,1), osg::Vec2(0,1) }; int numCoords = sizeof(coords) / sizeof(osg::Vec3); int numTexCoords = sizeof(tCoords) / sizeof(osg::Vec2); osg::ref_ptrosg::Group root = new osg::Group(); osgViewer::Viewer viewer; osg::Geode *geode = new osg::Geode(); osg::Geometry *quad = new osg::Geometry(); quad-setVertexArray(new osg::Vec3Array(numCoords, coords)); quad-setTexCoordArray(0, new osg::Vec2Array(numTexCoords, tCoords)); quad-addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS, 0, numCoords)); geode-addDrawable(quad); osg::Image* image = osgDB::readImageFile( RWR_256_256.bmp ); if (image == NULL) { osg::notify(osg::WARN) Can't find texture file: std::endl; } osg::Texture2D* texture = new osg::Texture2D(); texture-setImage(image); texture-setWrap(osg::Texture2D::WRAP_T,osg::Texture2D::REPEAT); texture-setWrap(osg::Texture2D::WRAP_S,osg::Texture2D::REPEAT); osg::StateSet *stateSet = quad-getOrCreateStateSet(); stateSet-setTextureAttributeAndModes(0, texture, osg::StateAttribute::ON); stateSet-setMode(GL_BLEND,osg::StateAttribute::ON); stateSet-setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF); stateSet-setRenderingHint(osg::StateSet::TRANSPARENT_BIN); // create a camera to set up the projection and model view matrices, and the subgraph to drawn in the HUD osg::ref_ptrosg::Camera camera = new osg::Camera; // set the projection matrix camera-setProjectionMatrix(osg::Matrix::ortho2D(0,1280,0,1024)); // set the view matrix camera-setReferenceFrame(osg::Transform::ABSOLUTE_RF); camera-setViewMatrix(osg::Matrix::identity()); // only clear the depth buffer camera-setClearMask(GL_DEPTH_BUFFER_BIT); // draw subgraph after main camera view. camera-setRenderOrder(osg::Camera::POST_RENDER); // add geode to the
Re: [osg-users] HeadUpDisplay Problem
On Mon, 2008-11-03 at 21:10 +0200, Ümit Uzun wrote: Hi Jeremy, Thanks for reply. My target with creating HUD display is playing osgMovie imagestreamed texture in it. If I can achive this operation by osgWidget I glad to use this API. And if it is possible, which osgWidget sample should I glimps? Because I have never tried osgWidget before except looking built-in samples in osg. Here's basically all you need: --- WindowManager* wm = new WindowManager(...); Box* box= new Box(...); Widget*widget = new Widget(...); ImageStream* stream = new ImageStream(...); widget-setImage(stream, true); box-addWidget(widget); wm-addChild(box); viewer.setSceneData(wm-createParentOrthoCamera(...)); --- Send me your ImageStream data directly (not over the lists) and I'll whip up a real example if you wish. :) Best Regards. 2008/11/3 Jeremy Moles [EMAIL PROTECTED] On Mon, 2008-11-03 at 18:56 +0200, Ümit Uzun wrote: Hi Folks, I have tried to create HUD for textured quad. I have read all about archive and looked to osgHUD sample but it isn't working for textured quad. And same time given code works for text. I can create HUD text on the screen but can not create textured quad on the screen. I know giving lots of code isn't good for you but I will paste all of them if anyone want to look for find out the problem. I really think you should try using osgWidget; even in it's very young stage of development, it can handle easy stuff like this without a hitch. And, of course, I'm very responsive to questions about it so you're bound to get the help you need (except on the weekends, which I waste playing video games). If I have my way, all e-mails about creating custom HUDs will be gone. :) If created texture quad add as a child to the root node, it works without giving any problem. But if add as a child to the osg::Camera node it get visible and is seen nothing. I think so, the problem is in osg::Camera node which was initilazed by; /--Camera-/ // create a camera to set up the projection and model view matrices, and the subgraph to drawn in the HUD osg::ref_ptrosg::Camera camera = new osg::Camera; // set the projection matrix camera-setProjectionMatrix(osg::Matrix::ortho2D(0,1280,0,1024)); // set the view matrix camera-setReferenceFrame(osg::Transform::ABSOLUTE_RF); camera-setViewMatrix(osg::Matrix::identity()); // only clear the depth buffer camera-setClearMask(GL_DEPTH_BUFFER_BIT); // draw subgraph after main camera view. camera-setRenderOrder(osg::Camera::POST_RENDER); // add geode to the camera node as a child camera-addChild( geode ); /--Camera-/ Best Regards. -- Ümit Uzun, Environmental Tectonics Corporation Turkey ODTU Teknokent Gumus Bloklar A Blok Zemin Kat Bati Cephe Suit 1 06531 ODTU Ankara, Turkey Tel: 90 (312) 210 17 80 Fax: 90 (312) 210 17 84 E-Mail: umituzun84atgmaildotcom Website: http://www.etc-turkey.com /---HUD---/ int main() { osg::Vec3 coords[] = { osg::Vec3(-1, 0.f ,-1), //LL osg::Vec3( 1, 0.f, -1), //LR osg::Vec3( 1, 0.f, 1), //UR osg::Vec3( -1, 0.f, 1) //UL }; osg::Vec2 tCoords[] = { osg::Vec2(0,0), osg::Vec2(1,0), osg::Vec2(1,1), osg::Vec2(0,1) }; int numCoords = sizeof(coords) / sizeof(osg::Vec3); int numTexCoords = sizeof(tCoords) / sizeof(osg::Vec2); osg::ref_ptrosg::Group root = new osg::Group(); osgViewer::Viewer viewer; osg::Geode *geode = new osg::Geode(); osg::Geometry *quad = new osg::Geometry(); quad-setVertexArray(new osg::Vec3Array(numCoords, coords)); quad-setTexCoordArray(0, new osg::Vec2Array(numTexCoords, tCoords)); quad-addPrimitiveSet(new