Summary
Methods:
| clone |
相机克隆 |
| forward |
相机在视线方向上运动(按照比例)。正数:代表相机拉近拉远。负数:跳跃到反方向运动(不支持这类运动)。 |
| getAspect |
获取相机的宽高比。 |
| getCustumVPMatrix |
防止重复计算 |
| getFar |
获取远裁面。 |
| getFovy |
获取相机Y方向张角。 |
| getNear |
获取近裁面。 |
| getPosition |
获取相机位置。单位:地图单位。 |
| getProjectMatrix |
获取投影矩阵 |
| getRay |
获取视线向量 |
| getRotateX |
获取相机绕X轴旋转的角度。单位:度。 |
| getRotateZ |
获取相机绕Z轴旋转的角度。单位:度。 |
| getViewshed |
获取相机的可视域空间【贴地】 |
| getVPMatrix |
视图投影矩阵。 |
| move |
相机系统的运动,相机系统由相机位置、视点位置、及他们构成的视线以及上方向组成。故整体运动不会改变系统内部关系:比如视线向量,上方向均不会发生改变。 |
| project |
将世界坐标通过视图投影转换,转化为NDC坐标 |
| rotateX |
相机绕过视点的X轴旋转{angle}度 |
| rotateZ |
相机绕过视点的Z轴旋转{angle}度 |
| setAspect |
设置相机的宽高比。 |
| setAutofocus |
设置相机是否自动调焦,缺省true。ture时主要作为地图的虚拟相机,它会根据相机离目标点的距离调整近裁面和远裁面以适应地图的不同比例尺渲染需要 |
| setFar |
设置远裁面。 |
| setFovy |
设置相机Y方向张角。 |
| setNear |
设置近裁面。 |
| setPosition |
设置相机位置。单位:地图单位。 |
| unproject |
将NDC坐标反投影到世界坐标. 窗口坐标转NDC坐标ndc.x=(2win.x-w)/w ndc.y=(2win.y-h)/h |
Constructor
new Camera(aspect, fovy, near, far)
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
aspect |
Number | 近裁面的宽高比 |
|
fovy |
Number | 45 | 垂直可视角,单位度 |
near |
Number | 0.000001 | 近裁面距离相机的距离 |
far |
Number | 1 | 远裁面距离相机的距离 |
Methods
-
clone() → {module:util~Camera}
-
相机克隆
Returns:
module:util~Camera -
forward(value)
-
相机在视线方向上运动(按照比例)。正数:代表相机拉近拉远。负数:跳跃到反方向运动(不支持这类运动)。
Parameters:
Name Type Description valueNumber -
getAspect()
-
获取相机的宽高比。
-
getCustumVPMatrix() → {mat4}
-
防止重复计算
Returns:
mat4 -
getFar()
-
获取远裁面。
-
getFovy()
-
获取相机Y方向张角。
-
getNear()
-
获取近裁面。
-
getPosition() → {Array}
-
获取相机位置。单位:地图单位。
Returns:
Array -长度为3的数组。
-
getProjectMatrix(type) → {mat4}
-
获取投影矩阵
Parameters:
Name Type Default Description typeString PERSPECTIVE 投影类型。支持PERSPECTIVE(透视投影) | ORTHO(正射投影)
Returns:
mat4 -一个用于投影变换的矩阵。
-
getRay()
-
获取视线向量
-
getRotateX()
-
获取相机绕X轴旋转的角度。单位:度。
-
getRotateZ()
-
获取相机绕Z轴旋转的角度。单位:度。
-
getViewshed(expand) → {Array}
-
获取相机的可视域空间【贴地】
Parameters:
Name Type Default Description expandnumber 2 地理范围外拓倍数,缺省值外拓2倍。【备注】远裁面按照外拓3倍作为边界条件。
Returns:
Array -
getVPMatrix(type)
-
视图投影矩阵。
Parameters:
Name Type Default Description typeString PERSPECTIVE 投影类型。支持PERSPECTIVE(透视投影) | ORTHO(正射投影)
-
move(x, y, z, prevCalc)
-
相机系统的运动,相机系统由相机位置、视点位置、及他们构成的视线以及上方向组成。故整体运动不会改变系统内部关系:比如视线向量,上方向均不会发生改变。
Parameters:
Name Type Default Description xNumber 0 相机在沿x轴方向上的运动距离。
yNumber 0 相机在沿y轴方向上的运动距离。
zNumber 0 相机在沿z轴方向上的运动距离。
prevCalcBoolean false 是否预先计算相机位置以和地形作相交判断
-
project(position) → {Array}
-
将世界坐标通过视图投影转换,转化为NDC坐标
Parameters:
Name Type Description positionArray 世界坐标位置,长度为3的Array,或vec3
Returns:
Array -
rotateX(angle, anchor, prevCalc) → {*}
-
相机绕过视点的X轴旋转{angle}度
Parameters:
Name Type Description angleNumber 旋转角度,单位:度。
anchormodule:basetype~Coordinate 相机围绕的锚点
prevCalcBoolean 是否预先计算相机位置以和地形作相交判断
Returns:
* -
rotateZ(angle, anchor, prevCalc) → {*}
-
相机绕过视点的Z轴旋转{angle}度
Parameters:
Name Type Description angleNumber 旋转角度,单位:度 。
anchormodule:basetype~Coordinate 相机围绕的锚点
prevCalcBoolean 是否预先计算相机位置以和地形作相交判断
Returns:
* -
setAspect()
-
设置相机的宽高比。
-
setAutofocus(flag)
-
设置相机是否自动调焦,缺省true。ture时主要作为地图的虚拟相机,它会根据相机离目标点的距离调整近裁面和远裁面以适应地图的不同比例尺渲染需要
false:主要用于真实的物理相机场景,它的最小视距(近裁面)和最大视距(远裁面)均为相机特性。无论相机如何移动,其近裁面|远裁面均为固定。Parameters:
Name Type Description flagBoolean 是否自适应调整相机焦距(近裁面)|视距(远裁面)。
-
setFar(v)
-
设置远裁面。
Parameters:
Name Type Description vNumber 远裁面值。
-
setFovy(v)
-
设置相机Y方向张角。
Parameters:
Name Type Description vNumber 张角,单位:度。
-
setNear(v)
-
设置近裁面。
Parameters:
Name Type Description vNumber 近裁面值。
-
setPosition(position, achor)
-
设置相机位置。单位:地图单位。
Parameters:
Name Type Default Description positionArray 长度为3的数组。
achorachor true 是否锚定目标点来设置position,缺省true,锚定目标点,故位置改变会重新计算相机姿态。false:不锚定目标点,故不重新计算相机姿态。
-
unproject(position, zw) → {Array}
-
将NDC坐标反投影到世界坐标. 窗口坐标转NDC坐标ndc.x=(2win.x-w)/w ndc.y=(2win.y-h)/h
Parameters:
Name Type Default Description positionArray NDC坐标,长度为2或3的Array,如果长度为2,存在维度缺失,需通过指定世界坐标系下的一个z值(缺省0,表示与地面相交),方法内反算NDC下的z。
如果长度为3则无维度缺省,忽略参数zzwnumber 0 世界坐标的z,缺省0.
Returns:
Array