查看: 1084|回复: 2

请问如何获得相机朝向并在当前朝向前面放置node(已解决)

[复制链接]

该用户从未签到

发表于 2013-5-6 20:33:12 | 显示全部楼层 |阅读模式
本帖最后由 mayokaze 于 2013-5-8 14:32 编辑

请问如何获得相机朝向并在当前朝向前面放置node
-----------------------
请问如何通过选择一个对象将这个对象设为trackball manipulator的焦点?

已经自己解决 代码如下

  
                osg::Vec3 eye, at, up,front,side;
                pViewer->getCameraManipulator()->getInverseMatrix().getLookAt(eye, at, up);
                front= at - eye;
                front.normalize();
                side = front ^ up;
                osg::Matrixf m,m2,m3,m4;
                m.makeRotate(eye,at);
                m2.makeTranslate(eye);
                m3.makeTranslate(front*50);

该用户从未签到

发表于 2013-5-7 08:09:36 | 显示全部楼层
获得这个Node在世界坐标系中的位置,通过漫游器的setTransformation或者其他函数来设置center就可以

该用户从未签到

 楼主| 发表于 2013-5-8 13:57:15 | 显示全部楼层
多谢版主大人指教,请问怎么获得当前相机的朝向呢,我想要在当前相机前面一点放置新的node,这样实现似乎不对
                osg::Matrixf m,m2,m3,m4;
                m = pViewer->getCameraManipulator()->getMatrix();
                osg:uat qrot = m.getRotate();
                m2.makeRotate(qrot);

                m3.makeTranslate(0, 10, 0);
                osg::Vec3d ts  = m.getTrans();
                m4.makeTranslate(ts);
                OSGShape *s = new OSGShape(m3*m2*m4, NULL,OSGShape::box);
                pViewer->getSceneData()->asGroup()->addChild(s->getScene());
                return true;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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