相机
相机将场景渲染到屏幕。相机本质上是附加了 CameraComponent 的实体:场景从该实体的位置和朝向绘制,因此可以像操作其他实体一样,通过移动和旋转实体来调整相机。相机沿自身局部 Z 轴的负方向观察。
场景中至少需要一台启用的相机才能显示内容。除此之外,你还可以控制许多方面:将 3D 场景映射为 2D 图像的投影、决定最终颜色的色调映射,以及多相机如何组合视图,以实现分屏、叠加和渲染到纹理。
创建相机
- 引擎
- 编辑器
- React
- Web Components
// Create an entity with a camera component
const camera = new pc.Entity('Camera');
camera.addComponent('camera', {
clearColor: new pc.Color(0.3, 0.3, 0.7)
});
app.root.addChild(camera);
// Aim the camera by transforming its entity
camera.setPosition(0, 5, 10);
camera.lookAt(0, 0, 0);
<Entity name="camera" position={[0, 5, 10]}>
<Camera clearColor="#4d4db3" />
</Entity>
全部可用属性参见 <Camera/> 组件参考。
<pc-entity name="camera" position="0 5 10">
<pc-camera clear-color="0.3 0.3 0.7 1"></pc-camera>
</pc-entity>
全部可用属性参见 <pc-camera> 标签参考。
本节内容
- 投影:透视与正交投影、视野角、裁剪平面和视锥体剔除。
- 清除:设置背景色、让画布透明或禁用清除。
- 色调映射与曝光:将 HDR 场景光照映射到显示器,可选择物理曝光控制。
- 多相机:通过优先级、视口、图层和渲染目标组合视图。
- 相机控制:使用引擎自带脚本添加环绕、飞行和第一人称导航。
- 屏幕与世界坐标:在 2D 屏幕位置与 3D 世界位置之间转换。
- 场景拾取器:精确选择屏幕坐标下的对象。
- 深度图层:让着色器访问场景颜色和深度缓冲区。
进一步探索
- 后处理:泛光、景深、SSAO、TAA、暗角等效果逐相机应用。参见后期效果。
- AR 和 VR:相机可通过
startXr()驱动沉浸式 WebXR 会话。参见 XR 章节。 - 逐相机雾效:使用
fog为单个相机覆盖场景雾设置。 - 自定义投影:提供
calculateProjection和calculateTransform回调,实现斜投影、平面反射等高级效果。 - 教程:尝试相机沿路径移动和环绕相机。
