查看: 2534|回复: 7

osgEarth 相机操控问题

[复制链接]

该用户从未签到

发表于 2013-4-9 16:31:20 | 显示全部楼层 |阅读模式
在setviewpoint时,Viewpiont(point,head,picth,range),其中range指的是到point的距离吗?在最后定位后经纬度没问题,可高度貌似就不太对了

该用户从未签到

发表于 2013-4-9 22:03:26 | 显示全部楼层
range就是观察点到地面point的距离~

该用户从未签到

 楼主| 发表于 2013-4-9 22:50:42 | 显示全部楼层
Pricas 发表于 2013-4-9 22:03
range就是观察点到地面point的距离~

point 的Z值是什么啊?好像不是高程吧?

该用户从未签到

 楼主| 发表于 2013-4-10 13:06:53 | 显示全部楼层
有谁知道能帮忙解答一下吗?

该用户从未签到

发表于 2013-4-10 14:41:30 | 显示全部楼层
  1.         if ( getSRS() && getSRS()->isGeographic() )
  2.         {
  3.             conf.set("lat",    _focal_point.y());
  4.             conf.set("long",   _focal_point.x());
  5.             conf.set("height", _focal_point.z());
  6.         }
  7.         else
  8.         {
  9.             conf.set("x", _focal_point.x());
  10.             conf.set("y", _focal_point.y());
  11.             conf.set("z", _focal_point.z());
  12.         }
复制代码
viewpoint.cpp中,从这段代码看z值应该是球体地形的地面高度,平面地形的z值。
而在EarthMnipulator.cpp中有一段(如下),用三角形的斜边乘以正弦,貌似在计算垂直高度,求得目标点和起始点的垂直高度差,注释好像是在求相机运动的加速度,看起来range应该是(eye-center).length(),即camera到point的向量的模长。
  1.         // calculate an acceleration factor based on the Z differential
  2.         double h0 = _start_viewpoint.getRange() * sin( osg::DegreesToRadians(-_start_viewpoint.getPitch()) );
  3.         double h1 = vp.getRange() * sin( osg::DegreesToRadians( -vp.getPitch() ) );
  4.         double dh = (h1 - h0);
复制代码

该用户从未签到

 楼主| 发表于 2013-4-10 15:33:42 | 显示全部楼层
woshijiameizhou 发表于 2013-4-10 14:41
viewpoint.cpp中,从这段代码看z值应该是球体地形的地面高度,平面地形的z值。
而在EarthMnipulator.cpp中 ...

嗯!range的意思应该是相机到视点的距离。但在调用是发现point中的z值并不会影响相机最后定位的位置,这个让人有点郁闷了,这样就很难让相机到具体的位置了

该用户从未签到

发表于 2013-4-10 16:09:31 | 显示全部楼层
感觉point应该类似于SetviewMatrixAslookAt中的那个center,为观察的目标点。 楼主要设置相机的高度,应该是eye的高度,earthmanipulator中的这句:
  1. double h0 = _start_viewpoint.getRange() * sin( osg::DegreesToRadians(-_start_viewpoint.getPitch()) );
复制代码
是否说明eye的高度同时受range和pitch共同约束

该用户从未签到

 楼主| 发表于 2013-4-10 16:33:59 | 显示全部楼层
woshijiameizhou 发表于 2013-4-10 16:09
感觉point应该类似于SetviewMatrixAslookAt中的那个center,为观察的目标点。 楼主要设置相机的高度,应该是 ...

是这么个意思吧,不过我将pitch和point值都做调整,相机最后定位后相机的高度都是一样的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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