Cesium包括对几何体、材质、glTF动画和glTF蒙皮的支持。
此外,可以使用 Scene#pick
拾取单个glTF节点,使用Model#getNode
创建动画 。目前不支持glTF相机和灯光。
用Model.fromGltf
创建外部的glTF。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 (draft)
- KHR_draco_mesh_compression
- KHR_materials_pbrSpecularGlossiness
- KHR_materials_unlit
- KHR_techniques_webgl
- KHR_texture_transform
对于高精度渲染,Cesium支持CESIUM_RTC 扩展, 它引入了CESIUM_RTC_MODELVIEW参数语义,该语义表示节点在相对于本地原点的WGS84坐标中被转换。
Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
optional
具有下列属性的对象:
|
成员变量
Scene#pick
拾取模型。
当false
时,GPU内存被节约。
-
Default Value:
true
-
Default Value:
true
''
时,使用应用程序的基本路径。
-
Default Value:
''
Model#minimumPixelSize
。
使用Model.readyPromise或等待Model.ready变为true。
-
Default Value:
undefined
// 在WGS84坐标系中的中心点
var center = Cesium.Matrix4.multiplyByPoint(model.modelMatrix, model.boundingSphere.center, new Cesium.Cartesian3());
ClippingPlaneCollection
用于有选择地禁用模型的渲染。
-
Default Value:
Color.WHITE
colorBlendMode
是MIX
时,用来确定颜色强度的值。
0.0的值表示模型的渲染颜色,1.0的值表示纯色,介于两者之间的值表示两者的混合。
-
Default Value:
0.5
-
Default Value:
ColorBlendMode.HIGHLIGHT
为模型中的每个绘制命令绘制包围球。
-
Default Value:
false
用线框模式绘制模型。
-
Default Value:
false
-
Default Value:
undefined
-
Default Value:
undefined
-
Default Value:
HeightReference.NONE
-
Default Value:
undefined
-
Default Value:
Cartesian2(1.0,1.0)
-
Default Value:
true
例如,通过设置 model.imageBasedLightingFactor = new Cesium.Cartesian2(0.0,0.0)来禁用其他光源,模型要暗得多。在这里,增加光源的强度会使模型更亮。
-
Default Value:
undefined
Model#specularEnvironmentMaps
和Model#sphericalHarmonicCoefficients
未定义时使用。
-
Default Value:
0.2
Model#minimumPixelSize
一个上限,确保模型永远不会是一个不合理的比例。
0.0
时,不强制执行最小大小。
-
Default Value:
0.0
Transforms.eastNorthUpToFixedFrame
返回的转换矩阵。
-
Default Value:
Matrix4.IDENTITY
var origin = Cesium.Cartesian3.fromDegrees(-95.0, 40.0, 200000.0);
m.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(origin);
-
Default Value:
false
这个promise在模型的第一帧被渲染之前的帧结束时被解析。
// 当模型准备渲染时,以半速播放所有动画
Cesium.when(model.readyPromise).then(function(model) {
model.activeAnimations.addAll({
multiplier : 0.5
});
}).otherwise(function(error){
window.alert(error);
});
-
Default Value:
1.0
-
Default Value:
ShadowMode.ENABLED
-
Default Value:
true
-
Default Value:
Color.RED
-
Default Value:
0.0
undefined
时,使用大气颜色计算漫反射辐照度。
有9个Cartesian3
系数。
系数的顺序是:L00,L1-1,L10,L11,L2-2,L2-1,L20,L21,L22。
cmgen
工具对环境图进行预处理得到。
这还将生成一个KTX文件,该文件可以提供给Model#specularEnvironmentMaps
。
内置方法
基于glTF的3D模型。当模型准备好渲染时,即,当下载外部二进制文件、图像和着色器文件并创建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 (draft)
- KHR_draco_mesh_compression
- KHR_materials_pbrSpecularGlossiness
- KHR_materials_unlit
- KHR_techniques_webgl
- KHR_texture_transform
对于高精度的渲染,Cesium支持CESIUM_RTC扩展, 它引入了CESIUM_RTC_MODELVIEW参数语义,表示节点在相对于本地原点的WGS84坐标中被转换。
Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
optional
具有下列属性的对象:
|
// 例1:从glTF文件创建一个模型
var model = scene.primitives.add(Cesium.Model.fromGltf({
url : './duck/duck.gltf'
}));
// 例2:创建模型并提供所有属性和事件
var origin = Cesium.Cartesian3.fromDegrees(-95.0, 40.0, 200000.0);
var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(origin);
var model = scene.primitives.add(Cesium.Model.fromGltf({
url : './duck/duck.gltf',
show : true, // 默认的
modelMatrix : modelMatrix,
scale : 2.0, // 双倍大小
minimumPixelSize : 128, // 从不小于128像素
maximumScale: 20000, // 不大于20000*模型尺寸 (重写minimumPixelSize)
allowPicking : false, // 不能拾取
debugShowBoundingVolume : false, // 默认的
debugWireframe : false
}));
model.readyPromise.then(function(model) {
// 当模型准备渲染时播放所有动画
model.activeAnimations.addAll();
});
Name | Type | Description |
---|---|---|
scene |
Scene | 场景(Scene对象) |
-
DeveloperError : 模型没有加载。使用Model.readyPromise或等待Model.ready变为true。
一旦对象被销毁,它将不能在使用; 调用除
isDestroyed
之外的任何函数都会导致DeveloperError
异常。
因此,将返回值(undefined
)赋给对象,如示例所示。
-
DeveloperError : 对象已经被销毁。
model = model && model.destroy();
name
属性的glTF材质。
Name | Type | Description |
---|---|---|
name |
String | 材质的glTF名称。 |
-
DeveloperError : 模型没有成功加载。
name
属性返回glTF网格。
Name | Type | Description |
---|---|---|
name |
String | 网格的glTF名称。 |
-
DeveloperError : 模型没有成功加载。
name
属性的glTF节点。这用于在glTF动画之外修改节点的动画转换。
Name | Type | Description |
---|---|---|
name |
String | 节点的glTF名称。 |
-
DeveloperError : 模型没有成功加载。
//对名字为LOD3sp的节点实行非均匀缩放。
var node = model.getNode('LOD3sp');
node.matrix = Cesium.Matrix4.fromScale(new Cesium.Cartesian3(5.0, 1.0, 1.0), node.matrix);
Name | Type | Description |
---|---|---|
articulationStageKey |
String | 关节的名称、空间和阶段的名称。 |
value |
Number | 这一阶段的数值关节。 |
-
DeveloperError : 模型没有加载。使用Model.readyPromise或等待Model.ready变为true。
不要直接调用此函数。这只是为了列出渲染场景时可能传播的异常:
-
RuntimeError : 无法加载外部参考类