Barcentric coordinates(重心坐标)
- 使用插值做什么?
- 三角形顶点质地、坐标、颜色、一般向量等
- 如何做插值
- 使用重心坐标
重心坐标表示:
如果满足了
α
β
γ
\alpha \beta \gamma
αβγ 为非负,则这个点一定在三角形内部。
α
β
γ
\alpha \beta \gamma
αβγ 的值“对面”的三角形面积成比例:
- 求得中心坐标:
-
-
-
根据重心坐标线性插值
-
投影下,重心坐标并不是一一对应。这样的话,需要在三维层面先求得中心坐标,而不是投影了的二维坐标。
-
应用纹理到实时的渲染
找到纹理映射,然后直接查阅纹理位置,直接粘上去。
纹理扩大(如果纹理较小)
纹理到不同位置
如果使用最近纹理映射,这样会导致细看有明显的小方格。
- Bilineaer interpolation
-
-
-
-
-
-
-
对应简单模型来说,双向线性插值效果不错,但是相对于Bicubic(选取周围16个像素)
-
纹理扩大(如果纹理较大)
如果在近处,我们使用周围像素纹理值来采样,没有问题;但是如果较远的话,这会出现很大失误。
在纹理过大,如何处理采样问题?
如果使用supersampling可以吗?
Mipmap (可以做范围查询、特点快、近似、只可以是正方形)
处理之前,先生成Mipmap。比原来存储量多了 1 / 3 1/3 1/3存储量
这里有个很细节的思维,假设把Level 0放满前三个方格,如图箭头所示。后面不断加入Level 1-n,最后拼成恰好展 1 / 4 1/4 1/4
映射的时候,发现不太连续。发现不同层的话,可以进行双线性插值得到另一层。
做三线性插值,开销较小,只要做两次查询。现在游戏都是默认有这种方式的
效果对比:
为什么会模糊呢?只能查询方块内的平均值,并且三线性插值也是大致
-
解决方案:
-
-
这样可以很好解决mipmap问题,但是对于绿色方块中斜矩阵还是问题:
-
-
解决办法,使用EWA 过滤器计算。使用多次查找,加权。