我对如何将世界空间坐标转换为相机坐标感到困惑。
我目前的理解是,我需要计算相机空间矢量,其中
n = 视点 - 观察
u = up(0,1,0) X n(归一化)
v = n X u
那么一旦我有 < U, V, N > 我会简单地将每个点乘以 吗?
让我们假设:
现在首先构造一个正交框架:
为了将全局坐标系转换为凸轮坐标系,您可以应用以下矩阵M_R:
- | R_x, R_y, R_z, 0 |
- | U_x, U_y, U_z, 0 |
- | -D_x,-D_y,-D_z,0|
- | 0.0, 0.0, 0.0, 1.0|
如果您的凸轮未位于全局原点,您还必须应用翻译M_T:
- | 1, 0, 0, -e_x |
- | 0, 1, 0, -e_y |
- | 0, 0, 1, -e_z|
- | 0, 0, 0, 1|
最后,您从全局到凸轮坐标的完整转换矩阵是:
- | R_x, R_y, R_z, (R 点 -E) |
- | U_x, U_y, U_z, (U 点 -E) |
- | -D_x,-D_y,-D_z,(D点E)|
- | 0.0, 0.0, 0.0, 1.0|
我认为之前的帖子有错误
这个矩阵
| R_x, R_y, R_z, (R dot -E) |
| U_x, U_y, U_z, (U dot -E) |
| -D_x, -D_y, D_z, (D dot E)|
| 0.0, 0.0, 0.0, 1.0|
应该是(我在openGL中测试过,这个是对的)
| R_x, R_y, R_z, (R dot -E) |
| U_x, U_y, U_z, (U dot -E) |
| -D_x, -D_y, -D_z, (D dot E)|
| 0.0, 0.0, 0.0, 1.0|