# 相机
相机类似现实世界中的摄像机和眼睛,用于将可视范围内的对象呈现到屏幕上。
注意
相机也是三维可视化必不可少的元素!!!
# 创建相机
使用引擎(Engine)的createCamera接口创建相机。
// 创建相机实体
const camera = engine.createCamera( {
camera: {
position: [ 0.0, 1000.0, 0.0 ], // 相机初始位置,可选
lookAt: [ 0.0, 0.0, 0.0 ], // 相机初始朝向,可选
near: 1.0, // 相机近裁剪面距离,可选
far: 2000.0, // 相机远裁剪面距离,可选
autoClippingDistance: false // 是否自动计算远近裁剪面距离,可选
}
} );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
提示
物体只有位于远近裁剪面之间才不会被相机剔除,对于绝大部分场景设置固定的远近裁剪面距离即可以正常渲染。但是对于某些范围跨度较大的场景(例如,瓦片地图、地层等)固定的远近裁剪面距离往往会导致“z-fighting”现象,这时需要开启自动计算远近裁剪面距离(autoClippingDistance: true),这样引擎内部会在初始的远近裁剪面距离之间动态调整裁剪面距离避免产生“z-fighting”现象。
# 相机控制器
相机现在只能“看”,还不能“动”。我们需要添加一个控制器组件(OrbitControl)让相机动起来。
// 添加OrbitControl组件
import { OrbitControl } from '@tx3d/core';
camera.addComponent( OrbitControl, {
enableDamping: true // 是否启用惯性浏览,可选,默认false
} );
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 删除相机
使用引擎(Engine)的removeCamera接口删除相机。
// 删除相机
engine.removeCamera( camera );
1
2
2
# 激活相机
使用引擎(Engine)的setActiveCamera接口激活相机。
// 激活相机
engine.setActiveCamera( camera );
1
2
2
注意
- 相机只有被激活才能够参与渲染;
- 允许创建多个相机,但同一时刻只允许激活一个相机。
# 获取当前激活相机
// 获取当前激活的相机实体
const camera = engine.sceneRenderer.activeCamera;
1
2
2