使用 Camera 节点¶
使用 Camera 节点显示 Kanzi Studio Preview 中 Scene 的内容及您的 Kanzi 应用程序。
在 Kanzi Studio Preview 中,您通过设置为该 Scene 节点的预览摄像机的 Camera 节点看到一个 Scene。将 Camera 节点转换为预览相机。
不要使用 Render Transformation 或 Layout Transformation 属性缩放 Camera 节点或其祖先节点。当您缩放 Camera 节点时,会影响投影,使其与您设置的参数不匹配。
设置 Camera 节点的位置¶
要设置 Camera 节点的位置:
在 Preview 中,选择 Camera tool。
在 Camera tool 中,您可以选择 Orbit Camera 或 Free Camera。

Orbit Camera 允许您移动:
您在 Node Tree 中选择的节点。
您使用相机的 Constraints > Look At 属性设置的节点。
要使用轨道摄像机移动,使用以下控件:
控件
描述 (Description)
点击鼠标左键并拖动。
旋转 (Rotate)
点击鼠标中键并拖动。
按下 Space 键,然后单击并拖动鼠标左键。
平移
滚动鼠标滚轮。
按下 Shift 和 Alt 键,然后单击并拖动鼠标左键。
缩放
按住 Alt 并单击鼠标左键。
选择或取消选择节点。

Free Camera 允许您在不依附于任何点的情况下移动。
要使用自由摄像机移动,使用以下控件:
控件
描述 (Description)
W
前移。
按住 Shift 以加倍速度。
S
后移。
按住 Shift 以加倍速度。
A
左移。
按住 Shift 以加倍速度。
D
右移。
按住 Shift 以加倍速度。
Q
向上移动。
E
向下移动。
点击鼠标左键并拖动。
旋转 (Rotate)
点击鼠标中键并拖动。
平移
滚动鼠标滚轮。
设置摄像机速度。
向下滚动降低摄像机速度。
向上滚动提高摄像机速度。
按住 Alt 并单击鼠标左键。
选择或取消选择节点。
当设置 Camera 节点的位置时,使用这些控件:
控件
描述 (Description)

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

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

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

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

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

使用 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 节点中任意节点的位置:
右键单击您要将 Camera 节点放置到其位置的节点,然后选择 Align View To Selected。
要将该位置存储到 Camera,右键单击 Camera,然后选择 Align With View。
小技巧
您可以使用上下文菜单中的 Focus To Selected 命令,或者在节点树中双击所选节点(适用于非预设件节点),将 Camera 的当前视图聚焦到所选节点上。
将 Camera 节点转换为预览相机¶
在 Kanzi Studio Preview 中,您通过设置为该 Scene 节点的预览摄像机的 Camera 节点看到一个 Scene。默认情况下,Preview 使用 Scene 的默认摄像机。
要将 Camera 节点转换为预览摄像机,在 Node Tree 中可以:
双击该 Camera 节点。
右键单击该 Camera 节点并选择 Activate Camera in Preview。
当您设置预览摄像机时,Kanzi Studio:
在 Scene 节点中,将 Preview Camera 属性设置为您转换为预览摄像机的 Camera 节点。
在 Node Tree 中,用 (Preview) 标记预览摄像机。
请记住,您的 Kanzi 应用程序使用的是在 Scene 节点中通过 Camera 属性设置的摄像机。在 Node Tree 中,Kanzi Studio 用 (Default) 标记该摄像机。
从预设视点查看活动场景¶
Camera tool 允许您从预设视点之一快速查看整个 Scene 的内容:前、后、上、下、左或右侧。除非您开启存储相机当前位置(
)的选项,否则预设视点不会更改 Scene 中 Camera 节点的位置。请参阅 设置 Camera 节点的位置。
要从预设视点查看整个活动的 Scene:
在 Preview 中,选择 Camera tool。
使用这些默认快捷方式:
预设视点
默认快捷方式
快捷方式描述
从左侧查看场景。
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 节点:
在 Preview 中,选择 Camera tool。
使用 Orbit Camera 或 Free Camera 移动到您想要创建相机的位置。请参阅 设置 Camera 节点的位置。
单击
。
Kanzi Studio 在相机的位置创建一个 Camera 节点。
设置 Camera 节点的投影类型¶
3D 投影使在 2D 表面上显示 3D 对象成为可能。
这些投影类型在 Kanzi 中可用:
Perspective 投影显示靠近相机的物体比远处的物体更大。这是默认的投影类型。请参阅 透视投影。
Asymmetric perspective 投影允许您控制透视投影每个角度的视野。请参阅 非对称透视投影。
Orthographic 投影显示了3D场景的2D视图,但没有提供深度感。请参阅 正交投影。
透视投影¶
使用透视投影来提供3D场景的真实视图。透视投影设置一个摄像机,使靠近 Camera 节点的物体比远处的物体看起来更大。这是3D场景中最常用的投影类型,也是 Kanzi 中的默认投影类型。
要使用透视投影:
选择一个 Camera 节点。
在 Properties 中,添加并设置:
(可选) Projection Type 到 Perspective。
这是默认值。
FOV Type 设置视野方向:
X FOV 设置沿 x 轴的视野。
Y FOV 设置沿 y 轴的视野。这是默认设置。
FOV 用于以度为单位设置相机的视野。
默认值为 45 度。
非对称透视投影¶
当您想分别控制透视投影向左、向右、向上和向下的视野时,使用非对称透视投影。
要使用非对称透视投影:
选择一个 Camera 节点。
在 Properties 中,添加并设置:
Projection Type 到 Asymmetric perspective
Asymmetric FOV 到视野的左、右、上和下的度数。
默认情况下,视野向左、右、上和下延伸45度。
例如,要匹配沿 y 轴的默认 45 度视野的透视投影,请设置 Asymmetric FOV 属性:
将 Up 属性字段设置为 -22.5。
将 Down 属性字段设置为 22.5。
正交投影¶
使用正交投影来显示3D场景的2D视图,而不提供深度感。正交投影线与投影平面正交,并且距离相机的远近不会影响对象的绘制大小。
要使用正交投影:
选择一个 Camera 节点。
在 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。
为渲染通道设置相机¶
使用渲染通道定义3D内容的渲染时,您可以在每个渲染通道中设置渲染通道及其子节点用于渲染内容的 Camera 节点。请参阅 渲染 (Rendering)。
默认情况下,渲染通道使用 Scene 节点中的默认 Camera 节点来渲染内容。在任何渲染通道中,您都可以添加并设置 Draw Objects 渲染通道 > Camera 属性。这样,您可以将该渲染通道及其后代渲染通道设置为使用特定的摄像机。在某个渲染通道中设置的 Draw Objects 渲染通道 > Camera 属性的值会覆盖您在祖先渲染通道中设置的值。
例如,在此渲染通道预设件中,所有 Draw Objects 渲染通道默认使用在 Scene 节点的 Camera 属性中设置的 Camera 节点。如果您在 Group 渲染通道中添加并设置 Draw Objects 渲染通道 > Camera 属性,则该渲染通道预设件中的所有渲染通道都会使用该摄像机,除非您设置了它们的 Camera 属性。
Draw Objects 渲染通道根据 Camera 的属性值计算以下属性的值,并将其传递给着色器:
Calculated Camera Matrix 设置
kzCameraMatrixuniform。Calculated Camera Position 设置
kzCameraPositionuniform。Calculated Homogeneous View Position 设置
kzViewPositionuniform。Calculated Projection Matrix 设置
kzProjectionMatrixuniform。Calculated Projection Near And Far Planes 设置
kzCameraNearFarPlaneuniform。
请参阅 着色器 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。