一種基于cpu的并行中軸高效生成方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及三維建模領(lǐng)域,具體涉及一種三維模型的并行中軸生成方法。
【背景技術(shù)】
[0002] 二維模型的中軸是指其內(nèi)切圓圓心集合,三維模型的中軸則是指其內(nèi)切球球心的 集合。在許多工程領(lǐng)域,中軸的優(yōu)秀屬性使其有著重要的意義,例如有限元分析、形狀分析、 機(jī)器人路徑計劃、實體建模以及網(wǎng)格生成。
[0003] 目前已經(jīng)有許多中軸生成方法的研究,總體上傳統(tǒng)中軸生成方法可分成三類:打 薄法、跟蹤法和韋諾圖法。打薄法是將模型變成一個能夠容易計算的近似模型,然后將模型 不斷地向里"變瘦"直至來自不同方向的變瘦過程"碰上"而計算其中軸,計算的精確度由 模型的近似精確度控制;跟蹤法是一種遞歸的方法,它基于局部連續(xù)性,通過跟蹤特殊中軸 點來生成中軸;韋諾圖法基于韋諾圖和德勞內(nèi)三角形之間的對應(yīng)關(guān)系,近似通過韋諾圖中 計算而得。但是,上述中軸生成方法的速度都很慢,都不適用于帶有各種表面的復(fù)雜模型, 對于帶有各種表面的復(fù)雜模型而言,至今還沒有一個令人滿意的方法能高效快速地生成出 其中軸。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明要解決的技術(shù)問題是提供一種生成速度快、計算效率高、計算成本低的基 于CPU的并行中軸高效生成方法。
[0005] 為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為:一種基于CPU的并行中軸高 效生成方法,其特征在于其實施步驟如下: 1) 將三維模型進(jìn)行體素化為內(nèi)部體素、邊界體素和外部體素; 2) 將三維模型從三個坐標(biāo)軸進(jìn)行切割,獲得若干長方體塊。這些塊含有近似相等的體 素數(shù)量; 3) 對于各個塊,在每一個CPU的線程中,初始化當(dāng)前隊列和預(yù)備隊列,將邊界體素放入 當(dāng)前隊列,初始化三維模型中各邊界體素的到最近邊界體素的距離為零、各內(nèi)部體素的到 最近邊界體素的距離為無窮大; 4) 對于各個塊,在每一個CPU的線程中,確定其局部的中軸信息; 5) 對于所有相鄰塊對如A、B,遍歷其中塊A中與塊B相接觸的體素,通過塊A的體素距 離依次更新其周圍塊B的內(nèi)部體素到所述最近邊界體素的距離。這之后,遍歷其中塊B中 與塊A相接觸的體素,通過塊B的體素距離依次更新其周圍塊A的內(nèi)部體素到所述最近邊 界體素的距離。
[0006] 6)如果步驟5)中有被更新距離的體素,在各個塊中初始化當(dāng)前隊列和預(yù)備隊列, 將步驟5)中被更新距離的體素放到當(dāng)前隊列,通過步驟4)再次計算中軸體素后,并轉(zhuǎn)至步 驟5)。如果步驟5)中沒有更新距離的體素,則合并各塊的中軸體素獲取生成的中軸體素集 合; 所述步驟3)中更新各個周圍內(nèi)部體素到最近邊界體素的距離時,如果周圍內(nèi)部體素到 針對當(dāng)前體素的最近邊界體素的新距離小于原距離時,則將該周圍內(nèi)部體素到最近邊界體 素的距離更新,否則保持該周圍內(nèi)部體素到最近邊界體素的距離不變; 所述步驟2)中首先根據(jù)體積將三維模型的包圍盒進(jìn)行切割成盡量等分的塊,然后根據(jù) 各個塊的體素數(shù)量進(jìn)行快速優(yōu)化,使得各個塊的體素數(shù)量幾近相等;所述步驟7)中,所得 的最終體素集合是各塊的體素結(jié)果相加的結(jié)果; 所述步驟5)和6)中能對相鄰塊中相鄰體素的距離進(jìn)行更新,之后進(jìn)一步基于邊界體 素更新后的距離信息對塊內(nèi)部的距離信息進(jìn)行更新,如此反復(fù)生成整個復(fù)雜模型的中軸。
[0007] 本發(fā)明具有下述優(yōu)點: 1、本發(fā)明通過體素化是指將一個三維實體模型轉(zhuǎn)化成若干正方體體素集合的近似表 示,并利用當(dāng)前隊列和預(yù)備隊列兩個隊列,將這些體素到邊界的距離進(jìn)行蔓延更新。而通過 這些距離信息,可以判斷哪些被蔓延的體素是中軸體素,從而生成出中軸體素集合,具有生 成速度快、計算效率高、計算成本低的優(yōu)點。
[0008] 2、本發(fā)明進(jìn)一步對于具有多核的處理器,可以并行處理中軸計算。通過將模型切 割成塊,分別計算各塊的中軸,然后計算各個塊中軸之間的影響,重新計算各塊的中軸,最 后將各塊的中軸合并為結(jié)果中軸。由于使用了多核并行處理中軸計算,使得算法的時間和 空間復(fù)雜度都大大降低,提高了中軸計算的效率。
【附圖說明】
[0009] 圖1為本發(fā)明實施例的實施流程示意圖。
[0010] 圖2為本發(fā)明實施例中三維模型體素化的結(jié)構(gòu)示意圖。
[0011] 圖3為本發(fā)明實施例中與當(dāng)前體素面連接、邊連接、點連接的周圍內(nèi)部體素示意 圖。
[0012] 圖4為本發(fā)明實施例中兩最近體素位于同一表面上時的中軸體素確定示意圖。
[0013] 圖5為本發(fā)明實施例中兩最近體素位于同一凹邊上時的中軸體素確定示意圖。
[0014] 圖6為本發(fā)明實施例中分割模型的不意圖。
[0015] 圖7為本發(fā)明實施例中分中軸合并的具體過程。
【具體實施方式】
[0016] 如圖1所示,本發(fā)明實施的基于CPU的并行中軸高效生成方法實施步驟如下: 1) 將三維模型進(jìn)行體素化為內(nèi)部體素、邊界體素和外部體素; 2) 將三維模型從三個坐標(biāo)軸進(jìn)行切割,獲得若干長方體塊。這些塊含有近似相等的體 素數(shù)量; 3) 對于各個塊,初始化當(dāng)前隊列和預(yù)備隊列,將邊界體素放入當(dāng)前隊列,初始化三維模 型中各邊界體素的到最近邊界體素的距離為零、各內(nèi)部體素的到最近邊界體素的距離為無 窮大; 4) 生成各個塊的中軸體素信息; 5) 對于所有相鄰塊對如A、B,遍歷其中塊A中與塊B相接觸的體素,通過塊A的體素距 離依次更新其周圍塊B的內(nèi)部體素到所述最近邊界體素的距離。這之后,遍歷其中塊B中 與塊A相接觸的體素,通過塊B的體素距離依次更新其周圍塊A的內(nèi)部體素到所述最近邊 界體素的距離。
[0017] 6)如果步驟5)中有被更新距離的體素,在各個塊中初始化當(dāng)前隊列和預(yù)備隊列, 將步驟5)中被更新距離的體素放到當(dāng)前隊列,通過步驟4) -5)再次計算中軸體素后,并轉(zhuǎn) 至步驟5)。如果步驟5)中沒有更新距離的體素,則合并各塊的中軸體素獲取生成的中軸體 素集合。
[0018] 所述步驟3 )