查看: 1492|回复: 3

如何在大型场景的一些特定的区域内随机生成杂乱的短草,短草不用具体的3d模型,

[复制链接]

该用户从未签到

发表于 2012-12-26 13:27:23 | 显示全部楼层 |阅读模式
如题:
    在大型的场景中,需要在地形的一些特定的区域内随机的生成短草,并且只能在这个特定的区域,称为短草区!短草区没有单独的节点,只有geode节点。当然,贴图是唯一的!
    目前存在几个问题:
    1、怎么确保只在这个区域内长草,当相机靠近该区域的时候才生成短草,远离的时候短草从场景当中卸载!
    2、如何确保短草所栽的位置坐标,太多了,这些位置坐标有哪些方法可以获取!并且可以保证这些坐标很无序!
   
如图所示的效果: grass.jpg


目前想到的就是实时进行交集测试,然后判断交点处的纹理贴图的信息,当属于短草区的时候,根据所得的交点坐标,按相关函数去一系列坐标,通过这些坐标绘制短草!当远离区域的时候卸载掉!说起来容易,但是具体实现起来还是存在一定的难度!

该用户从未签到

发表于 2012-12-27 09:14:50 | 显示全部楼层
求交测试当然可以,我不认为您的思路有什么不可行的地方

该用户从未签到

 楼主| 发表于 2012-12-28 16:19:01 | 显示全部楼层
array 发表于 2012-12-27 09:14
求交测试当然可以,我不认为您的思路有什么不可行的地方

谢array哥,可是有些问题啊!
1、在区域内随机取种草的点不是很容易!

2、每个点上边绘制一棵草,这样会造成drawable太多,全部加载进去会很卡很慢!但是又不知道如何根据这么多的点来进行绘制这么多的草,而且还让这些草属于一个drawable。像上图中那样多的草的话,drawable真的是一个很大的数量。

3、动态的卸载草容易,加载起来又麻烦了!我目前是拿到那个区域的顶点坐标,然后以这些顶点坐标为基础往周围扩散取点,然后一次性将草全部绘制上去,但是会很慢很卡!有一个现象是,当相机距离这些草很远的时候,草会被裁剪掉!应该是对于细小的物理小到一定程度的时候裁剪了!我再想,能不能全部将草中上去,然后对这些草设置一定的裁剪机制,比如当它距离相机大于了5m或者10m就裁剪掉,只是裁剪掉,不进行卸载!因为个人感觉卸载容易,动态加载起来又难了!
但是这个裁剪机制不能影响别的场景对象!不知道这样的裁剪应该怎么去写!

还望array大哥指点一二!非常感谢!

该用户从未签到

发表于 2012-12-28 18:12:51 | 显示全部楼层
您把事情想的太复杂了,您完全可以脱离osg的场景树结构,在这里用一个独立的drawable来完成整片草场的绘制,每颗草都是一个或多个图元组成,并且动态地处理加载和卸载的问题。一些基于OpenGL的实现也可以被融合到自定义的Drawable中来实现绘制草地的过程,我本人实现过speedtree的草地在osg中的渲染
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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