国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

cesium-2-entity(包含gltf創(chuàng)建)

這篇具有很好參考價(jià)值的文章主要介紹了cesium-2-entity(包含gltf創(chuàng)建)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、四層結(jié)構(gòu)


viewer --> datasources(DataSourceCollection類型) --> datasource --> entities(EntityCollection類型) --> entity


需要學(xué)習(xí)的方向是:只需要注意每個(gè)層與層之間的關(guān)系和entity實(shí)例如何創(chuàng)建即可

2、DataSourceCollection

增:
add(dataSource) → Promise.<DataSource>
刪:(destroy一般為boolean,指是否需要直接銷毀該datasource)
remove(dataSource, destroy) → boolean
removeAll(destroy)
查:
indexOf(dataSource) → number
getByName(name) → Array.<DataSource>
get(index) → DataSource
contains(dataSource) → boolean
改:
該類型數(shù)據(jù)一般是指向型,直接調(diào)出屬性直接修改即可
改變層級關(guān)系(特殊):
lower(dataSource)
lowerToBottom(dataSource)
raise(dataSource)
raiseToTop(dataSource)

3、datasource

這是一個(gè)抽象類,有各種實(shí)現(xiàn)方式
cesium-2-entity(包含gltf創(chuàng)建)
一般只會(huì)用到他的三個(gè)屬性:entities、name和show

4、entities(EntityCollection類型)

增:
add(entity) → Entity
getOrCreateEntity(id) → Entity
刪:
removeAll()
removeById(id) → boolean
remove(entity) → boolean
查:
contains(entity) → boolean
getById(id) → Entity|undefined
改:

重要屬性:

id : string
owner : DataSource|CompositeEntityCollection
show : boolean
values : Array.<Entity>  // 全部的entity

5、創(chuàng)建新的entity

一些實(shí)例:
https://www.jianshu.com/p/4250e822c9c8

6、代碼

需要注意的是這里的add()方法得到的是<promise.類型>,后面需要使用.then(成功函數(shù),失敗函數(shù))來得到類型
add(dataSource) → Promise.<DataSource>
這種類怎么創(chuàng)建和怎么用見:
https://blog.csdn.net/ABCFF12333/article/details/118188018

  // 注意add()方法得到的是<promise.類型>,后面需要使用.then(成功函數(shù),失敗函數(shù))來得到類型
  // 注意這是異步方法
  viewer.dataSources.add(new Cesium.CustomDataSource("pointDataSource1")).then(function(value){
    var pointDataSource = value;
    pointDataSource.show = true;
    var point1 = pointDataSource.entities.add({
      id: "point1",
      name: "point1",
      position: Cesium.Cartesian3.fromDegrees(109, 34, 0),
      point: {
        pixelsize: 10,
        color: Cesium.Color.YELLOW,
        outlineWidth: 2,
        outlineColor: Cesium.Color.RED
      }
    });
    var point2 = pointDataSource.entities.add({
      id: "point2",
      name: "point2",
      position: Cesium.Cartesian3.fromDegrees(110, 35, 0),
      point: {
        pixelsize: 10,
        color: Cesium.Color.YELLOW,
        outlineWidth: 2,
        outlineColor: Cesium.Color.RED
      }
    })
  },function(error){})

  viewer.dataSources.add(new Cesium.CustomDataSource("polygonDatasource")).then(function(value){
    var polygonDatasource = value;
    polygonDatasource.show = true;
    polygonDatasource.entities.add({
      id: "polygon1",
      name: "polygon1",
      polygon: {
        hierarchy: Cesium.Cartesian3.fromDegreesArray([
          109.080842, 45.002073,
          105.91517, 45.002073,
          104.058488, 44.996596,
          104.053011, 43.002989,
          104.053011, 41.003906,
          105.728954, 40.998429,
          107.919731, 41.003906,
          109.04798, 40.998429,
          111.047063, 40.998429,
          111.047063, 42.000709,
          111.047063, 44.476286,
          111.05254, 45.002073,
          109.080842, 45.002073
        ]),
        height: 10,  // 必須要有高度,否則沒有邊框
        material: Cesium.Color.GREEN,
        outline: true,
        outlineColor: Cesium.Color.RED,
        outlineWidth: 2,
        fill: true
      }
    })
  },function(error){})
})

7、加載gltf

先了解一下heading、pitch、roll
cesium-2-entity(包含gltf創(chuàng)建)
因?yàn)樵紨?shù)據(jù)的x、y、z軸可能與這個(gè)不同,所以當(dāng)修改了pitch沒有發(fā)生俯仰而是看起來是roll發(fā)生了變化,就需要去查看原始數(shù)據(jù)的基準(zhǔn)

gltfDatasource.entities.add({
    id: "model",
    position: position1,
    orientation: Cesium.Transforms.headingPitchRollQuaternion(position1, ori),
    model: {
      uri: "../SampleData/models/CesiumMan/Cesium_Man.glb",
      minimumPixelSize: 32, // 放到最小時(shí)的像素大小
      distanceDisplayCondition: new Cesium.DistanceDisplayCondition(10, 10000), // 只有相機(jī)與這個(gè)模型在這個(gè)距離區(qū)間才能顯示
      shadows: Cesium.ShadowMode.CAST_ONLY, // 陰影方式
      silhouetteColor: Cesium.Color.RED, // 模型邊框的顏色
      silhouetteSize: 5, //模型邊框的寬度
      colorBlendMode: Cesium.ColorBlendMode.MIX, // 修改模型顏色的方式,3種
      color: Cesium.Color.YELLOW, // 修改模型顏色
    },
    description: "飛機(jī)模型",
  });

混合顏色的模式:
cesium-2-entity(包含gltf創(chuàng)建)
陰影模式:
cesium-2-entity(包含gltf創(chuàng)建)

8、primitive層級

GeometryInstance、Primitive和PolylineGeometry是Cesium中用于創(chuàng)建三維圖元和進(jìn)行渲染的三個(gè)重要概念,它們?nèi)咧g具有如下關(guān)系:

GeometryInstance是包含渲染所需的Geometry和Material信息的對象,描述了三維圖元的幾何形狀、外觀等屬性。

PolylineGeometry是一種Cesium.Geometry類型,用于描述一個(gè)由相鄰的線段組成的折線段。PolylineGeometry本身并不能被直接添加到場景中進(jìn)行顯示,需要通過GeometryInstance包裝后再添加到Primitive中。

Primitive是用于渲染GeometryInstance的對象,它描述了渲染狀態(tài)、材質(zhì)屬性、圖元通道、光源等信息,以決定如何將GeometryInstance渲染出可視化的結(jié)果。Primitive中的geometryInstances屬性通常是一個(gè)GeometryInstance數(shù)組對象,用于包含多個(gè)三維圖元的GeometryInstance信息。

因此,可以簡單地理解為GeometryInstance和PolylineGeometry是兩個(gè)不同的概念,其中PolylineGeometry是一種特定的Geometry類型,而GeometryInstance則是將Geometry、Material和其他屬性打包在一起,用于渲染顯示的對象;Primitive是用于渲染的對象,與GeometryInstance和其包含的Geometry和Material有一定關(guān)聯(lián),它涵蓋了GeometryInstance的其他狀態(tài)信息,可以包含多個(gè)GeometryInstance進(jìn)行批量渲染。這三者之間可以通過GeometryInstance包裝Geometry實(shí)現(xiàn)關(guān)聯(lián),但是并不是嚴(yán)格的層級關(guān)系。

加載PointPrimitive

  // 創(chuàng)建點(diǎn)的primitive
  var pointPrimitivateCollection1 = viewer.scene.primitives.add(
    new Cesium.PointPrimitiveCollection({
      modelMatrix: Cesium.Matrix4.IDENTITY,
      debugShowBoundingVolume: false,
      blendOption: Cesium.BlendOption.OPAQUE_AND_TRANSLUCENT,
    })
  );
  for (var x = 0; x < 20; x++) {
    for (var y = 0; y < 20; y++) {
      pointPrimitivateCollection1.add({
        position: Cesium.Cartesian3.fromDegrees(x + 20, y + 20),
        color: Cesium.Color.YELLOW,
      });
    }
  }

加載polygon的primitive文章來源地址http://www.zghlxwxcb.cn/news/detail-428827.html


  // 創(chuàng)建primitiveCollection1
  var primitiveCollection1 = viewer.scene.primitives.add(
    new Cesium.PrimitiveCollection()
  );

  // 創(chuàng)建geo
  var ge = new Cesium.PolygonGeometry({
    // PolygonHierarchy用于描述一個(gè)多邊形的層級結(jié)構(gòu),
    //它是一個(gè)包含一系列hierarchy屬性的對象,
    //每個(gè)hierarchy屬性都可以是一個(gè)PolygonHierarchy對象,
    //也可以是一個(gè)Cartesian3數(shù)組,用于描述多邊形中的子多邊形或洞穴。
    // PolygonHierarchy的實(shí)例通過遞歸嵌套包含多個(gè)PolygonHierarchy對象,
    // 形成了一個(gè)多層次的層級結(jié)構(gòu),每一層代表一個(gè)多邊形的封閉區(qū)域和其內(nèi)部的所有子多邊形或洞穴。
    // Cesium在渲染顯示多邊形時(shí)會(huì)利用這些層級信息來正確計(jì)算多邊形的表面法向量,
    // 進(jìn)而展現(xiàn)出多邊形的正確的立體效果。
    polygonHierarchy: new Cesium.PolygonHierarchy(
      Cesium.Cartesian3.fromDegreesArray([
        -72.0, 40.0, -70.0, 35.0, -75.0, 30.0, -70.0, 30.0, -68.0, 40.0,
      ])
    ),
  });
  console.log("ge==>" + ge);
  // 創(chuàng)建實(shí)例
  var instance = new Cesium.GeometryInstance({
    geometry: ge,
    id: "polygon",
    //GeometryInstance中的attributes是一個(gè)鍵值對對象
    // 用來存儲(chǔ)用于渲染該GeometryInstance實(shí)例的各種屬性
    // 如顏色、透明度、法向量等信息。
    attributes: {
      color: Cesium.ColorGeometryInstanceAttribute.fromColor(
        Cesium.Color.YELLOW
      ),
    }, // 輸入樣式的鍵值對的字典
    show: true,
  });
  console.log("instance==>" + instance);

  //primitive的樣式字段
  primitiveCollection1.add(
    new Cesium.Primitive({
      geometryInstances: instance,
      //Cesium中的PolylineColorAppearance是一種primitive的外觀(Appearance
      //用于渲染顏色漸變的線段,和PolylineMaterialAppearance一樣
      //用戶既可以對Cesium自帶的ColorMaterial進(jìn)行使用
      //也可以自定義material達(dá)到自己的效果。
      appearance: new Cesium.MaterialAppearance({
        material: new Cesium.Material({
          // 這是在使用自制的材質(zhì)
          //在Cesium中,當(dāng)我們需要制定一個(gè)自定義的Material對象需要使用fabric庫來解析紋理圖像,
          // 因?yàn)閒abric庫封裝的是瀏覽器支持的所有類型的位圖格式。
          fabric: {
            // 我們創(chuàng)建了一個(gè)材質(zhì)對象,使用fabric庫來實(shí)現(xiàn)顏色紋理,fabric的type屬性指定為“Color”,uniforms表示添加屬性,
            // 使用顏色變量來設(shè)置屬性的值,以制定顏色紋理的樣式和屬性。
            type: "Image",
            uniforms: {
              image: "../img/3.jpg",
              repeat: new Cesium.Cartesian2(10, 10),
            },
          },
        }),
      }),
    })
  );

到了這里,關(guān)于cesium-2-entity(包含gltf創(chuàng)建)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Cesium學(xué)習(xí)(六)】Cesium加載3D模型(3D tiles和glTF模型)

    【Cesium學(xué)習(xí)(六)】Cesium加載3D模型(3D tiles和glTF模型)

    前面我們學(xué)習(xí)到了繪制基本的形狀,但是Cesium還可以加載3D模型,因?yàn)橄窀叩碌貓D這種的技術(shù)來加載大型復(fù)雜的建筑模型性能不加,所有只能想Cesium這種專門做3D地圖的技術(shù)。接下來就學(xué)習(xí)一下如何加載模型。 Cesium目前支持兩種模型方案,一個(gè)是使用3D tiles, 另一個(gè)是加載g

    2024年02月07日
    瀏覽(26)
  • Cesium 實(shí)戰(zhàn) - 使用 gltf-vscode 查看、預(yù)覽以及編輯 glTF 和 GLB 模型

    模型渲染作為 Cesium 一個(gè)非常重要的功能,目前 只支持 glTF 和 GLB 兩種格式,其實(shí)是一種格式 ,GLB 是 glTF 的二進(jìn)制形式。 在實(shí)際項(xiàng)目中,由于對模型的操作,可能會(huì)需要查看模型的屬性。之前一直使用 blender 來查看、調(diào)整以及轉(zhuǎn)換等操作。模型轉(zhuǎn)換詳見:Cesium 三維模型使用

    2024年02月11日
    瀏覽(74)
  • cesium-2-entity

    cesium-2-entity

    viewer -- datasources(DataSourceCollection類型) -- datasource -- entities(EntityCollection類型) -- entity 需要學(xué)習(xí)的方向是:只需要注意每個(gè)層與層之間的關(guān)系和entity實(shí)例如何創(chuàng)建即可 增: add(dataSource) → Promise.DataSource 刪:(destroy一般為boolean,指是否需要直接銷毀該datasource) remove(dataSource,

    2024年02月01日
    瀏覽(15)
  • Cesium entity 漸隱漸顯、閃爍

    ?點(diǎn)entity 面entity?

    2024年02月13日
    瀏覽(16)
  • Cesium: Primitive vs Entity

    Cesium: Primitive vs Entity

    Cesium Sandcastle: Variety of available entities 更高級別的 數(shù)據(jù)驅(qū)動(dòng) API ,它使用一致性設(shè)計(jì)的、高級別對象來管理一組相關(guān)性的可視化對象,其底層也是使用的 primitive 。 多個(gè)類型的實(shí)體可以結(jié)合使用(如 billboard + label),但同一種實(shí)體不能存在多個(gè)(如多個(gè) billboard 只能分別創(chuàng)建

    2023年04月10日
    瀏覽(12)
  • Cesium-源碼修改-gltf增加紋理貼圖改變3dtiles外觀

    Cesium-源碼修改-gltf增加紋理貼圖改變3dtiles外觀

    ? ? ? ? Cesium支持加載gltf和3dtiles等三維數(shù)據(jù)模型,實(shí)現(xiàn)了很好的封裝,往往只需要給一個(gè)uri就能加載模型文件,并實(shí)現(xiàn)貼圖渲染等。但是好的封裝帶來的問題是如果開發(fā)者想要自定義貼圖,那該怎么辦?不得不從源碼入手。 ? ? ? ? 這篇文章的價(jià)值不僅僅是gltf增加紋理貼圖

    2024年02月06日
    瀏覽(20)
  • Cesium Entity、dataSource添加與刪除

    在Cesium中,要添加和刪除實(shí)體和數(shù)據(jù)源可以使用以下代碼: 1. 添加實(shí)體

    2024年02月10日
    瀏覽(22)
  • Cesium 問題:加載 gltf 格式的模型之后太小,如何讓相機(jī)視角拉近

    Cesium 問題:加載 gltf 格式的模型之后太小,如何讓相機(jī)視角拉近

    剛加載的模型太小,如何拉近視角放大 在這里有兩種方式進(jìn)行拉近視角, 一種是點(diǎn)擊復(fù)位進(jìn)行視角拉近 一種是剛加載就直接拉近視角

    2024年02月22日
    瀏覽(22)
  • 【瑞模網(wǎng)】Cesium 模型轉(zhuǎn)換(obj max fbx轉(zhuǎn)gltf/3dtiles)

    【瑞模網(wǎng)】Cesium 模型轉(zhuǎn)換(obj max fbx轉(zhuǎn)gltf/3dtiles)

    這三種都是3dmax支持的格式,可以統(tǒng)一將.fbx和.max轉(zhuǎn)化為.obj格式,然后通過obj2gltf轉(zhuǎn)為glb或者gltf,其中g(shù)ltf是比glb的模型要大一點(diǎn);或者通過ceisumlab等工具將.obj處理成3dtiles,當(dāng)然3dtiles是用于大場景居多。 .obj .max .fbx類型的模型轉(zhuǎn)換為gltf/glb,使用obj2gltf 以下舉例講述下.max的處

    2024年02月11日
    瀏覽(83)
  • 數(shù)據(jù)處理(4):4種方式使用3Dmax模型數(shù)據(jù)轉(zhuǎn)cesium Gltf模型

    數(shù)據(jù)處理(4):4種方式使用3Dmax模型數(shù)據(jù)轉(zhuǎn)cesium Gltf模型

    方式一: COLLADAMaxNew插件 轉(zhuǎn)換 下載鏈接: https://www.aliyundrive.com/s/xLXfLggCh9k 提取碼: fs72 環(huán)境準(zhǔn)備,需先安裝max插件COLLADAMaxNew.dle,這是一個(gè)導(dǎo)出插件,可以將模型導(dǎo)出0penCOLLADA(*.DAE)格式文件 將下載得COLLADAMaxNew.dle插件放置3Dmax安裝目錄Plugins下即可,隨后重啟3Dmax即可。 也可以

    2024年02月15日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包