欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種將DGN模型轉(zhuǎn)化成輕量模型的方法與流程

文檔序號:12802870閱讀:2913來源:國知局
一種將DGN模型轉(zhuǎn)化成輕量模型的方法與流程

本發(fā)明涉及虛擬仿真領(lǐng)域,具體涉及一種將dgn模型轉(zhuǎn)化成輕量模型的方法。



背景技術(shù):

dgn文件是一種在工程設(shè)計領(lǐng)域應(yīng)用非常廣泛的三維模型文件格式,dgn文件中不僅包含模型的幾何信息還有編碼、顏色、材質(zhì)等屬性信息。但是dgn文件并不能被很多三維軟件兼容,無法被它們直接打開,所以用三維軟件打開dgn模型之前需要將dgn文件轉(zhuǎn)化成其它格式。目前利用一些軟件自帶的轉(zhuǎn)換插件雖然能dgn模型轉(zhuǎn)化成面片模型,但是這些插件只使用了一些通用的、簡單的算法對模型整體進(jìn)行面片化,轉(zhuǎn)換出來的模型存在占用內(nèi)存較大;屬性信息丟失;模型是一個整體,三維軟件無法對文件中特定的幾何體進(jìn)行操作。這給對模型的操作如移動、屬性查詢等造成了很大的不便。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明針對現(xiàn)有技術(shù)的不足,提出一種將dgn模型轉(zhuǎn)化成輕量模型的方法。

將dgn模型轉(zhuǎn)化成輕量模型的方法,包括以下步驟:

s1,首先打開dgn文件,若打開成功則創(chuàng)建文本格式的輕量化文件;然后掃描dgn文件中的所有的模型描述算子,將其存入數(shù)組arraya;模型描述算子為mdl中定義的一種描述模型的數(shù)據(jù)結(jié)構(gòu),為雙向鏈表形式,含有模型的幾何信息、屬性信息等;

s2,判斷arraya是否為空;若為空說明dgn文件是空文件,不需要處理;若不為空,進(jìn)行以下步驟;

s3,讀取arraya中的第一個模型描述算子存入dsc;

s4,提取模dsc中編碼信息即linkage;然后獲取dsc中的模型的材質(zhì)、顏 色等屬性信息;

s5,提取dsc中模型的類型;

s6,模型面片化處理;

s7,將數(shù)據(jù)及屬性信息按照wrl文件或者obj文件的格式寫入創(chuàng)建的輕量化文件中;

s8,判斷arraya中是否有模型描述算子未處理,若有,則繼續(xù)從s3開始處理,直至所有模型描述算子處理完畢;若沒有,則結(jié)束。

優(yōu)選地,s5具體包含以下步驟;

s51,判斷dsc中的模型是否為點(diǎn)、線段獨(dú)立元素,若是則無需處理,若不是,進(jìn)行以下步驟;

s52,判斷dsc中模型的類型是否為cell_header_elm,若不是,則可以直接對模型進(jìn)行面片化處理,若是,進(jìn)行以下步驟;

s53,判斷dsc中模型是否為groupedhole或者smartsolid,若是,則可以直接面片化處理,若不是,則說明該模型描述算子含有子模型描述算子(子模型描述算子數(shù)據(jù)結(jié)構(gòu)與模型描述算子相同),則需要通過進(jìn)行以下循環(huán)逐個處理子模型描述算子;

s54,將第一個子模型描述算子賦給tempdsc;

s55,獲取tempdsc中模型類型,然后跳轉(zhuǎn)到s52,進(jìn)行遞歸處理;

s56,將下一個子模型描述子算子賦給tempdsc;

s57,判斷tempdsc是否為空,若為空,則說明已經(jīng)處理完所有子模型描述算子,結(jié)束;若不為空,則跳轉(zhuǎn)到s55繼續(xù)處理。

優(yōu)選地,s6具體包括以下步驟:

首先,平面或曲面的面片化數(shù)據(jù)存儲在兩個數(shù)組中,第一個數(shù)組pointarray存放構(gòu)成曲面的所有點(diǎn)的三維坐標(biāo);第二個數(shù)組indexarray存放構(gòu)成面片的點(diǎn)在pointarray中的索引號,每個面片的索引號之間用數(shù)字“-1”隔開;

然后,對于只包含一個平面或曲面即無須“爆炸”的幾何體可直接面片化得到其數(shù)據(jù);對于可“爆炸”成多個平面或曲面的幾何體或者平面、曲面則先進(jìn)行“爆炸”,獲取每個平面或曲面的面片化數(shù)據(jù),依次存放在indexarray1、pointarray1、indexarray2、pointarray2...indexarrayn、pointarrayn中。然后 拼接成一個平面或曲面,拼接方式為:新建一個數(shù)據(jù)數(shù)組pointarray,大小為pointarray1、pointarray2...pointarrayn中元素數(shù)目之和,將每個子平面或子曲面的數(shù)據(jù)數(shù)組中的元素按順序存放到pointarray中;新建一個索引數(shù)組indexarray,大小為indexarray1、indexarray2...indexarrayn之和,第一個子平面或子曲面索引數(shù)組所有元素原樣依次放入indexarray,第二個子平面或子曲面索引數(shù)組中所有的索引值加上第一個子平面或子曲面數(shù)據(jù)數(shù)組元素個數(shù)后存入新的索引數(shù)組,以此類推將其他子平面或子曲面的索引數(shù)組元素存入新的索引數(shù)組。這樣拼接好的幾何體或平面、曲面的面片化數(shù)據(jù)存放到了兩個數(shù)組pointarray與indexarray中。

與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:

1、本發(fā)明提供的將dgn模型轉(zhuǎn)化成輕量模型的方法,可以實(shí)現(xiàn)將dgn格式的模型轉(zhuǎn)成輕量化模型,輕量化模型中包含了原dgn文件中每個模型的編碼,材質(zhì)、顏色等屬性信息,為其它軟件對模型進(jìn)行操作特別是屬性查詢創(chuàng)造了條件。

2、本發(fā)明提供的將dgn模型轉(zhuǎn)化成輕量模型的方法,能夠?qū)gn文件中的幾何模型進(jìn)行拆解并單獨(dú)輕量化,導(dǎo)出時再重新合并;并能夠?qū)⒚總€幾何體的編碼、材質(zhì)、顏色等屬性取出,然后將其寫入到輕量化模型文件中。通過這個方法轉(zhuǎn)化的輕量化模型包含了原dgn文件中所有幾何體的編號、屬性等信息,為其他三維軟件進(jìn)行查詢、漫游等操作提供支持。

附圖說明

圖1為符合本發(fā)明優(yōu)選實(shí)施例的將dgn模型轉(zhuǎn)化成輕量模型的方法的流程圖。

圖2為符合本發(fā)明優(yōu)選實(shí)施例的將dgn模型轉(zhuǎn)化成輕量模型的方法的s5的流程圖。

圖3為符合本發(fā)明優(yōu)選實(shí)施例的將dgn模型轉(zhuǎn)化成輕量模型的方法的s6的流程圖。

圖4為符合本發(fā)明優(yōu)選實(shí)施例的dgn文件對應(yīng)的輕量化模型文件的結(jié)構(gòu)樹。

具體實(shí)施方式

為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對本發(fā)明作進(jìn)一步詳細(xì)的說明。

如圖1所示,將dgn模型轉(zhuǎn)化成輕量模型的方法,包括以下步驟:

s1,首先打開dgn文件,若打開成功則創(chuàng)建文本格式的輕量化文件;然后掃描dgn文件中的所有的模型描述算子,將其存入數(shù)組arraya;模型描述算子為mdl中定義的一種描述模型的數(shù)據(jù)結(jié)構(gòu),為雙向鏈表形式,含有模型的幾何信息、屬性信息等;

s2,判斷arraya是否為空;若為空說明dgn文件是空文件,不需要處理;若不為空,進(jìn)行以下步驟;

s3,讀取arraya中的第一個模型描述算子存入dsc;

s4,提取模dsc中編碼信息即linkage;然后獲取dsc中的模型的材質(zhì)、顏色等屬性信息;

s5,提取dsc中模型的類型;

s6,模型面片化處理;

s7,將數(shù)據(jù)及屬性信息按照wrl文件或者obj文件的格式寫入創(chuàng)建的輕量化文件中;

s8,判斷arraya中是否有模型描述算子未處理,若有,則繼續(xù)從s3開始處理,直至所有模型描述算子處理完畢;若沒有,則結(jié)束。

如圖2所示,s5具體包含以下步驟;

s51,判斷dsc中的模型是否為點(diǎn)、線段獨(dú)立元素,若是則無需處理,若不是,進(jìn)行以下步驟;

s52,判斷dsc中模型的類型是否為cell_header_elm,若不是,則可以直接對模型進(jìn)行面片化處理,若是,進(jìn)行以下步驟;

s53,判斷dsc中模型是否為groupedhole或者smartsolid,若是,則可以直接面片化處理,若不是,則說明該模型描述算子含有子模型描述算子(子模型描述算子數(shù)據(jù)結(jié)構(gòu)與模型描述算子相同),則需要通過進(jìn)行以下循環(huán)逐個處理子模型描述算子;

s54,將第一個子模型描述算子賦給tempdsc;

s55,獲取tempdsc中模型類型,然后跳轉(zhuǎn)到s52,進(jìn)行遞歸處理;

s56,將下一個子模型描述子算子賦給tempdsc;

s57,判斷tempdsc是否為空,若為空,則說明已經(jīng)處理完所有子模型描述算子,結(jié)束;若不為空,則跳轉(zhuǎn)到s55繼續(xù)處理。

如圖3所示,s6具體包括以下步驟:

首先,平面或曲面的面片化數(shù)據(jù)存儲在兩個數(shù)組中,第一個數(shù)組pointarray存放構(gòu)成曲面的所有點(diǎn)的三維坐標(biāo);第二個數(shù)組indexarray存放構(gòu)成面片的點(diǎn)在pointarray中的索引號,每個面片的索引號之間用數(shù)字“-1”隔開;

然后,對于只包含一個平面或曲面即無須“爆炸”的幾何體可直接面片化得到其數(shù)據(jù);對于可“爆炸”成多個平面或曲面的幾何體或者平面、曲面則先進(jìn)行“爆炸”,獲取每個平面或曲面的面片化數(shù)據(jù),依次存放在indexarray1、pointarray1;indexarray2、pointarray2;...indexarrayn、pointarrayn中。然后拼接成一個平面或曲面,拼接方式為:新建一個數(shù)據(jù)數(shù)組pointarray,大小為pointarray1、pointarray2...pointarrayn中元素數(shù)目之和,將每個子平面或子曲面的數(shù)據(jù)數(shù)組中的元素按順序存放到pointarray中;新建一個索引數(shù)組indexarray,大小為indexarray1、indexarray2...indexarrayn之和,第一個子平面或子曲面索引數(shù)組所有元素原樣依次放入indexarray,第二個子平面或子曲面索引數(shù)組中所有的索引值加上第一個子平面或子曲面數(shù)據(jù)數(shù)組元素個數(shù)后存入新的索引數(shù)組,以此類推將其他子平面或子曲面的索引數(shù)組元素存入新的索引數(shù)組。這樣拼接好的幾何體或平面、曲面的面片化數(shù)據(jù)存放到了兩個數(shù)組pointarray與indexarray中。

如圖4所示為dgn文件對應(yīng)的輕量化模型文件的結(jié)構(gòu)樹:第1層為文件層級,一個dgn文件對應(yīng)一個輕量化文件;第2層為編碼層級即linkage層級,模型的顏色、材質(zhì)等屬性信息位于該層級,在三維軟件中能對該層級的某個幾何體進(jìn)行平移、旋轉(zhuǎn)等單獨(dú)操作;第3層為模型描述算子層級,若模型描述算子無子描述算子,則該層級只有一個幾何體,若有子描述算子則可能是多個該層級的結(jié)合體組成一個編碼級別的幾何模型;第4層級為最底層,描述的是“爆炸”后的曲面數(shù)據(jù),不過由于“爆炸”后的曲面進(jìn)行了合并在輕量化文件中體現(xiàn)不出這一層。

與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:

1、本發(fā)明提供的將dgn模型轉(zhuǎn)化成輕量模型的方法,可以實(shí)現(xiàn)將dgn格式的模型轉(zhuǎn)成輕量化模型,輕量化模型中包含了原dgn文件中每個模型的編碼,材質(zhì)、顏色等屬性信息,為其它軟件對模型進(jìn)行操作特別是屬性查詢創(chuàng)造了條件。

2、本發(fā)明提供的將dgn模型轉(zhuǎn)化成輕量模型的方法,能夠?qū)gn文件中的幾何模型進(jìn)行拆解并單獨(dú)輕量化,導(dǎo)出時再重新合并;并能夠?qū)⒚總€幾何體的編碼、材質(zhì)、顏色等屬性取出,然后將其寫入到輕量化模型文件中。通過這個方法轉(zhuǎn)化的輕量化模型包含了原dgn文件中所有幾何體的編號、屬性等信息,為其他三維軟件進(jìn)行查詢、漫游等操作提供支持。

本說明書中各個實(shí)施例采用遞進(jìn)的方式描述,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個實(shí)施例之間相同相似部分互相參見即可。對于實(shí)施例公開的系統(tǒng)而言,由于與實(shí)施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。

本領(lǐng)域技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。

顯然,本領(lǐng)域的技術(shù)人員可以對發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包括這些改動和變型在內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
铜鼓县| 锡林郭勒盟| 威海市| 友谊县| 方正县| 杭锦旗| 综艺| 石嘴山市| 泰兴市| 阿坝县| 太仓市| 前郭尔| 喀喇| 龙州县| 建德市| 搜索| 左贡县| 滦平县| 龙陵县| 长春市| 文成县| 横山县| 郧西县| 双鸭山市| 东城区| 木里| 扎兰屯市| 虞城县| 年辖:市辖区| 明水县| 汉源县| 新蔡县| 仙游县| 龙游县| 石阡县| 尚志市| 镇康县| 哈巴河县| 中牟县| 四会市| 镇宁|