⑴ 3mx跟osgb的區別
功能不同。
osgb是一種二進制存儲,帶有嵌入式鏈接紋理數據的傾斜攝影三維數據格式。此類數據文件碎,數量多,高級別金字塔文件大,難以實現不同地域,不同部門之間的數據共享。3mx時文件的類型。
⑵ 傾斜攝影文件osgb格式,如何轉換為obj 或者3ds 或者其它3d模型常見的格式
osgb格式是無人機飛行獲取的數據,可以直接使用Smart3D打開,也可以用SuperMap桌面版,或者在自己電腦上配置好osg環境後,用命令osgviewer 文件名打開。
⑶ osgb格式哪些軟體支持
此類數據文件碎、數量多、高級別金字塔文件大等特點難以形成高效、標準的網路發布方案,從而無法實現不同地域、不同部門之間數據共享。
_殼笆忻嬪仙那閾蹦P停繞_mart3D處理的傾斜攝影三維模型數據的組織方式一般是二進制存貯的、帶有嵌入式鏈接紋理數據(.jpg)的OSGB格式。Open Scene Gragh Binary是OSGB的全稱,這里的Binary是二進制的意思。
⑷ contextcapture生成的三維模型怎麼導入cass3d需要什麼格式
contextcapture生成的三維建模可以先導入osgb,在勾選《層》下面的《三角紋理》在勾選《三角紋理》下面的《Meshsimplified_3d》右鍵點擊《Meshsimplified_3d》,重新組織OSGB文件存放方式並編輯元數據metadata.xml文件,然後再CASS_3D中載入,最後導入cass3d就可以了
⑸ OSGB模型可用什麼軟體瀏覽
OSGB模型可通過SuperMap iDesktop工具,載入模型數據索引文件(*.scp)的方式,直接載入OSGB原始數據,無需數據轉換。
OSGB全稱為Open Scene Gragh Binary,是開源三維渲染引擎OpenSceneGraph(OSG)數據文件格式的二進制版本,同時也是目前傾斜攝影模型(尤其是使用CC處理的模型)常用的存儲格式。
⑹ 如何在Web上直接瀏覽大規模OSGB格式傾斜模型(二):轉換OSGB
歡迎關注公號【 三維網格3D 】,第一時間獲取最新文章
上一篇( 如何在Web上直接瀏覽大規模OSGB格式傾斜模型(一):解析OSGB )已經貼出了解析結果,讓我們對OSGB傾斜模型文件內部結構有了比較清晰的認識,本篇我們將解析結果轉成three.js對象,並實現單個模型的顯示。
為什麼轉成three.js對象
從解析結果看,Osg對象的節點關系用three.js對象表達更容易,轉換結果可以直接用three.js顯示,通過我們團隊的Cesium和three.js融合方案,可以輕松將成果用於Cesium開發的項目,既可以單獨使用,又可以擁有GIS能力。
需要轉換的Osg類型
解析得到的Osg對象,Type屬性指示對象的類型,我們只是要轉換傾斜攝影模型文件的Osg對象,而不是做一個通用的轉換工具,所以先將類型做一下分類,只轉換目前所用測試數據(100多G的測試數據)已知的類型。
PS:我們團隊內部使用的版本,經過一年多的應用和改進,支持了更多類型的轉換,填了許多坑,而且支持osgb、osgt、osg、osgjs四種格式文件,載入速度和健壯性都得到保障。歡迎咨詢~
節點類
osg::Node
osg::Geode
osg::Group
osg::LOD
osg::PagedLOD
osg::MatrixTransform
幾何類
osg::Geometry
osg::OsgArray
材質類
osg::StateSet
osg::Material
osg::StateAttribute
osg::Texture
osg::Texture2D
osg::Image
節點類主要考慮osg::MatrixTransform,因為這個節點主要的信息就是變換參數,會影響模型的位置、旋轉、縮放等。
接下來我們著重介紹轉換幾何和材質這兩類,LOD和PagedLOD參數不多,而且都是調度相關的,我們放在下一篇一起介紹。
轉換幾何對象
幾何數據存儲在Osg::Geometry,包含索引屬性PrimitiveSetList、位置坐標屬性VertexArray、紋理坐標屬性TexCoordArray。我們將其轉換為THREE.BufferGeometry。
varbufferGeometry=newTHREE.BufferGeometry();
頂點屬性轉換
頂點屬性值是一個二維數組,我們直接調用flat方法,轉為一維數組即可。
varpositions=newFloat32Array(osgGeometry.VertexArray.flat());
varuvs=newFloat32Array(osgGeometry.TexCoordArray.flat());
bufferGeometry.setAttribute('position',newTHREE.BufferAttribute(positions,3));
bufferGeometry.setAttribute('uv',newTHREE.BufferAttribute(uvs,2));
索引轉換
索引類型有兩種,有value指定,這里我們只對索引類型為4的情況(即繪圖最小單元為四邊形)進行特殊處理,其餘的默認最小繪制單元為三角形。
varprimitiveSet=osgGeometry.PrimitiveSetList[0]
varindices=primitiveSet.data;
if(primitiveSet.value==4) {
letnewIndices=[];
for(leti=0; i<indices.length; i+=4) {
leti0=indices[i],
i1=indices[i+1],
i2=indices[i+2],
i3=indices[i+3];
newIndices.push(
i0, i1, i3,
i1, i2, i3
);
}
indices=newIndices;
}
bufferGeometry.setIndex(indices);
轉換材質對象
傾斜攝影模型的材質最重要的就是貼圖,作為原理介紹,我們不處理其他材質參數,直取貼圖即可,當然工程應用上我們還是需要處理一些情況,保證其可用、可靠、健壯。
材質對象存儲在Osg::Geometry的StateSet屬性,該屬性類型為Osg::StateSet,而我們要的貼圖存儲在Osg::StateSet的TextureAttributeList屬性,一般就一張圖。
傾斜模型已經包含了光影信息,為此我們將材質轉為THREE.MeshBasicMaterial。
varmaterial=newTHREE.MeshBasicMaterial({
side:THREE.DoubleSide
});
處理貼圖
貼圖一般是jpg或者png格式,我們這里只處理這兩種格式。需要注意的是圖片數據為Uint8Array類型,我們需要先轉為Blob,然後通過URL.createObjectURL創建url,最後使用THREE.TextureLoader載入。
varosgStateSet=osgGeometry.StateSet;
varosgImage=osgStateSet.TextureAttributeList[0].value.StateAttribute.Image
varfileName=osgImage.Name;
constisJPEG=fileName.search(/\.jpe?g($|\?)/i)>0
constisPNG=fileName.search(/\.png($|\?)/i)>0
if(!isPNG&&!isJPEG)return;
varmimeType=isPNG?'image/png':'image/jpeg';
varimageUri=newBlob([osgImage.Data], { type:mimeType });
imageUri=URL.createObjectURL(imageUri)
vartexture=newTHREE.TextureLoader().load(imageUri, ()=>{
texture.needsUpdate=true
})
創建網格
最後,使用轉換好的幾何體和材質創建模型網格。這里要注意,傾斜攝影模型是z軸朝上(z-up),而three.js渲染是y軸朝上(y-up),所以還需將網格繞x軸旋轉y-90°才得到正常的渲染效果。
varmesh=newTHREE.Mesh(geometry, material);
mesh.rotation.x=-Math.PI/2
轉換結果
顯示效果
額,看起來並沒有那麼好看~畢竟這是單個瓦片最不清晰的那層,簡化到不能看了。
下一篇,我們將主要介紹如果實現PagedLOD,來載入大規模傾斜攝影模型,敬請期待
歡迎關注公號【 三維網格3D 】,第一時間獲取最新文章
⑺ 三維實景文件OSGB文件用什麼軟體可以編輯
osgb文件應該不能直接編輯,需換成其他數據合適比如 obj才能編輯,歡迎採納。
⑻ 我手上有osgb格式的傾斜攝影文件,如何打開進行瀏覽
1、首先打開LocaSpace Viewer軟體,進入到應用程序的首頁中。
⑼ osgb模型需要什麼軟體打開
osgb文件是地圖的緩存文件
要打開這個文件的話,可以用MapInfo這款軟體
打開軟體,選擇要打開的那個文件,就可以了
⑽ osgb格式是一個什麼文件,它是用什麼軟體打開的
osgb文件是地圖緩存文件。用MapInfo這款軟體可以打開