查看: 1226|回复: 2

改变相机视点

[复制链接]

该用户从未签到

发表于 2010-7-15 10:58:22 | 显示全部楼层 |阅读模式
osgViewer::Viewer viewer; osg::ref_ptr root=new osg::Group; osg::ref_ptr aChild=osgDB::readNodeFile("cow.osg"); root->addChild(aChild.get()); osg::ref_ptr ksmm=new KeySwitchManipulatorExt; osg::ref_ptr tmm=new TerrainManipulatorExt; osg::ref_ptr dmm=new osgGA::TrackballManipulator; ksmm->addMatrixManipulator('1',"Terrain",tmm.get()); ksmm->addMatrixManipulator('2',"Drive",dmm.get()); viewer.setCameraManipulator(ksmm.get()); viewer.addEventHandler(new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet())) ; viewer.addEventHandler(new osgViewer::WindowSizeHandler); viewer.addEventHandler(new osgViewer::StatsHandler); viewer.setSceneData(root.get()); viewer.getCamera()->setViewMatrixAsLookAt(osg::Vec3d(5,0,-6),osg::Vec3d(0,0,0),osg::Vec3d(0,1,0)); viewer.realize(); //while(!viewer.done()) //{ // viewer.frame(); //} while(!viewer.done()) { viewer.frame(); }
这段代码中viewer.getCamera()->setViewMatrixAsLookAt(osg::Vec3d(5,0,-6),osg::Vec3d(0,0,0),osg::Vec3d(0,1,0)); 设置了Camera的视点,为什么改变不了视点的位置

该用户从未签到

发表于 2010-7-15 11:50:20 | 显示全部楼层
我觉得你应该排下版,我看得头晕。
我想应该TrackballManipulator里的home()函数估算后把你写的点覆盖了。你可以尝试下用事件触发然后setViewMatrixAsLookAt(eye,center,up)

该用户从未签到

 楼主| 发表于 2010-7-15 12:10:28 | 显示全部楼层
哦,谢谢,我试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表