gpt4 book ai didi

c++ - 如何解释 VtkCamera viewTransformMatrix

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:49:26 24 4
gpt4 key购买 nike

我在原点有一个物体,我将相机移动到 (0,650,650) 并将焦点设置到原点,即:

vtkSmartPointer<vtkCamera> cam = vtkSmartPointer<vtkCamera>::New();
renderer->SetActiveCamera(cam);

cam->SetFocalPoint(0., 0., 0.);
cam->SetPosition(0., 650, 650);
cam->SetViewAngle(view_angle_);

cam->SetViewUp(0., 1., 0.);

但是,当我通过以下方式获取相机的 View 变换矩阵时:

vtkSmartPointer<vtkMatrix4x4> transform_view = cam->GetViewTransformMatrix();

然后打印出来我得到以下信息:

| 1 |    0    |    0    |     0    | 
| 0 | cos(45) | -sin(45)| 0 |
| 0 | sin(45) | cos(45) | -919.239 |
| 0 | 0 | 0 | 1 |

旋转部分似乎是正确的(绕 x 轴 45 度),但平移似乎全错了。如果最后一列不是:

| 0 |
|650|
|650|

还是我做错了什么?

最佳答案

这是一个老问题,但我会给出一个记录的答案。


您期望的是变换 w_T_c,即从相机坐标系到世界坐标系。

GetViewTransformMatrix 方法返回的是 c_T_w,即从世界到相机框架的变换:给定世界框架中的一个点 p_w,其在相机坐标系中的坐标为p_c = c_T_w * p_w

在您的示例中,如果您反转矩阵,则在最后一列中您将获得您要查找的翻译值。

关于c++ - 如何解释 VtkCamera viewTransformMatrix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18077105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com