查看: 1352|回复: 7

小物体上挂载osgText::FadeText

[复制链接]

该用户从未签到

发表于 2011-8-10 16:14:24 | 显示全部楼层 |阅读模式
我用一个osgText::FadeText挂载在一个osg::Node上用来显示该物体的标牌信息,标牌字体设置为始终保持一定大小。

当应用背景是一个地球时,如果这个物体的尺寸比较小,离视点又比较远时,在加载这个物体后,会看不见这个标牌。当我把视点拉得足够近时,这个标牌变得可见。当我把视点再拉远时,标牌仍然为可见。以后无论怎样拉近拉远物体标牌任然可见。也就是说,当第一次加载这个物体和标牌时,如果物体尺寸太小,会存在看不见标牌的情况。


经试验,的确与物体大小有关,当物体足够大的时候,标牌只要一加载就马上可见,不知何故,谢谢。

该用户从未签到

发表于 2011-8-10 23:03:41 | 显示全部楼层
离得远时,你能看见针么?同样道理

该用户从未签到

发表于 2011-8-10 23:03:58 | 显示全部楼层
离得远时,你能看见针么?同样道理

该用户从未签到

 楼主| 发表于 2011-8-11 09:58:20 | 显示全部楼层
回复 3# robert


    谢谢,离得远的时候看不到针的模型是正常的,但是我想要知道那里有个针,所以挂了一个
FadeText,而且设置其大小为始终固定大小,就是想要能看的到这个标牌。

该用户从未签到

 楼主| 发表于 2011-9-5 15:36:29 | 显示全部楼层
去osg官方论坛,问清楚了原因,是因为标牌的包围体过小,被SMALL_FEATRUE_culling 掉了。

但是如果关闭SMALL_FEATRUE_culling 的话,整个系统的开销猛然上去了很多,无法承受。

我给每一个textGeode(挂载标牌的)下挂载了一个时控,用bool isCulled = osg::CullingSet cs.isCulled(textGeode->computeBound())来判断textGeode是否被裁剪掉,也证明了我顶楼描述的现象。


现在想到了几个解决的方法:
1.不知能否单独强制这个textGeode不被cull掉?例如有类似的setCulled(ture)函数?

2.不知能否强制扩大textGeode的包围体大小,使他达到细节裁剪的阀值?例如有类似的setBoundBox()函数?

谢谢!

该用户从未签到

发表于 2011-9-5 15:45:31 | 显示全部楼层
去osg官方论坛,问清楚了原因,是因为标牌的包围体过小,被SMALL_FEATRUE_culling 掉了。

但是如果关闭S ...
口口广大 发表于 2011-9-5 15:36



   ++1

该用户从未签到

发表于 2011-9-6 08:39:44 | 显示全部楼层
1、setCullingActive(false)
2、setInitialBound()

该用户从未签到

 楼主| 发表于 2011-9-6 13:32:29 | 显示全部楼层
1、setCullingActive(false) 可以,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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