posts - 34,  comments - 14,  trackbacks - 0
     哈哈!花了几个小时的时间学习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 阅读(270) 评论(1)  编辑 收藏 引用
只有注册用户登录后才能发表评论。