查看: 1215|回复: 4

当移动一个节点模型比如牛模型时,如何让相机跟随它

[复制链接]

该用户从未签到

发表于 2013-4-19 17:12:44 | 显示全部楼层 |阅读模式
如题所述,读取完模型牛后,我在事件处理器,通过按键让模型牛移动,

但是移动后,模型会渐渐移出显示的屏幕场景,这时需要切换相机到模型牛

请问这个要如何实现,要重载那个类,做哪些准备工作呢?

该用户从未签到

发表于 2013-4-19 17:21:52 | 显示全部楼层
实时更新漫游器中的viewmatrix就行了

该用户从未签到

 楼主| 发表于 2013-4-22 11:40:54 | 显示全部楼层
liuzhiyu123 发表于 2013-4-19 17:21
实时更新漫游器中的viewmatrix就行了

超版,请教您一个问题,我写了个节点访问器来获取一个指定节点的世界坐标,如下代码
void CGetWorldCoordOfNodeVisitor::apply(osg::Node &node)
{
         if(!isDone){
                 if(0 == node.getNumParents()){
                         unsigned int nCount = node.getNumParents();
                         worldMatrix->set(osg::computeLocalToWorld(this->getNodePath()));
                         isDone = true;
                 }
         traverse(node);
         }
}

调试后发现,第一次进入这个函数时 node.getNumParents()的应该是2的,因为场景的结构是,root(group节点)->MatrixTransform节点->node(也就Node节点),所以代码执行出来的结果就是得到的世界坐标矩阵是单位矩阵。

该用户从未签到

发表于 2013-4-22 12:07:46 | 显示全部楼层
sorcerer314 发表于 2013-4-22 11:40
超版,请教您一个问题,我写了个节点访问器来获取一个指定节点的世界坐标,如下代码
void CGetWorldCoor ...

您的那个结构 不就是1么,怎么变成2了?

该用户从未签到

发表于 2013-4-22 12:10:06 | 显示全部楼层
看一下getWorldMatrixs() 这个函数就行了 或者 直接使用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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