[osg-users] RTT Camera does not render anything
Christian Buchner
christian.buchner at gmail.com
Tue Apr 14 06:48:43 PDT 2015
Maybe you forgot to add the camera to the main scene graph?
An addChild() into the scene graph root should do the trick.
2015-04-14 15:16 GMT+02:00 Andreas Schreiber <ayss at online.de>:
> Hi
>
>
> I'm trying to generate a texture with a rtt-camera, so I can use this
> texture later in my main scene.
> To verify if the texture is correct I'm trying to put the texture on a
> quad in my main scene.
>
> I use the following method for the rtt-camera, the red clearColor I used
> to test what the camera renders, but it did not help me out.
>
>
> Code:
> osg::Camera *createRTTCamera(osg::Camera::BufferComponent buffer,
> osg::Texture *tex, bool isAbsolute)
> {
> osg::ref_ptr<osg::Camera> camera = new osg::Camera;
> osg::Vec4f textureStartColor = osg::Vec4f(1.0, 0.0, 0.0, 0.0);
> camera->setClearColor(textureStartColor);
> camera->setClearMask(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
>
> camera->setRenderTargetImplementation(osg::Camera::FRAME_BUFFER_OBJECT);
> camera->setRenderOrder(osg::Camera::PRE_RENDER);
>
> if (tex)
> {
> tex->setFilter(osg::Texture2D::MIN_FILTER, osg::Texture2D::LINEAR);
> tex->setFilter(osg::Texture2D::MAG_FILTER, osg::Texture2D::LINEAR);
> camera->setViewport(0, 0, tex->getTextureWidth(),
> tex->getTextureHeight());
> camera->attach(buffer, tex);
> }
> if (isAbsolute)
> {
> camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
> camera->setProjectionMatrix(osg::Matrix::ortho2D(0.0, 1.0,
> 0.0, 1.0));
> camera->setViewMatrix(osg::Matrix::identity());
> osg::Vec3 corner = osg::Vec3();
> camera->addChild(createScreenQuad(1.0f, 1.0f, 1, corner));
> }
> return camera.release();
> }
>
>
>
> In the main part I do the following:
>
> 1. I initialize the global texture2D variable with an image
>
> 2. Create the rrt camera with color_buffer, the texture (which is global),
> and 1 for absolute
>
> 3. load geometry
>
> 4. Setup Light, here an example
>
> Code:
> osg::ref_ptr<osg::LightSource> sunLight = new osg::LightSource();
> sunLight.get()->setLight(createLightSpot(osg::Vec4(0, 1, 0, 0),
> osg::Vec4(0, 1, 0, 1)));
> sunLight.get()->setReferenceFrame(osg::LightSource::ABSOLUTE_RF);
> sunLight.get()->setLocalStateSetModes(osg::StateAttribute::ON);
>
>
>
> 5. Add the light and the geometry to the rtt camera
> 6. Add the light and the geometry to the main scene
>
> Now there should be the scene on the quad geometry which I generated, but
> this is always rendered with the color of the light and nothing else on it.
> It isn't even a mix of the light color and the clear color of the rtt
> camera, its just the light color.
>
> Here is my quad generation as well:
>
> Code:
> osg::ref_ptr<osg::Geode> planeRTT = new osg::Geode();
> osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry();
> planeRTT->addDrawable(geometry);
>
> osg::ref_ptr<osg::Vec3Array> vertexArray = new osg::Vec3Array();
> vertexArray->push_back(osg::Vec3(1, -0.25, -1));
> vertexArray->push_back(osg::Vec3(1, 0.75, -1));
> vertexArray->push_back(osg::Vec3(1, 0.75, 1));
> vertexArray->push_back(osg::Vec3(1, -0.25, 1));
> geometry->setVertexArray(vertexArray);
>
> osg::ref_ptr<osg::Vec4Array> colorArray = new osg::Vec4Array();
> colorArray->push_back(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f));
> geometry->setColorArray(colorArray);
> geometry->setColorBinding(osg::Geometry::BIND_OVERALL);
>
> osg::ref_ptr<osg::Vec2Array> texCoordArray = new osg::Vec2Array();
> texCoordArray->push_back(osg::Vec2(0.0f, 0.0f));
> texCoordArray->push_back(osg::Vec2(1.0f, 0.0f));
> texCoordArray->push_back(osg::Vec2(1.0f, 1.0f));
> texCoordArray->push_back(osg::Vec2(0.0f, 1.0f));
> geometry->setTexCoordArray(0, texCoordArray);
>
> geometry->addPrimitiveSet(new osg::DrawArrays(GL_TRIANGLE_FAN, 0,
> 4));
>
>
> planeRTT.get()->getOrCreateStateSet()->setTextureAttributeAndModes(0,
> rttTexture.get(), osg::StateAttribute::ON);
>
>
>
> Did I miss something or did I mixed up some order?!
> Would be grateful for any help!
>
> ...
>
> Thank you!
>
> Cheers,
> Andreas
>
> ------------------
> Read this topic online here:
> http://forum.openscenegraph.org/viewtopic.php?p=63381#63381
>
>
>
>
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20150414/cc03bbf0/attachment-0003.htm>
More information about the osg-users
mailing list