[osg-users] Setting Camera View Matrix Not Taking Effect
OpenSceneGraph Users
osg-users at lists.openscenegraph.org
Mon Apr 20 12:02:00 PDT 2020
Hello everyone,
I am trying to change the camera's perspective by calling
setViewMatrixAsLookAt, but it is not making any change in the orientation
of my scene. Here is the full code for the simplest application that
reproduces my problem. There must be something I'm fundamentally
misunderstanding here. I appreciate any and all help! Thanks in advance!
#include <osg/Geode>
#include <osg/ShapeDrawable>
#include <osgViewer/Viewer>
// Get a new sphere geode
osg::ref_ptr<osg::Geode> CreateSphereGeode(
osg::Vec3 tCenter, // The location of the center of the sphere
osg::Vec4 tColor, // The color of the sphere
float fRadius // The sphere radius
)
{
// Create the geode to return
osg::ref_ptr<osg::Geode> pRetv = new osg::Geode;
// Create the sphere
osg::ref_ptr<osg::Sphere> pSphere = new osg::Sphere(tCenter, fRadius);
// Create the drawable
osg::ref_ptr<osg::ShapeDrawable> pSphereDrawable = new osg::ShapeDrawable(
pSphere);
// Set the color
pSphereDrawable->setColor(tColor);
// Add the drawable
pRetv->addDrawable(pSphereDrawable);
// Return this geode
return pRetv;
}
// The main application entry point
int main(int argc, char *argv[])
{
// Create the viewer
osg::ref_ptr<osgViewer::Viewer> pViewer = new osgViewer::Viewer;
// Create the top group parent
osg::ref_ptr<osg::Group> pTopGroup = new osg::Group;
// Create some spheres
osg::ref_ptr<osg::Geode> pSphere1 = CreateSphereGeode(osg::Vec3(0.0f, 0.0f,
0.0f), osg::Vec4(1.0f, 0.0f, 0.0f, 1.0f), 2.0f);
osg::ref_ptr<osg::Geode> pSphere2 = CreateSphereGeode(osg::Vec3(10.0f, 0.0f
, 5.0f), osg::Vec4(0.0f, 0.0f, 1.0f, 1.0f), 1.0f);
osg::ref_ptr<osg::Geode> pSphere3 = CreateSphereGeode(osg::Vec3(-15.0f,
6.0f, 0.0f), osg::Vec4(0.0f, 1.0f, 0.0f, 1.0f), 4.0f);
// Add these spheres to the top group node
pTopGroup->addChild(pSphere1);
pTopGroup->addChild(pSphere2);
pTopGroup->addChild(pSphere3);
// Here I am attempting to change the initial perspective, but I can make
these numbers anything and it doesn't seem to change anything
pViewer->getCamera()->setViewMatrixAsLookAt(
osg::Vec3(-0.9983f, 0.0252f, -0.0530f),
osg::Vec3(0.8639f, -2.5189f, -70.0939f),
osg::Vec3(0.8880f, -1.5194f, -70.0726f)
);
// Add a viewport to the viewer and attach the scene graph
pViewer->setSceneData(pTopGroup);
// Run the viewer
return pViewer->run();
}
--
You received this message because you are subscribed to the Google Groups "OpenSceneGraph Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to osg-users+unsubscribe at googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/osg-users/2d2db453-f9e4-4e01-ab2e-76d5c00dfa6d%40googlegroups.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20200420/92ad41f6/attachment.html>
More information about the osg-users
mailing list