3DTileset上如何加载地形图
<3DTileset上如何加载地形图>2022年6月16日
本帖最后由 tzbm123456 于 2022-7-3 08:00 编辑
//一、加载地形图b3dm文件
tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
url : './DataSource/SQJS/XDY_DG/b3dm/Dxt/Dxt/tileset.json'
//url : './DataSource/TZBM/jjj/b3dm/jjj/tileset.json'
}));
//设置实体样式
var transparentStyle=new Cesium.Cesium3DTileStyle({
color: "color('white',1.0)",
show: true
});
tileset.style=transparentStyle;
viewer.flyTo(tileset,{
duration : 10,
maximumHeight : 1000000,
});
//二、设置地图材质
imageMaterial = new Cesium.ImageMaterialProperty ({
image:'./DataSource/SQJS/XDY_DG/b3dm/Dxt/Dxt/M_41.png',
color: Cesium.Color.WHITE,
repeat : new Cesium.Cartesian2(1, 1)
});
//三、添加地图材质
const polygon = viewer.entities.add({
polygon: {
hierarchy: new Cesium.PolygonHierarchy(
Cesium.Cartesian3.fromDegreesArray()
),
//material: Cesium.Color.BLUE.withAlpha(0.5),
material : imageMaterial,
classificationType: Cesium.ClassificationType.CESIUM_3D_TILE,
//classificationType: Cesium.ClassificationType.TERRAIN,
},
});
viewer.flyTo(polygon,{
duration : 10,
maximumHeight : 1000000,
});
/*
特别说明:
1、cesium.js:41 Entity geometry outlines are unsupported on terrain. Outlines will be disabled. To enable outlines, disable geometry terrain clamping by explicitly setting height to 0。
2、classificationType起作用,必须不设置height参数。
*/
本帖最后由 tzbm123456 于 2022-7-3 08:01 编辑
<绘制贴地线体>
button7 = gui.add(controls, 'button7').name('绘制贴地线体').onFinishChange(function(){
alert('绘制贴地线体');
viewer.scene.primitives.add(
new Cesium.GroundPolylinePrimitive({//贴地primitive线
geometryInstances: new Cesium.GeometryInstance({
geometry: new Cesium.GroundPolylineGeometry({//贴地线几何
positions:Cesium.Cartesian3.fromDegreesArray(),
width : 10.0,
}),
}),
appearance: new Cesium.PolylineMaterialAppearance({
material: Cesium.Material.fromType('Color', {
color: Cesium.Color.RED
})
})
})
)
})
<JS 类型判断>
1、typeof(ptArr)
'object'
2、typeof(23)
'number'
3、typeof('we')
'string'
4、typeof("we")
'string'
5、ptArr instanceof Cesium.Cartesian3
true
本帖最后由 tzbm123456 于 2024-6-8 09:58 编辑
CesiumTileset数据结构.
<2024年5月1日>
一、Cesium3DTileset tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({ url : './DataSource/SQJS/XDY_DG/b3dm/Dxt/Dxt/tileset.json' //url : './DataSource/TZBM/jjj/b3dm/jjj/tileset.json' })); //设置实体样式 var transparentStyle=new Cesium.Cesium3DTileStyle({ color: "color('white',1.0)", show: true }); tileset.style=transparentStyle; viewer.flyTo(tileset,{ duration : 10, maximumHeight : 1000000, });
二、Cesium3DTile1、父Cesium3DTile:children为非空数组<获取方法>Cesium3DTileset.root<判断方法>arr = Cesium3DTileset.childrenArray.isArray(arr) && arr.length > 02、子Cesium3DTile:children为空数组<获取方法>父Cesium3DTile.children 提取元素<判断方法>arr = 父Cesium3DTile.children.childrenArray.isArray(arr) && arr.length === 0三、Cesium3DTileContent(获取方法 子Cesium3DTile.content)1、Composite3DTileContent<获取方法>子Cesium3DTile.content<判断方法>Cesium3DTile.content instanceof Cesium.Composite3DTileContent 为真时:arr = Composite3DTileContent.innerContentsArray.isArray(arr) && arr.length > 02、Batched3DModel3DTileContent(包含相同纹理材质,且不同群组、或未连接的面实体形成的Feature元素)<获取方法>Composite3DTileContent.innerContents 提取元素<判断方法>Composite3DTileContent.innerContents instanceof Cesium.Batched3DModel3DTileContent 为真时:arr = Composite3DTileContent.innerContentsBatched3DModel3DTileContent == arr\四、Cesium3DTileFeature<获取方法>i = Batched3DModel3DTileContent.featuresLengthfeature = Batched3DModel3DTileContent.getFeature(i) 五、Cesium3DTileFeature的Member和Method(一)Members1、color 将元素添加红色,透明度为0.8(色相范围0-1,透明度0-1) feature.color = new new Cesium.Color(1,0,0,0.8);2、featureId3、polylinePositions4、primitive5、tileset(二)Methods1、Cesium.Cesium3DTileFeature.getPropertyInherited(content, batchId, name)2、getProperty(name) value = feature.getProperty(‘name’);3、getPropertyNames()4、hasProperty(name)5、setProperty(name, value)
Cesium3DTileset:Cesium3DTileset.root-> Cesium3DTile:Cesium3DTile.content-> Cesium3DTileContent: (Composite3DTileContent或Batched3DModel3DTileContent)-> Cesium3DTileFeature
页:
[1]