我在原點對象和我的相機移動(0650650)和焦點設置到原點,即:如何解釋VtkCamera viewTransformMatrix
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.);
然而,當我得到視圖變換矩陣相機通過:
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|
或者我做錯了什麼?
根據vtk文檔(這裏:http://www.vtk.org/doc/release/5.2/html/a00154.html#40f9e41a86e5b7c94fe171e7b9193673)它說,在'GetViewTransformMatrix()**「的方法中ViewTransform僅依賴於三個ivars:位置,FocalPoint和ViewUp矢量。「** – Aly
查看vtkCamera文檔」SetViewPlaneNormal「方法已被棄用。也許你可以展示一些代碼來實現這一點?然而,旋轉矩陣似乎是正確的,所以這不就意味着相機正對着正確的點,在這種情況下的原點? – Aly
該文檔顯示「[ViewPlaneNormal]方法已被棄用。根據ViewShear從DirectionOfProjection自動設置視圖平面法線。」它還說「除非你使用SetViewShear/SetObliqueAngles創建剪切輸出視圖,否則」視圖平面法線「將指向與投影方向相反。」因此,請改用DirectionOfProjection方法......在這種情況下,它只是L/|| L ||。我沒有任何代碼;我從來沒有使用vtk。 – andand