网站平台维护,app开发费用一般多少钱,网站开发摊销,网站文章突然不收录1. 相机的核心属性
在 VTK 中#xff0c;vtkCamera 的核心属性有默认值。如果你不设置这些属性#xff0c;相机会使用默认值来渲染场景。 Position#xff08;默认值#xff1a;(0, 0, 1)#xff09;#xff1a; 默认情况下#xff0c;相机位于 Z 轴正方向的 (0, 0, 1)…1. 相机的核心属性
在 VTK 中vtkCamera 的核心属性有默认值。如果你不设置这些属性相机会使用默认值来渲染场景。 Position默认值(0, 0, 1) 默认情况下相机位于 Z 轴正方向的 (0, 0, 1) 位置。这是一个距离原点 1 个单位距离的位置。 FocalPoint默认值(0, 0, 0) 默认焦点是原点 (0, 0, 0)相机默认“看向”原点。 ViewUp默认值(0, 1, 0) 默认“上方向”是 Y 轴正方向 (0, 1, 0)。 ViewPlaneNormal隐式计算 默认情况下ViewPlaneNormal 是从 Position 到 FocalPoint 的单位向量即 (0, 0, -1)。 2. 相机的常用方法
以下是 VTK 相机中常用方法的详细说明包括作用、用法以及默认状态。 1位置调整方法
这些方法用于设置或调整相机的位置和焦点。
1. SetPosition(x, y, z)
作用设置相机在 3D 空间中的位置。用法camera.SetPosition(10, 10, 10) 将相机放置在 (10, 10, 10)。默认状态如果未设置相机默认位置为 (0, 0, 1)位于 Z 轴正方向。
2. SetFocalPoint(x, y, z)
作用设置相机“看向”的焦点。用法camera.SetFocalPoint(0, 0, 0) 将相机的焦点设置为原点。默认状态如果未设置焦点默认为原点 (0, 0, 0)。
3. SetViewUp(x, y, z)
作用设置相机的“上方向”。用法camera.SetViewUp(0, 1, 0) 设置 Y 轴为“上方向”。默认状态如果未设置“上方向”默认为 Y 轴正方向 (0, 1, 0)。
4. Dolly(factor)
作用缩放相机视图即沿视线方向移动相机。用法camera.Dolly(2.0) 将相机拉近到焦点的 1/2 距离。默认状态如果未调用Dolly 不会影响相机默认距离由 Position 和 FocalPoint 决定。
5. Zoom(factor)
作用改变相机的视场角FOV实现放大/缩小效果。用法camera.Zoom(1.5) 缩小视场角放大画面。默认状态如果未调用Zoom 默认值为 1.0即视场角不变。 2方向调整方法
这些方法用于旋转相机调整相机的视线方向。
1. Azimuth(angle)
作用围绕世界坐标系的 Z 轴旋转相机。用法camera.Azimuth(30) 将相机绕 Z 轴旋转 30°。默认状态如果未调用Azimuth 不会改变相机方向。
2. Elevation(angle)
作用围绕相机自身的 X 轴旋转相机。用法camera.Elevation(45) 将相机绕自身 X 轴旋转 45°。默认状态如果未调用Elevation 不会改变相机方向。
3. Roll(angle)
作用围绕相机的视线方向ViewPlaneNormal旋转相机。用法camera.Roll(90) 将相机绕视线方向旋转 90°。默认状态如果未调用Roll 不会改变相机的方向。
4. OrthogonalizeViewUp()
作用调整 ViewUp 向量使其与 ViewPlaneNormal 向量正交。用法camera.OrthogonalizeViewUp()。默认状态如果未调用ViewUp 不会自动正交化可能因旋转操作导致方向混乱。
5. Yaw(angle) 和 Pitch(angle)
作用类似于 Azimuth() 和 Elevation()但它们围绕相机自身坐标系的轴旋转。 Yaw(angle)围绕相机自身的 Y 轴旋转。Pitch(angle)围绕相机自身的 X 轴旋转。用法 camera.Yaw(30) # 绕 Y 轴旋转 30°
camera.Pitch(45) # 绕 X 轴旋转 45°默认状态如果未调用这些旋转操作不会影响相机方向。 3其他常用功能
1. ComputeViewPlaneNormal()
作用重新计算视线方向ViewPlaneNormal。用法camera.ComputeViewPlaneNormal()。默认状态默认情况下ViewPlaneNormal 会根据 Position 和 FocalPoint 自动计算。
2. SetParallelProjection(state)
作用设置相机为平行投影模式。用法camera.SetParallelProjection(1) 开启平行投影0 为透视投影。默认状态默认情况下相机使用透视投影模式。
3. SetClippingRange(near, far)
作用设置相机的裁剪范围。用法camera.SetClippingRange(0.1, 1000)。默认状态默认裁剪范围为 (0.1, 1000)。
4. ResetCamera()
作用重置相机使场景中的所有对象都在视野内。用法renderer.ResetCamera()。默认状态如果未调用渲染器不会自动调整相机可能导致场景不可见。
5. GetViewTransformMatrix()
作用获取相机的视图变换矩阵。用法matrix camera.GetViewTransformMatrix()。默认状态默认情况下相机的变换矩阵由其位置、焦点和方向自动计算。
旋转相机 - 视觉效果上旋转三维vr图像
ren.GetActiveCamera().Azimuth(azimuth_angle) # 水平旋转
ren.GetActiveCamera().Elevation(elevation_angle) # 垂直旋转ren.GetActiveCamera().OrthogonalizeViewUp()
在使用 Azimuth() 和 Elevation() 进行组合旋转时相机会围绕不同的轴旋转
Azimuth()围绕世界坐标系的 Z 轴旋转。Elevation()围绕相机自身的 X 轴旋转。 OrthogonalizeViewUp()确保相机的“上方向”ViewUp 向量与相机的视线方向从相机位置指向焦点的向量正交
如果不使用OrthogonalizeViewUp()
这些旋转会改变相机的位置和方向但不会自动调整 ViewUp。如果多次旋转后ViewUp 和 ViewPlaneNormal 不再正交会导致以下问题
相机方向混乱相机的“上”方向可能不再符合直觉例如图像可能会出现倾斜甚至上下颠倒。视角翻转当 Elevation() 的角度过大时例如接近 ±90°ViewUp 可能会与 ViewPlaneNormal 重合或接近重合导致视角完全翻转。累积误差每次旋转都会进一步破坏 ViewUp 和 ViewPlaneNormal 的正交性导致问题越来越严重。