一種汽車模型的生成方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及圖像處理技術(shù)領(lǐng)域,具體設(shè)及一種汽車模型的生成方法及系統(tǒng)。
【背景技術(shù)】
[0002] 在當今經(jīng)濟迅速發(fā)展時代,人們生活質(zhì)量不斷提高,汽車普及率越來越高,汽車模 型生成日益成為汽車設(shè)計和生產(chǎn)的重要技術(shù)。汽車外觀和零件尺寸的設(shè)計離不開精準的汽 車模型,同時精準的汽車模型對汽車性能的模擬也提供了巨大的便利。
[0003] 所謂的汽車模型生成,是指在已有數(shù)量不多的頂點、曲面情況下,通過插值、逼近 手段,不斷生成新的頂點和曲面。當生成的頂點和曲面足夠多時,汽車模型由原來的粗糖變 得非常精細,汽車模型表面也趨向光滑,模型趨向真實。
[0004] 傳統(tǒng)的遞歸曲面生成汽車模型方法大多基于純粹的逼近或插值生成,但是逼近方 法會使得模型變小,而插值方法會使得模型膨脹,運些方法都導(dǎo)致了模型尺寸誤差,而汽車 零件對尺寸的精度卻要求非常高,運為設(shè)計帶來了不便。而且傳統(tǒng)的方法隨著遞歸次數(shù)增 加,運算量也快速增加。因此有必要提供一種速度快、尺寸誤差盡可能小的方法來解決上述 缺陷。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種汽車模型的生成方 法,通過利用綜合逼近和插值方法進行細分生成數(shù)據(jù)模型,對汽車數(shù)據(jù)模型進行處理,獲取 消除冗余的汽車模型,具有更好的效果。
[0006] 為了解決上述問題,本發(fā)明提出了一種汽車模型的生成方法,所述方法包括:
[0007] 輸入第一汽車模型的頂點和Ξ角面;
[000引根據(jù)所述第一汽車模型的頂點和Ξ角面生成半邊表結(jié)構(gòu);
[0009] 根據(jù)所述半邊表結(jié)構(gòu),利用綜合逼近和插值方法進行細分生成第二汽車模型的頂 點和Ξ角面;
[0010] 對所述第二汽車模型進行處理,獲取消除冗余后的所述第二汽車模型數(shù)據(jù);
[0011] 根據(jù)消除冗余后的所述第二汽車模型數(shù)據(jù),獲取表面光滑、尺寸精準的汽車模型。
[0012] 優(yōu)選地,所述半邊表結(jié)構(gòu)包括頂點結(jié)構(gòu)、半邊結(jié)構(gòu)和面結(jié)構(gòu)。
[0013] 優(yōu)選地,所述利用綜合逼近插值方法進行細分包括:
[0014] 采用參數(shù)α來控制逼近細分和插值細分的比例,當α = 1時只做插值細分,當α = 〇時 只做逼近細分;
[0015] α由用戶按需求調(diào)節(jié),默認α = 〇.5。
[0016] 優(yōu)選地,所述細分的過程是生成新頂點,移動舊頂點,根據(jù)所述新頂點生成新Ξ角 面,所述細分的規(guī)則如下:
[0017] 給定η+1 個點Ρο,Ρι,…,Ρη [001 引
ο
[0019] 優(yōu)選地,所述新頂點生成包括:
[0020] 在每條內(nèi)邊(Pi,Pj)插入所述新頂點q,其中化術(shù))是立角形化,Pj,PkWP^角形 (ΡιΑ,Ρ?)的公共邊,所述新頂點q的位置計算公式如下:
[0024] 其中H(P)與點P共享同一條邊的點集,η是集合H(P)的元素個數(shù),參數(shù)α為所述控制 逼近細分和插值細分的比例值;
[0025] 若邊(Pi,Pj)是邊界邊,則所述新頂點q的位置計算公式如下:
[0026]
[0027]優(yōu)選地,所述移動舊頂點包括:
[002引處于內(nèi)部的所述舊頂點作如下公式移動:
[0031] 其中,Pnew為移動后的頂點,Peld為移動前的頂點,H(P)與點P共享同一條邊的點集, η是集合H(P)的元素個數(shù),參數(shù)α為所述控制逼近細分和插值細分的比例值;
[0032] 若所述舊頂點為邊界點,則所述舊頂點作如下公式移動:
[0033]
[0034] 其中,Pb,Pc分別與Peld共享同一條邊界邊的另一個頂點。
[0035] 優(yōu)選地,所述根據(jù)所述新頂點生成新Ξ角面包括:
[0036] 每個Ξ角面都會生成Ξ個新的頂點,記Ξ角面Ξ個頂點分別為?1、?2、?3,新生成的 Ξ個頂點為化、〇2、化,那么原來的Ξ角面被分割成4個新的Ξ角面,運四個Ξ角面分別為 (Qi,〇2 ,化),(Pl,Ql ,〇3) , (Ρ2,〇2 ,Ql) ,。3,化,〇2)。
[0037] 優(yōu)選地,所述對所述第二汽車模型進行處理包括:
[0038] 采用邊折疊算法消除冗余的邊和消除所述冗余邊對應(yīng)的Ξ角面;
[0039] 根據(jù)消除冗余的邊和消除所述冗余邊對應(yīng)的Ξ角面,消除所述冗余邊對應(yīng)的Ξ角 面的頂點。
[0040] 另外,本發(fā)明還提供了一種汽車模型的生成系統(tǒng),所述系統(tǒng)包括:
[0041] 信息輸入模塊:用于輸入第一汽車模型的頂點和Ξ角面;
[0042] 生成模塊:用于根據(jù)所述第一汽車模型的頂點和Ξ角面生成半邊表結(jié)構(gòu);
[0043] 細分模塊:用于根據(jù)所述半邊表結(jié)構(gòu),利用綜合逼近和插值方法進行細分生成第 二汽車模型的頂點和Ξ角面;
[0044] 冗余消除模塊:用于對所述第二汽車模型進行處理,獲取消除冗余后的所述第二 汽車模型數(shù)據(jù);
[0045] 模型獲取模塊:用于根據(jù)消除冗余后的所述第二汽車模型數(shù)據(jù),獲取表面光滑、尺 寸精準的汽車模型。
[0046] 優(yōu)選地,所述冗余消除模塊包括:
[0047] 冗余消除單元:用于采用邊折疊算法消除冗余的邊和消除所述冗余邊對應(yīng)的Ξ角 面;
[0048] 頂點消除單元:用于根據(jù)消除冗余的邊和消除所述冗余邊對應(yīng)的Ξ角面,消除所 述冗余邊對應(yīng)的Ξ角面的頂點。
[0049] 在本發(fā)明實施例中,通過利用綜合逼近插值方法進行細分生成數(shù)據(jù)模型,對汽車 數(shù)據(jù)模型進行處理,獲取消除冗余的汽車模型,具有更好的效果。
【附圖說明】
[0050] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可W 根據(jù)運些附圖獲得其它的附圖。
[0051 ]圖1是本發(fā)明實施例的汽車模型的生成方法的流程示意圖;
[0052] 圖2是本發(fā)明實施例逼近造成收縮的示意圖;
[0053] 圖3是本發(fā)明實施例插值造成膨脹的示意圖。
[0054] 圖4是本發(fā)明實施例的汽車模型的生成系統(tǒng)的結(jié)構(gòu)組成示意圖;
【具體實施方式】
[0055] 下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;?本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他 實施例,都屬于本發(fā)明保護的范圍。
[0056] 圖1是本發(fā)明實施例的汽車模型的生成方法的流程示意圖,如圖1所示,該方法包 括:
[0057] S11:輸入第一汽車模型的頂點和Ξ角面;
[005引S12:根據(jù)第一汽車模型的頂點和Ξ角面生成半邊表結(jié)構(gòu);
[0059] S13:根據(jù)半邊表結(jié)構(gòu),利用綜合逼近和插值方法進行細分生成第二汽車模型數(shù) 據(jù);
[0060] S14:對第二汽車模型數(shù)據(jù)進行處理,獲取消除冗余后的第二汽車模型數(shù)據(jù);
[0061] S15:根據(jù)消除冗余后的第二汽車模型數(shù)據(jù),獲取表面光滑、尺寸精準的汽車模型。
[0062] 對S11作進一步說明:
[0063] 輸入的第一汽車模型的頂點和Ξ角面,頂點為汽車模型的頂點的坐標值,Ξ角面 是Ξ角形的Ξ個頂點的索引,若是第一汽車模型只包含了頂點數(shù)據(jù),沒有Ξ角面數(shù)據(jù),則采 用Delaunay(狄洛尼)Ξ角剖分算法構(gòu)造 Ξ角面;
[0064] 其中Ξ角剖分算法包括:
[0065] 構(gòu)造一個超級Ξ角形,包含所有的散點,放入Ξ角形鏈表;
[0066] 將散點依次插入,在Ξ角形鏈表中找出外接圓包含插入點的Ξ角形(稱該點為影 響Ξ角形點),刪除影響Ξ角形的公共邊,將插入點與影響Ξ角形的全部頂點連接起來,完 成一個點在DelaunayS角形鏈表中的插入,構(gòu)造形成Ξ角面。
[0067] 對S12作進一步說明:
[0068] 半邊表結(jié)構(gòu)包括頂點結(jié)構(gòu)、半邊結(jié)構(gòu)和面結(jié)構(gòu);
[0069] 其中,頂點結(jié)構(gòu):
[0073] 面結(jié)構(gòu):
[0074] struct HE_face{
[0075] HE_edge*edge; //該面中任意一條半邊的指針
[0076] };
[0077] 該步驟中,用Ξ個數(shù)組分別存儲頂點結(jié)構(gòu)、半邊結(jié)構(gòu)和面結(jié)構(gòu);首先讀入模型的頂 點數(shù)據(jù),每個頂點都存放在頂點結(jié)構(gòu)數(shù)據(jù)中;接著讀入Ξ角面數(shù)據(jù),每次讀入Ξ角面數(shù)據(jù), 都有3條半邊和1個面,分別存儲在半邊結(jié)構(gòu)數(shù)組中和面結(jié)構(gòu)數(shù)組中;當讀入所有數(shù)據(jù)后,為 每條半邊設(shè)置它對應(yīng)的相對半邊,至此完全構(gòu)造好模型的半邊表結(jié)構(gòu)。
[0078] 對S13作進一步說明:
[0079] 采用參數(shù)α來控制逼近細分和插值細分的比例,當α = 1時只做插值細分,當α = 〇時 只做逼近細分;α由用戶按需求調(diào)節(jié),默認α = 0.5;
[0080] 細分的過程中主要是生成新頂點和移動舊頂點,根據(jù)新頂點生成新Ξ角面,其中 細分規(guī)則如下:
[0081] 給定η+1 個點Ρο,Ρι,…,Ρη
[0082] 0