Re: [osg-users] Node with different projection/view matrix fixed pipeline

60 views
Skip to first unread message

Robert Osfield

unread,
Jan 16, 2020, 3:18:59 AM1/16/20
to OpenSceneGraph Users
Hi Catalin,

Could you explain what you are trying to do with the rendering of this node? What you are attempting to do will guide the best way to implement what you need.

Robert.

On Thu, 16 Jan 2020 at 07:33, Catalin <inbo...@gmail.com> wrote:
Hi,

Is there a way to change the view matrix or projection matrix for a just a specific node in fixed pipeline mode?


_______________________________________________
osg-users mailing list
osg-...@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Robert Osfield

unread,
Jan 16, 2020, 6:18:28 AM1/16/20
to OpenSceneGraph Users
Hi Catalin,

I'm still a bit confused from your explanation.

Is it simply that you want a 2D overlay on your scene?  Have a look at the osghud example - this uses an osg::Camera to set a user define view and projection matrix for it's subgraph.

If you want object to be rendered like billboards within the 3D world then there is the osg::Billboard and osg::AutoTransform classes.

Robert.

On Thu, 16 Jan 2020 at 09:07, Catalin <inbo...@gmail.com> wrote:
Hi Robert,

I have an old code, as you know. Some objects are rendered with OpenGL, but before that the ViewMatrix is set to identity, as the the objects are having their position computed as follow:

ObjectPositionView = ViewMatrix * ObjectPosition + 2D Move Vector(x,y) in view space

ObjectPositionView already contains the ViewMatrix, so I am feeding it directly to the Open GL.

Those object are some billboards but with the option to be moved in the view space, like a 2D move.

If I give directly the ObjectPosition to OSG, it works fine with billboards but I don't know how to incorporated the 2D Move Vector, that vector is in the view space.

Catalin

unread,
Jan 17, 2020, 4:21:28 AM1/17/20
to OpenSceneGraph Users
Hi Robert,

I have an old code, as you know. Some objects are rendered with OpenGL, but before that the ViewMatrix is set to identity, as the the objects are having their position computed as follow:

ObjectPositionView = ViewMatrix * ObjectPosition + 2D Move Vector(x,y) in view space

ObjectPositionView already contains the ViewMatrix, so I am feeding it directly to the Open GL.

Those object are some billboards but with the option to be moved in the view space, like a 2D move.

If I give directly the ObjectPosition to OSG, it works fine with billboards but I don't know how to incorporated the 2D Move Vector, that vector is in the view space.

Catalin

unread,
Jan 17, 2020, 4:21:28 AM1/17/20
to OpenSceneGraph Users
Hi Robert,

Yes I am using osg::Billboard for that now, but the user in the old code had possibility to move those billboards in view space with the mouse, left,right,up down.

The green tags are attached to some other objects, but the user can move it in view space with the mouse, left,right,up down.

See the green tags.

Robert Osfield

unread,
Jan 21, 2020, 6:00:49 AM1/21/20
to OpenSceneGraph Users
The way I'd tackle dragging of objects in model space that are billboarded icons would be to project the mouse coords into clip coords then into object space using the matrices inverse of the (projection * view * model).  You'd also need to compute the depth to use, this could be computed by taking the original object space into clip coords, then using this in the mouse clip coords to object space multiplication.

Hopefully this makes sense.  It's a bit of advance topic as it requires understanding how matrices are used in the scenegraph/3D graphics.
Reply all
Reply to author
Forward
0 new messages