在整个项目中,我纠结最久,最多的应该就是树这个问题了。因为树的数量多,结构比较复杂。所以如果处理不当会给渲染造成很大压力。
构建osg场景中的树的方法可以有很多种:
1、Billboard树
2、十字交叉树
3、SpeedTree等专业工具生成的树
4、LOD的树,远处为Billboard,近处为模型(但需要严格保证是低模)等等都是可以的。
这些中我用过1Billboard树
,但感觉有些地方效果不好,然后设置的地方也遇到过一个大麻烦(渲染的先后问题),幸好后面解决了!特别是在俯视图中,你会看到一棵树就是一条线。所以如果有俯视图的地方是一个很大的缺陷,至于在那些没有用到俯视图的地方应该效果,很占内存等问题都处理的很好!2,十字交叉树没用过,不能说什么。但看过一些做好的效果,感觉还是有些不行。
因为我自己建模时用的是3dmax里面自带的树,有几点不好的是。一,很占内存,如果把全部树统一加到场景中的话,场景大的话连3dmax都吃不消,我做的时候就是这样,单纯的添加树(经过渲染的),但加到不到200棵时3dmax就自动关掉了。有可能是3dmax2010不太稳定。但树占内存也是一个很大的原因,因为可以看到加树后内存快速增加。二,效果不是很好,可能是因为我的水平不高吧,这暂且不说!说到这补充一个很重要的,要使建好的树在osg里面不出现一个透明的树冠,就是没有具体的叶子,在建模时应该在树的设置中把“树冠显示”设置为“从不”。也可能就是因为叶子多了导致场景复杂度增加吧。
解决办法:如果是自己建模的话。如果可以的话就不要用3dmax建模了,很多人都说maya建模就没有这些问题。虽然我没试过。但大神们都这样说!第二种就是用3dmax建几棵,然后在osg里面共享!
至于其他没用过的就不加评论了。。。。。。如果有什么不对的请大家指正!谢谢!
(这是我的第一篇博客,小小的标记一下,呵呵)