new CameraController()
Members
-
dampingFactor :Number
-
设置/获取 摄像机惯性插值因子,数值越小插值效果越明显
Type:
- Number
-
distance :Number
-
设置/获取 摄像机镜头和观察点的距离
Type:
- Number
-
distanceLimited :Array.<Number>
-
设置/获取 摄像机距离范围[最小值, 最大值]
Type:
- Array.<Number>
-
enablePan :Boolean
-
设置/获取 是否开启默认平移操作
Type:
- Boolean
Example
// 关闭默认的鼠标右键平移操作 app.camera.enablePan = false;
-
enableRotate :Boolean
-
设置/获取 是否开启默认的旋转操作
Type:
- Boolean
Example
// 关闭默认的鼠标左键旋转操作 app.camera.enableRotate = false;
-
enableZoom :Boolean
-
设置/获取 是否开启默认缩放操作
Type:
- Boolean
Example
// 关闭默认的鼠标滚轮缩放操作 app.camera.enableZoom = false;
-
far :Number
-
设置/获取 摄像机远裁剪面的距离,超过这个距离的物体将不会被看到
Type:
- Number
Example
app.camera.far = 100;
-
flying :Boolean
-
获取摄像机是否在飞行
Type:
- Boolean
-
fov :Number
-
设置/获取 摄像机FOV 值越大,视野越大 默认值为 60
Type:
- Number
Example
app.camera.fov = 90;
-
inputEnabled :Boolean
-
设置/获取 是否开启默认的摄像机交互操作
Type:
- Boolean
Example
// 关闭默认的摄像机交互操作(包括 旋转、平移、缩放) app.camera.inputEnabled = false
-
keyPanSpeed :Number
-
设置/获取 摄像机键盘平移速度 默认值为 0.1
Type:
- Number
-
mousePanSpeed :Number
-
设置/获取 摄像机鼠标平移速度 默认值为 0.1
Type:
- Number
-
near :Number
-
设置/获取 摄像机近裁剪面的距离,比这个距离近的物体将不会被看到
Type:
- Number
Example
app.camera.near = 1;
-
position :Array.<number>
-
设置/获取摄像机 镜头位置(眼睛位置)
Type:
- Array.<number>
Example
app.camera.position = [10,10,10]
-
projectionType :CameraProjectionType|String
-
设置/获取 摄像机投影类型 默认为透视投影
Type:
- CameraProjectionType | String
Example
// 透视投影 app.camera.projectionType = THING.CameraProjectionType.Perspective; // 正射投影 app.camera.projectionType = THING.CameraProjectionType.Orthographic;
-
rotateSpeed :Number
-
设置/获取 摄像机旋转速度
Type:
- Number
-
target :Array.<number>
-
设置/获取摄像机 目标点位置
Type:
- Array.<number>
Example
app.camera.target = [0,0,0]
-
up :Array.<number>
-
设置/获取 摄像机 UP 方向 默认值为 [0,1,0]
Type:
- Array.<number>
-
viewMode :CameraView|Number
-
设置/获取 视图默认(2D/3D视图) 默认为 3D 视图
Type:
- CameraView | Number
Example
// 设置为 2D 顶视图 app.camera.viewMode = THING.CameraView.TopView; // 设置为 3D 视图 app.camera.viewMode = THING.CameraView.Normal;
-
xAngleLimitRange :Array.<Number>
-
设置/获取 摄像机垂直角度范围[最小值, 最大值],默认值[-90, 90]
Type:
- Array.<Number>
Example
// 限制摄像机不看到场景地面以下 app.camera.xAngleLimitRange = [0,90]
-
yAngleLimitRange :Array.<Number>
-
设置/获取 摄像机水平角度范围[最小值, 最大值] [-180, 180] 之间(在地球上该参数暂不生效)
Type:
- Array.<Number>
-
zoomLimited :Array.<Number>
-
设置/获取 摄像机缩放系数范围[最小值, 最大值] (仅在 2D 视图下有效果)
Type:
- Array.<Number>
Methods
-
distanceTo(position) → {Number}
-
获取摄像机到某坐标或者另一物体的绝对距离
Parameters:
Name Type Description position
Array.<number> | THING.BaseObject 世界坐标系下的位置 或 另一物体
Returns:
距离
- Type
- Number
Example
// 填写世界坐标系下的位置 camera.distanceTo([0,0,0]); // 填写物体对象 camera.distanceTo(otherObj);
-
fit(param)
-
观察某物体
Parameters:
Name Type Description param
Object 参数列表
Properties
Name Type Argument Description object
THING.BaseObject 观察的物体
xAngle
Number <optional>
绕物体自身 X 轴旋转角度
yAngle
Number <optional>
绕物体自身 Y 轴旋转角度
radiusFactor
Number <optional>
离目标物体距离(离物体 n 倍自身包围盒半径距离处)
radius
Number <optional>
离目标物体距离(与 radiusFactor 选填其一)
Example
// 观察某物体 app.camera.fit(obj); // 距离3倍物体自身包围盒半径处观察物体 app.camera.fit({ object:obj, radiusFactor:3 }) // 距离物体 3m 处观察 app.camera.fit({ object:obj, radius:3 }) // 从顶部观察物体,距离物体3倍自身包围盒半径 app.camera.fit({ object: obj, xAngle: 90, // 绕物体自身X轴旋转角度 yAngle: 0, // 绕物体自身Y轴旋转角度 radiusFactor: 3, // 物体包围盒半径的倍数 }); // 从顶部观察物体,距离物体 3m 处 app.camera.fit({ object: obj, xAngle: 90, // 绕物体自身X轴旋转角度 yAngle: 0, // 绕物体自身Y轴旋转角度 radius: 3, // 物体包围盒半径的倍数 });
-
flyTo(param)
-
摄像机飞行到某位置或物体
Parameters:
Name Type Description param
Object 参数列表
Properties
Name Type Argument Description object
THING.BaseObject 观察的物体
target
Array.<Number> 观察的目标点位置(与 object 参数选填其一)
position
Array.<Number> <optional>
摄像机镜头位置(与 target 组合使用)
up
Array.<Number> <optional>
摄像机up朝向
time
Number <optional>
飞行过程的时间(毫秒),默认值 2s
xAngle
Number <optional>
绕物体自身 X 轴旋转角度
yAngle
Number <optional>
绕物体自身 Y 轴旋转角度
radiusFactor
Number <optional>
离目标点距离(离目标点 n 倍物体自身包围盒半径距离处)
radius
Number <optional>
离目标点距离(与 radiusFactor 选填其一)
lerpType
THING.LerpType <optional>
飞行速度插值方式
positionLerp
THING.LerpType <optional>
摄像机镜头坐标插值方式
targetLerp
THING.LerpType <optional>
目标点插值方式
upLerp
THING.LerpType <optional>
up朝向插值方式
isEarth
Boolean <optional>
是否在地球上 默认false 在地球上使用需要传true
complete
function <optional>
飞行结束时的回调函数
Example
// 飞行到某位置 app.camera.flyTo({ position: [3.6, 4.8, -6.5], target: [-4.2, -3.2, -20.6], time: 2000, complete: function() { THING.Utils.log('complete') } }); // 飞行到某物体 app.camera.flyTo(obj) // 飞行到某物体 设置飞行时间 和 飞行结束后的回调 app.camera.flyTo({ object: obj, time: 1500, complete: function() { THING.Utils.log('finish') } }); // 飞行到某物体正前方 2倍物体自身包围半径距离处 app.camera.flyTo({ object: obj, xAngle: 0, // 绕物体自身X轴旋转角度 yAngle: 0, // 绕物体自身Y轴旋转角度 radiusFactor: 2, // 物体包围盒半径的倍数 time: 2 * 1000, complete: function () { THING.Utils.log("飞行结束"); } }); // 飞行到某物体正前方 5m 处 app.camera.flyTo({ object: obj, xAngle: 0, // 绕物体自身X轴旋转角度 yAngle: 0, // 绕物体自身Y轴旋转角度 radius: 5, time: 2 * 1000, complete: function () { THING.Utils.log("飞行结束"); } }); // 飞到物体顶部 3倍物体自身包围盒半径距离处 app.camera.flyTo({ object: obj, xAngle: 90, // 绕物体自身X轴旋转角度 yAngle: 0, // 绕物体自身Y轴旋转角度 radiusFactor: 3, // 物体包围盒半径的倍数 time: 2 * 1000, complete: function () { THING.Utils.log("飞行结束"); } });
-
isInView(object) → {Boolean}
-
根据物体包围盒检测是某物体否在摄相机视锥范围内
Parameters:
Name Type Description object
THING.BaseObject 物体
Returns:
- Type
- Boolean
Example
app.camera.isInView(obj)
-
lookAt(target)
-
看向某个物体或位置(设置后鼠标无法旋转和平移)
Parameters:
Name Type Description target
Array.<Number> | THING.BaseObject 物体或者坐标,取消设置填 null
Example
// 看向某物体 app.camera.lookAt(app.query('car01')[0]); // 看向某点 app.camera.lookAt([20, 5.6, -6.6]); // 取消设置 app.camera.lookAt(null);
-
move(deltaX, deltaY)
-
移动摄像机
Parameters:
Name Type Description deltaX
Number 水平移动距离
deltaY
Number 垂直移动距离
Example
// 水平移动 10 m app.camera.move(10,0); // 垂直移动 10 m app.camera.move(0,10);
-
rotateAround(param)
-
环绕旋转
Parameters:
Name Type Description param
Object 参数列表
Properties
Name Type Argument Description object
THING.BaseObject <optional>
环绕的物体
target
Array.<Number> <optional>
环绕的某点世界坐标系下的坐标(与 object 选填其一)
yRotateAngle
Number <optional>
环绕 Y 轴旋转角度(俯仰面(竖直面)内的角度,范围0~180度)
xRotateAngle
Number <optional>
环绕 X 轴旋转角度(方位面(水平面)内的角度,范围0~360度)(地球上无法使用此参数)
time
Number <optional>
处理时间(毫秒)
loopType
String <optional>
循环类型,默认为 no
complete
function <optional>
环绕旋转完成后的回调函数 仅当 loopType 为 no 时有回调
isEarth
Boolean <optional>
是否在地球上 默认false 在地球上使用需要传true
Example
// 环绕某物体旋转 360 度,10s 转完 app.camera.rotateAround({ object: obj,// 环绕的物体 (object 与 target 的设置互斥 详见教程) time: 10 * 1000, // 环绕飞行的时间 yRotateAngle: 360, // 环绕y轴飞行的旋转角度 complete:function(){ THING.Utils.log('finish') } }); // 环绕 [0,0,0] 点一直旋转 app.camera.rotateAround({ target: [0,0,0], time: 60 * 1000, // 环绕飞行的时间 yRotateAngle: 360, // 环绕y轴飞行的旋转角度 loopType: THING.LoopType.Repeat // 设置循环类型 重复循环 });
-
screenToWorld(x, y) → {Array.<Number>}
-
屏幕坐标转世界坐标
Parameters:
Name Type Description x
Number 屏幕x坐标
y
Number 屏幕y坐标
Returns:
三维世界坐标
- Type
- Array.<Number>
-
stopFlying( [param])
-
停止飞行
Parameters:
Name Type Argument Description param
Object <optional>
参数列表
Properties
Name Type Argument Description isEarth
Boolean <optional>
是否在地球上 默认false 在地球上使用需要传true
-
stopRotateAround( [param])
-
停止环绕旋转(针对 rotateAround)
Parameters:
Name Type Argument Description param
Object <optional>
参数列表
Properties
Name Type Argument Description isEarth
Boolean <optional>
是否在地球上 默认false 在地球上使用需要传true
-
worldToScreen(position) → {Array.<Number>}
-
世界坐标转换成屏幕坐标
Parameters:
Name Type Description position
Array.<Number> 三维世界坐标
Returns:
二维屏幕坐标
- Type
- Array.<Number>
-
zoom(distance, time)
-
向前/向后移动摄像机
Parameters:
Name Type Default Description distance
Number 移动距离(+: 向前, -: 向后)
time
Number 500 移动时间(毫秒)默认值为 0.5s