亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種將DGN模型轉化成輕量模型的方法與流程

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

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



背景技術:

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



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

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

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

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

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

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

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

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

s6,模型面片化處理;

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

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

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

s51,判斷dsc中的模型是否為點、線段獨立元素,若是則無需處理,若不是,進行以下步驟;

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

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

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

s55,獲取tempdsc中模型類型,然后跳轉到s52,進行遞歸處理;

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

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

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

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

然后,對于只包含一個平面或曲面即無須“爆炸”的幾何體可直接面片化得到其數(shù)據(jù);對于可“爆炸”成多個平面或曲面的幾何體或者平面、曲面則先進行“爆炸”,獲取每個平面或曲面的面片化數(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)有技術相比,本發(fā)明具有以下有益效果:

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

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

附圖說明

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

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

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

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

具體實施方式

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

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

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

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

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

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

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

s6,模型面片化處理;

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

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

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

s51,判斷dsc中的模型是否為點、線段獨立元素,若是則無需處理,若不是,進行以下步驟;

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

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

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

s55,獲取tempdsc中模型類型,然后跳轉到s52,進行遞歸處理;

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

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

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

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

然后,對于只包含一個平面或曲面即無須“爆炸”的幾何體可直接面片化得到其數(shù)據(jù);對于可“爆炸”成多個平面或曲面的幾何體或者平面、曲面則先進行“爆炸”,獲取每個平面或曲面的面片化數(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文件對應的輕量化模型文件的結構樹:第1層為文件層級,一個dgn文件對應一個輕量化文件;第2層為編碼層級即linkage層級,模型的顏色、材質等屬性信息位于該層級,在三維軟件中能對該層級的某個幾何體進行平移、旋轉等單獨操作;第3層為模型描述算子層級,若模型描述算子無子描述算子,則該層級只有一個幾何體,若有子描述算子則可能是多個該層級的結合體組成一個編碼級別的幾何模型;第4層級為最底層,描述的是“爆炸”后的曲面數(shù)據(jù),不過由于“爆炸”后的曲面進行了合并在輕量化文件中體現(xiàn)不出這一層。

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

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

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

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

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

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

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1