查看: 3412|回复: 9

PagedLOD 显示大数据量3DS数据问题

[复制链接]

该用户从未签到

发表于 2011-8-24 15:03:35 | 显示全部楼层 |阅读模式
采用PagedLOd的方式加载1000个3ds建筑物模型 ,场景的结构如下

                                            Root(Group节点)
                                                 |
                                                 |
                          ____________________________
                          |         .......|     1000个pagedLod   |
                      pagedlod     pagedlod                      pagedlod




每个pagedlod节点就是通过下面的方式构造
  1. osg::ref_ptr<osg::PagedLOD> lod=new osg::PagedLOD;
  2.    lod->setCenter(osg::Vec3(x,y,z));
  3.    lod->setFileName(0,"F:\\bdf\\3ds\"+modelName);
  4.    lod->setRange(0,0.0,50000.0);
  5.    root->addChild(lod.get());
复制代码



现在的问题是,这样显示的时候能够明显的看到动态加载的痕迹,大概差不多1秒显示出一个3ds,这样的依次的显示。我想达到的效果是,能够在几秒内将视野范围的比如几百个3ds显示出来,怎样才能达到这样的效果呢,谢谢。或者说我场景的结构构造的不合理?

该用户从未签到

 楼主| 发表于 2011-8-24 16:38:47 | 显示全部楼层
不好意思,这个原因已经找到,是因为我的3ds文件夹下有大概超过2万的纹理图片。所以导致读取3ds很慢

该用户从未签到

 楼主| 发表于 2011-8-24 17:16:06 | 显示全部楼层
1000个模型,在没有纹理的时候很快,但是当加上纹理后,动态加载又会变得很慢,有什么好的解决方法吗

该用户从未签到

发表于 2011-8-24 17:20:24 | 显示全部楼层
你把模型转换为ive格式试试?二进制格式解析的会快些。

该用户从未签到

发表于 2011-8-24 20:41:45 | 显示全部楼层
3ds就是二进制的。

该用户从未签到

发表于 2011-8-25 08:52:59 | 显示全部楼层
超过2万的纹理?那您必须要好好做优化了
1、纹理尺寸严格按2的幂次方,或者不要自动缩放2D纹理(需要显卡支持)
2、作LOD,远处的纹理要优化成16x16之类的大小
3、公共纹理要设法共享

该用户从未签到

 楼主| 发表于 2011-8-25 10:22:11 | 显示全部楼层
回复 6# array


    谢谢array的回复,这两万的纹理不只是这1000个3ds的,3ds总共大概有1万多。

该用户从未签到

发表于 2012-2-1 21:38:13 | 显示全部楼层
纹理改成dds格式的,会快

该用户从未签到

发表于 2016-6-6 11:35:29 | 显示全部楼层
gisbdf 发表于 2011-8-24 17:16
1000个模型,在没有纹理的时候很快,但是当加上纹理后,动态加载又会变得很慢,有什么好的解决方法吗

你好 我加载了3ds文件后只有模型没有纹理,但是模型本身是带有纹理的,请问这个怎么解决的?能否给个思路呢?

看你里面可以控制纹理加载与否,是怎么做到的呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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