我对如何将世界空间坐标转换为相机坐标感到困惑。
我目前的理解是我需要计算相机空间矢量
n = eyepoint - lookat
u = up(0,1,0)X n(标准化)
v = n X u
然后我有了< U,V,N>我会简单地将每个点乘以吗?
答案 0 :(得分:4)
让我们假设:
现在首先构建一个标准正交框架:
为了将全局坐标系转换为凸轮坐标系,您可以应用以下矩阵 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 dot -E)|
- | U_x,U_y,U_z,(U点-E)|
- | -D_x,-D_y,-D_z,(D dot E)|
- | 0.0,0.0,0.0,1.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|