1

如何在 Three.js 上制作投影矩阵,从 3d 点映射到以下规则描述的屏幕坐标?

screen_x = x - z*0.5
screen_y = y - z*0.5
depth = z
4

1 回答 1

1

投影矩阵表示以下方程:

xx xy xz xt    <- x' = (xx*x + xy*y + xz*z + xt) / (wx*x + wy*y + wz*z + 1)
yx yy yz yt       y' = (yx*x + yy*y + yz*z + yt) / (wx*x + wy*y + wz*z + 1)
zx zy zz zt       z' = (zx*x + zy*y + zz*z + zt) / (wx*x + wy*y + wz*z + 1)
wx wy wz  1   

从此所有其他元素都将为零,但是

screen_x = x-z*0.5 : xx=1,       xz=-0.5
screen_y = y-z*0.5 :       yy=1, xz=-0.5
depth  z'= z       :             zz=1      (and ww=1)

编辑这不是一般的投影矩阵,但仅适用于这个特定问题。

一般[对称]投影矩阵的形式为

 a  0  0  d 
 0  b  0  e  
 0  0  c  f 
 0  0  1  0, 

由此得出 x 和 y 将除以 wx*z == z。

于 2012-12-27T07:01:21.767 回答