基于四叉树的LOD地形场景的怪异优化探索

本文探讨如何利用四叉树实现LOD地形优化,通过视野远近调整地表显示精度,减少渲染顶点数量,提升渲染效率。文章详细介绍了算法实现流程,包括初始化网格、视野判定及渲染阶段的具体步骤。

基于四叉树的LOD地形场景是开发3D大规模场景地形一个避不开的话题。小弟对此一直耿耿于怀。虽然说号称自已学了几年游戏编程。但实际上真的还不会做四叉树的LOD地形。但眼下要么就干掉他,要么就被他干掉。

所以,解决这个问题,实属无奈。。。。。

大概的看了一些资料,西里糊涂的。

不过明确两点:

1。通过视野远近调整近地表显示精度。降低渲染顶点数量。

2。通过将地表平分为四(左上,右上,左下,右下),然后循环调用判定函数对所处范围再进行四平分(左上,右上,左下,右下)然后进行拆分判定。通过判定标准的继续调用函数。最后跟据判定结果来进行逐个正方形绘制。

OK,放下书,往开了想。

先不管怎么LOD还是四叉树。其本质目的是优化场景,也就是减少相对不必要的渲染。提高渲染效率。

其中心思想是强调,近处提高精度,远处降低精度。高度相差不大的就减少顶点数。

====================================================

那么?我要做的。就是把处于一个面上的顶点尽可能进行删简,然后跟据摄像机所在位置周边范围N米内设为高精显示即可。

1。 在初始化时先设格子数量BOOL数组 NoArray[mTerrainWidth*mTerrainHeight];

全清为0,即代表地表上没有不用拆分的格子。然后开始一项计算。

将地表平分为四(左上,右上,左下,右下),在中点,从左上到右下,计算每个面的法向量,看是否相同。如果相同,将中点所在位置的NoArray元素值设为TRUE。即此范围铁定不用拆分。

如果发现有不同,返回,对所处范围进行四平分(左上,右上,左下,右下)继续循环调用此函数。看四个平分面是否符合。

再设格子数组BOOL数组YesArray[mTerrainWidth*mTerrainHeight];

2。在渲染前,设YesArray都为TRUE,代表进行拆分。

将地表平分为四(左上,右上,左下,右下),看中点的NoArray元素值是否为TRUE,如果TRUE,YesArray对应元素改为FALSE并返回即可,如果FALSE,对所处范围进行视野判定。看是否符合距离标准,并设定对应的YesArray元素值。四平分(左上,右上,左下,右下)继续循环调用此函数,

3。渲染时 将地表平分为四(左上,右上,左下,右下),看中点的YesArray来进行判定是否渲染此正方形。并四平分(左上,右上,左下,右下)继续循环调用此函数

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值