Real-Time Generation of Continuous Levels of Detail for Height Fields
下面总结一下:
首先说明quadTree里面的最小单位:
最小的叶子:
它有9个点哦!!!!!!!
1 2 3
4 5 6
7 8 9
也就是说边长为2.。。。。。。。。。
好不容易想清楚。。。。。。
也就是最小的叶子:
1.关于quadTree 如何保存的问题,用个二维表就可以了。
2.通过调整d2的值,来保证一个相临的节点之间的深度只差1或者0;
先找到最大可能深度。。为MaxDepth
? ? ? ? ? ? ? ? ?
? ? ? ? ? 0 ? 0 ?
? ? 0 ? ? ? 1 ? ?
? ? ? ? ? 0 ? 0 ?
? ? ? ? 1 ? ? ? ?
? 0 ? 0 ? 0 ? 1 ?
? ? 1 ? ? ? 1 ? ?
? 0 ? 0 ? 0 ? 1 ?
? ? ? ? ? ? ? ???
注意最小的单位为9个点:
1 2 3
4 5 6
7 8 9
可以设置一个最深的深度阀值。其实也可以不设。
深度=Max;
while(深度=0)
{
求得所有深度为此,深度的中心;
计算d2
这时候父节点就得到了4个d2值乘以K,找到自己的d2,然后有,从中选出最大的那一个进行保留。
把4个d2传给下一层。
深度减去1,
重复上面的过程。直到d2为0;
}
方法是再次从底层向高层,往上遍历D2参数,如果有一个值比这个的K倍,也就是 2C/(C-1) 小,那么我们该怎么办呢!找出最大的一个。max(K*lowerADJd2,TheCurrentD2);并设为这个值。
3.因为d2有了,根据条件f<1,就可以保证相邻节点之间的深度只差1.
4.
有很多逻辑问题在这里面!!!!!!!!!!
然后渲染叶子!!!!!
去除那些不必要渲染的点的时候,这样做:
根据方位,具体问题具体分析!!!!!!!!
而且Morphing也就是地貌化,
叶子的渲染。根据方位,,判断Crack。。插值高度!!
等等。。。
在渲染过程中我们保存一个 d=2(1-f)在节点的中心!!!!!!
然后用公式
d×(实际高度)+(1-d)×(对角线两点的平均高度)
总共有5个点需要插值!!包括中间的点!!
必须搞清楚咯!!!!!!!!!!!!!!!!!!!!!!!!!
每一个叶子一共渲染9个点。。。
如果叶子的角点被标记为 “不需要渲染”
哪么可以根据具体位置。。选择要渲染的点。。
叶子的边点是必须要渲染德。。
叶子的角点则根据具体情况具体分析。。
也就是说D>=2;
也就是说只有下面情况需要考虑:
1 2 5 11
3 4 6
7 8 9 12
渲染右边的时候。对于6 这个点,我们用混合因子。
而渲染左边的时候。我们只需要考虑。。是否渲染6 这个点。
而上边,如果是个同样的叶子,则不用考虑,因为没有突变!!
如果是半个叶子。。那么。。
则在边上渲染4个扇形。。不用渲染叶子。。
算法:
if( 节点是叶子)
{
find父节点;
find 父节点相关的两个邻节点;
if(深度与2相同或者大于2)
{
找到此叶子节点父节点的对应邻边的子节点。
比较深度。
if(深度相同叶子)直接渲染
if(深度大于1(节点))说明了丢失了部分细节,用混合因子插边值进行渲染。
相当于多渲染了一个点。(这个点可以保证不被邻边渲染。)
}
else if
{
小于2.也就是叶子。
根据方位,渲染3个点或者不渲染。
说明地貌化已经做过了。
}
}
好了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!完了。。。。。。。。。。。
分享到:
相关推荐
碰撞检测和QuadTree 演示视频: : 一个简单的碰撞检测系统。 包括两种算法: 蛮力检查所有身体与其他所有身体,这可能会影响性能,建议仅在100个以下的身体中使用。 QuadTree查询QuadTree仅测试与附近物体的碰撞。 ...
许多游戏需要使用碰撞检测算法来确定两个对象何时发生碰撞,但是这些算法通常是昂贵的操作,并且会大大降低游戏的速度。一种加快速度的方法是减少必须进行的检查的次数。屏幕相对两端的两个对象不可能碰撞,因此无需...
quadtree-js, 另一个用于javascript的四叉树实现 四叉树 js这是本教程中介绍的Java方法的JavaScript四叉树实现: http://gamedev.tutsplus.com/tutorials/implementation/quick-tip-use-quadtrees-to-
在“d3-quadtree-master”这个项目中,开发者可能已经实现了一个示例,展示了如何使用D3.js构建和操作四叉树。通过实例化D3的quadtree()函数,我们可以传入数据和一个定义范围的矩形,然后四叉树会自动对数据进行...
在`QuadTree-Cpp-master`这个项目中,你可以期待看到以下内容: 1. 四叉树节点的实现及其操作函数。 2. 使用SFML进行图形化的四叉树展示。 3. 示例代码,演示如何向四叉树中插入对象,并使用SFML显示四叉树结构。 4....
The joint development of the upcoming High Efficiency Video Coding (HEVC) standard by ITU-T Video Coding Experts Group and ISO/IEC Moving Picture Experts Group marks a new step in video compression ...
Real-Time Rendering of Physically Based Clouds Using Precomputed Scattering Egor Yusov Introduction Light Transport Theory 28.3 28.4 28.5 28.6 28.7 29 29.1 29.2 29.3 29.4 29.5 29.6 30 30.1 30.2 30.3 ...
creator 四叉树 Quadtree.ts 用于优化碰撞检测
总之,JamesMilnerUK的开源项目“quadtree-go”为Go开发者提供了一种实用的工具,通过四叉树数据结构来优化二维空间的数据管理和查询,尤其适用于需要处理大量地理或图像数据的场景。项目的源码和文档可以帮助学习者...
LuaQuadtree 一种基本的四叉树类型,用于检索潜在的碰撞 方法 用于插入和检索“对象”的数据类型定义为: object = {} object....object....object....object....Quadtree = require " quadtree " -- Crea
以前和大家分享过SIGMOD2009和2011的论文,朋友们都很感兴趣,现手里有ICDE2013的全部论文,再次和大家分享~ 一个包放不下,一共分成了4个包,包含142篇长文论文,还有64篇短文论文,朋友们可以挑选自己感兴趣的...
文中提到了多个与移动对象索引相关的关键词和研究方向,如TPR树(Time-Parameterized R-tree)、HR树(High-dimensional R-tree)、FT-Quadtree(Future Trajectory Quadtree)等。这些结构都是针对移动对象查询和...
《ACG-Procedural-City-Generation:RPI高级计算机图形学最终项目解析》 在计算机科学领域,尤其是在游戏开发和模拟系统中,程序化内容生成(Procedural Content Generation, PCG)是一项重要的技术。本项目“ACG-...
四叉树(Quadtree)是一种数据结构,特别适用于在二维空间中组织和操作数据。它是一种树形结构,其中每个节点都有四个子节点,分别对应于其父节点区域的四个象限:左上、右上、左下和右下。四叉树的主要应用在于地理...
#D3 中的聚类 D3 映射博客文章的配套代码。
这是一个基于JavaScript方法JavaScript Quadtree实现,该实现基于在上描述的Java方法: 许多游戏需要使用碰撞检测算法来确定两个对象何时发生碰撞,但是这些算法通常是昂贵的操作,并且会大大降低游戏的速度。 一种...
从文件名可以推测,下载的压缩包应该包含名为"Java-programming-Quadtree-Project-master"的主目录,这通常是Git仓库克隆后的默认命名方式。在解压后,我们可能会找到以下内容: 1. `src` - 源代码目录,包含.java...
该代码实现了QuadTree的创建于简单的查询功能 并以真实数据集(City of Oldenburg OL Road Network)共6105个节点进行了简单的测试 该数据集(sortData txt)经过处理按照第一列(精度)从小到大进行了排序