查看: 1353|回复: 11

请问项目中具体实现LOD的方式。

[复制链接]

该用户从未签到

发表于 2011-10-30 22:57:54 | 显示全部楼层 |阅读模式
在优化渲染性能方面,很多方法中都提到了采用LOD的方式。请问在自定义几何体中如何实现LOD,实现的具体手段是否如下:根据当前视点与圆柱坐标的距离,来确定一个圆周32、16、8等分。然后再NodeCallback中不断地进行重绘的方法调用。

该用户从未签到

发表于 2011-10-31 12:02:51 | 显示全部楼层
你把不同分辨率的模型放在不同range的Lod节点下即可~~~~

该用户从未签到

 楼主| 发表于 2011-10-31 18:42:34 | 显示全部楼层
回复 2# tianxiao888


    版主,您好,这个range一般是如何判断的呢?在绘制的时候,给的数据对于圆柱来说,只有圆柱上下底面中心坐标,半径等。该如何划分呢?

该用户从未签到

发表于 2011-11-1 09:16:24 | 显示全部楼层
你要从0开始建模?

那就写个函数了,输入为圆柱上下底面中心坐标,半径,段数,根据段数动态生成圆柱的各个顶点,动态绘制三角形,呵呵,

该用户从未签到

 楼主| 发表于 2011-11-1 09:43:03 | 显示全部楼层
本帖最后由 wanghuisoftware 于 2011-11-1 10:10 编辑

回复 4# liushui


    Cylinder
        {
           Name  67E3D
           BottomCenter  -6532.5  57157.5  2018.54 //下底面中心
           BottomRadius  24 //下底面半径
           BottomNormal  0  0  -1 //下底面法线
           TopCenter  -6532.5  57157.5  2136.54 //上顶面中心
           TopRadius  24 //上顶面半径
           TopNormal  0  0  1 //上顶面法线
           EntColor  0.498039  0  1  1//几何体颜色。
        }
通过这种方式可绘制的不仅仅是圆柱。
我主要是不理解如何从这些数据进行LOD,即如何划分精度。是不是根据当前视点与节点包围盒中心的距离,来决定模型的粗细,也就是划分的精度。

该用户从未签到

发表于 2011-11-1 12:10:03 | 显示全部楼层
osg的LOD是静态的,需要预建立不同精度的模型,然后在运行时根据视点距离来决定显示哪一个精度的模型。

该用户从未签到

 楼主| 发表于 2011-11-1 17:29:45 | 显示全部楼层
回复 6# fenma3422


    如果各层的模型都需要事先绘制的话,那内存岂不是很大,应该放在更新回调里,当视点距离符合时,在临时绘制吧。

该用户从未签到

发表于 2011-11-1 17:48:56 | 显示全部楼层
本帖最后由 liushui 于 2011-11-1 17:50 编辑

当视点距离符合时,在临时绘制?

      现上轿子现扎耳朵眼,来得及吗?

该用户从未签到

 楼主| 发表于 2011-11-1 17:55:01 | 显示全部楼层
回复 8# liushui


    Are U sure?

该用户从未签到

发表于 2011-11-2 18:30:42 | 显示全部楼层
内存占用大,但渲染效率会有所提升。这需要你权衡,如果内存和渲染效率都要的话你可以尝试pagelod

该用户从未签到

 楼主| 发表于 2011-11-6 17:47:28 | 显示全部楼层
fenma3422 发表于 2011-11-2 18:30
内存占用大,但渲染效率会有所提升。这需要你权衡,如果内存和渲染效率都要的话你可以尝试pagelod

您是说先做好文件,然后再加载。那有些复杂了。因为每次打开的模型不同。就需要两次。

该用户从未签到

发表于 2011-11-7 09:28:05 | 显示全部楼层
静态模型分好,osg会自己调度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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