Fast Terrain Rendering Using Geometrical MipMappin

好不容易理解作者的良苦用心了!!!

 

在上面这图中作者阐述了他用到的Map,是一个三角形triip(按行排列)。

 

 



 

在这个图中,模糊级别升高后的图形,(图中黑点被渲染)

 

 

 



 在这里作者用了很晦涩的语言讲述了他的道理。

特别是最后一句:

 

the only thing that change is the connection data;

 

 

仅仅需要改变连接数据。?

 

意思很模糊啊 。。。。。

 

想了很久总算明白了。。

 

 

比如0 1,2, 3,4,5,6 是一个trip,现在如何去掉其中的3呢。。。。。。

 

很简单,,,把3改为2 就可以了。。也就是所谓的  connection data!!!

 

 

0 1 2 2 4 5 6

 

比如说

 

1--   2 -    3  -  4 -  5

 

6-     7-    8-    9-  10

 

11-  12-  13-  14- 15

 

16-  17-  18-   19- 20

 

21-- 22--23--  24-- 25

 

也就是把6 这个点拉到1位置上。画6的时候画1就行了!!

 

预先置一个数组。来描述画的顺序。。

 

 

1.这样可以修复crack

2.怎么修复pop呢。也就是突然的改变!!高度?

 

作者用了线性插值法。。

 

不让它突然改变高度,而是根据,当前的模糊度所占的区间进行线性插值。

 

公式如下:



 

很简单啦。。不说了。。

 

也就是斜坡算法啦!!

 

下面说一下OpengL中的正反面判别。。

 

//Opengl是按照顶点出现的顺序判断的。

 

//默认为顶点按照逆时针排序。三个点一个面!。。。有出现的顺序,这个面就被确定了。

 

//如果opengl经过映射发现是顺时针,那么opengl认为就是反面咯。

 

//我认为是全是正面,opengl不承认!!!它有它的规则。呵呵。

 

比如说 ,按照顺时针画了个图,本来是反面。。

 

 

但是你把反面一转,

 

正面就朝上了!!opengl说那就是正面。。。

 

 

 

问题是:

 

 

如何保证看到的面全是正向面呢??????????????????

 

opengl也无法保证啊

 

很简单的方法是把这个面封装成一个体!!!

 

那就永远看不到反面了!!!。。

 

否则总会看到地!

 

 

所以说有了阴影体的概念!!!。

 

 

它的特点是,要么 我看到的东西全是正面,要么全是反面!!!!

 


概念很简单,如果你在我的阴影体中,那么就说明有阴影,否则没有阴影。

 

 

 

反面光线=正面光线

 

 

但是有个问题,,

 

 

被你看到的光线是否也符合这个等式呢?????

 

 

有些光线理你而去了!!

 

 

有些反面被对着你。。

 

有些正面也被对着你。。

 

 

如果被对着你的正面和被对着你的反面所发出的光线相等。。

 

 

这个时候!!!呵呵。。。。

 

 

 

就当然是相等了。。

 

 

如何保证呢?

 

 

如果进去了必须得出来!!就可以保证啦!!!

 

 

也就是说,在一 条线只要保证同时穿过两正面和两个反面。。。

 

 

高斯包围体!!

 

就这么叫吧!!

 

 

1.保证物体是个高斯包围体!但是,也不一定啦。只要保证所有测试光线同时穿过两个正面和反面就行了。

 

 

 

你可能感兴趣的:(算法)