|
|
发表于 2008-5-6 21:29:00
|
显示全部楼层
Re:有谁看过D3D的Pick例子?不怎么懂啊,那位大哥指点一下
juanahx: Re:有谁看过D3D的Pick例子?不怎么懂啊,那位大哥指点一下
vPickRayDir的坐标应该是(x,y,z,1)吧?
所以求逆这步为什么不是下面这样:
vPickRayDir.x = v.x*m._11 +...
因为vPickRayDir是vTemp转换到物体空间后与摄像机原点vPickRayOrig(物体空间)的差,而vPickRayOrig=(m._41,m._42,m._43,1),故求vPickRayDir时各个分量要与vPickRayOrig相减,所以是:
vPickRayDir.x = v.x*m._11 + v.y*m._21 + v.z*m._31 + m._41 - vPickRayOrig.x;
vPickRayDir.y = v.x*m._12 + v.y*m._22 + v.z*m._32 + m._42 - vPickRayOrig.y;
vPickRayDir.z = v.x*m._13 + v.y*m._23 + v.z*m._33 + m._43 - vPickRayOrig.z;
于是:
vPickRayDir.x = v.x*m._11 + v.y*m._21 + v.z*m._31;
vPickRayDir.y = v.x*m._12 + v.y*m._22 + v.z*m._32;
vPickRayDir.z = v.x*m._13 + v.y*m._23 + v.z*m._33; |
|