Hi Robert,

I‘m trying to implement a distortion function, and the distortion should be 
worked in 3D. By using the 2D texture only allows me to achieve the distortion 
in 2D. That's why I'm trying to use a 3D texture.

If this wouldn't work, would you please give me some suggestions?

I started to learn osg not so long ago. I'm sorry if my question is a little 
stupid. :))

Cheers,
Ying


robertosfield wrote:
> Hi Ying,
> 
> I am confused why you are trying to use a 3D texture.  OpenGL
> rendering works against a 2D frame buffer and depth texture.  You can
> assign a single plane of 3D texture to a FBO and render to this
> specific plane, but you can't render to the whole Texture3D at once.
> The OpenGL warning also suggests your driver doesn't even support
> Texture3D.
> 
> Perhaps you are after recording the colour and the depth of the scene
> rather than a 3D texture.
> 
> Robert.
> 
> On 10 June 2014 16:12, ying song <> wrote:
> 
> > Hi Robret,
> > 
> > Thanks for the answering. Now I could understand the process of rendering 
> > more or less.
> > 
> > I´m trying to rendering a scene on a 3D texture and then distorted the 
> > scene by associating 3D texture coordinates to vertices. However, after I 
> > changed all the 2D textures to 3D textures(including all the definitions 
> > and coordinates of the texture) in the osgdistortion example, it doesn´t 
> > work somehow. I wonder whether the way of rendering to 3D texture is the 
> > same as rendering to 2D texture.
> > 
> > Here is the my code which I wrote based on the "createDistortionSubgraph" 
> > part in the example code:
> > 
> > int i,j;
> > for(int z=0;z<256;z++)
> > {
> > for(i=0;i<256;++i)
> > {
> > for(j=0;j<256;++j)
> > {
> > osg::Vec3 cursor(j,i,z);
> > osg::Vec3 texcoord(j/256.0,i/256.0,z/256.0);
> > vertices->push_back(cursor);
> > texcoords->push_back(texcoord);
> > colors->push_back(osg::Vec4(1.0f,1.0f,1.0f,1.0f));
> > }
> > }
> > }
> > 
> > Geom->addPrimitiveSet(new 
> > osg::DrawArrays(osg::PrimitiveSet::QUADS,0,vertices->size()));
> > 
> > 
> > This code only gives me a blank window and an error: " 3d texture is not 
> > supported by opengl driver".
> > 
> > Through searching on the internet, I found that there might be some 
> > problems of my graphic card. I would change another graphic card to see 
> > what happens. However, I´m not sure whether it is also due to some errors 
> > of my code. Would anyone tell me whether my code is correct to do this kind 
> > of rendering?
> > 
> > Thanks!
> > 
> > Cheer,
> > Ying
> > 
> > 
> > robertosfield wrote:
> > 
> > > HI Ying,
> > > 
> > > The osgdistortion example uses a Camera set up to handle Render To
> > > Texture (RTT) of the main scene graph, rendering to the texture as if
> > > it were the original frame buffer.  This texture is then used when
> > > rendering within a second Camera that rendering to the normal frame
> > > buffer but with an orthographic projection.  The scene the the second
> > > Camera rendering is simply a quad osg::Geometry that is screen aligned
> > > so it takes up the whole window, the vertices on this osg::Geometry
> > > are set up as a grid to cover the screen with a regular pattern of
> > > quads.  The vertices on this geometry also have texture coordinates
> > > associated with them these texture coordinates tell the GPU what part
> > > the texture to use when rendering, if the texture coords were set up
> > > in a regular pattern like the vertices then you wouldn't see any
> > > distortion, however, for this example they are shifted so that desired
> > > distortion is applied.
> > > 
> > > Robret.
> > > 
> > > On 6 June 2014 17:00, ying song <> wrote:
> > > 
> > > 
> > > > Hi everyone,
> > > > 
> > > > I'm now going through the osgdistortion example. Based on my 
> > > > understanding, this example is to rendering the scene on the texture 
> > > > istead of the screen. Through distorting the texture, the distorted 
> > > > model could be build and shown.
> > > > 
> > > > However, I'm a little confused about the rendering process to distort 
> > > > the 3D model.
> > > > 
> > > > Part of the code is shown below:
> > > > 
> > > > for(i=0;i<noSteps;++i)
> > > > {
> > > > osg::Vec3 cursor = bottom+dy*(float)i;
> > > > osg::Vec2 texcoord = bottom_texcoord+dy_texcoord*(float)i;
> > > > for(j=0;j<noSteps;++j)
> > > > {
> > > > vertices->push_back(cursor);
> > > > texcoords->push_back(osg::Vec2((sin(texcoord.x()*osg:: PI-osg:: 
> > > > PI*0.5)+1.0f)*0.5f,(sin(texcoord.y()*osg:: PI-osg:: 
> > > > PI*0.5)+1.0f)*0.5f));
> > > > colors->push_back(osg::Vec4(1.0f,1.0f,1.0f,1.0f));
> > > > 
> > > > cursor += dx;
> > > > texcoord += dx_texcoord;
> > > > }
> > > > }
> > > > 
> > > > polyGeom->setVertexArray(vertices);
> > > > 
> > > > polyGeom->setColorArray(colors);
> > > > 
> > > > polyGeom->setTexCoordArray(0,texcoords);
> > > > 
> > > > I'm not sure how the rendering process works. Could anyone tell me that 
> > > > are the original points' coordinates stored in 'vertices', and the 
> > > > distorted points' coordinates stored in 'texcoords'?
> > > > 
> > > > Another question is that why the texture is defined as 2D? Could I 
> > > > define a 3D texture, then rendering a distorted model on the 3D texture 
> > > > and display it on the screen?
> > > > 
> > > > Thank you so much for helping me on this!
> > > > 
> > > > Cheers,
> > > > Ying
> > > > 
> > > > ------------------
> > > > Read this topic online here:
> > > > http://forum.openscenegraph.org/viewtopic.php?p=59668#59668
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > _______________________________________________
> > > > osg-users mailing list
> > > > 
> > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > > > 
> > > > 
> > > _______________________________________________
> > > osg-users mailing list
> > > 
> > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > > 
> > > ------------------
> > > Post generated by Mail2Forum
> > > 
> > 
> > 
> > ------------------
> > Read this topic online here:
> > http://forum.openscenegraph.org/viewtopic.php?p=59692#59692
> > 
> > 
> > 
> > 
> > 
> > _______________________________________________
> > osg-users mailing list
> > 
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > 
> _______________________________________________
> osg-users mailing list
> 
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> 
>  ------------------
> Post generated by Mail2Forum


------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=59696#59696





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to