Class: GltfLayer

Glodon.CIMCube.Layer. GltfLayer

GLTF模型图层类,用于加载和管理GLTF模型

new GltfLayer(opts)

Gltf图层构造函数
Parameters:
Name Type Description
opts Object 图层配置参数
Properties
Name Type Argument Default Description
gltfBuffer ArrayBuffer <optional>
gltf文件的ArrayBuffer数据,如果没有url则使用这个数据。
origin Array 图层原点在地球上的位置,用经纬度表示,例:[106.689936, 29.559434, 500.0]
shadowMode String <optional>
"disabled" 阴影模式
offset Array <optional>
[0, 0, 0] 偏移量,单位米,例:[1000.0, 500.0, 100.0]
rotation Array <optional>
[0, 0, 0] 旋转参数(右手坐标系,第一个元素绕X轴旋转指定角度,第二个元素绕Y轴旋转指定角度,第三个元素绕Z轴旋转指定角度);默认绕模型包围中心旋转,规则与 3D Tiles 一致
scale Number <optional>
1 缩放比例,默认1
canSelected Boolean <optional>
true 是否可选,默认为true
phongLighting Boolean <optional>
false 是否使用一般的光照模型(冯氏光照),默认为false
useDefaultMetallicRoughness Boolean <optional>
true 是否使用默认的金属度粗糙度,默认为true
alpha Number <optional>
1.0 透明度,默认1.0
luminanceAtZenith Number <optional>
0.2 亮度,默认0.2
hue Number <optional>
0.0 颜色的色相 (H)SB,默认0.0;值范围:-PI~PI
saturation Number <optional>
1.0 颜色的饱和度 H(S)B,默认1.0;值范围:0~2
brightness Number <optional>
1.0 颜色的明度 HS(B),默认1.0;值范围:0~2
contrast Number <optional>
1.0 对比度,默认为:1.0
gamma Number <optional>
1.0 伽马值,默认为:1.0
metallicRoughnessFactor Array <optional>
金属度|粗糙度调整;建议用在白膜上,会替换材质中原本金属度|粗糙度; 例:[0.5,0.5];取值范围:0~1
doubleSided Boolean <optional>
图层是否使用双面材质, 会覆盖图层内部材质的双面属性, 该值默认为undefined
usedAnimations Boolean <optional>
true 是否使用骨骼动画;默认为true

Extends

Members


_rotation :Array.<Number>

旋转参数
Type:
  • Array.<Number>

alpha :Number

透明度 0.0~1.0
Type:
  • Number
Overrides:

brightness :Number

明度调整
Type:
  • Number

cacheable :Boolean

是否可缓存
Type:
  • Boolean
Inherited From:
Overrides:

canHighlight :Boolean

可否高亮
Type:
  • Boolean
Inherited From:
Overrides:

canSelected :Boolean

可否被选中
Type:
  • Boolean
Inherited From:
Overrides:

colorMode :String

色彩模式调整
Type:
  • String

contrast :Number

对比度调整
Type:
  • Number

doubleSided :Boolean

是否使用双面材质
Type:
  • Boolean

dragCenter :Cesium.Cartesian3

拖拽中心点
Type:
  • Cesium.Cartesian3

enableMouseMove :Boolean

是否可以触发鼠标移动事件
Type:
  • Boolean
Inherited From:
Overrides:
Default Value:
  • true

enableRealisticRendering :Boolean

是否开启真实渲染
Type:
  • Boolean

gamma :Number

伽马值调整
Type:
  • Number

glowColor :String

发光颜色
Type:
  • String
Inherited From:
Overrides:

glowTimeInterval :number

闪烁的时间间隔
Type:
  • number
Inherited From:
Overrides:

gltfModel :Cesium.Model

gltf模型
Type:
  • Cesium.Model

hiddenInLayerTree :Boolean

是否对图层树接口隐藏
Type:
  • Boolean
Inherited From:
Overrides:

hue :Number

色相调整
Type:
  • Number

<readonly> id :String

id
Type:
  • String
Inherited From:
Overrides:

isPipeline :Boolean

数据是否是管线类型
Type:
  • Boolean
Inherited From:
Overrides:

luminanceAtZenith :Number

图层光源亮度
Type:
  • Number

matrix :Object

图层偏移
Type:
  • Object
Inherited From:
Overrides:

metallicRoughnessFactor :Array

金属度与粗糙度调整;建议用在白膜上,会替换材质中原本金属度|粗糙度; 例:[0.5,0.5];取值范围:0~1
Type:
  • Array

name :String

图层名称
Type:
  • String
Inherited From:
Overrides:

offset :Array.<Number>

获取偏移量,第一个元素表示向东偏移的距离,第二个元素表示向北偏移的距离,第三个元素表示向上偏移的距离,单位米
Type:
  • Array.<Number>

originCartesian :Cesium.Cartesian3

未变化模型原点坐标
Type:
  • Cesium.Cartesian3

pickable :Boolean

pickable
Type:
  • Boolean
Inherited From:
Overrides:

<readonly> ready :Boolean

数据是否已经加载
Type:
  • Boolean
Inherited From:
Overrides:

rotation :Array.<Number>

旋转参数(右手坐标系,第一个元素绕X轴旋转指定角度,第二个元素绕Y轴旋转指定角度,第三个元素绕Z轴旋转指定角度)
Type:
  • Array.<Number>

rotationPointOffset :Cartesian3

图层指定的旋转点,模型坐标系下基于原点的 ENU 偏移,默认是包围盒中心点
Type:
  • Cartesian3
Overrides:

saturation :Number

饱和度调整
Type:
  • Number

scale :Number

缩放比例系数
Type:
  • Number

selectedColor :String

选中颜色
Type:
  • String
Inherited From:
Overrides:

shadowMode :ShadowMode

阴影模式
Type:
  • ShadowMode

show :Boolean

是否显示
Type:
  • Boolean
Overrides:

sizeForDragger :Number

拖拽大小
Type:
  • Number

transform :Cesium.Matrix4

模型变换矩阵
Type:
  • Cesium.Matrix4

<readonly> type :String

图层类型
Type:
  • String
Inherited From:
Overrides:

<readonly> url :String

图层url地址
Type:
  • String
Inherited From:
Overrides:

Methods


addAllAnimations(playOpt)

添加所有动画
Parameters:
Name Type Description
playOpt Object 动画选项
Properties
Name Type Description
playMode Number 播放模式
multiplier Number 倍速
delay Number 延迟
reverse Boolean 是否反向
Returns:
动画
Type
Cesium.ModelAnimation

addAnimation(animationOpt)

添加动画
Parameters:
Name Type Description
animationOpt Object 动画选项
Properties
Name Type Description
name String 动画名称
index Number 动画索引
playMode Number 播放模式
multiplier Number 倍速
delay Number 延迟
reverse Boolean 是否反向
Returns:
动画
Type
Cesium.ModelAnimation

addDragHandle()

在场景中添加操作句柄
Overrides:
  • Glodon.CIMCube.Layer.BaseLayer#addDragHandle

addMultiClippingPlane(id, collections, region)

添加多裁剪平面
Parameters:
Name Type Description
id String
collections Array.<Cesium.ClippingPlane>
region Cesium.MultiClippingPlaneRegion

addTo(map)

将图层添加到图层管理器中
Parameters:
Name Type Description
map Glodon.CIMCube 地图实例
Inherited From:
Overrides:

dispatchEvent(event)

在此事件派发器上派发事件.
Parameters:
Name Type Description
event Object 待派发的事件.
Inherited From:
Overrides:

dispose()

释放资源

enuToWorldPosition(enuPosition)

将以图层原点为原点的东北天 ENU 下的偏移坐标 (x=东, y=北, z=天)转换为世界坐标点;
Parameters:
Name Type Description
enuPosition Cesium.Cartesian3 偏移坐标: 东北天 ENU
Returns:
世界坐标
Type
Cartesian3

flyTo()

摄像机定位到图层

getAllAnimation()

获取所有动画
Returns:
动画
Type
Array.<Cesium.ModelAnimation>

getAnimationByIndex(index)

根据索引获取动画
Parameters:
Name Type Description
index Number 动画索引
Returns:
动画
Type
Cesium.ModelAnimation

getAnimationByName(animationName)

根据名称获取动画
Parameters:
Name Type Description
animationName String 动画名称
Returns:
动画
Type
Cesium.ModelAnimation

getBoundingSphere()

获取模型包围球
Returns:
包围球,参见Cesium.BoundingSphere
Type
Cesium.BoundingSphere

getBoundingVolume()

获取有向包围盒
Returns:
包围盒
Type
Cesium.OrientedBoundingBox

getBoundingVolumeHeight()

获取包围盒高度
Returns:
包围盒高度
Type
Number

getClipTarget()

获取裁剪目标
Returns:
裁剪目标
Type
Cesium.ClipTarget

getOriginWorldCoord()

获取图层原点坐标
Returns:
图层原点坐标
Type
Cartesian3

getParentId()

获取父节点ID
Inherited From:
Overrides:
Returns:
父节点ID
Type
String

invalidateBoundingVolume()

清除包围盒缓存,下次 getBoundingVolume / getBoundingVolumeHeight 将重新计算

localToWorldPosition(localPosition)

通过模型局部坐标获取世界坐标
Parameters:
Name Type Description
localPosition Cartesian3 笛卡尔局部坐标
Returns:
模型世界坐标
Type
Cartesian3

move(angle, distance [, mode])

指定角度移动, 顺时针旋转
Parameters:
Name Type Argument Default Description
angle Number 表示指定角度, 单位:度; y-x的0度为正北, z-x的0度为垂直地表向外, z-y的0度为垂直地表向外;
distance Number 移动的距离, 单位:米;
mode String <optional>
"y-x" 指定平面内进行移动; 枚举值:y-x、z-x、z-y;
Returns:
图层offset
Type
Array

removeAllAnimation()

移除所有动画

removeAnimation(targetAnimation)

移除动画
Parameters:
Name Type Description
targetAnimation Cesium.ModelAnimation 目标动画

removeDragHandle()

在场景中移除操作句柄
Inherited From:
Overrides:

removeMultiClippingPlane(id)

移除多裁剪平面
Parameters:
Name Type Description
id String

setClippingPlanes(value)

设置裁剪平面
Parameters:
Name Type Description
value Array.<Cesium.ClippingPlane>

setMultiClippingPlanes(value)

设置多裁剪平面
Parameters:
Name Type Description
value Array.<Cesium.MultiClippingPlane>

setStyle(style)

设置样式
Parameters:
Name Type Description
style Object 样式对象
Properties
Name Type Argument Default Description
modelColor Object 模型颜色
mode String <optional>
"Highlight" 模型着色模式,枚举:Highlight、Replace、Mix,默认为Highlight
color String <optional>
"yellow" 模型颜色
mixAmount Number <optional>
0.5 混合度值,当model为Mix时,存在混合度值,阈值范围:0-1,默认为0.5
modelSilhouette Object 模型轮廓
color String <optional>
"yellow" 轮廓颜色
size Number <optional>
1 轮廓宽度,单位像素,默认为:1

updateLayerTransformation()

更新图层变换

worldPositionToLayerENU(worldPosition)

将世界坐标点转换为「以图层原点为原点、东北天 ENU」下的偏移 (x=东, y=北, z=天)
Parameters:
Name Type Description
worldPosition Cesium.Cartesian3 世界坐标
Returns:
偏移坐标: 东北天 ENU
Type
Cartesian3

worldPositionToLocal(worldPosition)

通过世界坐标获取模型局部坐标
Parameters:
Name Type Description
worldPosition Cartesian3 笛卡尔世界坐标
Returns:
模型局部坐标
Type
Cartesian3

Events


LOADED

数据加载完成后触发
Example
layer.on(Glodon.CIMCube.Global.Defines.LayerEventType.LOADED, function (event) {
 console.log(event);
})

TRANSFORM_CHANGED

图层变换矩阵发生变化后触发
Example
layer.on(Glodon.CIMCube.Global.Defines.LayerEventType.TRANSFORM_CHANGED, function (event) {
 console.log(event);
})