supermap iDesktop 處理數(shù)據(jù)集及生成場景緩存

使用 supermap 可以實現(xiàn)網(wǎng)頁對三維場景數(shù)據(jù)的渲染,但是我們拿到數(shù)據(jù)時,一般不能直接應(yīng)用,需要對數(shù)據(jù)進行數(shù)據(jù)源處理、三維模型數(shù)據(jù)轉(zhuǎn)二維面數(shù)據(jù)、BIM 簡化、移除重復(fù)點、生成場景緩存等操作,對數(shù)據(jù)進行優(yōu)化或轉(zhuǎn)化以便于后續(xù)的渲染。

一些相關(guān)視頻資料

SuperMap iClient3D for WebGL開發(fā)準(zhǔn)備:http://support.supermap.com.cn/product/VedioPlay.aspx?id=189

三維性能優(yōu)化方法與策略:http://support.supermap.com.cn/product/VedioPlay.aspx?id=289


注:以下操作均基于SuperMap iDesktop 9D(.NET)版,不同版本菜單及界面稍有不同。

一、數(shù)據(jù)源處理

1、點擊菜單欄 【開始】→【打開】→【數(shù)據(jù)源】→選擇數(shù)據(jù)源文件(UDB格式)

2、數(shù)據(jù)集類型轉(zhuǎn)換:CAD 數(shù)據(jù)集轉(zhuǎn)換為簡單數(shù)據(jù)集或模型數(shù)據(jù)集,轉(zhuǎn)換為這2種格式后面才能正常生成場景緩存。如果數(shù)據(jù)集本身已經(jīng)是簡單數(shù)據(jù)集或模型數(shù)據(jù)集,可跳過這一步。

左鍵選中需要轉(zhuǎn)換的數(shù)據(jù)集→點擊菜單欄【數(shù)據(jù)】→【類型轉(zhuǎn)換】→選擇【CAD->簡單】或【CAD->模型】

類型轉(zhuǎn)換菜單界面

如果選擇轉(zhuǎn)換為簡單數(shù)據(jù)源,將彈出以下界面,選擇需要轉(zhuǎn)換的源數(shù)據(jù)(包括數(shù)據(jù)源及數(shù)據(jù)集),點擊轉(zhuǎn)換即可。

CAD數(shù)據(jù)集轉(zhuǎn)換為簡單數(shù)據(jù)集

如果選擇轉(zhuǎn)換為模型數(shù)據(jù)集,將彈出以下界面,直接點擊轉(zhuǎn)換即可(如果這個界面沒有顯示數(shù)據(jù),需點擊添加源數(shù)據(jù)按鈕手動添加數(shù)據(jù),因為supermap會默認(rèn)轉(zhuǎn)換當(dāng)前選中的數(shù)據(jù)集,如果點擊類型轉(zhuǎn)換前沒有選中數(shù)據(jù)集將會出現(xiàn)界面無數(shù)據(jù)的情況)。

CAD數(shù)據(jù)集轉(zhuǎn)換為模型數(shù)據(jù)集

轉(zhuǎn)換成功后的數(shù)據(jù)集(這個步驟耗時會比較長,需要耐心等,這里我選擇轉(zhuǎn)換成模型數(shù)據(jù)集)

轉(zhuǎn)換成功的模型數(shù)據(jù)集

二、數(shù)據(jù)優(yōu)化(含 BIM 簡化、移除重復(fù)點等)

當(dāng)需要加載的數(shù)據(jù)非常大時,即使配置的獨顯再好,也難免出現(xiàn)卡頓掉幀現(xiàn)象。為了提高渲染速度,優(yōu)化渲染幀率,可進行BIM簡化、移除重復(fù)點等操作。

1、添加數(shù)據(jù)集到球面場景中

點擊工作空間管理器中的【場景】→【新建球面場景】→將上一步轉(zhuǎn)換成功的簡單或模型數(shù)據(jù)集拖入新建的球面場景中

新建球面場景操作界面

2、BIM簡化

菜單欄點擊【對象操作】→【BIM模型】→點擊【BIM簡化】

BIM簡化菜單

在彈出來的BIM簡化菜單中,可以選擇是對選中對象還是所有對象進行BIM簡化操作,同時根據(jù)需求設(shè)定簡化率,簡化率越高,簡化后的模型越粗糙,加載速度越快(模型是由許多三角面組成的,三角面數(shù)越多,模型越精細(xì),BIM簡化其實是過濾三角面數(shù)的一個過程,所以簡化后的模型會比原始模型粗糙,對模型精細(xì)度有高要求的建議不要進行這步操作)。

拖動簡化信息下的簡化率后會自動開始BIM簡化,完成后點擊保存。可以查看場景中簡化前及簡化后的幀率信息,可以明顯看到平均幀率提升了,三角面數(shù)量也減少了。

模型簡化前幀率信息
模型簡化后幀率信息

幀率信息在場景的左下方可以看到,一般默認(rèn)都是未開啟的,開啟步驟:場景中右鍵→點擊【屬性】→彈出的場景屬性面板中勾選【幀率信息】

場景屬性面板

3、移除重復(fù)點

重新新建一個球面場景,將上面進行了BIM簡化的數(shù)據(jù)集拖到新建的球面場景中。

點擊菜單欄【BIM模型】→【移除重復(fù)點】

移除重復(fù)點菜單

在彈出的移除重復(fù)點界面中,可選擇移除的范圍(所有對象或選中對象)和進行參數(shù)設(shè)置,設(shè)置完畢后點擊另存即可。進行移除重復(fù)點主要是移除一些重復(fù)的模型數(shù)據(jù),例如場景中有許多相同的車子模型,他們除了空間位置信息外,其它的模型數(shù)據(jù)都相同,那么實際上只需要保存一份模型數(shù)據(jù),然后在不同位置多次繪制即可。

移除重復(fù)點菜單

輸出窗口信息,成功移除重復(fù)點134個。

場景輸出窗口信息

三、三維模型數(shù)據(jù)轉(zhuǎn)二維面數(shù)據(jù)

如果項目中有查看二維平面圖或?qū)崿F(xiàn)二三維地圖聯(lián)動效果的需求,就需要把三維模型數(shù)據(jù)集轉(zhuǎn)換為二維面數(shù)據(jù),進而轉(zhuǎn)換為二維平面地圖。如果項目不涉及到二維數(shù)據(jù)可跳過這一步。

1、生成二維面數(shù)據(jù)

左鍵選中要轉(zhuǎn)換的三維模型數(shù)據(jù)集→點擊菜單欄【數(shù)據(jù)】→【類型轉(zhuǎn)換】→【模型->二維面】

類型轉(zhuǎn)換菜單

在彈出的模型數(shù)據(jù)->二維面數(shù)據(jù)菜單中,選擇要轉(zhuǎn)換的模型數(shù)據(jù)集,點擊轉(zhuǎn)換即可,轉(zhuǎn)換需要比較長的時間,具體視電腦配置及數(shù)據(jù)集數(shù)據(jù)大小而定。

生成二維面數(shù)據(jù)集后,雙擊數(shù)據(jù)集打開如下

2、編輯二維面數(shù)據(jù)

默認(rèn)生成的二維數(shù)據(jù)集是不允許編輯的,如果要對數(shù)據(jù)集進行刪除、移動等操作,點擊菜單欄【地圖】→【圖層屬性】

圖層屬性菜單

在彈出的圖層屬性界面中,勾選【編輯】,就可以在主窗口中對二維面數(shù)據(jù)進行刪除、移動等操作了。

圖層屬性界面

3、保存為地圖

二維數(shù)據(jù)需以地圖形式進行數(shù)據(jù)發(fā)布,直接在主窗口中右鍵→點擊【保存地圖】即可

保存為地圖

四、生成場景緩存

當(dāng)所有的數(shù)據(jù)處理完畢后,需要對處理好的數(shù)據(jù)進行生成場景緩存操作,如果不生成場景緩存,對于如此大的數(shù)據(jù)量,瀏覽器直接加載很容易導(dǎo)致卡頓甚至奔潰,加載速度也不理想。

選中最終處理后的數(shù)據(jù)集→右鍵→生成場景緩存

生成場景緩存菜單

在彈出的生成場景緩存界面中,緩存類型選擇OSGB,文件類型選擇S3M,瓦片邊長、LOD層數(shù)、LOD層級對應(yīng)的網(wǎng)格簡化率可以使用默認(rèn)值,如果項目需要也可以根據(jù)需求更改,設(shè)置完畢后點擊生成。

生成場景緩存設(shè)置

參數(shù)簡單介紹

1、瓦片邊長:生成場景緩存時要對整個三維場景進行瓦片切分,當(dāng)瓦片所在的位置出現(xiàn)在視圖內(nèi)時才對其進行加載,使用這種方法可以加快初始渲染,減少等待時間。瓦片邊長越大,所加載瓦片的數(shù)據(jù)量越大,但相應(yīng)也會減少總的網(wǎng)絡(luò)請求數(shù),所以瓦片邊長這個參數(shù)如果沒有特殊情況最好選擇默認(rèn)值(supermap會計算出兼容加載速度和網(wǎng)絡(luò)請求數(shù)量的瓦片邊長做為默認(rèn)值)

2、LOD層數(shù):LOD(Level-of-Detail)是一種渲染加速技術(shù),當(dāng)我們將三維場景縮小看時,只會關(guān)注到三維模型的輪廓,而對其模型細(xì)節(jié)的顯示要求不高,當(dāng)我們放大場景時,才會關(guān)注到模型的細(xì)節(jié),對模型的精細(xì)度有較高要求?;谶@種實際需求,supermap提供了LOD層級設(shè)置,默認(rèn)分為5層,其中0層是精細(xì)層,LOD層級越大,對模型的精細(xì)度要求越低。

3、網(wǎng)格簡化率:網(wǎng)格簡化率是對模型細(xì)節(jié)按照百分比進行簡化,簡化率越大,模型越粗糙。如果沒有特殊需求,建議按照supermap提供的默認(rèn)參數(shù)設(shè)置,需要自己設(shè)置的話,建議0層簡化率應(yīng)低于50%,保證在最精細(xì)層模型能達到較好的顯示效果。

生成的場景緩存數(shù)據(jù)會默認(rèn)保存到當(dāng)前工作空間所在的目錄

場景緩存文件夾

至此,supermap iDesktop 處理數(shù)據(jù)和生成場景緩存的所有步驟就結(jié)束了,接下來只需要把這些數(shù)據(jù)發(fā)布到服務(wù)器即可。生成的數(shù)據(jù)如何發(fā)布詳見寫的另一篇文章:supermap iServer 發(fā)布地圖及數(shù)據(jù)服務(wù)

五、前端加載場景緩存

<div id="map3d" style="display: none;"></div>

<script type="text/javascript">

function onload(Cesium) {

? ??var viewer = new Cesium.Viewer('map3d');? ? ? ?// 生成的 Cesium 實例放在 id 為 map3d 的 div 中

? ??var scene = viewer.scene;

? ? try {

? ? ? ? ? var promise = scene.open('xxx');? ? ? ?// xxx 為 iserver 中場景緩存的地址(目錄到 realspace 這一級)

? ? ? ? ? Cesium.when(promise, function(sceneResult) {

? ? ? ? ? ? scene.camera.setView({

? ? ? ? ? ? ? // 設(shè)置場景加載完后相機定位的經(jīng)緯度

? ? ? ? ? ? ? destination: Cesium.Cartesian3.fromDegrees(

? ? ? ? ? ? ? ? '填寫經(jīng)度',? ? ?

? ? ? ? ? ? ? ? '填寫緯度',

? ? ? ? ? ? ? ? '填寫高度'

? ? ? ? ? ? ? ),

? ? ? ? ? ? });

? ? } catch (e) {

? ? ? ? console.log(e);

? ? }

}

</script>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 大家都知道Cesium加載的三維模型緩存格式是3DTiles,超圖在SuperMap iClient3D for ...
    為夢齊舞閱讀 4,424評論 0 2
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,694評論 1 32
  • 高山流水,珠落玉盤。水帶麻山春,杯含清凈影。 一粒粟中藏世界,半升鐺中煮山河。 寂寂麻山墓,憑吊幾多人。瀟瀟雨,斜...
    jingtu閱讀 474評論 0 0
  • 動物可能會因為看到某種顏色的羽毛而變得具有攻擊性或聽到某種叫聲就對自己的天敵客戶有加動物,這種愚蠢可笑的機械反應(yīng)在...
    遇見徐徐閱讀 297評論 0 0
  • 金發(fā)時髦的女人,瀟灑隨意的裝束,昂頭挺胸的狀態(tài),只是將這些盒子攬到自己身上,望向遠(yuǎn)方。 職業(yè)裝,渺小的身子,努力托...
    職場哈哈鏡閱讀 221評論 0 0

友情鏈接更多精彩內(nèi)容