Cesium 获取3dtiles三角网数量
时间: 2023-09-17 08:09:08 浏览: 88
要获取3dtiles中的三角网数量,可以使用Cesium的Scene类中的primitives属性来遍历所有的Primitive,并通过Primitive的getGeometryInstanceAttributes方法获取其几何实例属性,从而获取其三角网数量。
具体代码如下:
```
var viewer = new Cesium.Viewer('cesiumContainer');
viewer.scene.primitives._primitives.forEach(function(primitive) {
var geometryInstanceAttributes = primitive.getGeometryInstanceAttributes();
if (geometryInstanceAttributes && geometryInstanceAttributes.indices) {
var triangleCount = geometryInstanceAttributes.indices.numberOfValues / 3;
console.log('Triangle count: ' + triangleCount);
}
});
```
这段代码会遍历所有的Primitive,并判断其是否有几何实例属性和索引属性,如果有则计算其三角网数量并输出。
相关问题
获取3dtiles 三角网
要获取3dtiles三角网,您可以按照以下步骤进行:
1. 找到您想要获取三角网的3dtiles数据源,可以是本地文件或在线服务。
2. 使用3dtiles阅读器(如CesiumJS或FME)加载数据源。
3. 在阅读器中找到三角网数据,这通常在3dtiles的“batch table”或“feature table”中。
4. 导出三角网数据,可以是为OBJ、FBX、STL等格式。
请注意,获取3dtiles三角网需要您有一定的技术能力和相关工具,同时需要您遵守相关的数据使用规定。
cesium las 3dtiles 获取最大高度
要获取Cesium中3DTiles中的最大高度,您可以使用以下代码:
```javascript
var maxHeight = 0;
viewer.scene.globe.depthTestAgainstTerrain = true;
viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
url : 'path/to/your/3dtiles'
}).then(function(tileset) {
var heightPromise = Cesium.sampleTerrainMostDetailed(viewer.terrainProvider, tileset.boundingSphere);
Cesium.when(heightPromise, function() {
var cartesian = Cesium.Cartographic.toCartesian(heightPromise._value.position);
var height = cartesian.height;
if (height > maxHeight) {
maxHeight = height;
}
console.log("Max height is: " + maxHeight);
});
}));
```
这段代码中,我们首先将 `depthTestAgainstTerrain` 属性设置为 `true`,以便在获取高度时考虑地形。然后,我们加载3DTiles数据,并通过 `sampleTerrainMostDetailed` 方法获取其位置的海拔高度。最后,我们使用 `Cartesian` 对象的 `height` 属性来获取高度,并将其与 `maxHeight` 变量进行比较,以获取最大高度。
阅读全文