查看: 1879|回复: 10

关于地标的实现问题

[复制链接]

该用户从未签到

发表于 2010-5-17 15:20:15 | 显示全部楼层 |阅读模式
为了实现类似于google地标的功能,按照如下步骤:
1)用osg::Text来实现地标名称
2)用一个Geometry来模拟实现一个提示框
3)把osg::Text对象和geometry添加到同一个布告板(Billboard:绕视点旋转)
4)向场景中需要地标的地方添加这个布告板节点
为了实现地标大小不随视点远近而变化,同时又不想采用HUD来实现,请问大家还有更好的办法来实现吗?

谢谢

该用户从未签到

发表于 2010-5-17 16:04:51 | 显示全部楼层
我最近恰好实现了一个比较完美的地标。我的方法是派生一个新的Transform类,并使用MatrixTransform(提示框)和Text(文字)作为子节点。在Transform::traverse()中修正这两个子对象使其始终朝向屏幕(可以得到当前观察矩阵并且从中去除旋转值,再赋予子对象);为了保证大小不变,我会计算当前屏幕上一个像素对应的空间长度(可以参考LOD中PIXEL_SIZE_ON_SCREEN模式的实现)并据此缩放子对象。这样就不必使用BillBoard和Camera了

该用户从未签到

 楼主| 发表于 2010-5-17 17:00:14 | 显示全部楼层
本帖最后由 csu_zjh 于 2010-5-17 17:25 编辑

谢谢您的提醒
如果利用布告板和参考LOD的相关办法(保持等大),不知道这样是否可行??

该用户从未签到

发表于 2010-5-18 08:22:45 | 显示全部楼层
很多方法都是可以的,您不妨自己进行试验

该用户从未签到

发表于 2010-12-14 09:56:49 | 显示全部楼层
呵呵,实现了了固定方向大小的方法。

该用户从未签到

发表于 2010-12-14 10:30:34 | 显示全部楼层
mark学习~~~

该用户从未签到

发表于 2010-12-14 10:56:30 | 显示全部楼层
问一下,array的方法跟用
  1. osgText::Text::setAxisAlignment(osgText::Text::SCREEN);
  2.     osgText::Text::setCharacterSizeMode(osgText::Text::SCREEN_COORDS);
  3. osgText::Text::setDrawMode(osgText::Text::TEXT | osgText::Text::BOUNDINGBOX);
复制代码
得到的效果有什么区别吗?

该用户从未签到

发表于 2010-12-14 12:45:40 | 显示全部楼层
差别会比较大……我自己实现的效果有动态的淡入淡出动画,文字旁的图标,LOD,被点击时会跳动……当然,这些都是从OSG引申出来的,您也同样可以实现这些

该用户从未签到

发表于 2010-12-14 13:09:02 | 显示全部楼层
了解了。谢谢。

该用户从未签到

发表于 2010-12-23 10:35:24 | 显示全部楼层
学习了!谢谢!

该用户从未签到

发表于 2010-12-25 17:54:30 | 显示全部楼层
mark
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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