使用 Camera 节点

使用 Camera 节点显示 Kanzi Studio Preview 中 Scene 的内容及您的 Kanzi 应用程序。

在 Kanzi Studio Preview 中,您通过设置为该 Scene 节点的预览摄像机的 Camera 节点看到一个 Scene。将 Camera 节点转换为预览相机。

不要使用 Render Transformation 或 Layout Transformation 属性缩放 Camera 节点或其祖先节点。当您缩放 Camera 节点时,会影响投影,使其与您设置的参数不匹配。

设置 Camera 节点的位置

要设置 Camera 节点的位置:

  1. 在 Preview 中,选择 Camera tool。

    ../../_images/select-camera-tool.png
  2. 在 Camera tool 中,您可以选择 Orbit Camera 或 Free Camera。

    ../../_images/orbit-or-free-camera.png
    • image0

      Orbit Camera 允许您移动:

      • 您在 Node Tree 中选择的节点。

      • 您使用相机的 Constraints > Look At 属性设置的节点。

      要使用轨道摄像机移动,使用以下控件:

      控件

      描述 (Description)

      点击鼠标左键并拖动。

      旋转 (Rotate)

      • 点击鼠标中键并拖动。

      • 按下 Space 键,然后单击并拖动鼠标左键。

      平移

      • 滚动鼠标滚轮。

      • 按下 Shift 和 Alt 键,然后单击并拖动鼠标左键。

      缩放

      按住 Ctrl 并单击鼠标左键。

      选择或取消选择 3D 节点 (3D node)。

    • image1

      Free Camera 允许您在不依附于任何点的情况下移动。

      要使用自由摄像机移动,使用以下控件:

      控件

      描述 (Description)

      W

      前移。

      按住 Shift 以加倍速度。

      S

      后移。

      按住 Shift 以加倍速度。

      A

      左移。

      按住 Shift 以加倍速度。

      D

      右移。

      按住 Shift 以加倍速度。

      E

      向上移动。

      Q

      向下移动。

      点击鼠标左键并拖动。

      旋转 (Rotate)

      点击鼠标中键并拖动。

      平移

      滚动鼠标滚轮。

      设置摄像机速度。

      向下滚动降低摄像机速度。

      向上滚动提高摄像机速度。

      按住 Ctrl 并单击鼠标左键。

      选择或取消选择 3D 节点 (3D node)。

  3. 当设置 Camera 节点的位置时,使用这些控件:

    控件

    描述 (Description)

    image2

    将摄像机的当前位置存储到预览 Camera 节点。

    image3

    将摄像机重置为预览 Camera 节点的当前位置。

    image4

    从相机的当前位置创建一个新的 Camera 节点。

    image5

    将摄像机引入在 Node Tree 或 Preview 中选择的 3D 对象。

    image6

    选择您想通过其查看当前场景的 Camera 节点。

    image7

    使用 3D 节点时,以度为单位设置摄像机的视野。

小技巧

在 Preview 窗口中使用 Node tool 时,您可以控制 Camera 节点的位置。

要使用 Orbit Camera 移动,请按住 Alt 并使用以下控件:

  • 点击鼠标左键并拖动以旋转。

  • 点击鼠标中键并拖动以平移。

  • 滚动鼠标滚轮以缩放。

要使用 Free Camera 移动,请按住鼠标右键并使用以下控件:

  • 移动鼠标以向任意方向倾斜和旋转摄像机角度。

  • 使用 W、S、A 和 D 将摄像机位置向前、向后、向左和向右移动。

  • 使用 E 和 Q 将摄像机位置向上和向下移动。

  • 滚动鼠标滚轮设置摄像机速度。

  • 移动时按住 Shift 以加倍速度。

  • 使用 F 将摄像机引入在 Preview 中选择的 3D 对象

小技巧

要放置:

  • 节点到 Preview 中 Camera 当前视图的位置,在 Node Tree 中右键单击该节点,然后选择 Align With View。

  • Preview 视图到任意节点的位置,在 Node Tree 中右键单击该节点,然后选择 Align View To Selected。

例如,要将 Camera 节点放置到 Scene 节点中任意节点的位置:

  1. 右键单击您要将 Camera 节点放置到其位置的节点,然后选择 Align View To Selected。

  2. 要将该位置存储到 Camera,右键单击 Camera,然后选择 Align With View。

../../_images/node-tree-align-view-align-to-selected.png

小技巧

您可以使用上下文菜单中的 Focus To Selected 命令,或者在节点树中双击所选节点(适用于非预设件节点),将 Camera 的当前视图聚焦到所选节点上。

../../_images/node-tree-camera-focus.png

将 Camera 节点转换为预览相机

在 Kanzi Studio Preview 中,您通过设置为该 Scene 节点的预览摄像机的 Camera 节点看到一个 Scene。默认情况下,Preview 使用 Scene 的默认摄像机。

要将 Camera 节点转换为预览摄像机,在 Node Tree 中可以:

  • 双击该 Camera 节点。

  • 右键单击该 Camera 节点并选择 Activate Camera in Preview。

    ../../_images/activate-camera-in-preview.png

当您设置预览摄像机时,Kanzi Studio:

  • 在 Scene 节点中,将 Preview Camera 属性设置为您转换为预览摄像机的 Camera 节点。

    ../../_images/properties-scene-preview-camera.png
  • 在 Node Tree 中,用 (Preview) 标记预览摄像机。

    请记住,您的 Kanzi 应用程序使用的是在 Scene 节点中通过 Camera 属性设置的摄像机。在 Node Tree 中,Kanzi Studio 用 (Default) 标记该摄像机。

    ../../_images/node-tree-preview-camera.png

从预设视点查看活动场景

Camera tool 允许您从预设视点之一快速查看整个 Scene 的内容:前、后、上、下、左或右侧。除非您开启存储相机当前位置(image8)的选项,否则预设视点不会更改 Scene 中 Camera 节点的位置。请参阅 设置 Camera 节点的位置。

要从预设视点查看整个活动的 Scene:

  1. 在 Preview 中,选择 Camera tool。

    ../../_images/select-camera-tool.png
  2. 使用这些默认快捷方式:

    预设视点

    默认快捷方式

    快捷方式描述

    从左侧查看场景。

    Shift 1

    左摄像机预设

    从右侧查看场景。

    Shift 2

    右摄像头预设

    从顶部查看场景。

    Shift 3

    顶部相机预设

    从底部查看场景。

    Shift 4

    底部相机预设

    从正面查看场景。

    Shift 5

    前置摄像头预设

    从后面查看场景。

    Shift 6

    后置摄像头预设

    要设置您自己的快捷键,在主菜单中,选择 Edit > User Preferences,然后选择 Shortcut Keys 选项卡。

创建一个 Camera 节点

在 Node Tree 或 Prefabs 中,您可以在 Scene 节点或任何 3D 节点中创建一个 Camera 节点。

要在 Preview 中创建一个 Camera 节点:

  1. 在 Preview 中,选择 Camera tool。

    ../../_images/select-camera-tool.png
  2. 使用 Orbit Camera 或 Free Camera 移动到您想要创建相机的位置。请参阅 设置 Camera 节点的位置。

  3. 单击 image9。

    ../../_images/preview-create-camera.png

Kanzi Studio 在相机的位置创建一个 Camera 节点。

设置 Camera 节点的投影类型

3D 投影使在 2D 表面上显示 3D 对象成为可能。

这些投影类型在 Kanzi 中可用:

  • Perspective 投影显示靠近相机的物体比远处的物体更大。这是默认的投影类型。请参阅 透视投影。

  • Asymmetric perspective 投影允许您控制透视投影每个角度的视野。请参阅 非对称透视投影。

  • Orthographic 投影显示了3D场景的2D视图,但没有提供深度感。请参阅 正交投影。

../../_images/camera-projection.svg

透视投影

使用透视投影来提供3D场景的真实视图。透视投影设置一个摄像机,使靠近 Camera 节点的物体比远处的物体看起来更大。这是3D场景中最常用的投影类型,也是 Kanzi 中的默认投影类型。

要使用透视投影:

  1. 选择一个 Camera 节点。

    ../../_images/node-tree-camera.png
  2. 在 Properties 中,添加并设置:

    • (可选) Projection Type 到 Perspective。

      这是默认值。

    • FOV Type 设置视野方向:

      • X FOV 设置沿 x 轴的视野。

      • Y FOV 设置沿 y 轴的视野。这是默认设置。

    • FOV 用于以度为单位设置相机的视野。

      默认值为 45 度。

    ../../_images/properties-projection-type-perspective.png

非对称透视投影

当您想分别控制透视投影向左、向右、向上和向下的视野时,使用非对称透视投影。

要使用非对称透视投影:

  1. 选择一个 Camera 节点。

    ../../_images/node-tree-camera.png
  2. 在 Properties 中,添加并设置:

    • Projection Type 到 Asymmetric perspective

    • Asymmetric FOV 到视野的左、右、上和下的度数。

      默认情况下,视野向左、右、上和下延伸45度。

      例如,要匹配沿 y 轴的默认 45 度视野的透视投影,请设置 Asymmetric FOV 属性:

      • 将 Up 属性字段设置为 -22.5。

      • 将 Down 属性字段设置为 22.5。

    ../../_images/properties-projection-type-asymmetric.png

正交投影

使用正交投影来显示3D场景的2D视图,而不提供深度感。正交投影线与投影平面正交,并且距离相机的远近不会影响对象的绘制大小。

要使用正交投影:

  1. 选择一个 Camera 节点。

    ../../_images/node-tree-camera.png
  2. 在 Properties 中,添加并设置:

    • Projection Type 到 Orthographic

    • 将 Orthogonal Type 设置为您要使用的正交坐标系类型:

      • Absolute 将相机设置为显示一个区域,其大小与父 Viewport 2D 节点的像素大小相匹配。

      • Relative 将相机设置为显示一个区域,其宽度根据 Orthogonal Plane Size 属性的值进行缩放。这是默认设置。

    • Orthogonal Plane Size 用于设置使用 Relative 坐标系的相机视平面的半宽或半高:

      • 当 FOV Type 设置为 Y FOV (默认值)时,Orthogonal Plane Size 设置视图平面的高度。

      • 当 FOV Type 设置为 X FOV 时,Orthogonal Plane Size 设置视图平面的宽度。

      默认值是 1.0。

    ../../_images/properties-projection-type-orthographic.png

为渲染通道设置相机

使用渲染通道定义3D内容的渲染时,您可以在每个渲染通道中设置渲染通道及其子节点用于渲染内容的 Camera 节点。请参阅 渲染 (Rendering)。

默认情况下,渲染通道使用默认的 Camera 节点在 Scene 节点中渲染内容。在任何渲染通道中,您可以添加并设置 Draw Object Render Pass > Camera 属性。通过这种方式,您可以设置渲染通道及其后代渲染通道使用特定的摄像机。在渲染通道中设置的 Draw Object Render Pass > Camera 属性的值会覆盖您在祖先渲染通道中设置的值。

例如:在此渲染通道预设中,默认情况下,所有 Draw Object Render Pass 渲染通道使用在 Scene 节点的 Camera 属性中设置的 Camera 节点。如果您在 Group Render Pass 中添加并设置 Draw Object Render Pass > Camera 属性,则该渲染通道预设中的所有渲染通道都使用该相机,除非您设置它们的 Camera 属性。

../../_images/render-passes-camera.png ../../_images/group-render-pass-camera.png

Draw Object Render Pass 从 Camera 的属性值计算这些属性的值,并将它们传递给着色器:

  • Calculated Camera Matrix 设置 kzCameraMatrix uniform。

  • Calculated Camera Position 设置 kzCameraPosition uniform。

  • Calculated Homogeneous View Position 设置 kzViewPosition uniform。

  • Calculated Projection Matrix 设置 kzProjectionMatrix uniform。

  • Calculated Projection Near And Far Planes 设置 kzCameraNearFarPlane uniform。

请参阅 着色器 uniform。

您可以在渲染通道中设置这些属性。您设置的值将覆盖您在 Camera 节点中设置的属性值。

使用 API 中的 Camera 节点

要通过正交投影创建相机:

// Create a camera named Camera.
CameraSharedPtr camera = Camera::create(domain, "Camera");
// Set the projection of the camera to relative orthogonal.
camera->setOrthogonalProjection(Camera::OrthogonalCoordinateSystemRelative);

// Make the viewing box display [-width,width] x [-1, 1] x [-1, 1] portion of the 3D space.
// The width of the viewing box is determined by the viewport aspect ratio.
camera->setOrthogonalPlaneHeight(1.0f);
camera->setZNear(-1.0f);
camera->setZFar(1.0f);

要通过透视投影创建相机:

// Create a camera named Camera.
CameraSharedPtr camera = Camera::create(domain, "Camera");
// Set the projection of the camera to perspective.
camera->setPerspectiveProjection();

// Make the viewing box display a horizontal 90 degree cone of the 3D space.
// The vertical cone angle is determined by the viewport aspect ratio.
camera->setFovType(Matrix4x4::FieldOfViewType::YFov);
camera->setFov(90.0f);
camera->setZNear(0.1f);
camera->setZFar(100.0f);

有关详细信息,请参阅 Camera 类。

相机属性类型和消息

有关 Camera 节点的可用属性类型和消息的列表,请参阅 Camera。

另请参阅

将节点转换为 Camera 节点

摄像机节点

在 Preview 中编辑您的应用程序。

渲染 (Rendering)