Cesium 包括对几何和材质、glTF 动画和 glTF 蒙皮的支持。此外,单个 glTF 节点可以通过
Scene#pick
并通过
Model#getNode
动画化。目前不支持 glTF 相机和灯光。
使用 Model.fromGltf 创建外部
Model.fromGltf
资产。 glTF JSON 也可以在运行时创建并传递给这个构造函数。在任何一种情况下,
Model#readyPromise
都会在模型准备好渲染时解析,即下载外部二进制文件、图像和着色器文件并创建 WebGL 资源时。
Cesium 支持具有以下扩展的 glTF 资产:
- KHR_binary_glTF (glTF 1.0)
- KHR_materials_common (glTF 1.0)
- WEB3D_quantized_attributes (glTF 1.0)
- AGI_articulations
- KHR_blend(草稿)
- KHR_draco_mesh_compression
- KHR_materials_pbrSpecularGlossiness
- KHR_materials_unlit
- KHR_techniques_webgl
- KHR_texture_transform
- KHR_texture_basisu
注意:对于使用 KHR_texture_basisu 扩展的压缩纹理模型,我们建议在两个维度上使用 2 个纹理的幂,以获得最大的兼容性。这是因为一些采样器需要 2 个纹理的幂( 在 WebGL 中使用纹理 ),而 KHR_texture_basisu 需要 4 个维度的倍数( KHR_texture_basisu 附加要求 )。
对于高精度渲染,Cesium 支持 CESIUM_RTC 扩展,它引入了 CESIUM_RTC_MODELVIEW 参数语义,表示节点位于相对于本地原点转换的 WGS84 坐标中。
Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options
|
Object |
具有以下属性的
可选
对象:
|
Demo:
See:
Members
activeAnimations : ModelAnimationCollection
-
Default Value:
true
-
Default Value:
true
Model#color
为半透明或
Model#silhouetteSize
大于 0.0,则不剔除背面。
-
Default Value:
true
''
时,将使用应用程序的基本路径。
Deprecated: true
Default Value:
''
readonly boundingSphere : BoundingSphere
Model#minimumPixelSize
。
-
Default Value:
undefined
Example:
// Center in WGS84 coordinates
const center = Cesium.Matrix4.multiplyByPoint(model.modelMatrix, model.boundingSphere.center, new Cesium.Cartesian3());
clippingPlanes : ClippingPlaneCollection
ClippingPlaneCollection
用于选择性地禁用渲染模型。
color : Color
-
Default Value:
Color.WHITE
colorBlendMode
为
MIX
时用于确定颜色强度的值。值 0.0 会导致模型的渲染颜色,而值 1.0 会导致纯色,介于两者之间的任何值都会导致两者混合。
-
Default Value:
0.5
colorBlendMode : ColorBlendMode
-
Default Value:
ColorBlendMode.HIGHLIGHT
credit : Credit
为模型中的每个绘制命令绘制边界球体。一个 glTF 基元对应一个绘制命令。 glTF 网格有一组基元,通常长度为 1。
-
Default Value:
false
在线框中绘制模型。
-
Default Value:
false
distanceDisplayCondition : DistanceDisplayCondition
-
Default Value:
undefined
Deprecated: true
Default Value:
undefined
heightReference : HeightReference
-
Default Value:
HeightReference.NONE
-
Default Value:
undefined
See:
imageBasedLighting : ImageBasedLighting
-
Default Value:
true
lightColor : Cartesian3
undefined
时,将使用场景的浅色。
例如,通过设置
model.imageBasedLighting.imageBasedLightingFactor = new Cesium.Cartesian2(0.0, 0.0)
禁用其他光源将使模型更暗。在这里,增加光源的强度将使模型更亮。
-
Default Value:
undefined
Model#minimumPixelSize
提供上限,确保模型永远不会是不合理的比例。
0.0
时,不强制执行最小大小。
-
Default Value:
0.0
modelMatrix : Matrix4
Transforms.eastNorthUpToFixedFrame
返回的那样。
-
Default Value:
Matrix4.IDENTITY
Example:
const origin = Cesium.Cartesian3.fromDegrees(-95.0, 40.0, 200000.0);
m.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(origin);
Deprecated: true
-
Default Value:
false
readonly readyPromise : Promise.< Model >
这个承诺在模型渲染的第一帧之前的帧结束时解决。
Example:
// Play all animations at half-speed when the model is ready to render
Promise.resolve(model.readyPromise).then(function(model) {
model.activeAnimations.addAll({
multiplier : 0.5
});
}).catch(function(error){
window.alert(error);
});
See:
-
Default Value:
1.0
shadows : ShadowMode
-
Default Value:
ShadowMode.ENABLED
-
Default Value:
true
-
Default Value:
true
silhouetteColor : Color
-
Default Value:
Color.RED
-
Default Value:
0.0
splitDirection : SplitDirection
SplitDirection
。
-
Default Value:
SplitDirection.NONE
Methods
static Cesium.Model.fromGltf (options) → Model
从 glTF 资产创建模型。当模型准备好渲染时,即下载外部二进制文件、图像和着色器文件并创建 WebGL 资源时,
Model#readyPromise
被解析。
该模型可以是具有 .gltf 扩展名的传统 glTF 资产或使用 .glb 扩展名的二进制 glTF。
Cesium 支持具有以下扩展的 glTF 资产:
- KHR_binary_glTF (glTF 1.0)
- KHR_materials_common (glTF 1.0)
- WEB3D_quantized_attributes (glTF 1.0)
- AGI_articulations
- KHR_blend(草稿)
- KHR_draco_mesh_compression
- KHR_materials_pbrSpecularGlossiness
- KHR_materials_unlit
- KHR_techniques_webgl
- KHR_texture_transform
- KHR_texture_basisu
对于高精度渲染,Cesium 支持 CESIUM_RTC 扩展,它引入了 CESIUM_RTC_MODELVIEW 参数语义,表示节点位于相对于本地原点转换的 WGS84 坐标中。
Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options
|
Object |
具有以下属性的对象:
|
Returns:
Examples:
// Example 1. Create a model from a glTF asset
const model = scene.primitives.add(Cesium.Model.fromGltf({
url : './duck/duck.gltf'
}));
// Example 2. Create model and provide all properties and events
const origin = Cesium.Cartesian3.fromDegrees(-95.0, 40.0, 200000.0);
const modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(origin);
const model = scene.primitives.add(Cesium.Model.fromGltf({
url : './duck/duck.gltf',
show : true, // default
modelMatrix : modelMatrix,
scale : 2.0, // double size
minimumPixelSize : 128, // never smaller than 128 pixels
maximumScale: 20000, // never larger than 20000 * model size (overrides minimumPixelSize)
allowPicking : false, // not pickable
debugShowBoundingVolume : false, // default
debugWireframe : false
}));
model.readyPromise.then(function(model) {
// Play all animations when the model is ready to render
model.activeAnimations.addAll();
});
Name | Type | Description |
---|---|---|
scene
|
Scene | 现场。 |
Returns:
true
;否则,返回
false
Throws:
-
DeveloperError : 模型未加载。使用 Model.readyPromise 或等待 Model.ready 为真。
一旦一个对象被销毁,它就不应该被使用;调用
isDestroyed
以外的任何函数都将导致
DeveloperError
异常。因此,如示例中所做的那样,将返回值 (
undefined
) 分配给对象。
Throws:
-
DeveloperError : 该对象被销毁,即调用了destroy()。
Example:
model = model && model.destroy();
See:
getMaterial (name) → ModelMaterial
name
属性的 glTF 材质。
Name | Type | Description |
---|---|---|
name
|
String | 材质的 glTF 名称。 |
Returns:
name
的材料,则材料或
undefined
。
Throws:
-
DeveloperError : 模型未加载。使用 Model.readyPromise 或等待 Model.ready 为真。
getMesh (name) → ModelMesh
name
属性的 glTF 网格。
Name | Type | Description |
---|---|---|
name
|
String | 网格的 glTF 名称。 |
Returns:
name
的网格,则网格或
undefined
。
Throws:
-
DeveloperError : 模型未加载。使用 Model.readyPromise 或等待 Model.ready 为真。
getNode (name) → ModelNode
name
属性的 glTF 节点。这用于为 glTF 动画之外的动画修改节点的变换。
Name | Type | Description |
---|---|---|
name
|
String | 节点的 glTF 名称。 |
Returns:
name
的节点,则该节点或
undefined
。
Throws:
-
DeveloperError : 模型未加载。使用 Model.readyPromise 或等待 Model.ready 为真。
Example:
// Apply non-uniform scale to node LOD3sp
const node = model.getNode('LOD3sp');
node.matrix = Cesium.Matrix4.fromScale(new Cesium.Cartesian3(5.0, 1.0, 1.0), node.matrix);
Returns:
true
;否则,
false
。
See:
Name | Type | Description |
---|---|---|
articulationStageKey
|
String | 关节名称、空格和舞台名称。 |
value
|
Number | 关节的这个阶段的数值。 |
Throws:
-
DeveloperError : 模型未加载。使用 Model.readyPromise 或等待 Model.ready 为真。
Throws:
-
RuntimeError : 无法加载外部参考。