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

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

這篇具有很好參考價(jià)值的文章主要介紹了【Cesium學(xué)習(xí)(六)】Cesium加載3D模型(3D tiles和glTF模型)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

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

技術(shù)方案

Cesium目前支持兩種模型方案,一個(gè)是使用3D tiles, 另一個(gè)是加載glTF模型,3D tiles是適用于展示大區(qū)域面積的建筑模型,而glTF模型是加載單個(gè)獨(dú)立模型。

實(shí)現(xiàn)

一、3D tiles 實(shí)現(xiàn)

什么是3D tiles

3DTiles數(shù)據(jù)集是cesium小組AnalyticlGraphics與2016年3月定義的一種數(shù)據(jù)集, 3DTiles數(shù)據(jù)集以分塊、分級(jí)渲染,將大數(shù)據(jù)量三維數(shù)據(jù)以分塊,分層的形式組織起來(lái),可以大量減輕瀏覽器和GPU的負(fù)擔(dān)是一個(gè)優(yōu)秀的,并且格式公開(kāi)的數(shù)據(jù)格式。3D Tiles將用于流式傳輸3D內(nèi)容,包括建筑物,樹(shù)木,點(diǎn)云和矢量數(shù)據(jù)。

準(zhǔn)備模型

這里可以使用官網(wǎng)庫(kù)中的模型,也是找一個(gè)tileset.json的網(wǎng)絡(luò)地址模型或者本地地址模型。

代碼實(shí)現(xiàn)
let viewer = new Cesium.Viewer('cesiumContainer')
let tileset; //設(shè)置一個(gè)變量來(lái)存放通過(guò)3DTiles創(chuàng)建的模型
try {
    tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({ url: 'https://invest.zjw.ningbo.gov.cn/BIM/yzddgj/5/tileset.json' }
    viewer.scene.globe.depthTestAgainstTerrain = true;
    tileset.readyPromise.then(function (tileset) {
        let boundingSphere = tileset.boundingSphere; // 模型的范圍
        let cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center); // 從笛卡爾位置創(chuàng)建一個(gè)新的位置實(shí)例(返回的是一個(gè)經(jīng)緯度的)
        let surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0); // 以經(jīng)緯度的值來(lái)返回Cartesian3(xyz)的位置 ,/
        let offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 50); // 以經(jīng)緯度的值來(lái)返回Cartesian3(xyz)的位置 ,//>
        let translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3()); // 計(jì)算兩個(gè)笛卡爾的分量差異。
        tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
        viewer.zoomTo(tileset);
    });
} catch (error) {
    console.log(`Error loading tileset: ${error}`);
}
運(yùn)行

cesium加載3d模型,Cesium,學(xué)習(xí),3d,前端,webgl

二、glTF模型實(shí)現(xiàn)

GLTF代表Graphics Language Transmission Format(圖形語(yǔ)言傳輸格式)。這種跨平臺(tái)格式已成為Web上的3D對(duì)象標(biāo)準(zhǔn)。它由OpenGL和Vulkan背后的3D圖形標(biāo)準(zhǔn)組織Khronos所定義,這使得GLTF基本上成為3D模型的JPG格式:Web導(dǎo)出的通用標(biāo)準(zhǔn)。

準(zhǔn)備模型

在下載的Cesium文件里面,可以找到一個(gè)models文件,里面都是模型
cesium加載3d模型,Cesium,學(xué)習(xí),3d,前端,webgl

代碼實(shí)現(xiàn)

gltf模型有兩種實(shí)現(xiàn)代碼實(shí)現(xiàn),一是使用前面的entity方式來(lái)加載,還有一個(gè)是通過(guò)CZML方式來(lái)加載模型。
一、entity方式

var entity = viewer.entities.add({
    id: 'myEntity',
    position: position, //模型的位置
    orientation: orientation_air,
    model: {
        uri: require('../../public/models/CesiumAir/Cesium_Air.glb'),
        minimumPixelSize: 500,
        maximumScale: 10000,
        show: true,
    },
});
// 讓攝像機(jī)視口快速定位到模型位置
 viewer.trackedEntity = entity;

二、CZML方式

        name: '3DModel',
        version: '1.0',
    },
    {
        id: 'airplane_model',
        name: 'airplane',
        position: {
            cartographicDegrees: [-77, 37, 10000],
        },
        model: {
            gltf: require('../../public/models/CesiumAir/Cesium_Air.glb'),
            scale: 2.0,
            minimumPixelSize: 128,
        },
    },
];
//> 添加模型
const dataSourcePromise = viewer.dataSources.add(Cesium.CzmlDataSource.load(czml));
dataSourcePromise
    .then(function (dataSource) {
        viewer.trackedEntity = dataSource.entities.getById('airplane_model');
    })
    .catch(function (error) {
        console.log(error);
    });
運(yùn)行

cesium加載3d模型,Cesium,學(xué)習(xí),3d,前端,webgl文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-734198.html

到了這里,關(guān)于【Cesium學(xué)習(xí)(六)】Cesium加載3D模型(3D tiles和glTF模型)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • cesium內(nèi)部相同坐標(biāo)在不同高度的2個(gè)點(diǎn)的屬性機(jī)制坐標(biāo)會(huì)gltf模型角度值異常問(wèn)題mars3d的處理辦法

    cesium內(nèi)部相同坐標(biāo)在不同高度的2個(gè)點(diǎn)的屬性機(jī)制坐標(biāo)會(huì)gltf模型角度值異常問(wèn)題mars3d的處理辦法

    模型一直向上運(yùn)動(dòng)的正常效果: 問(wèn)題場(chǎng)景: 1.new mars3d.graphic.ModelPrimitive({使用addDynamicPosition(設(shè)置并添加動(dòng)畫(huà)軌跡位置,按“指定時(shí)間”運(yùn)動(dòng)到達(dá)“指定位置”時(shí)發(fā)現(xiàn),如果是同一個(gè)點(diǎn)位不同高度值的y軸豎直向上方向的運(yùn)動(dòng)。 指定pitch:270偏轉(zhuǎn)角度的時(shí)候,會(huì)出現(xiàn)模型的角度值

    2024年01月18日
    瀏覽(23)
  • 三維GIS開(kāi)發(fā):利用Cesium加載 M3D 地質(zhì)體模型(附代碼)

    三維GIS開(kāi)發(fā):利用Cesium加載 M3D 地質(zhì)體模型(附代碼)

    實(shí)現(xiàn)步驟 Step 1.? 引用開(kāi)發(fā)庫(kù) : 本示例引用 local 本地【include-cesium-local.js】開(kāi)發(fā)庫(kù),完成此步驟后才可調(diào)用三維 WebGL 的功能; Step 2.? 創(chuàng)建布局 : 創(chuàng)建 id=\\\'GlobeView\\\' 的 div 作為三維視圖的容器,并設(shè)置其樣式; Step 3.? 構(gòu)造三維場(chǎng)景控件 : 實(shí)例化 Cesium.WebSceneControl 對(duì)象,完成

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

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

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

    2024年02月22日
    瀏覽(22)
  • Mars3D與mars3d-cesium版本間兼容造成3dtiles和gltf數(shù)據(jù)處理相關(guān)記錄

    Mars3D與mars3d-cesium版本間兼容造成3dtiles和gltf數(shù)據(jù)處理相關(guān)記錄

    說(shuō)明: 1.在引入Mars3D SDK后正??梢栽贔12打印的信息中可以看到Mars3D和Cesium版本信息。 2.在項(xiàng)目的package.json文件中同樣可以看到安裝后的版本號(hào)。 Mars3D對(duì)Cesium版本對(duì)應(yīng)關(guān)系: 1.正常情況下mars3d依賴(lài)的cesium均是最新版本,并且對(duì)cesium版本無(wú)特殊要求,版本間均是兼容的,因?yàn)閏

    2024年02月02日
    瀏覽(30)
  • 前端使用Cesium加載三維模型全攻略

    想象一下,地球在你眼前旋轉(zhuǎn),上面還有各種3D模型,是不是很酷?Cesium是一個(gè)超酷的庫(kù),專(zhuān)門(mén)用來(lái)創(chuàng)建超炫的3D地球和地圖。好,言歸正傳,今天這篇文章就分享一下前端如何使用Cesium加載三維模型。 首先,確保你已經(jīng)安裝了Cesium庫(kù)??梢詮腃esium官網(wǎng)下載最新版本的庫(kù)文件

    2024年04月17日
    瀏覽(96)
  • three.js加載3D模型,在網(wǎng)頁(yè)上展示3D模型(.glb.gltf.fbx格式)

    three.js加載3D模型,在網(wǎng)頁(yè)上展示3D模型(.glb.gltf.fbx格式)

    Three.js是一款開(kāi)源的主流3D繪圖JS引擎,簡(jiǎn)單點(diǎn),可以將它理解為three+js就可以了,three表示3D,js表示JavaScript的意思。 結(jié)構(gòu) ?.glb.gltf文件最好放在服務(wù)器上 放在本地容易報(bào)找不到的錯(cuò)?.fbx格式文件可以在本地用3d看圖(win10自帶)打開(kāi)另存為.glb格式 index.html代碼 js代碼 項(xiàng)目案例

    2024年02月11日
    瀏覽(102)
  • 如何使用 ThreeJs 以 glTF、FBX 和 OBJ 文件格式加載 3D 模型,使用 ThreeJS 加載和顯示帶有紋理的 3D 模型

    在本文中,我展示了如何使用 ThreeJS 在 Web 視圖中加載 3D 模型。Three.js 是一個(gè)跨瀏覽器的 JavaScript 庫(kù)和應(yīng)用程序編程接口,用于使用 WebGL 在 Web 瀏覽器中創(chuàng)建和顯示動(dòng)畫(huà) 3D 計(jì)算機(jī)圖形。加載不完整的原因有很多,例如紋理和材質(zhì)渲染不正確。 創(chuàng)建場(chǎng)景 渲染場(chǎng)景 動(dòng)畫(huà)立方體

    2023年04月08日
    瀏覽(32)
  • DEJA_VU3D - Cesium功能集 之 034-可視域分析(純前端)完整版

    DEJA_VU3D - Cesium功能集 之 034-可視域分析(純前端)完整版

    編寫(xiě)這個(gè)專(zhuān)欄主要目的是對(duì)工作之中基于Cesium實(shí)現(xiàn)過(guò)的功能進(jìn)行整合,有自己琢磨實(shí)現(xiàn)的,也有參考其他大神后整理實(shí)現(xiàn)的,初步算了算現(xiàn)在有實(shí)現(xiàn)130個(gè)左右的功能,后續(xù)也會(huì)不斷的追加,所以暫時(shí)打算一周2-3更的樣子來(lái)更新本專(zhuān)欄(每篇博文都會(huì)奉上完整demo的源代碼,盡可

    2024年02月14日
    瀏覽(85)
  • uniapp通過(guò)renderjs加載3D模型,支持FBX、GLB和GLTF模型,模型可自動(dòng)適應(yīng)。

    n-text-loading是我的自定義loading組件,可以自行替換 id是threeView是模型顯示的位置, props里面的url是模型鏈接,cameraZ是相機(jī)位置,默認(rèn)100,一般不需要改,有些z軸很長(zhǎng)的模型旋轉(zhuǎn)的時(shí)候會(huì)有一部分相機(jī)看不到這個(gè)時(shí)候就需要調(diào)整這個(gè)值了,這兩個(gè)要從后臺(tái)上傳。 :prop=“url”,

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

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

    2024年02月11日
    瀏覽(74)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包