查看: 3424|回复: 3

请教关于海量数据实时绘制的问题

[复制链接]

该用户从未签到

发表于 2008-9-17 09:19:54 | 显示全部楼层 |阅读模式
本人主要想解决海量数据fps提高的方法
1.海量数据用lod的方法效果不是很显著,有一定的效果,看过以前的论坛,据说使用pagedlod能实现一定的效果,从硬盘载入不同的osg模型并且作为pagedlod的child载入,如果是在初始化中把所有的osg模型都一起载入,那跟lod有什么样的区别呢.
2.关于用消隐的方法,有两种,一种是frustum culling和  occlusion culling ,osg是否已经提供了现成的函数,还是需要自己来写,如果有现成的函数,请问怎样使用.
本人使用过camera->setCullingMode(osg::CullSettings::VIEW_FRUSTUM_CULLING 并且对每个节点的stateset开启了stateset->setMode( GL_CULL_FACE, osg::StateAttribute::ON )可是都没有什么效果
请高手赐教!

该用户从未签到

发表于 2008-9-17 10:29:11 | 显示全部楼层
1、PagedLOD的另一大好处是:如果对象很长时间处于视锥体之外,则自动卸载对象释放空间;进入视锥体之后再自动加载。这一点LOD是做不到的。请参见《最长的一帧》(11-15)
2、是,会自动使用的,除非您设置setCullingMode不让它使用。请参见《最长的一帧》(10)
您使用camera->setCullingMode(osg::CullSettings::VIEW_FRUSTUM_CULLING)反而关闭了一些其他的场景裁减功能,至于开启setMode( GL_CULL_FACE, osg::StateAttribute::ON )跟这个其实没什么关系。因为背面裁减是OpenGL的函数,OSG不需要再实现它了,您可以直接设置根节点的CullFace属性打开背面裁减。
所谓效果不显著,往往是因为处理方式和场景架构不太合理所致,渲染库无法揣摸您真正的想法,而仅仅是提供了各种先进和成熟的工具。如何得到满意的效果,还需要您自己仔细琢磨

更详细的就不再多费唇舌了。《最长的一帧》中对于DatabasePager作了不少讲解,我至少花了一周的时间把每一行源代码都尝试着解释清楚~~您所说的1、2点在其中都有相当详细的介绍……唉,看来原创教程的关注度实在不高

[ 本帖最后由 array 于 2008-9-17 10:31 编辑 ]

该用户从未签到

 楼主| 发表于 2008-9-17 12:35:52 | 显示全部楼层

已经拜读过您的教程

你的教程是我自己看的不太详细,有些地方不太明白,多谢你再一次解释了.
我的数据量可能没有达到你说的那个量,因为视点通常都要360度旋转,所以基本上所有的物体都能看到,可能要注重一下消隐算法

该用户从未签到

发表于 2008-9-17 12:42:57 | 显示全部楼层
你这个完全可以用深层次LOD先优化渲染,分块,,PagedLOD实时加载~~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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