Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
具有以下属性的对象:
|
Throws:
-
DeveloperError : 瓦片集必须是3D Tiles版本0.0或1.0。参见https://github.com/AnalyticalGraphicsInc/3d-tiles#spec-status
Examples:
var tileset = scene.primitives.add(await SuperMap3D.Cesium3DTileset.fromUrl('http://localhost:8002/tilesets/Seattle',{ }));
// Common setting for the skipLevelOfDetail optimization
var tileset = scene.primitives.add(await SuperMap3D.Cesium3DTileset.fromUrl('http://localhost:8002/tilesets/Seattle',{
skipLevelOfDetail : true,
baseScreenSpaceError : 1024,
skipScreenSpaceErrorFactor : 16,
skipLevels : 1,
immediatelyLoadDesiredLevelOfDetail : false,
loadSiblings : false,
cullWithChildrenBounds : true
}));
// Common settings for the dynamicScreenSpaceError optimization
var tileset = scene.primitives.add(await SuperMap3D.Cesium3DTileset.fromUrl('http://localhost:8002/tilesets/Seattle',{
dynamicScreenSpaceError : true,
dynamicScreenSpaceErrorDensity : 0.00278,
dynamicScreenSpaceErrorFactor : 4.0,
dynamicScreenSpaceErrorHeightFalloff : 0.25
}));
See:
Members
-
allTilesLoaded : Event
-
触发此事件以指示在此帧中满足屏幕空间误差的所有瓦片都已加载。对于这个视图,瓦片集已完全加载。
此事件在场景渲染后的帧结束时触发。
-
Default Value:
new Event()
Example:
tileset.allTilesLoaded.addEventListener(function() { console.log('All tiles are loaded'); });
See:
-
获取瓦片集的资产对象属性,其中包含有关瓦片集的元数据。
参见asset schema 在3D Tiles规范中,用于完整的属性集。
-
tileset.json中非绝对路径所相对于的基路径。
-
在跳过细节级别之前必须达到的屏幕空间错误。
仅当
Cesium3DTileset#skipLevelOfDetail
为true
时使用。-
Default Value:
1024
-
readonlyboundingSphere : BoundingSphere
-
The tileset's bounding sphere.
Example:
var tileset = viewer.scene.primitives.add(await SuperMap3D.Cesium3DTileset.fromUrl('http://localhost:8002/tilesets/Seattle',{ })); tileset.readyPromise.then(function(tileset) { // Set the camera to view the newly added tileset viewer.camera.viewBoundingSphere(tileset.boundingSphere, new SuperMap3D.HeadingPitchRange(0, -0.5, 0)); });
-
当
Cesium3DTileset#colorBlendMode
为MIX
时,定义用于在线性插值源颜色和特征颜色之间的值。值为0.0时结果是源颜色,值为1.0时结果是特征颜色,任何中间值的结果都是源颜色和特征颜色的混合。-
Default Value:
0.5
-
定义了从SuperMap3D API或声明性样式设置的每个特征颜色如何与原始特征的源颜色混合,例如glTF材质或瓦片中的每个点的颜色。
-
Default Value:
Cesium3DTileColorBlendMode.HIGHLIGHT
-
这个属性仅用于调试;它没有针对生产环境进行优化。
当为true时,为每个瓦片分配一个随机颜色。这对于可视化哪些模型属于哪些瓦片非常有用,特别是对于加性细化,其中来自父瓦片的模型可能与来自子瓦片的模型交错在一起。
-
Default Value:
false
-
此属性仅用于调试;它没有针对生产使用进行优化。
为true时,会为每个切图随机分配一种颜色。 这对于可视化哪些特征属于哪些瓦片非常有用,尤其是在进行加法细化时,父瓦片的特征可能会与子瓦片的特征交错在一起。
-
Default Value:
false
-
这个属性仅用于调试;它没有针对生产环境进行优化。
决定是否只使用上一帧的瓦片进行渲染。这样实际上“冻结”了瓦片集到上一帧,所以可以缩小并看到渲染了什么。
-
Default Value:
false
-
此属性仅用于调试;它没有针对生产使用进行优化。
决定是否只使用最后一帧的瓦片进行渲染。这有效地“冻结”了前一帧的瓦片,因此可以缩小并查看渲染的内容。
-
Default Value:
false
-
此属性仅用于调试;它没有针对生产使用进行优化。
当为true时,为每个可见瓦片渲染边界体积。如果瓦片的内容具有明确的边界体积,则边界体积为白色;否则,它为红色。未达到最终分辨率的瓦片为黄色。
-
Default Value:
false
-
该属性仅用于调试,未针对生产使用进行优化。
当为true时,为每个可见瓦片渲染边界体积。如果瓦片具有内容边界体积,则边界体积为白色;否则,它是红色。不符合屏幕空间误差但仍在细化其后代的瓦片是黄色。
-
Default Value:
false
-
此属性仅用于调试;它没有针对生产使用进行优化。
当为true时,为每个瓦片的内容渲染一个蓝色的边界体。
-
Default Value:
false
-
此属性仅用于调试;它没有针对生产使用进行优化。
当为true时,为每个可见贴图的内容渲染边界体积。如果瓦片具有内容边界体积,则边界体积为蓝色;否则就是红色。
-
Default Value:
false
-
此属性仅用于调试;它没有针对生产使用进行优化。
当为true时,绘制标签以指示每个瓦片的几何误差。
-
Default Value:
false
-
此属性仅用于调试;它没有针对生产使用进行优化。
当为true时,绘制标签以指示每个瓦片的几何误差。
-
Default Value:
false
-
此属性仅用于调试;它没有针对生产使用进行优化。
当为true时,绘制标签以指示每个瓦片的几何和纹理内存使用情况。
-
Default Value:
false
-
此属性仅用于调试;它没有针对生产使用进行优化。
当为true时,绘制标签以指示每个瓦片的几何体和纹理内存使用情况。
-
Default Value:
false
-
此属性仅用于调试;它没有针对生产使用进行优化。
当为true时,绘制标签以指示每个瓦片的命令、点、三角形和特征的数量。
-
Default Value:
false
-
此属性仅用于调试;它没有针对生产使用进行优化。
当为true时,绘制标签以指示每个瓦片的命令数、点数、三角形数和要素数。
-
Default Value:
false
-
此属性仅用于调试;它没有针对生产使用进行优化。
当为true时,为每个瓦片渲染查看器请求体积。
-
Default Value:
false
-
此属性仅用于调试;它没有针对生产使用进行优化。
当为true时,为每个瓦片渲染查看器请求体积。
-
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
-
当为true时,只有满足最大屏幕空间误差的瓦片才会被下载。跳过的因素被忽略,只加载所需的瓦片。
仅当
Cesium3DTileset#skipLevelOfDetail
为true
时使用。-
Default Value:
false
-
loadProgress : Event
-
触发的事件,用于指示加载新瓦片的进度。当请求新瓦片时、请求的瓦片下载完成时,以及下载的瓦片已被处理并准备好渲染时,都会触发此事件。
待处理瓦片请求的数量,
numberOfPendingRequests
,以及正在处理的瓦片数量,numberOfTilesProcessing
,都会传递给事件监听器。在场景渲染完毕后的帧末尾触发此事件。
-
Default Value:
new Event()
Example:
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
-
可用于瓦片的GPU内存的最大量(以MB为单位)。这个值是从加载瓦片的几何体、纹理和批处理表纹理估算出来的。对于点云,这个值还包括每个点的元数据。
不在视图中的瓦片将被卸载以执行此操作。
如果减小这个值导致卸载瓦片,这些瓦片将在下一帧被卸载。
如果为了满足当前视图的所需屏幕空间误差(由
Cesium3DTileset#maximumScreenSpaceError
确定),需要使用大于maximumMemoryUsage
的瓦片,则加载的瓦片的内存使用量将超过maximumMemoryUsage
。 例如,如果最大值是256MB,但是需要300MB的瓦片来满足屏幕空间误差,那么可能会加载300MB的瓦片。当这些瓦片离开视图时,它们将被卸载。-
Default Value:
512
See:
-
用于驱动细节层次细化的最大屏幕空间误差。这个值有助于确定瓦片何时细化到其后代,因此在平衡性能与视觉质量方面起着重要作用。
一个瓦片的屏幕空间误差大致相当于如果一个半径等于瓦片几何误差的球体在瓦片位置渲染时所绘制的像素宽度。 如果这个值超过了
maximumScreenSpaceError
,瓦片会细化到其后代。根据瓦片集的不同,可能需要调整
maximumScreenSpaceError
以达到正确的平衡。较高的值可以提供更好的性能,但会降低视觉质量。-
Default Value:
16
-
modelMatrix : Matrix4
-
一个 4x4 变换矩阵,用于变换整个瓦片集。
-
Default Value:
Matrix4.IDENTITY
Example:
// Adjust a tileset's height from the globe's surface. var heightOffset = 20.0; var boundingSphere = tileset.boundingSphere; var cartographic = SuperMap3D.Cartographic.fromCartesian(boundingSphere.center); var surface = SuperMap3D.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0); var offset = SuperMap3D.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset); var translation = SuperMap3D.Cartesian3.subtract(offset, surface, new SuperMap3D.Cartesian3()); tileset.modelMatrix = SuperMap3D.Matrix4.fromTranslation(translation);
-
获取瓦片集的属性字典对象,其中包含有关每个特征属性的元数据。
参见properties schema 在3D Tiles规范中,用于完整的属性集。
- Cesium3DTileFeature#getProperty
- Cesium3DTileFeature#setProperty
Example:
console.log('Maximum building height: ' + tileset.properties.height.maximum); console.log('Minimum building height: ' + tileset.properties.height.minimum);
See:
-
-
Default Value:
false
-
readonlyreadyPromise : Promise.<Cesium3DTileset>
-
获取将在加载瓦片集的根瓦片并且瓦片集准备呈现时解析的promise。
这个Promise在第一帧渲染前的帧结束时解决。
Example:
tileset.readyPromise.then(function(tileset) { // tile.properties is not defined until readyPromise resolves. var properties = tileset.properties; if (SuperMap3D.defined(properties)) { for (var name in properties) { console.log(properties[name]); } } });
-
shadows : ShadowMode
-
决定瓦片集是否从每个光源投射或接收阴影。
启用阴影会对性能产生影响。一个投射阴影的瓦片集必须渲染两次,一次从相机视角,另一次从光源视角。
只有当
Viewer#shadows
为true
时,才会渲染阴影。-
Default Value:
ShadowMode.ENABLED
-
确定是否显示瓦片组。
-
Default Value:
true
-
优化选项。确定在遍历过程中是否要跳过细节级别。
替换细化遍历的通用策略是将树的所有级别存储在内存中,并要求在父节点可以细化之前加载所有子节点。通过这种优化,可以完全跳过树的某些级别,并且可以与父节点一起渲染子节点。 使用这种优化时,瓦片集需要的内存显著减少。
-
Default Value:
true
-
定义加载瓦片时要跳过的最小级别数的常量。当它为0时,不跳过任何级别。例如,如果一个瓦片是1级,除非它们在大于2级的级别上,否则不会加载任何瓦片。
仅当
Cesium3DTileset#skipLevelOfDetail
为true
时使用。-
Default Value:
1
-
定义最小屏幕空间误差的乘数以跳过。例如,如果一个瓦片的屏幕空间误差为100,除非它们是叶子节点或有屏幕空间误差
<= 100 / skipScreenSpaceErrorFactor
,否则不会加载任何瓦片。仅当
Cesium3DTileset#skipLevelOfDetail
为true
时使用。-
Default Value:
16
-
类定义的样式 3D Tiles Styling language, 应用于瓦片集中的每个特征。
指定
undefined
来删除样式,这将在没有应用样式时将标题集的视觉外观恢复为默认值。在触发
Cesium3DTileset#tileVisible
事件之前,样式将被应用到瓦片上,因此tileVisible
中的代码可以在样式应用后手动设置特征的属性(例如颜色和显示)。当分配了新样式时,任何手动设置的属性都会被覆盖。-
Default Value:
undefined
Example:
tileset.style = new SuperMap3D.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}."' } });
See:
-
当
为true
时,所有满足此帧屏幕空间错误的瓦片都被加载。这个视图的标题集是完全加载的。-
Default Value:
false
See:
-
tileUnload : Event
-
事件被触发以指示瓦片的内容已被卸载。
未加载的
Cesium3DTile
被传递给事件监听器。这个事件会在渲染框架时卸载tile的内容之前立即触发,这样事件监听器就可以访问tile的内容。在事件监听器期间,不要创建或修改SuperMap3D实体或原语。
-
Default Value:
new Event()
Example:
tileset.tileUnload.addEventListener(function(tile) { console.log('A tile was unloaded from the cache.'); });
See:
-
tileVisible : Event
-
该事件对帧中的每个可见瓦片触发一次。 该事件可用于手动设置瓦片集的样式。
可见的
Cesium3DTile
将被传递给事件监听器。该事件在渲染帧时的瓦片集遍历过程中触发,以便瓦片的更新在同一帧中生效。 在事件监听期间,请勿创建或修改 SuperMap3D 实体或基元。
-
Default Value:
new Event()
Examples:
tileset.tileVisible.addEventListener(function(tile) { if (tile.content instanceof SuperMap3D.Batched3DModel3DTileContent) { console.log('A Batched 3D Model tile is visible.'); } });
// Apply a red style and then manually set random colors for every other feature when the tile becomes visible. tileset.style = new SuperMap3D.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 = SuperMap3D.Color.fromRandom(); } });
-
返回自瓦片集加载并首次更新以来的时间,以毫秒为单位。
-
瓦片集使用的GPU内存总量,以字节为单位。这个值是从加载瓦片的几何体、纹理和批处理表纹理估算出来的。对于点云,这个值还包括每个点的元数据。
-
指向一个tileset.json文件的URL,或者是包含tileset.json文件的目录。
Methods
-
销毁该对象持有的 WebGL 资源。销毁对象可以确定性地释放 WebGL 资源,而不是依赖垃圾回收器来销毁该对象。
一旦对象被销毁,就不应再使用;调用除isDestroyed
之外的任何函数都将导致DeveloperError
异常。因此,请按照示例中的方法将返回值(undefined
)赋值给对象。Returns:
Throws:
-
DeveloperError : 该对象已被销毁,即 destroy() 被调用。
Example:
tileset = tileset && tileset.destroy();
See:
-
-
Returns:
如果该对象已被销毁,则为 true;否则为 false -
将瓦片集的
Cesium3DTileset#style
标记为已更改,这将强制所有特征在下一帧可见时重新评估样式。 -
Unloads all tiles that weren't selected the previous frame. This can be used to explicitly manage the tile cache and reduce the total number of tiles loaded below
Cesium3DTileset#maximumMemoryUsage
.Tile unloads occur at the next frame to keep all the WebGL delete calls within the render loop.
-