Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
对象,具有以下属性:
|
-
DeveloperError : tileset必须是3D Tiles版本0.0或1.0。
var tileset = scene.primitives.add(new Cesium.Cesium3DTileset({
url : 'http://localhost:8002/tilesets/Seattle/tileset.json'
}));
// skipLevelOfDetail优化的常用设置。
var tileset = scene.primitives.add(new Cesium.Cesium3DTileset({
url : 'http://localhost:8002/tilesets/Seattle/tileset.json',
skipLevelOfDetail : true,
baseScreenSpaceError : 1024,
skipScreenSpaceErrorFactor : 16,
skipLevels : 1,
immediatelyLoadDesiredLevelOfDetail : false,
loadSiblings : false,
cullWithChildrenBounds : true
}));
// dynamicScreenSpaceError优化的常见设置。
var tileset = scene.primitives.add(new Cesium.Cesium3DTileset({
url : 'http://localhost:8002/tilesets/Seattle/tileset.json',
dynamicScreenSpaceError : true,
dynamicScreenSpaceErrorDensity : 0.00278,
dynamicScreenSpaceErrorFactor : 4.0,
dynamicScreenSpaceErrorHeightFalloff : 0.25
}));
成员变量
此事件在场景渲染后的帧结束时触发。
-
Default Value:
new Event()
tileset.allTilesLoaded.addEventListener(function() {
console.log('All tiles are loaded');
});
请参考 3D Tiles规范中的asset schema reference以获得完整的属性集。
Deprecated: true
仅当Cesium3DTileset#skipLevelOfDetail
为true
时使用。
-
Default Value:
1024
var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
url : 'http://localhost:8002/tilesets/Seattle/tileset.json'
}));
tileset.readyPromise.then(function(tileset) {
// 将相机设置为查看新添加的tileset
viewer.camera.viewBoundingSphere(tileset.boundingSphere, new Cesium.HeadingPitchRange(0, -0.5, 0));
});
此选项仅适用于包含批量三维模型、几何数据或矢量数据的tilesets。 即使在未定义的情况下,矢量数据和几何数据也必须作为分类渲染,并将默认渲染在地形和其他3D Tiles tilesets上。
当批量启用3D模型tileset时,glTF有一些要求/限制:
- POSITION 和 _BATCHID 语义是必需的。
- 具有相同批处理id的所有索引必须占用索引缓冲区的连续部分。
- 所有的着色器和技术都被忽略。生成的着色器通过模型-视图-投影矩阵简单地将位置相乘。
- 唯一支持的扩展是CESIUM_RTC和WEB3D_quantized_attributes。
- 只支持一个节点。
- 每个节点只支持一个网格。
- 每个网格只支持一个图元。
-
Default Value:
undefined
This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
ClippingPlaneCollection
用于选择性地禁用渲染tileset。
Cesium3DTileset#colorBlendMode
为MIX
时用于线性插值的在源颜色和要素颜色的值。
0.0的值表示源颜色,1.0的值表示要素颜色,中间的值表示源颜色和特征颜色的混合。
-
Default Value:
0.5
-
Default Value:
Cesium3DTileColorBlendMode.HIGHLIGHT
-
Default Value:
true
-
Default Value:
60.0
当为true时,为每个瓦片分配随机颜色。 这对于可视化哪些要素属于哪些瓦片非常有用,特别是在附加细化的情况下,来自父瓦片的要素可能与来自子瓦片的要素交织在一起。
-
Default Value:
false
确定是否仅使用上一帧中的瓦片进行渲染。这有效地将tileset“冻结”到前一帧,因此可以缩小并查看渲染了什么。
-
Default Value:
false
当为true时,为每个可见瓦片渲染包围体。如果瓦片有内容包围体或为空,则包围体为白色;否则,它是红色的。 不符合屏幕空间误差且仍在对其后代进行细化的瓦片是黄色的。
-
Default Value:
false
当为true时,为每个可见瓦片的内容渲染包围体。 如果瓦片有内容包围体,则包围体为蓝色;否则就是红色的。
-
Default Value:
false
当为true时,绘制标签以指示每个瓦片的几何误差。
-
Default Value:
false
如果为true,则绘制标签以指示每个瓦片的几何形状和纹理内存使用情况。
-
Default Value:
false
当为true时,绘制标签来指示每个瓦片的指令、点、三角形和要素的数量。
-
Default Value:
false
如果为true,则绘制标签以指示每个瓦片的url。
-
Default Value:
false
当为true时,为每个瓦片渲染查看器请求体。
-
Default Value:
false
当为true时,将每个瓦片的内容渲染为线框。
-
Default Value:
false
-
Default Value:
false
Fog
。
增加这个值的效果是增加所有瓦片的最大屏幕空间误差,但是是以非线性的方式。
误差从0.0开始,以指数方式增加,直到达到一个中点,然后渐进地接近1.0。
这样做的效果是,在较近的瓦片中保持较高的细节,在较远的瓦片中保持较低的细节,所有超过一定距离的瓦片的误差都大致为1.0。
动态误差在[0.0,1.0]范围内,乘以dynamicScreenSpaceErrorFactor
,得到最终的动态误差。
然后,这个动态误差将从瓦片的实际屏幕空间误差中减去。
增加dynamicScreenSpaceErrorDensity
会使误差中点更靠近相机。这类似于将雾移近相机。
-
Default Value:
0.00278
-
Default Value:
4.0
有效值介于0.0和1.0之间。
-
Default Value:
0.25
extras
属性,其中包含应用程序特定的元数据。
返回undefined
如果extras
不存在。
Cesium3DTileset#foveatedScreenSpaceError
为true时使用,以控制决定哪些瓦片被延迟的圆锥大小。
圆锥内的瓦片立即被加载。位于圆锥外部的瓦片可能会根据它们位于圆锥外部的距离和屏幕空间误差而延迟。
这是由Cesium3DTileset#foveatedInterpolationCallback
和Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation
控制的。
将此设置为0.0意味着圆锥将是由相机位置及其视图方向形成的直线。将此设置为1.0意味着圆锥将包含相机的整个视场,关闭效果。
-
Default Value:
0.3
Cesium3DTileset#foveatedScreenSpaceError
为true时使用,用于控制位于中心凹锥体外的瓦片起始屏幕空间误差松弛。
根据提供的Cesium3DTileset#foveatedInterpolationCallback
,屏幕空间误差将从这个值开始上升到Cesium3DTileset#maximumScreenSpaceError
。
-
Default Value:
0.0
Cesium3DTileset#foveatedConeSize
所确定的屏幕中心的所有瓦片后,屏幕空间误差将恢复正常。
-
Default Value:
true
Cesium3DTileset#foveatedScreenSpaceError
为true时,
用于控制相机停止移动后延迟的瓦片开始加载之前等待的时间(以秒为单位)。
这个时间延迟可以防止在相机移动时请求屏幕边缘的瓦片。将此设置为0.0将立即请求任何给定视图中的所有瓦片。
-
Default Value:
0.2
-
Default Value:
Cartesian2(1.0, 1.0)
仅当Cesium3DTileset#skipLevelOfDetail
为true
时使用。
-
Default Value:
false
此事件在场景渲染后的帧结束时触发。
-
Default Value:
new Event()
tileset.initialTilesLoaded.addEventListener(function() {
console.log('Initial tiles are loaded');
});
例如,通过设置model.imageBasedLightingFactor = new Cartesian2(0.0, 0.0)
来禁用额外的光源会使模型更暗。
在这里,增加光源的强度将使模型更亮。
-
Default Value:
undefined
正在处理的瓦片请求的数量numberOfPendingRequests
,和正在处理的瓦片的数量numberOfTilesProcessing
被传递给事件监听器。
此事件在场景渲染后的帧结束时触发。
-
Default Value:
new Event()
tileset.loadProgress.addEventListener(function(numberOfPendingRequests, numberOfTilesProcessing) {
if ((numberOfPendingRequests === 0) && (numberOfTilesProcessing === 0)) {
console.log('Stopped loading');
return;
}
console.log('Loading: requests: ' + numberOfPendingRequests + ', processing: ' + numberOfTilesProcessing);
});
仅当Cesium3DTileset#skipLevelOfDetail
为true
时使用。
-
Default Value:
false
Cesium3DTileset#specularEnvironmentMaps
和Cesium3DTileset#sphericalHarmonicCoefficients
未定义时使用。
-
Default Value:
0.2
未在视图中的瓦片将被卸载以执行此操作。
如果降低这个值导致卸载瓦片,瓦片将在下一帧卸载。
如果瓦片的大小大于maximumMemoryUsage
需要满足所需的屏幕空间误差,由Cesium3DTileset#maximumScreenSpaceError
决定,
对于当前视图,那么加载瓦片的内存使用将超过maximumMemoryUsage
。
例如,如果最大值是256 MB,但是需要300 MB的瓦片来满足屏幕空间误差,那么可能会加载300 MB的瓦片。当这些瓦片离开视图时,它们将被卸载。
-
Default Value:
512
瓦片的屏幕空间误差大致相当于在瓦片的位置渲染一个半径等于瓦片的geometric error的球体时绘制的像素宽度。
如果该值超过maximumScreenSpaceError
,则瓦片将细化为它的后代。
根据tileset的不同,maximumScreenSpaceError
可能需要调整以达到正确的平衡。
较高的值提供更好的性能和较低的视觉质量。
-
Default Value:
16
-
Default Value:
Matrix4.IDENTITY
// 从地球表面调整tileset的高度。
var heightOffset = 20.0;
var boundingSphere = tileset.boundingSphere;
var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);
var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset);
var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
-
Default Value:
false
-
Default Value:
true
tileset.show
为false
时预加载瓦片。加载瓦片,就好像瓦片是可见的,但不渲染它们。
-
Default Value:
false
progressiveResolutionHeightFraction*screenHeight
的屏幕分辨率,
这可以在下载全分辨率瓦片时,快速得到一个图层。
-
Default Value:
0.3
请参考 3D Tiles规范中的properties schema reference以获得完整的属性集。
console.log('Maximum building height: ' + tileset.properties.height.maximum);
console.log('Minimum building height: ' + tileset.properties.height.minimum);
-
Default Value:
false
此约定在帧的末尾解析,然后在第一个帧中渲染tileset。
tileset.readyPromise.then(function(tileset) {
// tile.properties is not defined until readyPromise resolves.
var properties = tileset.properties;
if (Cesium.defined(properties)) {
for (var name in properties) {
console.log(properties[name]);
}
}
});
启用阴影会影响性能。投下阴影的tileset必须被渲染两次,一次是在相机上,一次是在光的视点。
只有当Viewer#shadows
为true
时,才会渲染阴影。
-
Default Value:
ShadowMode.ENABLED
-
Default Value:
true
置换-细化(replacement-refinement)遍历的常用策略是将树的所有级别存储在内存中,并要求在父级细化之前加载所有子级。 通过这种优化,可以完全跳过树的级别,并且可以在父级旁边渲染子级。在使用这种优化时,tileset需要的内存要少得多。
-
Default Value:
true
仅当Cesium3DTileset#skipLevelOfDetail
为true
时使用。
-
Default Value:
1
<= 100 / skipScreenSpaceErrorFactor
。
仅当Cesium3DTileset#skipLevelOfDetail
为true
时使用。
-
Default Value:
16
undefined
时,使用大气颜色计算漫射辐照度。
有9个Cartesian3
系数。
系数的顺序是:L00, L1-1, L10, L11, L2-2, L2-1, L20, L21, L22
cmgen
工具对环境地图进行预处理得到。
这还将生成一个KTX文件,该文件可以提供给Cesium3DTileset#specularEnvironmentMaps
。
赋值undefined
以移除样式,当没有应用样式时,将恢复tileset的视觉外观为其默认值。
在Cesium3DTileset#tileVisible
事件引发之前,将样式应用于瓦片,
因此tileVisible
中的代码可以在样式应用后手动设置要素的属性(例如颜色和显示)。
当分配一个新样式时,任何手动设置的属性都会被覆盖。
-
Default Value:
undefined
tileset.style = new Cesium.Cesium3DTileStyle({
color : {
conditions : [
['${Height} >= 100', 'color("purple", 0.5)'],
['${Height} >= 50', 'color("red")'],
['true', 'color("blue")']
]
},
show : '${Height} > 0',
meta : {
description : '"Building id ${id} has height ${Height}."'
}
});
如果没有事件监听器,错误消息将被记录到控制台。
传递给监听器的错误对象包含两个属性:
url
:失败瓦片的url。message
:错误消息。
-
Default Value:
new Event()
tileset.tileFailed.addEventListener(function(error) {
console.log('An error occurred loading tile: ' + error.url);
console.log('Error: ' + error.message);
});
加载的Cesium3DTile
被传递给事件监听器。
在渲染帧时,此事件在tileset遍历期间触发,以便对瓦片的更新在同一帧中生效。 不要在事件监听器期间创建或修改Cesium实体(entities)或图元(primitives)。
-
Default Value:
new Event()
tileset.tileLoad.addEventListener(function(tile) {
console.log('A tile was loaded.');
});
true
时,满足屏幕空间误差的所有瓦片都被加载。此视图的tileset已完全加载。
-
Default Value:
false
卸载的Cesium3DTile
被传递给事件监听器。
在渲染帧时,此事件在瓦片的内容被卸载之前立即触发,以便事件监听器能够访问瓦片的内容。 不要在事件监听器期间创建或修改Cesium实体(entities)或图元(primitives)。
-
Default Value:
new Event()
tileset.tileUnload.addEventListener(function(tile) {
console.log('A tile was unloaded from the cache.');
});
可见的Cesium3DTile
被传递给事件监听器。
在渲染帧时,此事件在tileset遍历期间触发,以便对瓦片的更新在同一帧中生效。 不要在事件监听器期间创建或修改Cesium实体(entities)或图元(primitives)。
-
Default Value:
new Event()
tileset.tileVisible.addEventListener(function(tile) {
if (tile.content instanceof Cesium.Batched3DModel3DTileContent) {
console.log('A Batched 3D Model tile is visible.');
}
});
// 应用一个红色的样式,然后为每一个其他的要素手动设置随机的颜色时,瓦片变得可见。
tileset.style = new Cesium.Cesium3DTileStyle({
color : 'color("red")'
});
tileset.tileVisible.addEventListener(function(tile) {
var content = tile.content;
var featuresLength = content.featuresLength;
for (var i = 0; i < featuresLength; i+=2) {
content.getFeature(i).color = Cesium.Color.fromRandom();
}
});
内置方法
Name | Type | Description |
---|---|---|
tilesetUrl |
Resource | String | 要获取的json文件的url。 |
对象一旦被摧毁,就不应该被使用;调用除
isDestroyed
之外的任何函数都会导致DeveloperError
异常。
因此,将返回值(undefined
)赋给对象,如示例所示。
-
DeveloperError : 这个对象被销毁了。即:destroy()被调用。
tileset = tileset && tileset.destroy();
true
;否则,false
。
Name | Type | Description |
---|---|---|
extensionName |
String | 要检查的扩展名。 |
true
;否则,false
。
true
;否则,false
。
Cesium3DTileset#style
标记为dirty,这将强制所有要素在下一帧中重新评估样式,每个要素都是可见的。
Cesium3DTileset#maximumMemoryUsage
.
瓦片卸载发生在下一帧,以保持所有的WebGL删除调用在渲染循环。
类型定义
Cesium3DTileset#foveatedScreenSpaceError
真时用作回调,用于控制在圆锥体中心凹外的瓦片的屏幕空间误差上升多少,
在Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation
和Cesium3DTileset#maximumScreenSpaceError
之间插值。
Name | Type | Description |
---|---|---|
p |
Number | 要插入的起始值。 |
q |
Number | 要插入的结束值。 |
time |
Number |
插值时间一般在[0.0, 1.0] 范围内。 |
-
Default Value:
Math.lerp