哈哈!花了几个小时的时间学习decal算法,嗯!不错,有收获!
这个算法虽然简单但我个人认为相当重要,可以解决一些很棘手的
问题!
下面我来介绍一下我所用的方法:
method 1:
这个方法是我最推荐的一种方法,因为最简单!尤其
在Direct3D下最明显。在平时常用的Projection matrix API里
修改一下near和far的值,给他们都加一个Z bias!
For example:
D3DXMatrixPerspectiveFovLH( &out, FOV, aspect, near + zbias, far + zbias );
method 2:
这个方法是由我的同事自己推算出来的,根据projection transformation的过程,因
为点在投影到projection plane后的坐标是normalized, i.e [0.0, 1.0]( assume you are using d3d ),
而projection matrix里影响z值主要是33和43两个元素,根据这个公式把你要使用的zbias加入
并建立方程:
// projected z = z * 33 + 43
// 把near和far加上zbias带入求出新的zmin 和zmax(也就是[0.0, 1.0])
zmin = ( near + zbias ) * 33 + 43 ;
zmax = ( far + zbias ) * 33 + 43 ;
原理和method1相似。
posted on 2006-10-16 09:25
Konami wiki 阅读(363)
评论(1) 编辑 收藏 引用