osg旋转模型之setViewMatrixAsLookAt()方法和setHomePosition()方法

本文探讨如何使用osg的setViewMatrixAsLookAt和setHomePosition方法来旋转模型,实现从不同角度(Top, bottom, left, right, front, back)观察。在尝试将相机从y轴负半轴转向z轴正半轴以观察模型顶部时,遇到相机位置与模型中心不一致的问题。通过查看eye、centre和up向量理解视图矩阵,并计算模型的中心点坐标进行调整。" 103856209,7242837,BBRv2在Dropbox边缘网络的评估,"['拥塞控制', '网络性能', 'BBR', 'TCP', '数据中心']
摘要由CSDN通过智能技术生成

本人想通过设置camera的位置,实现对模型的旋转操作,最终达到相机在坐标轴的6个不同方向观察模型(Top,bottom,left,right,front,back)。我在此处是将相机在y轴负半轴旋转到Z轴正半轴,以观察模型的Top。下面使用如题的两种方法旋转相机,或许是参数值计算的不对,最后trackBall的中心与boudingSphere的中心完全不同。本文有待更新。


1.首先,获取加载模型的camera视点信息。使用viewer->getCamera->getViewMatrixAsLookAt(eye,centre,up),三个参数的意义分别是:

  • eye相机的位置(也可以说是观察者的位置);
  • centre加载在viewer中的模型位置(也可以说是观察到的点位置);
  • up是垂直于相机视线向上的方向向量(通俗说观察者头顶的方向),此例中加载模型后,up的向量值为(0,0,1)可以看到up.z()=1,垂直于相机视线向上,也就是说相机是从Y轴的负半轴向Y轴的正半轴观察。


2.其次,得到加载模型的中心点位置如下:

  • 获取中心osg::BoundingSphere bs = root->getBound();
  • 计算模型的中心点坐标osg::Vec3 bsCenter = bs.center
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值