01BIM社区

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2069|回复: 5

3DTileset上如何加载地形图

[复制链接]

156

主题

647

帖子

2540

积分

金牌会员

Rank: 6Rank: 6

积分
2540
发表于 2022-6-16 08:05:46 | 显示全部楼层 |阅读模式
<3DTileset上如何加载地形图>

2022年6月16日


回复

使用道具 举报

156

主题

647

帖子

2540

积分

金牌会员

Rank: 6Rank: 6

积分
2540
 楼主| 发表于 2022-6-16 08:09:36 | 显示全部楼层
本帖最后由 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([116.3925,39.8990, 116.3935, 39.8990, 116.3935, 39.8997, 116.3925, 39.8997])
        ),
        //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。

2classificationType起作用,必须不设置height参数。
*/

QQ截图20220616122652.png










回复 支持 反对

使用道具 举报

156

主题

647

帖子

2540

积分

金牌会员

Rank: 6Rank: 6

积分
2540
 楼主| 发表于 2022-6-16 12:27:49 | 显示全部楼层
QQ截图20220616122652.png
回复 支持 反对

使用道具 举报

156

主题

647

帖子

2540

积分

金牌会员

Rank: 6Rank: 6

积分
2540
 楼主| 发表于 2022-6-16 12:29:38 | 显示全部楼层
本帖最后由 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([107.523204,29.403641,107.528098,29.405478]),
         width : 10.0,
        }),
       }),
       appearance: new Cesium.PolylineMaterialAppearance({
         material: Cesium.Material.fromType('Color', {
            color: Cesium.Color.RED
          })
       })
      })
    )
})


QQ图片20220616123019.png


QQ图片20220616124549.png




回复 支持 反对

使用道具 举报

156

主题

647

帖子

2540

积分

金牌会员

Rank: 6Rank: 6

积分
2540
 楼主| 发表于 2022-6-16 13:29:35 | 显示全部楼层
<JS 类型判断>

1、typeof(ptArr[0])
     'object'
2、typeof(23)
     'number'
3、typeof('we')
     'string'
4、typeof("we")
     'string'
5、ptArr[0] instanceof Cesium.Cartesian3
     true


回复 支持 反对

使用道具 举报

156

主题

647

帖子

2540

积分

金牌会员

Rank: 6Rank: 6

积分
2540
 楼主| 发表于 7 天前 | 显示全部楼层
本帖最后由 tzbm123456 于 2024-5-1 10:18 编辑

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,
   });

二、Cesium3DTile
  1、父Cesium3DTile:children为非空数组
<获取方法>
  Cesium3DTileset.root
<判断方法>
  arr = Cesium3DTileset.children
  Array.isArray(arr) && arr.length > 0
2、子Cesium3DTile:children为空数组
<获取方法>
  父Cesium3DTile.children 提取元素
<判断方法>
  arr = 父Cesium3DTile.children.children
  Array.isArray(arr) && arr.length === 0
三、Cesium3DTileContent(获取方法 子Cesium3DTile.content)
  1、Composite3DTileContent
<获取方法>
  子Cesium3DTile.content
<判断方法>
  Cesium3DTile.content instanceof Cesium.Composite3DTileContent 为真时:
  arr = Composite3DTileContent.innerContents
  Array.isArray(arr) && arr.length > 0
2、Batched3DModel3DTileContent
<获取方法>
  Composite3DTileContent.innerContents 提取元素
<判断方法>
  Composite3DTileContent.innerContents instanceof           Cesium.Batched3DModel3DTileContent 为真时:
  arr = Composite3DTileContent.innerContents
  Batched3DModel3DTileContent == arr
四、Cesium3DTileFeature
<获取方法>
  i = Batched3DModel3DTileContent.featuresLength
  feature = Batched3DModel3DTileContent.getFeature(i)
五、Cesium3DTileFeature的Member和Method
(一)Members
  1、color
    将元素添加红色,透明度为0.8(色相范围0-1,透明度0-1)
    feature.color = new new Cesium.Color(1,0,0,0.8);
  2、featureId
  3、polylinePositions
  4、primitive
  5、tileset
(二)Methods
  1、Cesium.Cesium3DTileFeature.getPropertyInherited(content, batchId, name)
  2、getProperty(name)
    value = feature.getProperty(‘name’);
  3、getPropertyNames()
  4、hasProperty(name)
  5、setProperty(name, value)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|01BIM社区 - 最专业的BIM技术交流平台 ( 渝ICP备15000873号 )

GMT+8, 2024-5-8 08:14 , Processed in 0.058261 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表