查看: 2321|回复: 7

一个node保持一段距离跟随摄像机?请教

[复制链接]

该用户从未签到

发表于 2011-6-3 11:29:15 | 显示全部楼层 |阅读模式
一个Node 保持一定距离跟随摄像机,有什么好办法可以实现呢?

该用户从未签到

发表于 2011-6-3 16:18:45 | 显示全部楼层
NodeTrackerManipulator,或者自己在回调里面直接控制都是可以的

该用户从未签到

发表于 2011-6-3 12:15:25 | 显示全部楼层
可以参考天空盒的实现,其中天空盒就是总是与摄影机保持一定的距离

该用户从未签到

发表于 2011-6-3 13:16:39 | 显示全部楼层
做一个matrix就可以,根据相机点和node点计算相对方向

该用户从未签到

 楼主| 发表于 2011-6-3 16:43:58 | 显示全部楼层
谢谢大家 回答。我看了osg的例子,做天空盒 用 这个类是什么作用呢?
class MoveEarthySkyWithEyePointTransform : public osg::Transform
{
public:
       virtual bool computeLocalToWorldMatrix(osg::Matrix& matrix,osg::NodeVisitor* nv) const
    {
        osgUtil::CullVisitor* cv = dynamic_cast<osgUtil::CullVisitor*>(nv);
        if (cv)
        {
            osg::Vec3 eyePointLocal = cv->getEyeLocal();
            matrix.preMultTranslate(eyePointLocal);
        }
        return true;
    }
      virtual bool computeWorldToLocalMatrix(osg::Matrix& matrix,osg::NodeVisitor* nv) const
    {
        osgUtil::CullVisitor* cv = dynamic_cast<osgUtil::CullVisitor*>(nv);
        if (cv)
        {
            osg::Vec3 eyePointLocal = cv->getEyeLocal();
            matrix.postMultTranslate(-eyePointLocal);
        }
        return true;
    }
};

该用户从未签到

 楼主| 发表于 2011-6-4 09:38:57 | 显示全部楼层
MoveEarthySkyWithEyePointTransform 我试了下这个类。。当 摄像机 前后移动的时候 天空盒 是不动的。也就是说 盒子是跟着 摄像机移动的。当摄像机 旋转的 时候天空盒 会跟着旋转。要的就是这种效果。可是还不知道原理.

该用户从未签到

发表于 2011-6-5 15:43:39 | 显示全部楼层
NodeTrackerManipulator这个啊。。节点跟踪。。

该用户从未签到

发表于 2011-6-6 00:06:35 | 显示全部楼层
海军教程里有!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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