查看: 4757|回复: 4

大家提一些OSG与Octree场景节点剔除的实现建议

[复制链接]

该用户从未签到

发表于 2009-3-13 16:29:00 | 显示全部楼层 |阅读模式
最近在看一些复杂场景,巨量模型实时动态调度渲染的资料,想通过OSG的LOD、PageLod,DatabasePager、FrustumCulling等技术实现,最近受启发与Octree剔除算法(因为模型节点非常多,仅仅FrustmCulling也需要很多计算时间,所以受启发与大地形的调度算法,想引入Octree),但是看文献说OSG不支持该算法,OGRE似乎支持,但是对后者没什么研究(还是比较喜欢OSG),因为刚开始接触,看的文献也不多,所以不知道对OSG的改进如何入手,希望大家能提个建议。是重写cull的实现呢,还是重写databasepager类呢?我的想法是尽量不要对OSG的核心代码不要修改太多,这样其他用户就不用重新编译代码了。

谢谢! 欢迎讨论,提出宝贵意见和建议!

该用户从未签到

发表于 2009-3-13 17:14:15 | 显示全部楼层
osg对地形的构建主要体现在VPB的运用上,后者负责将地形按四叉树分块并保存为PagedLOD,目前这种方法还是十分成功的,甚至号称能够处理TB级数据,因此Robert也说过暂时不想支持更多的算法~~(也许这是一种不思进取的表现吧
如果您想实现八叉树的话,我个人的暂时想法是使用CullCallback来实现,不过其实要复杂许多。DatabasePager只负责数据分页,因此和八叉树应该没有太大关系

该用户从未签到

 楼主| 发表于 2009-3-13 18:23:24 | 显示全部楼层
原来是这样啊
我们想用Octree来剔除模型(因为模型数量非常非常多的应用),所以不能直接采用VPB,不过有些思想是相近的,可以借鉴。
感谢array的建议,以后有问题再请教。谢谢!

该用户从未签到

发表于 2009-3-13 19:21:51 | 显示全部楼层
也许您也可以派生PagedLOD,重写traverse函数使其具备八叉树裁减和检索的能力,同时也具备分页能力;我个人觉得这样也许是可行的,如果tan_dunming有兴趣的话,也许我们可以一起完成这个事情并提交给osg-users~~

该用户从未签到

 楼主| 发表于 2009-3-14 09:31:14 | 显示全部楼层
惭愧 现在对OSG的掌握还比较肤浅 也许需要花点时间再学习学习才能和您交流
因为一个课题的缘故所以想研究一下这个问题 目前只是探索 尚没有正式展开 所以等准备好了正式开始研究之后再和您交流吧 希望到时候还能继续得到您的指导
对了 下了FlightGear的源代码 它的视景引擎用的也是OSG 在场景管理方面是重写了osg的DatabasePager(class SceneryPager : public osgDB:atabasePager) 不过也许我们的问题和它有所不用吧

由于工作计划的安排 现在还没有正式开始研究 所以还没法和您交流 多多见谅 谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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