3. 結果
contextcapture(smart3d)生成的傾斜攝影模型資料一般都形如如下組織結構:
在data目錄下包含了分塊的瓦片資料,每個瓦片都是乙個lod資料夾。osg能夠直接讀取osgb格式,理論上只需要依次載入每個lod的金字塔層級最高的osgb,整個傾斜攝影模型資料就載入進來了。不過有點麻煩的是這類資料缺乏乙個整體載入的入口,如果每次載入都遍歷整個資料夾載入的話,會影響載入的效率。所以一般的資料檢視軟體都會為其增加乙個索引。
這裡就給傾斜攝影資料新增乙個osgb格式的索引檔案,生成後就可以通過osg直接載入整個傾斜攝影模型資料。
具體的實現**如下:
#include
#include
#include
#include
#include
#include
using
namespace std;
//查詢目錄下所有的資料夾
static
void
finddir
(string dir, vector
& subdirs)
if(fileinfo.
isdir()
)}}//得到檔案路徑的檔名 c:\\b\\a(.txt) -> a
static std::string dirorpathgetname
(std::string filepath)
size_t p = filepath.
find_last_of
('.');
if(p != string::npos && p > m)
//沒有點號或者
std::string dirpath = filepath;
dirpath.
erase(0
, m +1)
;return dirpath;
}void
createobliqueindexes
(std::string filedir)
std::string outputlodfile = filedir +
"/data.osgb"
; osgdb::
writenodefile
(*group, outputlodfile);}
intmain
(int argc,
char
*ar**)
如果直接讀取每一塊的lod然後通過osgdb::writenodefile寫入到乙個osgb檔案,這個檔案就會儲存所有塊的lod第一層資訊。這樣在第二冊載入的時候還是會比較慢,所以這裡就建立了乙個空的節點,形成了索引所有lod塊的資料結構。對於每一塊資料,新建兩層lod,第一層為自身的空白節點,第二層為分塊lod的第一層資料:
osg::ref_ptr<:node> node = osgdb::
readnodefile
(path)
;osg::ref_ptr<:pagedlod> lod =
new osg::
pagedlod()
;auto bs = node-
>
getbound()
;auto c = bs.
center()
;auto r = bs.
radius()
;lod-
>
setcenter
(c);
lod-
>
setradius
(r);
lod-
>
setrangemode
(osg::lod::rangemode::pixel_size_on_screen)
;osg::ref_ptr<:geode> geode =
new osg::geode;
geode-
>
getorcreatestateset()
;lod-
>
addchild
(geode.
get())
;std::string relativefilepath =
"./data/"
+ name +
"/"+ name +
".osgb"
;//相對路徑
lod-
>
setfilename(0
,"");
lod-
>
setfilename(1
, relativefilepath)
;lod-
>
setrange(0
,0,1.0);
//第一層不可見
lod-
>
setrange(1
,1.0
, flt_max)
;lod-
>
setdatabasepath(""
);group-
>
addchild
(lod)
;
lod的center和radius都非常重要,需要預先設定好;setrangemode設定了細節層級排程的模式,一般都為pixel_size_on_screen;setfilename設定了每一層的資料路徑,setrange確定了當前層級的範圍。由於這個lod只是個索引檔案,所以會設定第二層為極大的可見範圍值。
可以像載入普通osgb檔案一樣載入這個索引檔案,通過os**iewer載入的效果如下:
Unity載入傾斜攝影模型 雷射點雲,開源
重大更新 現已支援webgl 業餘時間嘗試了下用unity載入傾斜攝影模型 雷射點雲,目前支援bentley contextcapture生成的3mx格式 原始碼見 本專案只進行了unity載入傾斜攝影模型 雷射點雲的原理性驗證,還有很大優化空間,fps不是很穩定 本人進行此項工作的目的是希望實現一...
對OSGB傾斜攝影資料進行範圍裁剪
在osgb生產完成後,可能想要裁剪模型,只要其中的一部分模型資料,或者把場景邊緣不太好的地方裁剪掉,osgblab能夠完美的對osgb傾斜攝影資料進行裁剪。osgblab支援的裁剪多邊形檔案有以下三種 其中txt文字中,每一行表示乙個多邊形的頂點,以英文逗號分割,如下所示 1233,2444 120...
傾斜攝影行業背景知識介紹
今天跟大家聊一下傾斜攝影的行業背景知識。概念和原理就不講了,聽得太多了。首先我們來聊一下傾斜攝影的行業發展,大概了解一下,出去跑客戶的時候也是談資嘛。整個行業的發展差不多有十來年的發展歷史吧 國外代表性的有蘋果公司收購c3公司採用的自動建模技術,天寶公司的aos系統 徠卡推出rcd30,再到bent...