本發(fā)明屬于計算機輔助設計(cad)及計算機輔助制造(cam),涉及一種基于球面追蹤的大規(guī)模周期晶格類多孔結(jié)構(gòu)實時編輯及渲染方法、系統(tǒng)。
背景技術(shù):
1、多孔結(jié)構(gòu)是一種內(nèi)部包含許多空腔的復雜結(jié)構(gòu),因其節(jié)省用料、輕質(zhì)、高表面積和可控的物理性質(zhì),在材料科學、航空航天技術(shù)、生物醫(yī)學工程等許多領(lǐng)域有重要作用。晶格是一種由大量相連的桿狀結(jié)構(gòu)組成多孔結(jié)構(gòu),其性質(zhì)容易控制、強度高,是最受學術(shù)界和工業(yè)界關(guān)注的多孔結(jié)構(gòu)之一。周期晶格是一種由空間中周期排列的單元組成的晶格,其在光學材料、航空航天等利于被廣泛使用。周期晶格擁有力學性能優(yōu)秀、導熱性高、易調(diào)控等優(yōu)勢,其長期有序性使得其物理性質(zhì)(如電子能帶結(jié)構(gòu)、熱導率、光學性能等)更具可預測性,這對于材料設計至關(guān)重要。
2、得益于增材制造技術(shù)(additive?manufacturing,am)的發(fā)展,制造用復雜晶格結(jié)構(gòu)填充的模型(shell?lattice)成為可能。增材制造有多種常用工藝,如熔融沉積建模(fdm,fused?deposition?modeling)、立體光固化技術(shù)(sla,stereo?lithographyapparatus)、選擇性激光燒結(jié)(sls,selective?laser?sintering)、選擇性激光熔化(slm,selective?laser?melting)等等。這類增材制造技術(shù)都依賴模型切片的生成。當規(guī)模很大的周期晶格填充在顯式表示的外殼內(nèi),形成shell-lattice,如何高效地生成任意角度下的切片是一大挑戰(zhàn)。另一方面,如何在計算機中實時、高效地編輯、可視化這類復雜的shelllattices也是一個難題。
3、工業(yè)界目前能處理的晶格的規(guī)模還限制在有限的范圍內(nèi)。美國國防高級研究計劃局(defense?advanced?research?projects?agency)也在一次報告中將這類大規(guī)模晶格的處理設為一項重大挑戰(zhàn)。
4、增材制造中可視化和制造多孔模型的常規(guī)方法大體可分為兩類:(1)顯式表示工作流(如圖1(a)(b)所示);(2)隱式表示工作流(如圖1(c)所示)。
5、根據(jù)建模階段表示類型的不同,顯式表示可進一步分為基于參數(shù)曲面的表示的與基于網(wǎng)格(mesh)的表示。通常,這兩種表示下的工作流在最后的制造階段都會生成基于立體光刻技術(shù)(stereolithography,stl)格式的結(jié)果,以供3d打印模塊生成切片。
6、使用參數(shù)曲面表示來建模晶格結(jié)構(gòu)的工作流如圖1(a)所示,其代表性工業(yè)軟件為autodesk?fusion?360,altair?inspire,和siemens?nx。該建模方式的優(yōu)勢在于可以精確控制和表示形狀,能夠進行復雜的幾何修改。但面對大規(guī)模晶格的任務,其可能存在計算復雜度高、內(nèi)存開銷大的問題:當擁有大量桿件的晶格與其他參數(shù)模型進行布爾運算或平滑過渡時,會涉及大量復雜的參數(shù)曲面求交計算;當存在上億的桿件數(shù)量,通常每一個桿件需要多個曲面來表示,每個曲面都需要一組控制頂點信息。
7、mesh是一種相對更為簡單的晶格結(jié)構(gòu)顯式表示方式,其優(yōu)勢在于直接易用、易于編輯、易于使用光柵化管線渲染。但該方法在處理大規(guī)模晶格結(jié)構(gòu)時同樣面臨一些問題。使用最為廣泛的是純顯式工作流,其流程同樣如圖1(a)所示,輸入統(tǒng)一為mesh。該工作流的代表軟件為3dxpert,materialise?magics,trumpf?trutops,materialise?3-matic,和autodest?netfabb等。與參數(shù)曲面建模類似,在晶格規(guī)模增大時,該方法內(nèi)存開銷也隨之增大。同時,mesh表示之間平滑過渡的求解也相對困難。
8、為了利用隱式表示在布爾和平滑過渡操作中的魯棒性和高效性,圖1(b)展示了另一種輸出stl格式結(jié)果的工作流。其建模過程基于隱式表示,通過空間標量場的等值面指定模型的邊界,其優(yōu)勢在于能很輕量地表達某些很復雜的模型,且支持魯棒、高效的布爾和平滑操作。代表性工業(yè)軟件為ntopology和paramatters。該工作流使用隱式輸入的晶格結(jié)構(gòu),并將shell也轉(zhuǎn)為隱式表示,將二者布爾/平滑過渡后的結(jié)果統(tǒng)一轉(zhuǎn)為stl格式輸出。此處隱式向顯式表示轉(zhuǎn)換常見的方法是marching?cubes。該工作流可能需要兩次格式轉(zhuǎn)換,該轉(zhuǎn)換過程會帶來額外內(nèi)存開銷,且通常會降低模型的細節(jié)特征。對于大規(guī)模周期晶格而言,最后輸出的stl表示的晶格同樣會占用較多存儲資源。
9、在此基礎上,純隱式工作流進一步避免了隱式向顯式表示的轉(zhuǎn)換,直接從顯式表示生成切片結(jié)果。其在最近幾年受到許多研究者的關(guān)注。該工作流的流程如圖1(c)所示,其代表軟件為voxeldance。然而,實際場景下大多外殼模型都是顯式表示的,其往往需要被轉(zhuǎn)為隱式表示。該轉(zhuǎn)換有兩種常見方式:(1)使用離散的水平集網(wǎng)格,在格點采樣隱式函數(shù)值(通常采用有向距離函數(shù))。使用該水平集時,不在格點的查詢點的隱函數(shù)值為臨近8個格點的三線性插值。該方法通常不易于在較高的模型精度和較低的時延/內(nèi)存開銷之間取得平衡。(2)在渲染、切片過程中即時地計算mesh的隱函數(shù)值,該方法的問題在于計算量通常較大。
10、綜上所述,現(xiàn)有的工作流在處理大規(guī)模周期shell-lattice結(jié)構(gòu)時,都較大程度依賴于隱式與顯式表示形式之間的相互轉(zhuǎn)換,轉(zhuǎn)換的過程往往帶來效率降低、內(nèi)存開銷大、或是精度下降等問題。此外,一些工作流并未統(tǒng)一地考慮shell-lattice結(jié)構(gòu)從渲染、編輯到切片的無縫集成,例如,一些方法直接生成stl結(jié)果,再交由其它切片軟件進行切片;或是一些方法不提供對大規(guī)模周期晶格的實時渲染效果,而是僅僅生成切片。
11、鑒于以上現(xiàn)狀,本發(fā)明給出了一個能合理地處理大規(guī)模周期shell-lattices的軟件系統(tǒng)及工作流,如圖1(d)所示。該工作流在盡可能不做復雜轉(zhuǎn)換的情況下對隱式的晶格和顯式的外殼混合處理,實現(xiàn)了shell-lattice從渲染、編輯到切片的無縫集成。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于針對現(xiàn)有技術(shù)的不足,提供一種基于球面追蹤的大規(guī)模周期晶格類多孔結(jié)構(gòu)實時編輯及渲染方法、系統(tǒng),其能夠?qū)崿F(xiàn)對于增材制造周期晶格多孔結(jié)構(gòu)模型的實時編輯,實現(xiàn)渲染或切片生成。
2、本發(fā)明所采用的技術(shù)方案如下:
3、基于球面追蹤的大規(guī)模周期晶格類多孔結(jié)構(gòu)實時編輯及渲染方法,包括:
4、確定增材制造中所需渲染多孔結(jié)構(gòu)的零部件的外殼參數(shù)及周期晶格的控制參數(shù)cl;所述外殼包括不填充的實體部分ms和需填充所述周期晶格的填充部分mf;
5、采用增強球面追蹤方法對每個像素進行增強球面追蹤,從而確定其應顯示的顏色,實現(xiàn)渲染;其中所述增強球面追蹤方法是在球面追蹤基礎上改進得到,包括對每個像素根據(jù)預計算的層次包圍體bvh求解光線分別和外殼中實體部分、填充部分的交點信息,開啟球面追蹤迭代,在迭代的每一步中計算光線前進的修正距離和追蹤距離,根據(jù)修正距離、追蹤距離以及所需布爾操作的類型返回球面追蹤所需的距離值,從而完成光線投射,即可進行像素著色。
6、上述技術(shù)方案中,進一步的,在計算光線前進的修正距離前,對周期晶格控制參數(shù)中所定義的單位晶胞內(nèi)所含桿件集合進行桿增強處理,獲得每個背景網(wǎng)格六面體單元內(nèi)經(jīng)增強擴充后的桿集合,確定該單元的有向距離sdf值。
7、進一步的,所述桿增強處理具體包括:
8、對于所定義的單位晶胞內(nèi)所含桿件集合b={b[i],i=1,…,nb},令n[i,j]表示桿b[i]的兩個節(jié)點,因此j=0,1,桿為兩端呈半球形球面的膠囊狀桿;
9、遍歷單位晶胞中所有的節(jié)點n[i,j],考慮節(jié)點與六面體單元的頂點、邊、面之間的關(guān)系,首先,檢查是否有頂點位于n[i,j]對應的球面內(nèi),如果有,則該頂點周圍的所有8個單元參與b[i]的渲染,將b[i]分別擴充到單元內(nèi)的其它7個頂點處,接著,檢查是否有邊與n[i,j]對應的球面相交,如果有,該邊周圍的4個單元都參與b[i]的渲染,將b[i]分別擴充到單元內(nèi)的其它3個平行的邊處,最后,檢查是否有面與n[i,j]對應的球面相交,如果有,該面兩側(cè)的2個單元都參與b[i]的渲染,將b[i]擴充到單元內(nèi)該面對向的面的位置;得到六面體單元內(nèi)經(jīng)擴充后所有桿集合該單元的sdf值fb就是中所有桿的sdf值的最小值。
10、進一步的,將位于晶格任意晶胞位置的查詢點pg映射為單位晶胞內(nèi)的查詢點pl中,為:
11、pl=(pg-vmin)%s-0.5·s
12、其中vmin是生成晶胞的最小坐標,%為取余,s為單元大小;
13、通過查詢點映射,在pg處查詢其所在晶胞的sdf值為:
14、fb(pg)=fb(pl)
15、即將查詢點從某個晶胞映射到單位晶胞,與將晶胞的桿從單位晶胞映射到全局,在球面追蹤的每次迭代中產(chǎn)生的sdf值fb是相等的;
16、采用距離矯正算法將單個單元中得到的sdf值矯正為對整個晶格安全的前進距離;所述距離矯正算法具體為:
17、光線在進入一個新的單元時,必須先在當前單元和新單元共同的邊界上停留并前進一個很小的距離∈t,使光線到達邊界的距離加上∈t即為修正距離,其中∈t被取為等于球面追蹤的終止閾值∈;其中所述使光線到達邊界的距離為光線從三個方向命中邊界所在平面所需的前進距離的最小值,計算這三個前進距離的具體方法為:
18、對于三個坐標軸方向,分別計算從查詢點前進到垂直于該軸的、且位于軸上正方向的單元邊界所在平面所需的距離,如果該距離小于0,則轉(zhuǎn)而計算前進到垂直于該軸的、且位于軸上負方向的邊界平面所需的距離。
19、進一步的,構(gòu)建ms和mf各自的bvh,求解光線分別和ms和mf的交點信息,其中:對于ms,僅記錄第一個交點,命中的面被記為is,其與相機的距離是ts,對于mf,需記錄所有交點,并將與光線相交的面按距離升序排序并記錄在列表if,對應的距離記錄在列表tf;
20、將ts和tf分別轉(zhuǎn)換為用于球面追蹤的距離,具體的:對于ts,轉(zhuǎn)換方法是,當沒有交點時,返回一個無窮大值以使追蹤快速結(jié)束,當有交點但查詢點在ms外,返回查詢點到下一個交點的距離;對于tf,轉(zhuǎn)換方法是,當查詢點在mf外,返回查詢點到下一個交點的距離,當查詢點在mf中或者在將要離開mf時停留在mf的面上,返回負的無窮大,當光線在將要進入mf時停留在mf的面上,返回一個略小于球面追蹤的終止閾值∈的值。
21、進一步的,采用剪枝方法對bvh進行遍歷,其中:
22、對于ms的bvh遍歷:在選擇兩個子節(jié)點時總是優(yōu)先選擇靠近光線出發(fā)點的子節(jié)點,并丟棄到相機的最近距離大于當前的ts的節(jié)點;
23、對于mf的bvh遍歷:任何到相機最近距離大于ts的節(jié)點都被直接丟棄;
24、此外,考慮到相機從mf內(nèi)部出發(fā)的情況,對于到相機最大含符號距離小于0的節(jié)點,對于ms和mf的bvh遍歷時都直接丟棄。
25、進一步的,在所述方法基礎上,能夠通過調(diào)整渲染管線生成增材制造中模型的切片,所述調(diào)整包括使所有光線從像素出發(fā)并垂直于視平面,使遠平面與近平面的距離為切片厚度,而近平面與視平面重合。
26、一種基于球面追蹤的大規(guī)模周期晶格類多孔結(jié)構(gòu)實時編輯及渲染系統(tǒng),用于實現(xiàn)上述任一項所述的方法,包括:
27、大規(guī)模處理模塊,以周期晶格的控制參數(shù)cl為輸入,通過桿增強和對局部距離的修正,得到修正距離,用于在只查詢單個晶胞內(nèi)sdf的情況下完成對整個晶格的渲染;
28、混合渲染模塊,以外殼參數(shù)中實體部分ms和填充部分mf為輸入,用于在不進行表示轉(zhuǎn)換的情況下同時渲染隱式表示的晶格和顯式表示的外殼,得到用于球面追蹤的追蹤距離;并根據(jù)修正距離、追蹤距離以及所需布爾操作的類型返回球面追蹤所需的距離值,用于實現(xiàn)渲染。
29、進一步的,該系統(tǒng)還包括拓展模塊,用于實現(xiàn)連接處的平滑過渡、晶格內(nèi)場引導的屬性、晶格形變、區(qū)域指定的單位晶胞類型,以面向更廣泛的實際應用。
30、一種計算機可讀存儲介質(zhì),所述介質(zhì)上存儲有程序,所述程序能夠被處理器執(zhí)行以實現(xiàn)如上任一項所述的方法。
31、本發(fā)明的有益效果是:
32、本發(fā)明面向增材制造領(lǐng)域多孔結(jié)構(gòu)零部件的模型給出了面向大規(guī)模周期晶格的集渲染、編輯、切片于一體的方法及整體框架,其實現(xiàn)了從設計到制造大規(guī)模周期晶格多孔結(jié)構(gòu)的一體化流程,便利了增材制造流程。尤其是該方法可以在只查詢單個晶胞內(nèi)sdf的情況下完成對整個晶格的正確渲染,極大提高了渲染效率,在測試中對于大規(guī)模的晶格也取得了實時渲染的效果,且可以在不做表示轉(zhuǎn)換的前提下,高效渲染隱式表示和顯式表示在布爾操作后所得的結(jié)果,避免了表示轉(zhuǎn)換帶來的巨大的內(nèi)存開銷、時間成本和細節(jié)丟失。