查看: 1586|回复: 4

关于多相机的问题

[复制链接]

该用户从未签到

发表于 2011-12-6 21:02:36 | 显示全部楼层 |阅读模式
我在场景中设置了多个相机 想从不同角度观察场景中的物体  其中用到
addSlave  我想让一个相机从后面看物体 就设置了
addSlace(camera, osg::Matrixd(), osg::Matrix::rotete(osg:I_2, 0,0,1));
但结果是相机绕y轴旋转了180度   是我用的有什么问题吗? 谢谢指教。

该用户从未签到

发表于 2011-12-7 18:19:35 | 显示全部楼层
用addSlave(camera,osg::matrix(),osg::matrix::rotate(osg:I,osg::vec3(0.0,1.0,0.0)));
试试看

该用户从未签到

发表于 2011-12-8 09:44:30 | 显示全部楼层
如果不是想实现多屏显示或者蛋疼得厉害的话,请addChild来添加相机而不是addSlave

该用户从未签到

发表于 2011-12-8 11:28:12 | 显示全部楼层
addslave的话,需要注意两个offset矩阵的设置和使用,具体可以参考slave的view和project矩阵的计算方法

该用户从未签到

发表于 2011-12-8 11:30:35 | 显示全部楼层
void View::updateSlave(unsigned int i)
{
    if (i >= _slaves.size() || !_camera) return;

    Slave& slave = _slaves[i];

    if (slave._camera->getReferenceFrame()==osg::Transform::RELATIVE_RF)
    {
        slave._camera->setProjectionMatrix(_camera->getProjectionMatrix() * slave._projectionOffset);
        slave._camera->setViewMatrix(_camera->getViewMatrix() * slave._viewOffset);
    }
   
    slave._camera->inheritCullSettings(*_camera, slave._camera->getInheritanceMask());
}
按照这个计算方法allenshen 说的应该可以满足你的要求
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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