Model

new Cesium.Model ( options )

基于glTF(WebGL,Op​​enGL ES和OpenGL的运行时资产格式)的3D模型。

Cesium包括对几何体和材质,glTF动画和glTF蒙皮的支持。此外,可以使用 Scene#pick 拾取单个glTF节点,并可以设置动画使用 Model#getNode 。目前不支持glTF相机和灯光。

使用 Model.fromGltf 创建外部glTF资产。 glTF JSON也可以是在运行时创建并传递给此构造函数。无论哪种情况,当模型准备好渲染时,即 Model#readyPromise 被解析,即,当下载外部二进制,图像和着色器文件以及WebGL时资源已创建。

Cesium支持具有以下扩展名的glTF资产:

为了进行高精度渲染,Cesium支持 CESIUM_RTC 扩展,介绍了CESIUM_RTC_MODELVIEW参数语义,表示节点在WGS84坐标中转换相对于本地血统。

Name Type Description
options Object optional Object with the following properties:
Name Type Default Description
gltf Object | ArrayBuffer | Uint8Array 可选 glTF JSON对象或二进制glTF缓冲区。
basePath Resource | String '' 可选 glTF JSON中的路径相对于的基本路径。
show Boolean true 可选 确定是否将显示模型基元。
modelMatrix Matrix4 Matrix4.IDENTITY 可选 将模型从模型转换为世界坐标的4x4转换矩阵。
scale Number 1.0 可选 统一的比例尺应用于此模型。
minimumPixelSize Number 0.0 可选 无论缩放如何,模型的最小最小像素大小大约。
maximumScale Number 可选 模型的最大比例尺大小。 minimumPixelSize的上限。
id Object 可选 使用 Scene#pick 拾取模型时要返回的用户定义对象。
allowPicking Boolean true 可选 如果为 true ,则可以使用 Scene#pick 拾取每个glTF网格和图元。
incrementallyLoadTextures Boolean true 可选 确定在加载模型后纹理是否可以继续流入。
asynchronous Boolean true 可选 确定是否在所有glTF文件加载完成后将模型WebGL资源创建分散在几个帧上还是阻止直到完成。
clampAnimations Boolean true 可选 确定模型的动画是否应在未指定关键帧的帧上保持姿势。
shadows ShadowMode ShadowMode.ENABLED 可选 确定模型是投射还是接收来自每个光源的阴影。
debugShowBoundingVolume Boolean false 可选 仅用于调试。为模型中的每个绘制命令绘制边界球。
debugWireframe Boolean false 可选 仅用于调试。在线框中绘制模型。
heightReference HeightReference HeightReference.NONE 可选 确定如何相对于地形绘制模型。
scene Scene 可选 对于使用height reference属性的模型必须传递。
distanceDisplayCondition DistanceDisplayCondition 可选 该条件指定将在距相机的距离处显示此模型。
color Color Color.WHITE 可选 与模型的渲染颜色混合的颜色。
colorBlendMode ColorBlendMode ColorBlendMode.HIGHLIGHT 可选 定义颜色如何与模型融合。
colorBlendAmount Number 0.5 可选 colorBlendMode MIX 时用于确定色彩强度的值。值0.0会产生模型的着色,而值1.0会导致纯色,介于两者之间的任何值都会导致两者混合。
silhouetteColor Color Color.RED 可选 轮廓颜色。如果启用了超过256个模型的轮廓,重叠模型将出现较小伪像的可能性很小。
silhouetteSize Number 0.0 可选 轮廓的大小(以像素为单位)。
clippingPlanes ClippingPlaneCollection 可选 ClippingPlaneCollection 用于有选择地禁用渲染模型。
dequantizeInShader Boolean true 可选 确定 Draco 编码的模型是否在GPU上反量化。这样可以减少编码模型的总内存使用量。
imageBasedLightingFactor Cartesian2 Cartesian2(1.0, 1.0) 可选 缩放来自地球,天空,大气层和星空盒的基于漫反射和镜面反射的图像照明。
lightColor Cartesian3 可选 用于遮罩模型的阳光的颜色和强度。
luminanceAtZenith Number 0.2 可选 太阳光在天顶的亮度,以每平方米千坎德拉为单位,用于该模型的过程环境图。
sphericalHarmonicCoefficients Array.< Cartesian3 > 可选 用于基于图像的照明的漫反射颜色的三阶球谐系数。
specularEnvironmentMaps String 可选 KTX文件的URL,其中包含镜面照明的立方体贴图和复杂的镜面mipmap。
credit Credit | String 可选 数据源的信用,显示在画布上。
Demo:
See:

Members

当前正在播放的glTF动画。

readonly allowPicking : Boolean

如果为 true ,则可以使用 Scene#pick 拾取每个glTF网格和基元。如果 false ,则保存GPU内存。
Default Value: true

readonly asynchronous : Boolean

确定是否将模型WebGL资源创建分散到多个框架中,或者加载所有glTF文件后,直到完成为止。
Default Value: true

readonly basePath : String

glTF JSON中的路径相对于的基本路径。基地path与包含.gltf文件的路径相同当二进制文件,图像文件和着色器文件为时,减去.gltf文件与.gltf在同一目录中。如果是 '' ,应用的基本路径已使用。
Default Value: ''
模型在其局部坐标系中的边界球。这不考虑不会考虑glTF动画和外观,也不会考虑 Model#minimumPixelSize
Default Value: undefined
Example:
// Center in WGS84 coordinates
var center = Cesium.Matrix4.multiplyByPoint(model.modelMatrix, model.boundingSphere.center, new Cesium.Cartesian3());

clampAnimations : Boolean

确定模型的动画是否应在未指定关键帧的帧上保持姿势。
ClippingPlaneCollection 用于有选择地禁用渲染模型。
与模型的渲染颜色混合的颜色。
Default Value: Color.WHITE

colorBlendAmount : Number

colorBlendMode MIX 时用于确定色彩强度的值。值0.0会产生模型的渲染颜色,而值1.0会导致纯色,其中两者之间的任何值都会导致两者混合。
Default Value: 0.5
定义颜色如何与模型混合。
Default Value: ColorBlendMode.HIGHLIGHT
获取将为模型显示的功劳

debugShowBoundingVolume : Boolean

此属性仅用于调试。它不是用于生产用途,也不是经过优化的。

为模型中的每个绘制命令绘制边界球。 glTF原语对应一个绘制命令。 glTF网格具有一组基本元素,通常长度为一个。

Default Value: false

debugWireframe : Boolean

此属性仅用于调试。它不是用于生产用途,也不是经过优化的。

在线框中绘制模型。

Default Value: false
获取或设置条件,该条件指定将在距相机的距离显示此模型。
Default Value: undefined

readonly gltf : Object

glTF JSON的对象,包括省略默认值的属性提供给此模型的JSON中的值。
Default Value: undefined
返回模型的高度参考
Default Value: HeightReference.NONE
拾取模型时返回用户定义的对象。
Default Value: undefined
See:

imageBasedLightingFactor : Cartesian2

cesium会增加来自地球,天空,大气层和星空盒的照明。该笛卡尔用于缩放最终这些光源对最终颜色的漫反射和镜面照明贡献。值为0.0将禁用那些光源。
Default Value: Cartesian2(1.0, 1.0)

readonly incrementallyLoadTextures : Boolean

确定在加载模型后纹理是否可以继续流入。
Default Value: true
用于遮挡模型的阳光的颜色和强度。

例如,通过设置 model.imageBasedLightingFactor = new Cesium.Cartesian2(0.0,0.0) 来禁用其他光源,模型要暗得多。在这里,增加光源的强度会使模型更亮。

Default Value: undefined

luminanceAtZenith : Number

太阳光照在天顶的亮度,以每平方米千坎德拉为单位,用于该模型的过程环境图。当 Model#specularEnvironmentMaps Model#sphericalHarmonicCoefficients < /code> 未定义。
Default Value: 0.2
Demo:

maximumScale : Number

模型的最大比例尺大小。这可以用来给 Model#minimumPixelSize 的上限,以确保模型从来都不是不合理的规模。

minimumPixelSize : Number

无论缩放如何,模型的近似最小像素大小。这可以用来确保即使观看者也可以看到模型缩小。当 0.0 时,不强制使用最小大小。
Default Value: 0.0
4x4转换矩阵,用于将模型从模型坐标转换为世界坐标。当这是单位矩阵时,将以世界坐标(即地球的WGS84坐标)绘制模型。可以通过提供不同的转换矩阵(如返回的矩阵)来使用局部参考系通过 Transforms.eastNorthUpToFixedFrame
Default Value: Matrix4.IDENTITY
Example:
var origin = Cesium.Cartesian3.fromDegrees(-95.0, 40.0, 200000.0);
m.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(origin);

readonly pendingTextureLoads : Number

返回待处理的纹理加载数。

readonly ready : Boolean

true 时,该模型已准备好呈现,即外部二进制图像,并下载了着色器文件,并创建了WebGL资源。设置为在解析 Model#readyPromise 之前的 true
Default Value: false

readonly readyPromise : Promise.< Model >

获取当该模型准备好呈现时(即当外部二进制图像,并下载了着色器文件,并创建了WebGL资源。

在对模型进行渲染的第一帧之前,在帧的末尾解决此承诺。

Example:
// Play all animations at half-speed when the model is ready to render
Cesium.when(model.readyPromise).then(function(model) {
  model.activeAnimations.addAll({
    multiplier : 0.5
  });
}).otherwise(function(error){
  window.alert(error);
});
See:

scale : Number

Model#modelMatrix 之前对此模型应用的统一比例。大于 1.0 的值会增加模型的大小;价值观少于 1.0 减少。
Default Value: 1.0
确定模型是投射还是接收来自每个光源的阴影。
Default Value: ShadowMode.ENABLED

show : Boolean

确定是否将显示模型基元。
Default Value: true
轮廓颜色。
Default Value: Color.RED

silhouetteSize : Number

轮廓的大小(以像素为单位)。
Default Value: 0.0

specularEnvironmentMaps : String

KTX文件的URL,其中包含镜面照明的立方体贴图和卷积的镜面mipmap。
Demo:
See:

sphericalHarmonicCoefficients : Array.< Cartesian3 >

用于基于图像的照明的漫反射颜色的三阶球谐系数。当 undefined 时,为漫反射光从大气颜色计算得出。

有九个 Cartesian3 系数。系数的顺序为:L 00 ,L 1-1 ,L 10 ,L 11 ,L 2-2 ,L 2-1 ,L 20 ,L 21 ,L 22 子>

这些值可以通过使用 cmgen 工具 Google的Filament项目 。这还将生成一个KTX文件,该文件可以提供给 Model#specularEnvironmentMaps
Demo:
See:

Methods

static Cesium.Model.fromGltf (options) Model

从glTF资产创建模型。当模型准备好渲染时,即当外部二进制图像并下载着色器文件并创建WebGL资源,即可解析 Model#readyPromise

该模型可以是扩展名为.gltf的传统glTF资产,也可以是扩展名为.glb的Binary glTF。

Cesium支持具有以下扩展名的glTF资产:

为了进行高精度渲染,Cesium支持 CESIUM_RTC 扩展,介绍了CESIUM_RTC_MODELVIEW参数语义,表示节点在WGS84坐标中转换相对于本地血统。

Name Type Description
options Object Object with the following properties:
Name Type Default Description
url Resource | String .gltf文件的网址。
basePath Resource | String 可选 glTF JSON中的路径相对于的基本路径。
show Boolean true 可选 确定是否将显示模型基元。
modelMatrix Matrix4 Matrix4.IDENTITY 可选 将模型从模型转换为世界坐标的4x4转换矩阵。
scale Number 1.0 可选 统一的比例尺应用于此模型。
minimumPixelSize Number 0.0 可选 无论缩放如何,模型的最小最小像素大小大约。
maximumScale Number 可选 模型的最大比例。
id Object 可选 使用 Scene#pick 拾取模型时要返回的用户定义对象。
allowPicking Boolean true 可选 如果为 true ,则可以使用 Scene#pick 拾取每个glTF网格和图元。
incrementallyLoadTextures Boolean true 可选 确定在加载模型后纹理是否可以继续流入。
asynchronous Boolean true 可选 确定是否在所有glTF文件加载完成后将模型WebGL资源创建分散在几个帧上还是阻止直到完成。
clampAnimations Boolean true 可选 确定模型的动画是否应在未指定关键帧的帧上保持姿势。
shadows ShadowMode ShadowMode.ENABLED 可选 确定模型是投射还是接收来自每个光源的阴影。
debugShowBoundingVolume Boolean false 可选 仅用于调试。为模型中的每个 DrawCommand 绘制边界球。
debugWireframe Boolean false 可选 仅用于调试。在线框中绘制模型。
heightReference HeightReference HeightReference.NONE 可选 确定如何相对于地形绘制模型。
scene Scene 可选 对于使用height reference属性的模型必须传递。
distanceDisplayCondition DistanceDisplayCondition 可选 该条件指定将在距相机的距离处显示此模型。
color Color Color.WHITE 可选 与模型的渲染颜色混合的颜色。
colorBlendMode ColorBlendMode ColorBlendMode.HIGHLIGHT 可选 定义颜色如何与模型融合。
colorBlendAmount Number 0.5 可选 colorBlendMode MIX 时用于确定色彩强度的值。值0.0会产生模型的着色,而值1.0会导致纯色,介于两者之间的任何值都会导致两者混合。
silhouetteColor Color Color.RED 可选 轮廓颜色。如果启用了超过256个模型的轮廓,重叠模型将出现较小伪像的可能性很小。
silhouetteSize Number 0.0 可选 轮廓的大小(以像素为单位)。
clippingPlanes ClippingPlaneCollection 可选 ClippingPlaneCollection 用于有选择地禁用渲染模型。
dequantizeInShader Boolean true 可选 确定 Draco 编码的模型是否在GPU上反量化。这样可以减少编码模型的总内存使用量。
credit Credit | String 可选 模型的功劳,显示在画布上。
Returns:
新创建的模型。
Examples:
// Example 1. Create a model from a glTF asset
var model = scene.primitives.add(Cesium.Model.fromGltf({
  url : './duck/duck.gltf'
}));
// Example 2. Create model and provide all properties and events
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,                     // 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();
});

static Cesium.Model.silhouetteSupported (scene) Boolean

确定是否支持轮廓。
Name Type Description
scene Scene 现场。
Returns:
真正 如果支持剪影;否则,返回

applyArticulations ()

将任何修改的发音阶段应用于参与的每个节点的矩阵以任何发音。请注意,这将覆盖参与节点上的所有nodeTransformation。
Throws:
  • DeveloperError :未加载模型。使用Model.readyPromise或等待Model.ready为真。
销毁此对象拥有的WebGL资源。销毁对象可以确定性释放WebGL资源,而不是依靠垃圾回收器来破坏此对象。

一旦物体被破坏,就不应使用。调用除 isDestroyed 将导致 DeveloperError 异常。因此,如示例中所述,将返回值( undefined )分配给对象。
Throws:
Example:
model = model && model.destroy();
See:
返回具有给定 name 属性的glTF材料。
Name Type Description
name String 材质的glTF名称。
Returns:
材料或 未定义 如果没有材料 名称 存在。
Throws:
  • DeveloperError :未加载模型。使用Model.readyPromise或等待Model.ready为真。
返回具有给定 name 属性的glTF网格。
Name Type Description
name String 网格的glTF名称。
Returns:
网格或 未定义 如果没有网格 名称 存在。
Throws:
  • DeveloperError :未加载模型。使用Model.readyPromise或等待Model.ready为真。
返回具有给定 name 属性的glTF节点。这用来在glTF动画之外修改动画的节点变换。
Name Type Description
name String 节点的glTF名称。
Returns:
节点或 未定义 如果没有节点 名称 存在。
Throws:
  • DeveloperError :未加载模型。使用Model.readyPromise或等待Model.ready为真。
Example:
// Apply non-uniform scale to node LOD3sp
var node = model.getNode('LOD3sp');
node.matrix = Cesium.Matrix4.fromScale(new Cesium.Cartesian3(5.0, 1.0, 1.0), node.matrix);

isDestroyed () Boolean

如果此对象已销毁,则返回true;否则返回false。否则为假。

如果该对象被破坏,则不应使用。调用除 isDestroyed 将导致 DeveloperError 异常。
Returns:
真正 该物体是否被破坏;除此以外,
See:

setArticulationStage (articulationStageKey, value)

设置咬合台的当前值。设置一个或多个阶段值后,调用Model.applyArticulations()导致重新计算节点矩阵。
Name Type Description
articulationStageKey String 关节的名称,空间和舞台的名称。
value Number 该阶段的发音数值。
Throws:
  • DeveloperError :未加载模型。使用Model.readyPromise或等待Model.ready为真。
See:
Viewer CesiumWidget 渲染场景时调用至获取渲染该图元所需的绘制命令。

不要直接调用此函数。这只是为了列出渲染场景时可能传播的异常:

Throws: