正交相机
相机是 VN 的关键元素,作为独立于场景的观察者,它们决定了场景中的哪些内容会被‘拍摄’并最终呈现在屏幕上。
正交相机通过定义一个 长方体的可视范围(视体 Frustum) 来决定渲染内容。与透视相机不同,在这个范围内的物体,无论远近,在屏幕上显示的大小都是一致的。这非常适合 2D 背景、立绘以及 UI 的渲染。
使用 regCamera 函数,可以帮助我们快速创建一个正交相机(并返回一个句柄)。
export const view = regCamera("main", c => {});regCamera 接受两个参数。
regCamera( "main", // 第一个参数
c => { } // 第二个参数);main是相机的名称,可以任意指定(但不能与其他相机重名)。- 第二个参数则是相机的配置函数,可以在这里指定相机的视锥体等。
我们只需要修改c => { ... }内部的内容;这里的c是一个构建器,可以任意指定其名称。
regCamera 函数会返回一个相机句柄,可以通过这个句柄来引用这个相机。
export const view = regCamera("main");view是一个相机句柄,其名称可以任意指定(但不能与其他句柄重复)。export const表示view是一个全局变量,可以在其他文件中引用。
regCamera 的第二个参数(可选)是一个配置函数,可以在这里指定相机的的视锥体等。
视锥体 / viewSize
Section titled “视锥体 / viewSize”视口边界
left,right:定义视体在 X 轴上的左、右边界。top,bottom:定义视体在 Y 轴上的上、下边界。
深度范围
near,far:定义视体在 Z 轴上的前、后边界。
只有 Z 轴坐标位于 [near, far] 区间内的物体才会被渲染。
r => { r.left = -960; r.right = 960; r.top = 540; r.bottom = -540;
r.near = 0.1; r.far = 1000;};zoom属性用于缩放相机视口,类似于相机的数码变焦,仅放大画面,不改变透视关系。
r => { r.zoom = 1;};在默认项目下,ShxNovel 会自动注册一个名为 main 的相机,并作为默认相机。你可以在 world/pipeline.ts 中修改相机的配置。
对于简单的 VN 应用来说,可能并不需要额外的相机,这个章节的主要功能是帮助创作者了解相机的用途,并了解 ShxNovel 注册相机(以及其他对象)的基本语法。
但如果您需要更复杂的演出,请在未来参考 渲染管线,在其中利用相机来构建更复杂的演出。