查看: 5677|回复: 10

ObjectPlacer怎么用啊?[已解决]

[复制链接]

该用户从未签到

发表于 2011-7-30 00:01:00 | 显示全部楼层 |阅读模式
本帖最后由 x_wp 于 2011-12-31 20:30 编辑

看了osgEarth中ObjectPlacer的代码,用起来好像不难啊,试着编了一段程序,在osgEarth_elevation例子的基础上,导入cow.osg模型,再用ObjectPlacer将模型节点放到经纬高分别为0,0,1的地方,编译是通过了,可是看不到那头牛啊!难道是太小了吗?
另外,如果我想通过实时计算出的经纬度值来控制模型在osgEarth的地球模型上沿地形移动,也是用ObjectPlacer吗?
望高人不吝赐教,感谢!

该用户从未签到

发表于 2011-10-5 16:41:22 | 显示全部楼层
我放大了一万倍才看到的

该用户从未签到

 楼主| 发表于 2011-10-6 08:46:30 | 显示全部楼层
呵呵!的确是太小了,要在整个地球上用肉眼找到一头牛,的确有难度。

另外,看了下ObjectPlacer的实现方法,现在调用createPlacerMatrix或ElevationManager中的getPlacementMatrix直接计算放置矩阵,再设置到MatrixTransform中。

该用户从未签到

发表于 2011-11-2 16:56:34 | 显示全部楼层
能分享一下吗

该用户从未签到

发表于 2011-12-4 09:57:28 | 显示全部楼层
player111 发表于 2011-10-5 16:41
我放大了一万倍才看到的

该用户从未签到

发表于 2011-12-30 09:26:28 | 显示全部楼层
敢问楼主你成功了吗? 能否给个代码参考一下

该用户从未签到

 楼主| 发表于 2011-12-30 22:12:20 来自手机 | 显示全部楼层
osg::ref_ptr<osg::MatrixTransform> mt_Position = new osg::MatrixTransform;

osg::Matrixd mdPosition;
osgEarth::Util::ObjectPlacer* op = new osgEarth::Util::ObjectPlacer(mapNode);
op->createPlacerMatrix(lat, lon, z, mdPosition);
mt_Position->setMatrix(mdPosition);

以上是我现在用的方法,mt_Position的局部坐标系就相当于东北天坐标系。手机输入的,挺麻烦,就不多写了。

该用户从未签到

 楼主| 发表于 2011-12-31 20:29:31 | 显示全部楼层
要注意
   op->createPlacerMatrix(lat, lon, z, mdPosition);
中参数的顺序是:纬度、经度,不是通常的经度、纬度顺序;
如果模型比较小,又有高程数据的话,加到地球上的模型可能会被“埋”在地下了,所以在使用的时候的确要放大很多倍才能看到!!

该用户从未签到

发表于 2012-3-19 18:50:25 | 显示全部楼层
可使用ObjectLocatorNode

该用户从未签到

发表于 2012-8-4 13:30:13 | 显示全部楼层
在国外论坛上看到说objectplacer现在好像不怎么推荐了,推荐使用ObjectLocator,在例子clamp中可以看到用法,比自己用矩阵变换简单多了

该用户从未签到

发表于 2013-8-16 16:06:51 | 显示全部楼层
x_wp 发表于 2011-12-30 22:12
osg::ref_ptr mt_Position = new osg::MatrixTransform;

osg::Matrixd mdPosition;

楼主,  用这种方式添加了牛以后 还需要放大很多倍才能看到吗?

另外 能附下完整代码吗  菜鸟真心难啊。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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