型,首先采用基于交點(diǎn)排序的多邊形裁剪算法實(shí)現(xiàn)二維平面多邊形裁剪,算法采用單指針、單鏈表數(shù)據(jù)結(jié)構(gòu),通過標(biāo)記交點(diǎn)的“入”、“出”性,將構(gòu)成裁剪結(jié)果多邊形的頂點(diǎn)分別插入到鏈表中,基于交點(diǎn)進(jìn)行排序,從而得到裁剪結(jié)果,實(shí)現(xiàn)任意不自相交多邊形的裁剪;
[0040]12)三維拉伸建模:
[0041]三維拉伸建模也稱擠壓建模,為通過步驟11)的二維平面多邊形,利用截面輪廓圖形沿著設(shè)定方向進(jìn)行擠壓拉伸,實(shí)現(xiàn)由二維圖形到三維模型的快速生成;首先,獲取多邊形的信息和及其拉伸操作信息,拉伸操作信息包括拉伸方向和拉伸距離,根據(jù)多邊形信息直接獲得下底底面信息,根據(jù)拉伸方向和拉伸距離獲取上底面信息,最后,生成模型側(cè)面信息,包括外側(cè)面和內(nèi)側(cè)面,由此得到三維模型的幾何信息,用于擠壓建模;
[0042]獲取三維模型的幾何信息后,對(duì)模型的各面進(jìn)行紋理鋪設(shè),使其擬合成所需要的三維造型,紋理包括光照紋理和貼圖紋理,光照紋理由場(chǎng)景中的各光源共同獲取得,貼圖紋理為人為設(shè)置;
[0043]13)模型組合:
[0044]步驟12)是將單個(gè)三維模型進(jìn)行生成,步驟13)是將步驟12)生成的所有單個(gè)模型進(jìn)行組合的過程,對(duì)于模型組合,遍歷所有的二維平面多邊形,獲取多邊形的信息和及其拉伸操作信息,判斷當(dāng)前多邊形是否進(jìn)行了拉伸,若有拉伸操作,則將該多邊形進(jìn)行三維拉伸建模,保存建好的模型;若沒有進(jìn)行拉伸,則不進(jìn)行建模,直接保存該多邊形信息;然后為建好的模型組合生成紋理坐標(biāo)進(jìn)行紋理鋪設(shè),將鋪設(shè)紋理的模型以及多邊形保存為整個(gè)三維模型的文件信息。
[0045]步驟2)中,保存的操作節(jié)點(diǎn)信息包括:
[0046]直線分割'2個(gè)定位點(diǎn)及操作類型;
[0047]折線分割:n個(gè)定位點(diǎn)及操作類型;
[0048]圓分割:圓心定位點(diǎn)、半徑及操作類型;
[0049]矩形分割'2個(gè)定位點(diǎn)及操作類型;
[0050]內(nèi)外擴(kuò)展:點(diǎn)擊定位點(diǎn)、內(nèi)外擴(kuò)距離及操作類型;
[0051]擠壓拉伸:點(diǎn)擊定位點(diǎn)、上底突出高度、下底突出高度及操作類型;
[0052]替換材質(zhì):點(diǎn)擊定位點(diǎn)、面序號(hào)、紋理文件名、紋理尺寸及操作類型;
[0053]其中,定位點(diǎn)作為操作節(jié)點(diǎn)的基礎(chǔ)信息,保存了各類操作的位置關(guān)系,其信息如下:
[0054]相對(duì)參考點(diǎn)類型:左下點(diǎn),左上點(diǎn),右上點(diǎn),右下點(diǎn),區(qū)域中心點(diǎn);
[0055]相對(duì)參數(shù)信息:X、Y軸方向比例值,X、Y軸方向絕對(duì)距離;
[0056]定位點(diǎn)的參考點(diǎn)默認(rèn)為區(qū)域中心點(diǎn),或區(qū)域外接矩形的4個(gè)頂點(diǎn),根據(jù)整個(gè)模板的構(gòu)建方式來確定,根據(jù)參考點(diǎn)及相對(duì)參考信息得到一個(gè)實(shí)際定位點(diǎn)的二維坐標(biāo)。
[0057]為了加快實(shí)現(xiàn)三維造型的建模,本發(fā)明提出了一種基于模板技術(shù)實(shí)現(xiàn)三維造型生成的方法,將基于多邊形裁剪算法用于三維造型生成,結(jié)合采用擠壓建模,實(shí)現(xiàn)由二維平面輪廓到三維模型的快速生成,然后將得到的目標(biāo)造型制作成模板,在后續(xù)的實(shí)際應(yīng)用中,利用模板快速自動(dòng)生成對(duì)應(yīng)的三維造型。本發(fā)明基于模板方法實(shí)現(xiàn)三維造型的快速建模,設(shè)計(jì)了一種簡(jiǎn)潔有序的模板制作過程,進(jìn)行一步步的編輯操作,通過這一系列有序的編輯操作完成整個(gè)模型的制作,并保存步驟得到建模模板,后續(xù)只需要調(diào)用該模板就可無需編輯實(shí)現(xiàn)對(duì)應(yīng)模型的自動(dòng)建模過程,實(shí)現(xiàn)快速地建模;同時(shí)本發(fā)明方法的二次編輯也十分方便,二次編輯操作是在現(xiàn)有三維造型的基礎(chǔ)上再次進(jìn)行修改或調(diào)整,根據(jù)用戶的需求對(duì)室內(nèi)造型進(jìn)行調(diào)整修改,這個(gè)從使用者的角度來看更加方便,在本發(fā)明方法中,二次編輯不需要很強(qiáng)的專業(yè)知識(shí)的,由于模板保存的是有序操作,因此可以通過程序?qū)崿F(xiàn)對(duì)模板的解析,無需操作人員進(jìn)行解析,解析程序可以預(yù)先編輯好,操作人員只需根據(jù)解析出來的結(jié)果對(duì)應(yīng)修改模型的尺寸參數(shù)即可實(shí)現(xiàn)二次編輯。本發(fā)明的關(guān)鍵創(chuàng)新點(diǎn)是:
[0058]1、現(xiàn)有技術(shù)的三維建模步驟復(fù)雜,步驟順序的隨機(jī)性較強(qiáng),即使保存為模板,也存在難以二次編輯的問題,需要專業(yè)人員重新分析建模數(shù)據(jù)。本發(fā)明提出一種“多邊形裁剪+擠壓建模”的有序建模方法,建模步驟清楚且便于解析。多邊形裁剪屬于計(jì)算機(jī)圖形學(xué),常用于二維圖形處理,擠壓建模屬于3D建模,用于三維建模,兩者用于不同的技術(shù)領(lǐng)域,在本發(fā)明中,通過基于交點(diǎn)排序的多邊形裁剪算法可實(shí)現(xiàn)任意不自相交多邊形的裁剪,提供很好的二維編輯基礎(chǔ),再由擠壓建??焖賹?shí)現(xiàn)從二維平面到三維立體造型的生成過程,可實(shí)現(xiàn)各種復(fù)雜的三維造型,基于交點(diǎn)排序的多邊形裁剪算法常用于二維圖形裁剪,還沒有用于三維建模的公開記載,本發(fā)明的建模方式也是現(xiàn)有技術(shù)中沒有公開過的。
[0059]2、利用模板技術(shù),可將任意造型的生成操作以節(jié)點(diǎn)方式進(jìn)行保存。模板應(yīng)用時(shí),只需要打開所需造型對(duì)應(yīng)的模板節(jié)點(diǎn)信息即可實(shí)現(xiàn)該模型的快速建模,可一鍵實(shí)現(xiàn)目標(biāo)造型的快速建模,操作十分簡(jiǎn)單,可在應(yīng)用場(chǎng)景中等比例縮放對(duì)應(yīng)的造型,并且對(duì)生成的造型可進(jìn)行二次編輯,實(shí)用性更高。
[0060]綜上所述,本發(fā)明方法建模應(yīng)用時(shí)方式簡(jiǎn)單,建模人員無需專業(yè)建模技術(shù)背景即可快速實(shí)現(xiàn)三維造型建模,利用模板技術(shù),可將實(shí)現(xiàn)的三維模型以模板方式進(jìn)行保存,應(yīng)用模板即可快速生成已實(shí)現(xiàn)的三維造型,并且可進(jìn)行二次編輯,實(shí)用性更高。
【附圖說明】
[0061 ] 圖1為本發(fā)明的流程圖。
[0062]圖2為本發(fā)明中二維多邊形裁剪的流程圖。
[0063]圖3為本發(fā)明中三維拉伸組合建模的流程圖。
[0064]圖4為本發(fā)明擠壓建模的示意圖,圖(a)為普通立體模型,圖(b)為帶內(nèi)環(huán)的立體模型。
[0065]圖5為本發(fā)明擠壓建模從二維圖形到三維模型的生成過程。
【具體實(shí)施方式】
[0066]本發(fā)明方案主要針對(duì)大塊的整體室內(nèi)造型,比如吊頂、地板、造型墻等,可以直接用來生成這樣的整體三維造型,這一類造型的建模主要是需要根據(jù)整體的概念來實(shí)現(xiàn)模型的創(chuàng)建,比如將模型組合成一整塊吊頂或地板,目前還沒有其他建模方式應(yīng)用于這種場(chǎng)合。
[0067]本發(fā)明基于模板技術(shù)實(shí)現(xiàn)三維造型快速建模,如圖1所示,首先基于多邊形裁剪算法的實(shí)現(xiàn)三維造型快速生成,采用擠壓建??焖賹?shí)現(xiàn)由二維平面輪廓到三維模型的快速生成,然后將目標(biāo)造型制作成模板,利用模板技術(shù)快速生成三維造型。在后續(xù)應(yīng)用中,根據(jù)操作需要對(duì)模板中的參數(shù)進(jìn)行修改,實(shí)現(xiàn)二次編輯。本發(fā)明利用了現(xiàn)有技術(shù)中的擠壓建模思想,但具體每個(gè)步驟實(shí)現(xiàn)不同于現(xiàn)有技術(shù)。
[0068]I)建立三維模型:
[0069]設(shè)定所需模型,基于多邊形裁剪算法,采用擠壓建模實(shí)現(xiàn)由二維平面輪廓到三維模型的快速生成;
[0070]11) 二維多邊形裁剪:
[0071]對(duì)要建立的三維模型,首先采用基于交點(diǎn)排序的多邊形裁剪算法實(shí)現(xiàn)二維平面多邊形裁剪,其流程如圖2所示,算法采用單指針、單鏈表數(shù)據(jù)結(jié)構(gòu),通過標(biāo)記交點(diǎn)的“入”、“出”性,將構(gòu)成裁剪結(jié)果多邊形的頂點(diǎn)分別插入到鏈表中,基于交點(diǎn)進(jìn)行排序,從而得到裁剪結(jié)果,實(shí)現(xiàn)任意不自相交多邊形,包括凸多邊形、凹多邊形、帶環(huán)多邊形等的裁剪。本發(fā)明的多邊形擠壓建?;谄矫娑噙呅蔚牟眉簦瑹o論多么復(fù)雜的造型都可以通過平面裁剪、擠壓變形來實(shí)現(xiàn)。
[0072]多邊形裁剪算法的詳細(xì)內(nèi)容已經(jīng)有公開文獻(xiàn)實(shí)現(xiàn),如《一種基于交點(diǎn)排序的高效多邊形裁剪算法》(彭杰、劉南、唐遠(yuǎn)彬等,浙江大學(xué)學(xué)報(bào):理學(xué)版,2012,39(1),DO1: 10.3785/j.1ssn.1008-9497.2012.01.022.),不再詳細(xì)介紹。
[0073]12)三維拉伸建模:
[0074]三維建模的主要過程是從二維平面到三維立體的構(gòu)建實(shí)現(xiàn),三維建模方法很多,前面的背景介紹中也涉及了一些建模方法,本發(fā)明的拉伸建模即為擠壓建模:先繪制出模型截面曲線,利用曲線編輯器對(duì)圖形進(jìn)行修改或布爾運(yùn)算,在確定拉伸高度后,使截面圖形沿其法線方向進(jìn)行