專利名稱:能夠進(jìn)行三維對象模型的3d印刷的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及3D印刷并且更具體地涉及3D模型的處理。
背景技術(shù):
以下術(shù)語可以根據(jù)其在現(xiàn)有技術(shù)文獻(xiàn)中出現(xiàn)的任何定義或者根據(jù)本說明書、或者如下進(jìn)行理解凸包在三維空間內(nèi)的一個(gè)幾何對象的集合= 的凸包表示為conv(S),是包 含S的最小(包含式的)凸集。凸多面體一個(gè)凸多面體是作為有限數(shù)目的閉合半空間的交集H =
{h e R31A · h彡B}給出的一個(gè)凸集0 £ #,其中A · h彡B是一個(gè)線性方程系統(tǒng)。如果
假定η是用于進(jìn)行定義的半空間的個(gè)數(shù),則A是一個(gè){3χη}矩陣,B是長度η的向量,并且h代表包含在該凸多面體中的一個(gè)點(diǎn)。多胞形有界凸多面體P C RS是多胞形。超平面在三維空間中,超平面是一個(gè)普通平面,它將空間分為兩個(gè)半空間。支撐超平面一個(gè)超平面在歐幾里得空間R3中支撐了一個(gè)集合S是指如果S被完全包含在該超平面所確定的這兩個(gè)閉合半空間之一中、并且S具有至少一個(gè)位于該超平面上的點(diǎn)的話。一個(gè)閉合半空間是包括該超平面的半空間。寬度一個(gè)集合《S = Λ5的寬度,表示為寬度(S),是多個(gè)支撐了 conv(S)的平行超平面之間的最小距離。有向?qū)挾冉o定了一個(gè)標(biāo)準(zhǔn)化的向量V,則有向?qū)挾?,表示為寬度V (S),是多個(gè)支撐了 conv(S)且與V正交的平行超平面之間的距離。多邊形網(wǎng)格多邊形網(wǎng)格,也稱為無結(jié)構(gòu)網(wǎng)格,是頂點(diǎn)、邊和面的合集,限定了一個(gè)多面體對象在例如3D(三維)計(jì)算機(jī)圖像和實(shí)體造型中的形狀。這些面通常由三角形、四邊形、或其他凸多邊形組成,因?yàn)檫@簡化了渲染,但也可以由更一般的凹多邊形、有孔的多邊形等等構(gòu)成??傮w上,其輸入應(yīng)該包括幾何信息和足夠的局部拓?fù)湫畔?,這樣可以調(diào)用這些幾何對象之間的連帶關(guān)系。STL =STL是立體光刻術(shù)CAD (計(jì)算機(jī)輔助設(shè)計(jì))默認(rèn)的文件格式,這是由位于美國的“3D Systems ”公司創(chuàng)造的軟件。這種文件格式得到了許多其他軟件包的支持;它廣泛用于快速原型制作和計(jì)算機(jī)輔助制造。STL文件描述了一個(gè)三維對象的表面幾何結(jié)構(gòu),而沒有呈現(xiàn)顏色、紋理、或其他常見的CAD模型屬性。這種STL格式指定了 ASCII (美國國家標(biāo)準(zhǔn)信息交換代碼)以及二進(jìn)制兩種表示方法??傮w上,二進(jìn)制文件是更常見的,因?yàn)樗鼈兺ǔJ歉o湊的。而且總體上,每個(gè)STL文件通過三角形的單位法線和頂點(diǎn)(按右手定則排序)使用三維笛卡爾坐標(biāo)系描述了一種原始的、無結(jié)構(gòu)的、三角形化的表面。其他文件格式如VRML支持紋理和顏色。3D(三維)印刷是與傳統(tǒng)的快速原型制作技術(shù)相關(guān)的一種獨(dú)特的印刷形式。通過分層以及將材料的連續(xù)截面相連接而創(chuàng)造一個(gè)3D對象。3D印刷機(jī)通常比其他累加制造技術(shù)更快速、費(fèi)用更可承受、并且更容易使用。這種印刷機(jī)的分辨率是以層厚度和以DPI (點(diǎn)每英寸)計(jì)的XY分辨率給出的。通常,層厚度是約一百微米(O. I [mm](毫米)),而XY分辨率與激光印刷機(jī)的差不多。顆粒(3D點(diǎn))的直徑是約50至100微米(O. 05mm-0. Imm)??焖傩g(shù)語“快速”是相對的,因?yàn)橛卯?dāng)今的多種方法來構(gòu)造模型可能花費(fèi)例如從幾個(gè)小時(shí)到幾天,這取決于所使用的方法以及該模型的尺寸和復(fù)雜性。用于快速原型制作的另外的系統(tǒng)通??梢栽趲讉€(gè)小時(shí)內(nèi)產(chǎn)生多個(gè)模型,但同時(shí)可以根據(jù)所使用的機(jī)器類型和 所產(chǎn)生的模型的尺寸和個(gè)數(shù)而大范圍地變化??捎∷⒌哪P腿绻环N模型包括一組閉合的2D (二維)流形,這些流形連接了在其內(nèi)部并不配對地相交的多個(gè)體積、而且還存在一種凸分解,使得每個(gè)凸件的Z方向的(豎直的)寬度大于一個(gè)給定的閾值,并且每個(gè)凸件的XY方向的(水平的)寬度大于一個(gè)給定的閾值(Χ、γ和Z是軸),則這個(gè)模型是可印刷的。實(shí)際來說,一種3D可印刷的模型是一種在3D印刷機(jī)上可印刷的模型。因此,即使一個(gè)模型并不符合以上的第一定義,例如相交的體積,它仍可以是3D可印刷的。3D印刷是正在快速成長的市場;估計(jì)到2011年市場上將會有300,000臺3D印刷
機(jī)。目前3D建筑模型的創(chuàng)造通常是手動(dòng)進(jìn)行的。這是一個(gè)緩慢、昂貴且勞動(dòng)力密集的、要求專業(yè)技術(shù)(通??繉I(yè)服務(wù)提供商)的過程。例如,RapidToday的一篇標(biāo)題為“盡管住房問題很悲哀,但建筑3D印刷仍在繁榮(Despite Housing Woes, Architectural 3D Printing Thrives) ” 的文章中(在rapidtoday. com上可在線獲取)說到“在RapidToday訪問的服務(wù)提供商之中,幾乎所有人都說,為了使圖形文件變?yōu)?D可印刷的通常必須要求多方面的文件修復(fù)。QuickARC的
Mackie對其投入了總成本的20%,或典型的US$3,000的建模中的US$600.......較不容
易修正的是建筑CAD文件中的空隙和孔洞,它們可能不易看見、但將使一個(gè)快速原型制作過程短路。這些問題現(xiàn)在是靠快速原型制作服務(wù)提供商的專家們費(fèi)盡心力地查找并修復(fù)的,他們使用了網(wǎng)格修復(fù)程序像Magics、VisCamRP、MeshWork、以及來自DeskArtes的3DataExpert.......對這個(gè)問題的一種快速的軟件解決方案還較遙遠(yuǎn)”。在上個(gè)十年中,3D印刷機(jī)已經(jīng)變?yōu)橛蓴?shù)字?jǐn)?shù)據(jù)來生產(chǎn)3D物理對象的常見工具,如計(jì)算機(jī)輔助設(shè)計(jì)(CAD)模型和動(dòng)畫模型。因此,現(xiàn)在使用快速原型制作在許多領(lǐng)域是很平常的。具體而言,建筑師可以從3D印刷中大大獲益。它們可以在幾小時(shí)內(nèi)而不是幾天或甚至幾個(gè)月內(nèi)生產(chǎn)出精確的3D建筑對象。這些原型使得能夠在其建筑對象的發(fā)展過程中獲得一種自然的、對其反復(fù)重評估的機(jī)理,并且具體而言是在初期對難點(diǎn)的檢測?,F(xiàn)在,可以針對速度、低成本和易用性而對3D印刷進(jìn)行優(yōu)化,使得當(dāng)原型的精度和機(jī)械強(qiáng)度不那么重要時(shí)適合于在工程設(shè)計(jì)的概念階段進(jìn)行檢驗(yàn)。
許多眾所周知的公司,如國際上的“Z Corporation' ”、以色列的
“objet Geometries _,,、以及“3D Systems*,,公司、以及位于美國的“Sfratasys.*.,,公司
制造了產(chǎn)生3D物理對象的設(shè)備。這些不同的設(shè)備是基于若干不同的相互競爭的技術(shù)。顯然,不同制造商生產(chǎn)的3D印刷機(jī)還有相同制造商生產(chǎn)的不同模型呈現(xiàn)出不同的特征;它們不同地運(yùn)行、并且通常受到不同的限制因素的限制。然而,大多數(shù)(如果不是全部)3D印刷機(jī)是基于累加制造技術(shù),這種技術(shù)將要制造的模型轉(zhuǎn)換為較薄的水平截面105、并然后創(chuàng)造連續(xù)的層106、107等等,直到這個(gè)制造過程完成,如圖I中示意性展示的。不同的3D印刷機(jī)之間的差異之一是用于創(chuàng)造待有待印刷的3D模型的多個(gè)部分而建立多個(gè)層的方式。分辨率通常是以層厚度給出,并且XY分辨率是以每英寸點(diǎn)數(shù)(DPI)給出。層厚度通常是約百分之一微米(O. Imm),而XY分辨率與激光印刷機(jī)的差不多。顆粒(3D點(diǎn))的直徑是約五十分之一至一百分之一微米(O. 05mm-0. Imm)。常規(guī)的3D印刷機(jī)僅在輸入了有效的可印刷的模型時(shí)才能產(chǎn)生正確的3D物理對象。這樣的模型在例如STL(立體光刻術(shù))文件格式中呈現(xiàn)為多邊形網(wǎng)格。呈現(xiàn)為多邊形 網(wǎng)格的一種有效模型包括一個(gè)多邊形湯(polygon-soup)(任意的多邊形集合),該多邊形湯代表一個(gè)閉合的2D流形(即基本上沒有偽像(如自相交)的無縫的對象)、或基本上不彼此相交的一組閉合的2D流形。一種有效的可印刷的模型滿足了不同的印刷設(shè)備所強(qiáng)加的額外的要求(不同的印刷設(shè)備強(qiáng)加了不同的要求,因?yàn)樗鼈兪腔诓煌募夹g(shù))。常規(guī)的應(yīng)用,例如建模、擬真、可視化、CAD(計(jì)算機(jī)輔助設(shè)計(jì))、CAM(計(jì)算機(jī)輔助制造)、有限元分析等等,要求3D對象的正確且一致的表示。然而,所獲得的3D模型,無論是靠手工還是自動(dòng)工具創(chuàng)造的,都通常包含錯(cuò)誤和不一致性。例如,它們可能包含錯(cuò)誤取向的、相交的、或重疊的多邊形、裂縫、以及T節(jié)點(diǎn);此外,多邊形可能缺失,并且拓?fù)湫畔⒖赡懿灰恢隆栴}是由設(shè)計(jì)師的錯(cuò)誤或建模工具中的軟件錯(cuò)誤導(dǎo)致的。這些錯(cuò)誤可能與數(shù)據(jù)交換問題相混合,例如(i)在CAD格式(例如,IGES(初始圖形交換規(guī)范)、STEP(產(chǎn)品模型數(shù)據(jù)交換標(biāo)準(zhǔn))、DXF(繪圖交換格式)、來自CATIA(計(jì)算機(jī)輔助的三維交互應(yīng)用)或AutoCAD的二進(jìn)制文件))之間、B樣條或基于NURBS (非均勻有理B樣條)格式之間的自動(dòng)轉(zhuǎn)換;(ii)向工程分析系統(tǒng)(例如,三角形的表面網(wǎng)格)的幾何變換。由獲得的3D模型來重建流形模型的技術(shù)根據(jù)效率、穩(wěn)健性、自動(dòng)化水平、前提條件等等而變化。自動(dòng)化水平是在所要求的用戶輸入的意義上衡量的。前提條件包括多種要求,例如但不限于(i)輸入的集合中的多邊形是一致地取向的;(ii)輸入的部分是閉合的2D流形。根據(jù)一種現(xiàn)有技術(shù)的途徑,使用關(guān)于場景的公差來“填滿”模型中的裂縫或者在某個(gè)公差內(nèi)合并多個(gè)特征。其他途徑(如基于邊界的途徑)嘗試由所輸入的多邊形一起劃分網(wǎng)格的方式而推出實(shí)體結(jié)構(gòu),并且它們很可能在存在非流形幾何形狀時(shí)不正確地進(jìn)行。根據(jù)現(xiàn)有技術(shù),所有的途徑在誤差的大小大于模型中的最小特征時(shí)都不能很好地工作。由于退化輸入(degenerateinput)在實(shí)際應(yīng)用中是常見的并且數(shù)值錯(cuò)誤是不可避免的,因此當(dāng)在退化輸入或接近退化輸入上運(yùn)行時(shí),不考慮這個(gè)問題而實(shí)施一種算法可能產(chǎn)生不正確的結(jié)果、進(jìn)入無限循環(huán)、或直接崩潰(例如,Lutz Kettner等人在發(fā)表于“計(jì)算幾何理論與應(yīng)用(ComputationalGeometry Theory and Applications) ”第 40 卷第 61-78 頁(2008)上、標(biāo)題為“幾何計(jì)算中的穩(wěn)健性問題的課堂實(shí)例(Classroom examples of robustness problems in geometriccomputations) ”的文章中提出的;或者如Stefan Schirra,“幾何計(jì)算中的穩(wěn)健性和精確性問題(Robustness and precision issues in geometric computation),,,“計(jì)算幾何手冊(Handbook of Computational Geometry),,(Jorg-Rudiger Sack 和 Jorge Urrutia,編輯)第14章,第597-632頁,Elsevier科學(xué)出版公司,2000中所提出的)。根據(jù)現(xiàn)有技術(shù),建筑師使用CAD軟件(例如,AuUdidiK.和Revil1;,由位于美國的
AutoDesk 公司開發(fā);Google SketchUp)來產(chǎn)生不同的3D數(shù)字模型。這些模型可以包括
多個(gè)建筑部分,如墻壁、樓梯、屋頂?shù)鹊取4砀鱾€(gè)部分的數(shù)據(jù)可能是訛誤的或者包含不一致性。即使該數(shù)據(jù)無瑕疵,每個(gè)單獨(dú)的部分可能不適合3D印刷,因?yàn)樗赡懿粔蚝瘢蛘咚赡苓`反重力而懸浮于半空中。最后,組合在一起的所有部分可能不適合3D印刷,因?yàn)樗鼈兛赡鼙舜讼嘟徊⑶野纥c(diǎn)。自約三十年前創(chuàng)始以來,CAD軟件一直在持續(xù)的發(fā)展。商業(yè)的3DCAD技術(shù)與工程 軟件設(shè)計(jì)產(chǎn)品如SoMdmrkse、Inventor 、PTC , SdidEdge'以及對3D空間內(nèi)
的分析和設(shè)計(jì)能力提供了改進(jìn)的許多其他產(chǎn)品合并了。第一個(gè)用于快速原型制作的技術(shù)在20世紀(jì)80年代后期問世,并且商業(yè)的3D印刷機(jī)在此后立即隨之出現(xiàn),其目的是帶來3D CAD軟件設(shè)計(jì)所產(chǎn)生的真實(shí)的實(shí)體模型。今天,它們遍布了許多領(lǐng)域;它們被用于多種多樣的應(yīng)用并且甚至被用于以較小的數(shù)量制造多種生產(chǎn)高品質(zhì)部件。一些雕刻家使用這種技術(shù)來生產(chǎn)用于精巧藝術(shù)品展覽的復(fù)雜形狀。但軟件輸入的品質(zhì)尚較不能令人滿意。用于3D印刷機(jī)的輸入數(shù)據(jù)可能包含多個(gè)錯(cuò)誤,這個(gè)事實(shí)已經(jīng)導(dǎo)致后CAD的診斷和修復(fù)軟件的發(fā)展,如
Materialise*. Marcam 和Deskartes* 等等。在現(xiàn)有技術(shù)中已經(jīng)認(rèn)識到了 3D印刷的這些問題,并且已經(jīng)提出了不同的解決方案。例如,US2005/038549披露了對快速原型制作構(gòu)建文件進(jìn)行自適應(yīng)修改的一種系統(tǒng)和方法。該方法包括以下步驟讀取一個(gè)儲存了三維對象的數(shù)字描述的快速原型構(gòu)建文件。這種描述還包括從多個(gè)構(gòu)建文件校正算法中選擇一個(gè)構(gòu)建文件校正算法的操作。對于另一個(gè)實(shí)例,US5,705,117提出了一種用于顯現(xiàn)原型部分的立體光刻術(shù)方法,其中將一種非光敏聚合物材料包括在所得的部分之中從而顯現(xiàn)一個(gè)起作用的原型部分。為了允許在顯現(xiàn)的原型部分中放置插入物,定義了一系列STL文件以在多個(gè)單獨(dú)的區(qū)段中形成該原型部分。每次形成一個(gè)區(qū)段時(shí),就將一個(gè)非光敏聚合物插入物手動(dòng)定位在該顯現(xiàn)部分的一個(gè)區(qū)段上。此外,US7,343,216提出了一種用于組裝建筑場所模型的方法,以便輔助對該模型重復(fù)的布置和去除樹葉(foliage)。該場所模型被構(gòu)造為一個(gè)上部外殼部分和一個(gè)下部地基部分,而將模型的樹葉附連于該外殼部分上。該場所模型的上部外殼部分被配置成可去除地附連于該下部地基部分上。因此,從該場所模型中去除外殼還允許在一個(gè)動(dòng)作中將樹葉從該場所模型中去除。進(jìn)一步地,JP11339070提出了通過對一個(gè)子文件中的實(shí)體子模型進(jìn)行表面化、引入一個(gè)主文件中、并且與一個(gè)主要實(shí)體模型聯(lián)合而產(chǎn)生表面模型的方法。為此,進(jìn)行了一個(gè)改變操作,如該主要實(shí)體模型的局部切割、投影添加?;谝陨嫌^察,本領(lǐng)域繼續(xù)需要提供一種方法和系統(tǒng),該方法和系統(tǒng)能夠?qū)⒖赡苡炚`的以及不一致的、表示為多邊形網(wǎng)格(例如,非流形網(wǎng)格、相交的三角形、具有T節(jié)點(diǎn)的網(wǎng)格等等)的模型轉(zhuǎn)換為有效的可印刷的模型從而用于一個(gè)較大的印刷設(shè)備組。
而且,本領(lǐng)域繼續(xù)需要提供一種方法和系統(tǒng),該方法和系統(tǒng)能夠?qū)?D對象的可能訛誤的或不一致的數(shù)字模型轉(zhuǎn)換為可以使用實(shí)體自由成形制造(SFF)(—種工藝,也稱為快速原型制作(RP))進(jìn)行自動(dòng)構(gòu)建的物理對象的模型。快速原型制作軟件的出售商包括Materialise、Deskartes、Marcam Engineering、Kxinc 和 CADspan0此外,本領(lǐng)域需要提供一種方法和系統(tǒng),該方法和系統(tǒng)能夠處理建筑領(lǐng)域中存在的多種模型,如建筑物和景觀、以及在許多其他領(lǐng)域中存在的模型,如科學(xué)上的可視化作用和物理擬真。此外,本領(lǐng)域需要提供一種方法和系統(tǒng),該方法和系統(tǒng)被配置為修正訛誤的模型并且去除不一致性以用于不同的過程,如3D印刷、組裝規(guī)劃、等等。還進(jìn)一步地,本領(lǐng)域需要提供一種方法和系統(tǒng),該方法和系統(tǒng)能夠進(jìn)行薄部分的增厚操作,同時(shí)保留其功能性、去除可能的相交處和奇點(diǎn)并將所有的部分統(tǒng)一成單個(gè)的可印刷的模型,該模型包括一個(gè)或多個(gè)閉合的2D流形而基本上沒有偽像。本說明書中提及的所有公開文件和專利文件、以及其中直接或間接引用的公開文 件和專利文的披露內(nèi)容都通過弓I用結(jié)合在此。發(fā)明概述本發(fā)明的某些實(shí)施方案尋求提供一種主要但不僅僅用于建筑用途的、將3D(三維)數(shù)字對象模型轉(zhuǎn)化為對于3D印刷機(jī)有效的3D可印刷的形式的方法和系統(tǒng)。本發(fā)明的某些實(shí)施方案尋求提供一種使得(建筑師、工程師和建筑)使用者能夠完全利用3D模型印刷技術(shù)的技術(shù)。在嘗試以3D印刷機(jī)使用目前的軟件(如Autodesk Revit、SketchUp)來印刷3D設(shè)計(jì)模型時(shí),必須要手動(dòng)矯正以便由這種設(shè)計(jì)產(chǎn)生精確的3D模型。這是比例問題、不同設(shè)計(jì)軟件之間以及不同類型的3D印刷機(jī)之間的兼容性導(dǎo)致的。本發(fā)明的某些實(shí)施方案尋求在觸摸一個(gè)鍵時(shí)自動(dòng)地提供一種無誤差的、準(zhǔn)確的、精密縮放的、相當(dāng)大的3D模型,而與所使用的3D設(shè)計(jì)軟件和3D印刷機(jī)無關(guān)。本發(fā)明的某些實(shí)施方案尋求提供一種方法,該方法可工作來將現(xiàn)有的3D設(shè)計(jì)轉(zhuǎn)化為與STL兼容的格式以便通過3D印刷機(jī)來使用,或是其他適當(dāng)?shù)母袷剑渲心P驮徒?gòu)中節(jié)省的時(shí)間從每個(gè)模型幾周減小到了幾小時(shí)。本發(fā)明的某些實(shí)施方案尋求,由于價(jià)格限制和印刷機(jī)限制不是為每個(gè)設(shè)計(jì)創(chuàng)造一個(gè)模型,而是提供一種創(chuàng)造同一模型的任意多的副本和/或以不同的比例尺印刷多個(gè)模型的能力。本發(fā)明的某些實(shí)施方案尋求在建筑師、3D印刷服務(wù)提供商以及3D印刷機(jī)制造商之間進(jìn)行連接,例如,使用云計(jì)算,由此獲得了計(jì)算能力,因?yàn)槌R?guī)的3D建模是一種要求高計(jì)算能力的操作。輸入文件格式可以例如包括Autodesk Revit、Google Sketchup、AutoCAD DXF/DWG、VRML、STL中的任何一種或所有。編輯可以包括例如拆分、截取/分級、簡化(多邊形裁減)、分離(外殼、材料)中任何一種或所有。輸出可以包括3D可印刷的模型(例如,STL,多材料)。這個(gè)過程可以包括修補(bǔ)(healing)、選擇(交互)、增厚和并集(可印刷的STL)。
本發(fā)明的某些實(shí)施方案尋求為建筑師提供優(yōu)點(diǎn),例如一種或多種系統(tǒng),該系統(tǒng)優(yōu)選地提供了對客戶展示其所計(jì)劃的設(shè)計(jì)的能力、允許對不同的設(shè)計(jì)替代方案進(jìn)行檢查、提供了與客戶的良好的視覺溝通、保存計(jì)劃并且允許立即從客戶獲得反饋、允許建筑師全面控制這個(gè)過程(與目前的3D模型印刷過程不同)、和/或創(chuàng)造同一模型的多個(gè)副本和/或以不同的尺寸印刷同一個(gè)模型。建筑師可以將來自3D軟件的模型上傳到網(wǎng)站上,或這個(gè)過程可以基于云計(jì)算而進(jìn)行。根據(jù)在此顯示和描述的一種方法,進(jìn)行了以下操作中的一些或所有a.找到多面體的3D骨架,例如使用直骨架、中軸線或替代的方法。b.骨架Φ立方體計(jì)算骨架與立方體的閔可夫斯基和,這個(gè)和在此被稱為“膨脹骨架”。 c.計(jì)算原始多面體和膨脹骨架的并集。某些實(shí)施方案的一個(gè)特別的優(yōu)點(diǎn)在于,如果現(xiàn)有的實(shí)體厚度已經(jīng)大于一個(gè)預(yù)定的最小厚度,就不通過在此顯示和描述的方法將其增厚。因此,根據(jù)某些實(shí)施方案提供了一種將具有一個(gè)或多個(gè)3D對象的不一致的3D (三維)模型轉(zhuǎn)化為一種有效的可印刷的3D模型的方法,該方法包括a)接收一個(gè)輸入模型文件和/或接收建模者數(shù)據(jù),從而產(chǎn)生具有一個(gè)或多個(gè)部分的一個(gè)輸入3D模型;b)分析該輸入3D模型并去除其一個(gè)或多個(gè)不一致;c)對該3D模型的一個(gè)或多個(gè)部分增厚,同時(shí)保留其功能性;并且d)統(tǒng)一這一個(gè)或多個(gè)部分的內(nèi)部體積的并集,由此去除自相交和/或這兩個(gè)或更多個(gè)部分之間的相交,從而產(chǎn)生一種有效的可印刷的3D模型。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,該方法進(jìn)一步包括導(dǎo)入該輸入模型文件和/或建模者數(shù)據(jù)。根據(jù)本發(fā)明的一個(gè)進(jìn)一步的實(shí)施方案,這種導(dǎo)入進(jìn)一步包括以下各項(xiàng)中的一項(xiàng)或多項(xiàng)a)對輸入模型文件進(jìn)行分析;并且b)從一個(gè)建模應(yīng)用中獲得建模者數(shù)據(jù)。根據(jù)本發(fā)明的又另一個(gè)實(shí)施方案,該方法進(jìn)一步包括根據(jù)一個(gè)或多個(gè)預(yù)定義的指標(biāo)來縮放或裁剪該3D模型。根據(jù)本發(fā)明的又另一個(gè)實(shí)施方案,這種縮放是自動(dòng)進(jìn)行的以便修正一個(gè)3D印刷機(jī)所限定的邊界框。根據(jù)本發(fā)明的又另一個(gè)實(shí)施方案,這種縮放是基于用戶提供的、預(yù)定義的比例因子而手動(dòng)進(jìn)行的。根據(jù)本發(fā)明的又另一個(gè)實(shí)施方案,該方法進(jìn)一步包括通過一個(gè)具有⑶1(圖形用戶界面)的觀察器來控制該方法的每個(gè)步驟。根據(jù)本發(fā)明的又另一個(gè)實(shí)施方案,該方法進(jìn)一步包括基于物理分析而修改該3D模型,以便連接兩個(gè)或更多個(gè)斷開的模型部分并形成一個(gè)單一連接的3D模型。根據(jù)本發(fā)明的一個(gè)進(jìn)一步的實(shí)施方案,該方法進(jìn)一步包括將該3D模型分為一個(gè)或多個(gè)單獨(dú)的子模型。
根據(jù)本發(fā)明的又一個(gè)進(jìn)一步的實(shí)施方案,該方法進(jìn)一步包括選擇至少一個(gè)單獨(dú)的子模型使其基本上獨(dú)立地進(jìn)行印刷。根據(jù)本發(fā)明的又一個(gè)進(jìn)一步的實(shí)施方案,該方法進(jìn)一步包括從該3D模型中去除一個(gè)或多個(gè)奇點(diǎn)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,這種增厚進(jìn)一步包括以下各項(xiàng)中的一項(xiàng)或多項(xiàng)a)豎直增厚;以及b)水平增厚。根據(jù)本發(fā)明的另一個(gè)實(shí)施方案,這種增厚進(jìn)一步包括a)確定該3D模型是否具有凸?fàn)畹淖硬糠?,并且如果沒有的話,將該3D模型的多個(gè) 部分分解為凸?fàn)畹淖硬糠?;b)計(jì)算每個(gè)子部分的寬度;并且c)將豎直寬度小于一個(gè)第一預(yù)定義值的對應(yīng)的子部分沿該豎直方向增厚,并且將水平寬度小于一個(gè)第二預(yù)定義值的對應(yīng)的子部分沿該水平方向增厚。根據(jù)本發(fā)明的又另一個(gè)實(shí)施方案,該方法進(jìn)一步包括導(dǎo)出該3D模型以進(jìn)行3D印刷。根據(jù)本發(fā)明的又另一個(gè)實(shí)施方案,這種導(dǎo)出進(jìn)一步包括以下各項(xiàng)中的一項(xiàng)或多項(xiàng)a)將該3D模型儲存在一個(gè)輸出模型文件中,該輸出模型文件將該模型以一種受支持的文件格式呈現(xiàn);并且b)將該3D模型發(fā)送至一個(gè)3D印刷機(jī)。根據(jù)本發(fā)明的又另一個(gè)實(shí)施方案,該輸出模型文件是有待用于3D印刷的STL(立體光刻術(shù))文件。配置了一種系統(tǒng)來將一個(gè)或多個(gè)3D對象的一種不一致的3D(三維)模型轉(zhuǎn)化為一種有效的可印刷的3D模型,該系統(tǒng)包括a)由一個(gè)數(shù)據(jù)存儲設(shè)備提供的輸入模型文件和/或建模者數(shù)據(jù);b) —個(gè)子系統(tǒng),該子系統(tǒng)被配置成b. I.接收由該數(shù)據(jù)存儲設(shè)備提供的一個(gè)輸入模型文件和/或接收建模者數(shù)據(jù),從而產(chǎn)生具有一個(gè)或多個(gè)部分的一個(gè)輸入3D模型;b. 2.分析該輸入3D模型并去除其一個(gè)或多個(gè)不一致;b. 3.對該3D模型的一個(gè)或多個(gè)部分增厚,同時(shí)保留其功能性;并且b. 4.統(tǒng)一這一個(gè)或多個(gè)部分的內(nèi)部體積的并集,由此去除自相交和/或這兩個(gè)或更多個(gè)部分之間的相交,從而產(chǎn)生一種有效的可印刷的3D模型;以及c) 一個(gè)3D印刷機(jī),用于印刷該有效的可印刷的3D模型。一種機(jī)器可讀的程序存儲設(shè)備,明確地收錄了該機(jī)器可執(zhí)行的指令的一個(gè)程序,以便進(jìn)行一種將具有一個(gè)或多個(gè)3D對象的不一致的3D (三維)模型轉(zhuǎn)化為一種有效的可印刷的3D模型的方法,該方法包括a)接收一個(gè)輸入模型文件和/或接收建模者數(shù)據(jù),從而產(chǎn)生具有一個(gè)或多個(gè)部分的一個(gè)輸入3D模型;b)分析該輸入3D模型并去除其一個(gè)或多個(gè)不一致;c)對該3D模型的一個(gè)或多個(gè)部分增厚,同時(shí)保留其功能性;并且
d)統(tǒng)一這一個(gè)或多個(gè)部分的內(nèi)部體積的并集,由此去除自相交和/或這兩個(gè)或多個(gè)部分之間的相交,從而產(chǎn)生一種有效的可印刷的3D模型。還根據(jù)本發(fā)明的某些實(shí)施方案提供了用于產(chǎn)生通過3D印刷機(jī)可印刷的建筑結(jié)構(gòu)的表現(xiàn)形式(representation)的一種計(jì)算機(jī)化的方法,該方法包括提供一種建筑結(jié)構(gòu)的建筑模型,該建筑模型包括多個(gè)多面體;使用一個(gè)處理器對所述多面體中的至少一個(gè)與另一種其尺寸代表了該印刷機(jī)的能力的形狀進(jìn)行閔可夫斯基求和;并且使用這些并集后的輸出多面體來產(chǎn)生一種通過3D印刷機(jī)可印刷的建筑結(jié)構(gòu)的表現(xiàn)形式。進(jìn)一步地根據(jù)本發(fā)明的某些實(shí)施方案,該方法在所述閔可夫斯基求和之前還包括將這些多面體之中的每個(gè)非凸多面體分解為多個(gè)凸多面體;并且該閔可夫斯基求和包括對至少一個(gè)凸多面體和另一種其尺寸代表了該印刷機(jī)的能力的形狀進(jìn)行閔可夫斯基求和。還進(jìn)一步地根據(jù)本發(fā)明的某些實(shí)施方案,該方法還包括在該3D印刷機(jī)上印刷這 種表現(xiàn)形式。此外,根據(jù)本發(fā)明的某些實(shí)施方案,這種分解包括嘗試將這些多面體之中的每個(gè)非凸多面體分解為多個(gè)除三角形之外的凸多面體,并且如果對于至少一個(gè)單獨(dú)的非凸多面體而言這種嘗試失效,則將該單個(gè)的非凸多面體分解為多個(gè)多邊形并將這些多邊形并集。根據(jù)本發(fā)明的某些實(shí)施方案還提供了一種計(jì)算機(jī)化的3D印刷系統(tǒng),該系統(tǒng)將一個(gè)輸入幾何形狀轉(zhuǎn)化為一個(gè)3D可印刷的模型,該系統(tǒng)包括一個(gè)崗可夫斯基求和器,該求和器包括一個(gè)處理器,該處理器可工作來計(jì)算多面體與一個(gè)簡單的小凸形的閔可夫斯基和,由此產(chǎn)生一種3D可印刷的模型;以及一個(gè)輸出產(chǎn)生器,該產(chǎn)生器可工作來產(chǎn)生一種代表3D可印刷的模型的輸出。進(jìn)一步地根據(jù)本發(fā)明的某些實(shí)施方案,該至少一個(gè)凸多面體包括所有這些凸多面體。還進(jìn)一步地根據(jù)本發(fā)明的某些實(shí)施方案,該形狀包括一種簡單的小凸形。另外根據(jù)本發(fā)明的某些實(shí)施方案,該形狀包括一個(gè)立方體。進(jìn)一步地根據(jù)本發(fā)明的某些實(shí)施方案,該立方體可以例如包括一個(gè)Imm x Imm xImm的立方體。根據(jù)本發(fā)明的某些實(shí)施方案還提供了一種計(jì)算機(jī)程序產(chǎn)品,該產(chǎn)品包括具有體現(xiàn)在其中的計(jì)算機(jī)可讀程序代碼的一個(gè)計(jì)算機(jī)可用媒體,該計(jì)算機(jī)可讀程序代碼被適配為被執(zhí)行而實(shí)施一種用于產(chǎn)生通過3D印刷機(jī)可印刷的建筑結(jié)構(gòu)的表現(xiàn)形式的方法,該方法包括提供一種建筑結(jié)構(gòu)的建筑模型,該建筑模型包括多個(gè)多面體;對這些多面體中的至少一個(gè)與另一種其尺寸代表了該印刷機(jī)的容量的形狀進(jìn)行閔可夫斯基求和;并且使用該并集后的輸出多面體來產(chǎn)生一種通過3D印刷機(jī)可印刷的建筑結(jié)構(gòu)的表現(xiàn)形式。進(jìn)一步地根據(jù)本發(fā)明的某些實(shí)施方案,這些多邊形中的至少一些是三角形。還進(jìn)一步地根據(jù)本發(fā)明的某些實(shí)施方案,該方法還包括將通過該閔可夫斯基求和而產(chǎn)生的閔可夫斯基和中的至少一些進(jìn)行并集,由此產(chǎn)生至少一個(gè)并集后的輸出多面體。另外根據(jù)本發(fā)明的某些實(shí)施方案,僅僅將作為分解結(jié)果的每個(gè)凸多面體集合的這些閔可夫斯基和進(jìn)行并集。根據(jù)本發(fā)明的某些實(shí)施方案還提供了一種制備用于3D印刷的建筑模型的系統(tǒng),該系統(tǒng)包括一個(gè)修補(bǔ)器,該修補(bǔ)器使用至少一個(gè)崗可夫斯基和計(jì)算來對這些建筑模型進(jìn)行修補(bǔ)。進(jìn)一步地根據(jù)本發(fā)明的某些實(shí)施方案,這種修補(bǔ)包括對該模型中的至少一個(gè)小空隙進(jìn)行修補(bǔ)。還進(jìn)一步地根據(jù)本發(fā)明的某些實(shí)施方案,這種修補(bǔ)包括對至少一個(gè)缺失的小面(facet)進(jìn)行修補(bǔ)。還提供了一種計(jì)算機(jī)程序產(chǎn)品,該產(chǎn)品包括一種計(jì)算機(jī)可用媒體或計(jì)算機(jī)可讀存儲媒體,該媒體典型地是實(shí)體的、具有體現(xiàn)在其中的計(jì)算機(jī)可讀程序代碼,該計(jì)算機(jī)可讀程序代碼被適配為被執(zhí)行而實(shí)施在此示出和說明的任何或所有的方法。所了解的是,在此示出和說明的任何或所有的計(jì)算步驟都可用計(jì)算機(jī)實(shí)施。根據(jù)在此的傳授內(nèi)容,這些操作可用通過一臺專門為所希望的目標(biāo)而構(gòu)造的計(jì)算機(jī)或者通過一臺專門為所希望的目標(biāo)配置
的通用型計(jì)算機(jī)、靠儲存在計(jì)算機(jī)可讀存儲媒體中的計(jì)算機(jī)程序來進(jìn)行??梢允褂萌魏芜m當(dāng)?shù)奶幚砥?、顯示器和輸入裝置來處理、顯示(例如在計(jì)算機(jī)屏幕或其他計(jì)算機(jī)輸出裝置上)、儲存和接受信息,例如在此示出和說明的任何方法或裝置所使用或所產(chǎn)生的信息,其中根據(jù)本發(fā)明的某些或所有實(shí)施方案,上述處理器、顯示器和輸入裝置包括計(jì)算機(jī)程序。在此示出和說明的本發(fā)明的任何或所有的功能性都可以通過以下各項(xiàng)進(jìn)行一種常規(guī)的個(gè)人計(jì)算機(jī)處理器、工作站或其他可編程的裝置或計(jì)算機(jī)或電子計(jì)算裝置(通用型的或?qū)iT構(gòu)造的),用于進(jìn)行處理;計(jì)算機(jī)顯示屏和/或印刷機(jī)和/或揚(yáng)聲器,用于顯示;機(jī)器可讀的存儲器如光盤、CDR0M、磁光盤或其他盤片;RAM、R0M、EPR0M、EEPR0M、磁卡或光卡或其他卡,用于儲存;以及鍵盤或鼠標(biāo),用于接受。如以上使用的術(shù)語“處理”旨在包括對作為物理(例如電子的)現(xiàn)象呈現(xiàn)的數(shù)據(jù)的任何類型的計(jì)算或操作或變換,這可以發(fā)生或存留于一臺計(jì)算機(jī)的寄存器和/或存儲器內(nèi)。術(shù)語處理器包括單個(gè)處理單元或多個(gè)分布式的或遠(yuǎn)程的這樣的單元。以上裝置可以通過任何常規(guī)的有線或無線的數(shù)字通信裝置來進(jìn)行通信,例如,通過有線的或蜂窩式電話網(wǎng)絡(luò)或計(jì)算機(jī)網(wǎng)絡(luò),如因特網(wǎng)。根據(jù)本發(fā)明的某些實(shí)施方案,本發(fā)明的設(shè)備可以包括含有或以其他方式儲存了指令程序的機(jī)器可讀存儲器,這些指令在被機(jī)器執(zhí)行時(shí)實(shí)施了在此示出和說明的本發(fā)明的一些或所有的設(shè)備、方法、特征和功能性。替代地或附加地,根據(jù)本發(fā)明的某些實(shí)施方案,本發(fā)明的設(shè)備可以包括如上的一種可以按任何常規(guī)程序設(shè)計(jì)語言書寫的程序、以及任選地一個(gè)用于執(zhí)行該程序的機(jī)器,例如但不限于一臺通用型的計(jì)算機(jī),該計(jì)算機(jī)可以任選地根據(jù)本發(fā)明的傳授內(nèi)容進(jìn)行配置或啟動(dòng)。結(jié)合在此的任何傳授內(nèi)容可以在任何適當(dāng)?shù)牡胤皆诖砦锢韺ο蠡蛭镔|(zhì)的信號上運(yùn)行。在下面的章節(jié)中對以上提及的實(shí)施方案以及其他實(shí)施方案進(jìn)行詳細(xì)說明。在文字或附圖中出現(xiàn)的任何商標(biāo)都是其所有者的財(cái)產(chǎn)并且在此出現(xiàn)僅僅是為了解釋或展示可以如何實(shí)施本發(fā)明的實(shí)施方案的一個(gè)例子。除非另外明確地指出,否則正如從以下討論中很清楚的,應(yīng)了解的是貫穿本說明書的討論,使用諸如“處理”、“計(jì)算”、“估算”、“選擇”、“評級”、“定級”、“算出”、“確定”、“生成”、“重新評估”、“分級”、“產(chǎn)生”、“制造”、“立體匹配”、“注冊”、“檢測”、“關(guān)聯(lián)”、“疊加”、“獲
得”或類似的術(shù)語來指代一個(gè)計(jì)算機(jī)或計(jì)算系統(tǒng)、或處理器或類似電子計(jì)算裝置的動(dòng)作和/或過程,這些動(dòng)作和/或過程對在該計(jì)算系統(tǒng)的寄存器和/或存儲器中作為物理量(例如電子的量)呈現(xiàn)的數(shù)據(jù)進(jìn)行操作和/或變形使其成為在該計(jì)算系統(tǒng)的存儲器、寄存器或其他此類信息儲存、傳輸或顯示裝置中的類似地作為物理量呈現(xiàn)的其他數(shù)據(jù)。術(shù)語“計(jì)算機(jī)”應(yīng)廣義地理解,以便覆蓋任何種類的具有數(shù)據(jù)處理能力的電子裝置,作為非限制性的例子,包括了個(gè)人計(jì)算機(jī)、服務(wù)器、計(jì)算系統(tǒng)、通信裝置、處理器(例如,數(shù)字信號處理器(DSP)、微控制器、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)等等)以及其他電子計(jì)算裝置。僅為了清楚起見,可以就專用于特定編程語言、操作系統(tǒng)、瀏覽器、系統(tǒng)版本、單獨(dú)的產(chǎn)品以及類似物的術(shù)語來描述本發(fā)明。將會了解的是,這 種術(shù)語旨在以舉例方式清楚且簡明地傳達(dá)一般的操作原理并且不旨在將本發(fā)明的范圍限制于任何具體的編程語言操作系統(tǒng)、瀏覽器、系統(tǒng)版本、或單獨(dú)的產(chǎn)品。在此分開地列出的元件不需要是不同的部件并且替代地可以是相同的結(jié)構(gòu)。在此說明的一些或所有步驟可以采用一個(gè)計(jì)算機(jī)處理器,反之亦然。附圖簡要說明為了理解本發(fā)明并看到實(shí)際它可以怎樣執(zhí)行,現(xiàn)在僅通過非限制性實(shí)例的方式來參考
某些實(shí)施方案,其中-圖I是現(xiàn)有技術(shù)的3D印刷技術(shù)的示意圖,這種技術(shù)將待印刷的模型轉(zhuǎn)化為較薄的水平截面并且接著創(chuàng)造相繼的多個(gè)層直到完成印刷;-圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施方案的一種用于將可能訛誤的且不一致的3D對象模型轉(zhuǎn)換(轉(zhuǎn)化)為有效的可印刷的模型的系統(tǒng)的示意圖;-圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施方案的一種用于將可能訛誤的且不一致的3D對象模型轉(zhuǎn)換為有效的可印刷的模型的方法的流程圖;-圖4A是根據(jù)本發(fā)明的一個(gè)實(shí)施方案的一種自相交的模型的示意圖;-圖4B是根據(jù)本發(fā)明的一個(gè)實(shí)施方案通過引入一個(gè)恰當(dāng)?shù)睦舛齌形頂點(diǎn)的示意圖;-圖4C是根據(jù)本發(fā)明的一個(gè)實(shí)施方案通過添加該缺失的四邊形而形成一種無縫的模型的示意圖;-圖4D是根據(jù)本發(fā)明的一個(gè)實(shí)施方案通過翻動(dòng)該錯(cuò)誤取向的多邊形而形成一種無縫的模型的示意圖;-圖5A是根據(jù)本發(fā)明的一個(gè)實(shí)施方案在修補(bǔ)步驟中將單個(gè)的三角形轉(zhuǎn)化為具有零體積的棱柱的示意圖,其中頂部三角形與底部三角形之間的距離為零;-圖5B是根據(jù)本發(fā)明的一個(gè)實(shí)施方案的膨脹操作的示意圖;-圖5C是根據(jù)本發(fā)明的一個(gè)實(shí)施方案對包括薄部分的樓梯應(yīng)用的一種一般性增厚操作的示意圖;-圖6A是根據(jù)本發(fā)明的一個(gè)實(shí)施方案的包含拓?fù)淦纥c(diǎn)的模型的不意圖;-圖6B是根據(jù)本發(fā)明的一個(gè)實(shí)施方案對其應(yīng)用了縫合操作而由此去除了拓?fù)淦纥c(diǎn)的模型的示意圖;-圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施方案來統(tǒng)一兩個(gè)無縫的墻壁及其網(wǎng)格的示意圖;-圖8是根據(jù)本發(fā)明的一個(gè)實(shí)施方案的一個(gè)樣品Gn的圖示,該樣品顯示了STL文件格式并且確保用戶能夠控制并選擇要進(jìn)行3D印刷的模型對象;-圖9A-9B—起形成了一種方法的簡化的流程圖展示,該方法是根據(jù)本發(fā)明的某些實(shí)施方案可工作的以使得三維對象模型能夠進(jìn)行印刷;-圖10是適合于進(jìn)行圖9A的步驟900的一種自適應(yīng)分解方法的簡化的流程圖展示;-圖11A-11B分別是在使用圖9A、9B_10的方法進(jìn)行處理之前和之后一個(gè)墻壁的平面圖;-圖12是本發(fā)明的一個(gè)實(shí)施方案的示例性實(shí)現(xiàn)方式的簡圖;-圖13是對應(yīng)于圖12的簡圖的偽代碼。將會了解的是,為了簡單且清楚的展示,在附圖中顯示的元素不必成比例地繪制。例如,為清楚起見,某些元素的尺寸可能相對于其他元素被夸大。進(jìn)一步,在認(rèn)為適當(dāng)?shù)牡胤?,可以在附圖中重復(fù)參考號以指出對應(yīng)的或類似的元素。
某些實(shí)施方案的詳細(xì)說明除非另外明確指出,否則正如從以上討論中很清楚的,應(yīng)了解的是貫穿本說明書的討論,使用諸如“處理”、“計(jì)算”、“算出”、“確定”或類似的術(shù)語是指代一臺計(jì)算機(jī)的動(dòng)作和/或過程,這些動(dòng)作和/或過程將數(shù)據(jù)操作和/或變換為其他數(shù)據(jù),該數(shù)據(jù)是以物理量(例如電子的量)呈現(xiàn)的。術(shù)語“計(jì)算機(jī)”應(yīng)廣義地理解,以便覆蓋任何種類的具有數(shù)據(jù)處理能力的電子裝置,作為非限制性的例子,包括了個(gè)人計(jì)算機(jī)、服務(wù)器、計(jì)算系統(tǒng)、通信裝置、處理器(例如,數(shù)字信號處理器(DSP)、微控制器、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)等等)以及其他電子計(jì)算裝置。而且,根據(jù)在此的傳授內(nèi)容,這些操作可用通過一臺專門為所希望的目標(biāo)而構(gòu)造的計(jì)算機(jī)或者通過一臺專門為所希望的目標(biāo)配置的通用型計(jì)算機(jī)、靠儲存在計(jì)算機(jī)可讀存儲媒體中的計(jì)算機(jī)程序來進(jìn)行。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,系統(tǒng)200(圖2)產(chǎn)生的模型被稱為有效的可印刷的模型或簡稱為可印刷的模型??傮w上,可印刷的模型滿足了不同的印刷設(shè)備所強(qiáng)加的一組預(yù)定義的要求。不同的印刷設(shè)備強(qiáng)加了不同組的要求,因?yàn)樗鼈兪腔诓煌募夹g(shù)。根據(jù)本發(fā)明,系統(tǒng)200滿足了一個(gè)較大的印刷設(shè)備組、并且處理了不同的建筑模型,如建筑物和景觀、以及在許多其他領(lǐng)域中存在的模型,如科學(xué)上的可視化作用和物理擬真。為簡單起見,下面對本發(fā)明的詳細(xì)說明主要涉及用于3D印刷的模型。然而,不應(yīng)該認(rèn)為本發(fā)明是僅僅局限于3D印刷,而本發(fā)明還可以涉及修正訛誤的模型并且對于組裝規(guī)劃來去除不一致等等。圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施方案的一種用于將可能訛誤的且不一致的3D對象模型轉(zhuǎn)換(轉(zhuǎn)化)為有效的可印刷的模型的系統(tǒng)200的示意圖,這些3D對象模型是例如作為多邊形網(wǎng)格(例如,非流形網(wǎng)格、相交的三角形、具有T形節(jié)點(diǎn)的網(wǎng)格等等)呈現(xiàn)的。根
據(jù)本發(fā)明的一個(gè)實(shí)施方案,常規(guī)的軟件建模工具(例如AutoCad"和Revit )的用戶(例
如,建筑師)創(chuàng)造3D中的對象的模型,如建筑物、景觀等等。每種這樣的工具創(chuàng)造的(數(shù)字的)模型包括3D中多個(gè)單獨(dú)的任意部分(例如,墻壁、樓梯和屋頂)以及它們在3D空間中的對應(yīng)的位置(即,平移和取向)。這些建模工具使用了若干常規(guī)的文件格式來儲存這些模型(例如,STL (立體光刻術(shù))和PLY (多邊形)文件格式)。這些建模工具中的一些能夠使第三方開發(fā)商擴(kuò)展其主要應(yīng)用程序并且通過常稱為“插件”的其他計(jì)算機(jī)程序來提供新的特征。即,主應(yīng)用程序提供該插件可以使用的服務(wù),包括使插件用該主應(yīng)用程序來注冊自身的方式以及與插件進(jìn)行數(shù)據(jù)交換的協(xié)議。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,子系統(tǒng)215可以是一個(gè)獨(dú)立的應(yīng)用程序或一個(gè)插件,從而接受3D空間中的一個(gè)對象模型作為輸入。系統(tǒng)200包括該子系統(tǒng)215,用于接收處于3D空間內(nèi)的一個(gè)對象模型的文件以及對應(yīng)的建模者數(shù)據(jù)211 (例如是由一個(gè)存儲器單元(未示出)提供的)并且將這樣一個(gè)對象模型轉(zhuǎn)換(轉(zhuǎn)化)為一個(gè)有效的可印刷的3D對象模型;以及一個(gè)3D印刷機(jī)220,用于印刷該有效的三維的對象模型。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,建模者數(shù)據(jù)211可以包括實(shí)體建模數(shù)據(jù)和/或多邊形湯(一個(gè)任意的多邊形集合)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,通過子系統(tǒng)215來(自動(dòng)地)檢驗(yàn)該3D數(shù)字模型以便確定訛誤或不一致。如果發(fā)現(xiàn)了一個(gè)或多個(gè)訛誤或不一致,則子系統(tǒng)215將其修正。然后,通過應(yīng)用對應(yīng)的操作來(自動(dòng)地)制備用于印刷的模型,例如通過增厚那些對于印刷機(jī)的分辨率而言不夠厚的薄的部分。而且,識別出功能部分(例如,樓梯等等)并然后對其應(yīng)用專門的增厚操作,由此保留其功能性。在所有的單獨(dú)部分都準(zhǔn)備好印刷(例如,足夠厚并且不“懸浮在半空中”)之后,將它們統(tǒng)一,從而消除相交并且有可能去除奇點(diǎn)。其結(jié)果是,獲得了最終的相干模型,該模型可以通過3D印刷機(jī)220來印刷(制造)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,系統(tǒng)200能夠?qū)TL (立體光刻術(shù)),VRML (虛擬現(xiàn)實(shí)建模語言)、以及X3D (基 于XML的(可擴(kuò)展標(biāo)記語言)文件格式,用于呈現(xiàn)3D計(jì)算機(jī)圖形)文件格式的模型進(jìn)行分
析。它還接受通過建模者(建模軟件)如AutoCacf和Rex it11所產(chǎn)生的模型,這是通過
它們的對應(yīng)的應(yīng)用程序接口(API)。進(jìn)一步地,系統(tǒng)200可以產(chǎn)生不同文件格式的有效的可印刷的模型,如STL文件格式,這些可以通過不同的3D印刷機(jī)來分析,并且因此它用作了呈現(xiàn)出用于印刷的3D模型的一種公用格式。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,在系統(tǒng)200的輸入端接收的模型文件206可以是訛誤的或包含不一致。而且,單獨(dú)的部分的物理尺寸對于3D印刷而言可能較??;另一方面,包括所有部分在內(nèi)的整個(gè)模型的尺寸對于3D印刷而言可能較大。此外,這些單獨(dú)的部分可能在其內(nèi)部彼此相交,或者它們可能在其邊界內(nèi)在頂點(diǎn)或棱處彼此相交,從而導(dǎo)致奇點(diǎn)。因此,通過子系統(tǒng)215來應(yīng)用一系列的操作,從而將輸入模型(文件)206轉(zhuǎn)換(轉(zhuǎn)化)為可以用于快速原型制作并且用于具有類似要求的其他應(yīng)用的一種模型。所應(yīng)用的一系列操作是以流水線實(shí)施的,包括預(yù)定數(shù)目標(biāo)階段,例如九個(gè)階段,其中一些可以是任選的并且可以跳過。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,系統(tǒng)200使得能夠?qū)⒖赡苡炚`的或不一致的3D對象數(shù)字模型轉(zhuǎn)換為可以使用實(shí)體自由成形制造(SFF)(—種方法,也稱為快速原型制作(RP))而自動(dòng)構(gòu)建的物理對象的模型。該可印刷的模型必須配合在一個(gè)邊界框內(nèi),例如由該3D印刷機(jī)220預(yù)定義的要求所規(guī)定的。根據(jù)本發(fā)明的另一個(gè)實(shí)施方案,如果該模型相對于該邊界框較大,則必須根據(jù)該邊界框?qū)⑵淇s小或裁剪。圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施方案的一種用于將可能訛誤的且不一致的3D對象模型轉(zhuǎn)換為有效的可印刷的模型的方法的流程圖300。根據(jù)這個(gè)實(shí)施方案,該方法包括以下步驟中的一些或所有,如所顯示的,例如是適當(dāng)排序的導(dǎo)入305、修補(bǔ)315、縮放320、增厚(膨脹)325、支撐340、選擇(裁剪)345、統(tǒng)一 350、去除奇點(diǎn)360以及導(dǎo)出365,其中一些是任選的并且可以跳過(如支撐步驟340和去除奇點(diǎn)步驟360)。在步驟305,導(dǎo)入模型數(shù)據(jù)。代表該模型的輸入模型文件206 (圖2)是通過在子步驟306對所支持的文件格式如STL進(jìn)行分析而獲得的,或者該數(shù)據(jù)是在步驟307通過建模應(yīng)用程序API(應(yīng)用程序接口)而直接從一個(gè)建模應(yīng)用程序獲得。在步驟315,接收這些(對象)模型、進(jìn)行分析并去除它們的不一致(如果存在的話)。為此,產(chǎn)生了多個(gè)閉合的2D流形(它們可以彼此相交)。這個(gè)操作被稱為修補(bǔ)。然后,在步驟320,根據(jù)用戶選擇對該模型進(jìn)行縮放,要么自動(dòng)進(jìn)行以配合在該3D印刷機(jī)220(圖2)所限定的邊界框內(nèi)、要么通過用戶提供的比例因子而手動(dòng)進(jìn)行。為此,將該模型的這些特征的坐標(biāo)映射為現(xiàn)實(shí)世界的坐標(biāo)。自然,這仍可能產(chǎn)生一種對于通過給定的3D印刷機(jī)220 (圖2)來制造(印刷)而言較大的模型,因?yàn)樗隽?3D印刷機(jī)220所限定了建造體積??梢允褂靡粋€(gè)獨(dú)立的查看器來在步驟330查看(并且在需要時(shí)進(jìn)行設(shè)置/調(diào)節(jié))每個(gè)階段的輸出結(jié)果、特別是最終的輸出結(jié)果,該輸出結(jié)果可以獨(dú)立地發(fā)送至3D印刷機(jī)220(圖2)。用戶可以進(jìn)行系統(tǒng)200的相應(yīng)配置,例如使得能夠膨脹不同種類的模型對象、決定印刷一個(gè)還是多個(gè)單獨(dú)的(子模型)元素、選擇一個(gè)3D印刷機(jī)220、選擇一個(gè)比例因子等等。然后,在步驟325,通過應(yīng)用多個(gè)操作來將制備該模型用于3D印刷(例如通過增厚薄的部分)而進(jìn)一步考慮(保留)這些部分的功能性。此后,在步驟340,基于一種物理分析來對該模型進(jìn)行修改,例如通過添加支撐梁來連接兩個(gè)或更多個(gè)分離的部件并且形成一種個(gè)別連接的模型。此后,應(yīng)用該選擇步驟345,在其中選擇要進(jìn)行3D印刷的 一個(gè)或多個(gè)模型部分。這個(gè)步驟通過將完全或部分超出了該選定的3D印刷機(jī)限定的邊界框的多個(gè)部分自動(dòng)解散而開始。也支持手動(dòng)選擇單獨(dú)的部分。使用該查看器來進(jìn)行用戶選擇。該查看器可以顯示整個(gè)模型,其中將選定的這些部分與解散的部分不相同地進(jìn)行渲染,從而在這兩個(gè)互補(bǔ)的子集之間進(jìn)行區(qū)分。這兩個(gè)子集的渲染由用戶單獨(dú)地控制。在步驟350,將該實(shí)體部分(或多個(gè)部分)的內(nèi)部體積的并集(在步驟340產(chǎn)生)進(jìn)行統(tǒng)一,由此去除自相交和不同部分之間的相交。然后,在步驟360從模型中去除奇點(diǎn)。S卩,識別出奇異的頂點(diǎn)和棱并切掉,由此產(chǎn)生單個(gè)的(無奇點(diǎn)的)流形,或者縫合該模型,從而產(chǎn)生若干個(gè)基本上斷開的2D流形。最后在步驟365,導(dǎo)出該模型??梢詫⒃撃P蛢Υ嬖谝运С值奈募袷匠尸F(xiàn)該模型的一種輸出模型文件中、或者可以在步驟370將其發(fā)送至一個(gè)3D印刷機(jī) 220 (圖 2)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,用戶使用一個(gè)查看器來觀察以上步驟中每一個(gè)的輸出結(jié)果,該查看器是一個(gè)交互式軟件部件,它可以從不同的視圖在三維中渲染該模型,這是由用戶控制的。由于在步驟305過程中的分析操作可能要求較多的計(jì)算時(shí)間,因此用戶可以控制其復(fù)雜性。因此,作為默認(rèn)項(xiàng),可以進(jìn)行一個(gè)低復(fù)雜度的分析。而且例如,用戶可以查看在步驟315中應(yīng)用的修補(bǔ)過程的結(jié)果。如果訛誤或不一致性仍存在并且用戶看到了,則可以應(yīng)用高復(fù)雜度的分析。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,步驟305的結(jié)果是包括一個(gè)或多個(gè)閉合的2D流形而基本上沒有偽像的一個(gè)有效模型。然而,這些2D流形有可能彼此相交。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,這種修補(bǔ)(在步驟315中應(yīng)用的)使得能夠重建一致的3D實(shí)體模型、并且使得能夠由限定了適當(dāng)?shù)膶?shí)體部分的一個(gè)任意的多邊形集合(多邊形湯)來獲得邊界表示。不可定向的2D流形(例如克萊因瓶)和非閉合的2D流形(例如默比烏斯帶)包括非法輸入,因?yàn)樗鼈儧]有限定恰當(dāng)?shù)膶?shí)體。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,提供了自動(dòng)修補(bǔ)輸入模型(例如通過STL文件呈現(xiàn)的)的一組不同的方法(技術(shù))。這些方法可以在效率與品質(zhì)之間采取折衷,并且例如可以默認(rèn)使用最有效率的策略。用戶可能能夠查看結(jié)果并請求重新處理這些模型直到結(jié)果令人滿意。這樣,導(dǎo)入步驟305的結(jié)果可能是包括一個(gè)或多個(gè)閉合的2D流形而基本上沒有彼此相交的偽像的一個(gè)有效模型。獲得一個(gè)較高品質(zhì)的模型的方法可以產(chǎn)生基本上不含不一致性的模型;為此可以實(shí)施T. EMurali等人(在標(biāo)題為“來自任意多邊形數(shù)據(jù)計(jì)算機(jī)圖像的一致的實(shí)體和邊界表不(Consistent Solid and Boundary Representations fromArbitrary Polygonal Data Computer Graphics) ” 1997 交互 3D 圖像討論會的會議錄,Providence,第155-162頁,1997的文章中)介紹的一種技術(shù)。根據(jù)這種技術(shù),空間被分隔為多個(gè)凸多面體區(qū)域,這些區(qū)域被多個(gè)支撐這些輸入多邊形的平面所分開。通過對基于區(qū)域之間的邊界的不透明度的規(guī)則所得出的線性方程系統(tǒng)進(jìn)行求解而識別出多個(gè)實(shí)體區(qū)域I)共用一個(gè)大部分透明的邊界的兩個(gè)相鄰單元很可能具有相同的實(shí)體性(即,如果一個(gè)是實(shí)體的,則另一個(gè)也是);2)共用一個(gè)大部分不透明的邊界的兩個(gè)相鄰單元很可能具有相反的實(shí)體性(即,如果一個(gè)是實(shí)體的,則另一個(gè)不是);并且3)無邊界的單元(即,在外部包含無窮遠(yuǎn)點(diǎn)的那些)不是實(shí)體的。一旦已經(jīng)識別出實(shí)體區(qū)域,則可以輸出沒有相交的、共 面的、或不相連的多邊形的一致的實(shí)體模型。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,對每個(gè)模型部分獨(dú)立地進(jìn)行分析,這種分析采用了對于平面圖像而言公知的歐拉公式。讓v、e和f分別表示每個(gè)部分的頂點(diǎn)、棱和面。然后,等式v+f = e-2必須成立。較不耗時(shí)的修補(bǔ)策略典型地是如下進(jìn)行的。首先,去除相同的和退化的特征,如相同的三角形、退化的三角形/棱。然后,歸并ε趨向(epsilon-close)的特征,并且通過拆分棱而消除T節(jié)點(diǎn)。這樣一次拆分引入了兩個(gè)多邊形來代替一個(gè)原始的多邊形。地貌是陸地表面的豎直維度。它典型地表示為地貌特征的海拔、并且通過附屬于單個(gè)面的棱所界定的非流形2D表面來表示。在附屬于單個(gè)面的棱所界定的3D空間內(nèi)的非流形2D表面代表一種地貌、或者簡單地包括一個(gè)零體積部分的不完全表示。這個(gè)修補(bǔ)階段識別出了這樣的表面。將地貌表面像這樣進(jìn)行分類,并修復(fù)多個(gè)對象(如墻壁)的不完全表示。去除剩余的表面。這樣一個(gè)表面的修復(fù)操作相當(dāng)于引入了具有相反取向的一個(gè)2D表面以及沿著該邊界的一個(gè)ID(—維的)表面。這產(chǎn)生了可以通過增厚步驟325來處理的一個(gè)零體積的部分。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,如果該模型對于滿足該3D印刷機(jī)的要求(配置)而言較大,則必須根據(jù)例如該印刷機(jī)預(yù)定義的要求所規(guī)定的一個(gè)邊界框?qū)⑵淇s小(在步驟320)或裁剪(在步驟345)。這個(gè)縮放操作將該模型的這些特征的坐標(biāo)映射為現(xiàn)實(shí)世界的坐標(biāo)。進(jìn)一步地,這個(gè)裁剪操作在包括該模型的這些部分之中僅選擇被完全包含在該邊界框內(nèi)的那些部分。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,這個(gè)縮放操作在該增厚步驟325之前進(jìn)行,因?yàn)樗玫哪P涂赡馨粔蚝竦牟糠帧8鶕?jù)本發(fā)明的另一個(gè)實(shí)施方案,這個(gè)裁剪操作在該統(tǒng)一步驟350之前進(jìn)行,并且也可以支持對單獨(dú)的部分進(jìn)行手動(dòng)選擇。使用該查看器(在步驟330中)來進(jìn)行用戶選擇。例如,該查看器可以顯示整個(gè)模型,其中將選定的這些部分與非選定的部分不同地進(jìn)行渲染,從而在這兩個(gè)互補(bǔ)的子集之間進(jìn)行區(qū)分。而且,對這兩個(gè)子集的渲染可以由用戶單獨(dú)地控制。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,在增厚和膨脹步驟325的過程中,對一個(gè)模型的每個(gè)部分進(jìn)行分析以便確定這個(gè)部分對于3D印刷而言是否足夠厚。如果不夠厚,則以如下方式改變這個(gè)部分使所得的部分變得足夠厚。從功能觀點(diǎn)來看,不加區(qū)別的增厚可能導(dǎo)致一種與原始模型不匹配的扭曲的模型。因此,對于識別出的部分的預(yù)定的族(family)使用專門的過程,以便保留其功能性。CAD模型包括不同類型的部分,例如墻壁、窗口、樓梯、豎框(mullions)、屋頂、地板、地貌等等。這些不同類型的部分在被創(chuàng)造時(shí)就被分類。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,如果保留這種分類,則在步驟325中應(yīng)用一種新穎的增厚方法(算法)。根據(jù)本發(fā)明的另一個(gè)實(shí)施方案,該增厚步驟可以應(yīng)用兩次以便滿足常規(guī)的3D印刷機(jī)220 (圖2)所強(qiáng)加的這兩個(gè)不同的、對應(yīng)的增厚指標(biāo)。根據(jù)第一個(gè)指標(biāo),所有的部分必須在豎直方向上足夠厚。這可以被稱為豎直增厚。根據(jù)第二個(gè)指標(biāo)(稱為水平增厚),所有部分必須在XY-平面(X和Y是坐標(biāo)系中的軸)內(nèi)包含的所有方向上足夠厚。一般地,豎直和水平增厚操作以兩種方式區(qū)分開。首先,豎直增厚較少被涉及,因?yàn)樗幚韱蝹€(gè)的方向。其次,對這些部分的特定族沿豎直維度施加膨脹。假定1和\分別是豎直的(層)和水平的最小厚度(具有預(yù)定義的值)。這個(gè)增厚操作包括以下子步驟中的一些或所有,如所描述的,是適當(dāng)排序的。首先,將所有的部分分解為凸?fàn)畹淖硬糠?多胞形);在許多情況下,輸入模型(文件)已經(jīng)包括了凸?fàn)畹淖硬糠帧F浯?,?jì)算每個(gè)子部分的寬度。然后,將豎直寬度小于tv的子部分沿該豎直方向增厚,并且將水平寬度小于th的子部分沿適當(dāng)?shù)乃椒较?增厚。當(dāng)識別出一個(gè)子部分不夠厚時(shí),則將其邊界的一個(gè)或多個(gè)小面進(jìn)行平移,以保留該邊界的這些特征的附屬關(guān)系。沿一個(gè)給定方向d進(jìn)行增厚相當(dāng)于在d方向上平移特征。有三種類型的增厚操作,即,縮放、膨脹和偏移。假定P是一個(gè)部分,并且和Wh分別是P的豎直和水平寬度,指向豎直寬度方向的標(biāo)準(zhǔn)化向量是< =(0,0,1) ο假定指向水平寬度方向的標(biāo)準(zhǔn)化向量是dh= (dx,dy,0)。如果使用縮放來將P增厚,則使用以下一個(gè)或多個(gè)預(yù)定義的指標(biāo)(比例因子)。如果應(yīng)用豎直增厚,則僅將這個(gè)部分在z維度上縮放。所應(yīng)用的比例因子是所希望的寬度與這個(gè)寬度之比,即tv/wv。如果應(yīng)用水平增厚,則將這個(gè)部分在X維度和I維度上縮放。X-縮放因子和y-縮放因子分別是dx · th/wh和dy · th/wh。這造成了將這些部分最低程度地放大,但足夠厚。假定f是垂直于寬度方向的平面所支持的特征,并且F是含f、其附屬特征、以及附屬于這些特征的頂點(diǎn)的特征集合。如果f是一個(gè)小面,則F包含這個(gè)小面以及f的邊界上的所有頂點(diǎn)和棱。如果f是一條棱,則F包含這個(gè)棱、其兩個(gè)附屬的小面、以及這兩個(gè)附屬的小面的邊界上的所有頂點(diǎn)和棱。如果f是一個(gè)頂點(diǎn),則F包含這個(gè)頂點(diǎn)、附屬于該頂點(diǎn)的所有小面、以及在這些附屬的小面的邊界上的所有頂點(diǎn)和棱。如果使用膨脹來將P增厚,則F中的這些特征被平移以便滿足寬度要求。對于豎直和水平增厚,它們分別被平移了指向?qū)挾确较虻囊粋€(gè)長度為(tv_wv)和或(th-wh)的向量。隨后,如圖5B中示意地呈現(xiàn)的,對整個(gè)模型進(jìn)行調(diào)整(部分520和525)。如果使用偏移來將P增厚,則對于豎直和水平增厚,F(xiàn)中的所有特征的支撐平面分別被平移了指向?qū)挾确较虻囊粋€(gè)長度為(tviv)和或(thih)的向量。一個(gè)多胞形的寬度是該多胞形與該多胞形的完全相同的副本之間的穿透深度,這進(jìn)而又是該多胞形的原點(diǎn)與該多胞形和其經(jīng)過該原點(diǎn)的鏡像的閔可夫斯基和之間的最小距離(例如,E. Berberich等人在提交給計(jì)算機(jī)科學(xué)數(shù)學(xué)版,Springer, 2009的、標(biāo)題為“參數(shù)曲面II上的排列具體化及應(yīng)用(Arrangements on Parametric Surfaces II:Concretizations and Applications),,的文章中提出的)。兩個(gè)多胞形P和Q的閔可夫斯基和的高斯映射是P的高斯映射與Q的高斯映射的球體疊加。對于每個(gè)多胞形P,計(jì)算了 P的高斯映射及其鏡像的高斯映射。然后,計(jì)算這兩個(gè)聞斯映射的置加,并且獲得P及其鏡像的崗可夫斯基和的聞斯映射。此后,獲得該崗可夫斯基和的這些小面。最后,計(jì)算原點(diǎn)與這些面之間的豎直和水平距離。如果該豎直和水平距離分別小于1和th,則根據(jù)本發(fā)明的一個(gè)實(shí)施方案,應(yīng)用這些增厚操作(例如,縮放、膨脹和偏移)中的一個(gè),直到滿足該距離指標(biāo)。在豎直方向應(yīng)用一次就相對足夠了。然而,要滿足水平方向的距離指標(biāo),可能要去將這種增厚使用多于一次(即,若干次的循環(huán))。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,該輸入模型(文件)可以包含在3D空間中作為2D表面呈現(xiàn)的地貌部分。必須將一個(gè)地貌表面轉(zhuǎn)化為具有非零體積的實(shí)體部分。為此,首先在該輸入模型中識別出所有地貌表面。典型地,地貌表面的分類在該輸入模型中被保持。而且,根據(jù)本發(fā)明的這個(gè)實(shí)施方案,識別出了在修補(bǔ)步驟315中首先沒有像這樣進(jìn)行分類的這些地貌表面。一旦識別出一個(gè)地貌表面,則將這個(gè)表面的頂點(diǎn)投影到與XY-平面平行的一個(gè)平面上,并且引入必要的邊界多邊形,從而形成一個(gè)對于3D印刷有效的2D流形。假定P (P =(px,py,Pz))是該地貌表面的一個(gè)具有最小豎直坐標(biāo)Pz的點(diǎn)(X、Y和Z是一個(gè)坐標(biāo)系的軸)。然后,可以放置包含了在Z = Vz-tv處的這個(gè)投影的平面,從而滿足該最小豎直寬度指標(biāo)。根據(jù)本發(fā)明的另一個(gè)實(shí)施方案,如果對一個(gè)薄部分的邊界的平移操作涉及一個(gè)屋頂或地板,則必須對整個(gè)模型進(jìn)行調(diào)整。平移與調(diào)整的組合操作被稱為膨脹??傮w上,膨脹操作可以被視為增厚操作的一個(gè)變體,它影響了位于這個(gè)被平移的、具有最低豎直坐標(biāo)的特征上方的這些部分的特征。因此,膨脹操作基本上不在模型部分的內(nèi)部之間引入相交處。根據(jù)本發(fā)明的又另一個(gè)實(shí)施方案,將按照字典式排序法儲存的所有部分的所有點(diǎn)的輔助數(shù)據(jù)結(jié)構(gòu)首先根據(jù)其z坐標(biāo)、然后根據(jù)其y坐標(biāo)、并且最后根據(jù)其X坐標(biāo)來進(jìn)行維護(hù)。假定P是一個(gè)不夠厚的部分,并且P = (Px,Py, Pz)是在該增厚操作過程中被平移的P的所有點(diǎn)中在其邊界上具有最小z坐標(biāo)的一個(gè)點(diǎn)。而且,假定Vz是平移向量。那么,基本上這些具有等于或大于的Pz的z坐標(biāo)的部分的所有點(diǎn)都被平移了 vz。這些點(diǎn)可以較容易地在該輔助數(shù)據(jù)結(jié)構(gòu)中找到,并且接著將這些棱和小面的關(guān)聯(lián)更新至這些平移后的點(diǎn)。如已知的,屬類的增厚在不加區(qū)別地應(yīng)用時(shí)可能導(dǎo)致扭曲的對象。這種屬類的增厚操作可以將一個(gè)操作數(shù)對象變形到如下的點(diǎn)在此處獲得的對象所起的作用不是建模者(例如,建筑師)為其原始地設(shè)計(jì)的作用。樓梯和豎框?qū)@樣的扭曲比較敏感。因此,根據(jù)本發(fā)明的一個(gè)實(shí)施方案,如果輸入模型包含樓梯或豎框,并且它們可以照這樣被自動(dòng)地或被用戶所識別,則應(yīng)用一個(gè)(用戶控制的)專門的增厚操作,這個(gè)操作將原始的模型部分(稱為源)替換為新的模型部分(稱為目標(biāo)),該目標(biāo)⑴起到了與源相同的作用、并且(ii)滿足了寬度指標(biāo)。為此,創(chuàng)造了現(xiàn)成的3D可印刷的部分的一個(gè)較大的數(shù)據(jù)庫并根據(jù)這些3D可印刷的部分的功能性進(jìn)行分類。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,候選的多對部分(一個(gè)待去除的源部分和相反的待插入的目標(biāo)部分)可以由系統(tǒng)200(圖2)自動(dòng)建議。使用該查看器進(jìn)行常規(guī)的交互式選擇,系統(tǒng)200使得用戶能夠添加或去除候選物,并且它還使得用戶能夠覆蓋目標(biāo)部分。一旦認(rèn)可了一對(批準(zhǔn)了特定的源與目標(biāo)對之間的置換),則計(jì)算該源部分的邊界框,裁剪該目標(biāo)部分以配合在該邊界框內(nèi),并且最后插入該縮放后的目標(biāo)部分以代替該源部分。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,該輸入模型可以包含未被較好地支撐的、或者“懸浮在半空中”的部分。根據(jù)本發(fā)明的這個(gè)實(shí)施方案,這樣一個(gè)輸入模型的制造(印刷)可以通過完成以下兩個(gè)步驟來實(shí)現(xiàn)。在第一個(gè)步驟中,順次地添加每個(gè)部分的多個(gè)層而將每個(gè)層的某些塊實(shí)體化。在第二個(gè)步驟中,將未被實(shí)體化的塊洗掉并去除(假定這兩個(gè)步驟都在圖3中表示為支撐步驟340)。沒有被較好地支撐的部分(稱為懸浮部分)被斷開并且失去了它們相對于原點(diǎn)和其余部分的位置。因此,識別出這樣的懸浮部分。對于每個(gè)懸浮部分,提供了引入一個(gè)支撐該懸浮部分的新的部分。將這個(gè)支撐部分一方面連接到該懸浮部分的重心上、并且另一方面連接到某個(gè)方向上的射線所遇到的第一個(gè)部分上??梢阅J(rèn)地使用負(fù)的豎直方向作為出射方向。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,該模型進(jìn)一步可能不配合在該3D印刷機(jī)220所限定的建筑體積(典型地是與主軸對齊的一個(gè)框)內(nèi)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,該建筑體積必須包含要印刷的所有部分。完全或部分超出該建筑體積的所有部分可以被自動(dòng)解散。應(yīng)該注意的是,默認(rèn)地選擇所有完全位于該建筑體積內(nèi)的部分進(jìn)行印刷。此外,例如在超出 該建筑體積的部分不能被選擇用于3D印刷的情況下,用戶可以利用該查看器在查看步驟330中進(jìn)行手動(dòng)選擇。而且,系統(tǒng)200支持在選擇步驟345的過程中應(yīng)用一個(gè)細(xì)分操作,在其中選擇了要進(jìn)行3D印刷的部分。用戶可以請求系統(tǒng)將包括該模型的這些部分的集合細(xì)分為若干(單獨(dú)的)子集。這在該模型沒有全部包含在該建筑體積內(nèi)時(shí)可能變得很有用。此外,一種自動(dòng)工具可以將該模型分為可以多個(gè)獨(dú)立進(jìn)行制造(印刷)的子模型。用戶可以利用該查看器將多個(gè)部分從一個(gè)子集移動(dòng)到另一個(gè)子集。然后可以對這些不同的子集獨(dú)立地進(jìn)行處理。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,從該修補(bǔ)步驟315輸出的模型包含多個(gè)無縫的、基本上沒有偽像的部分。然而,這些部分可能相交,并且其并集可能不代表一個(gè)閉合的2D流形。此外,該增厚步驟325甚至可以增大相交處的數(shù)目(它還可以將模型部分的邊界之間的相交處替換為它們的內(nèi)部之間的相交處)。因此,根據(jù)本發(fā)明的一個(gè)實(shí)施方案,多個(gè)部分的內(nèi)部之間的相交處在統(tǒng)一步驟350中被去除,該統(tǒng)一步驟可以采用具有不同特征的兩種方法。第一種方法是對現(xiàn)有技術(shù)的雙行進(jìn)立方體(DMC)算法的一種擴(kuò)展(如
S.Schaefer等人在標(biāo)題為“雙行進(jìn)立方體雙網(wǎng)格的原始輪廓化(Dual Marching Cubes Primal Contouring of Dual Grids),,,計(jì)算機(jī)圖形學(xué)論壇(Computer Graphics Forum),第24卷第I期,第195-201頁,2005的文章中呈現(xiàn)的),并且第二種方法是實(shí)施M. Segal等人在標(biāo)題為“分隔多面體對象為不相交的部分(Partitioning Polyhedral Objects intoNon-Intersecting Parts) ”,IEEE 計(jì)算機(jī)圖形學(xué)及其應(yīng)用(IEEE Computer Graphics andApplications),第8卷第I期,第53-67頁,1988的文章中介紹的一種現(xiàn)有技術(shù)。這種雙行進(jìn)立方體算法可操作來構(gòu)造一種環(huán)繞一個(gè)對象(部分)進(jìn)行自適應(yīng)的體積分隔(八叉樹),并且不是將該行進(jìn)立方體(MC)算法應(yīng)用于八叉樹,而是構(gòu)造了一個(gè)對偶圖,并且接著將該行進(jìn)立方體算法應(yīng)用于它。該DMC算法允許產(chǎn)生一種更接近于該輸入表面的輸出結(jié)果。此外,該DMC算法要求一個(gè)體積函數(shù),其值代表了密度信息或到一個(gè)表面的距離。根據(jù)本發(fā)明的這個(gè)實(shí)施方案,對常規(guī)的雙行進(jìn)立方體算法(方法)進(jìn)行擴(kuò)展以處理不一致的網(wǎng)格而不是等值面函數(shù),這產(chǎn)生了一種適合于3D印刷的單一的有效的網(wǎng)格。換言之,將該雙行進(jìn)立方體算法應(yīng)用于2D流形網(wǎng)格以便創(chuàng)造其并集的單一的閉合的2D流形表面。由于該行進(jìn)立方體算法要求在這些體素(體積像素)的拐角處的一個(gè)距離場(等值面)(對于一個(gè)網(wǎng)格集合是未定義的),并且由于將該MC算法應(yīng)用于該對偶圖,因此需要對該八叉樹(一種樹形數(shù)據(jù)結(jié)構(gòu),其中每個(gè)節(jié)點(diǎn)具有高達(dá)八個(gè)“孩子”)中的每個(gè)體素具有一個(gè)對偶點(diǎn)和一個(gè)值。將該對偶點(diǎn)放在該輸入表面上(例如,若單一平面經(jīng)過了該體素,則將它放在這個(gè)平面上或頂點(diǎn)處,如果該頂點(diǎn)是該體素中的唯一特征的話),并且將這個(gè)值設(shè)定為較小的負(fù)值。然后,根據(jù)本發(fā)明的一個(gè)實(shí)施方案,當(dāng)達(dá)到了最大深度并且該體素仍需要進(jìn)行細(xì)分時(shí),可以使用射線追蹤來確定該體素的中心是位于該輸入體積之內(nèi)還是之外,并且相應(yīng)地設(shè)置它的值。“射線追蹤”是一種公知的用于計(jì)算穿過一個(gè)系統(tǒng)的波或粒子的路徑的常規(guī)方法。使用較小負(fù)值的原因在于這允許使該輸出表面較靠近該輸入表面。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,從統(tǒng)一步驟350產(chǎn)生的模型可能包含拓?fù)淦纥c(diǎn)。因此,在步驟360,可以從多邊形的非流形集合中去除這樣的奇點(diǎn)以便創(chuàng)造流形多邊形表面。這個(gè)去除模型奇點(diǎn)的步驟是任選的,因?yàn)榫哂衅纥c(diǎn)的模型一般是可印刷的。另一方面,在許多情況下,希望具有一種不具有被斷開的組分的模型。這個(gè)去除奇點(diǎn)的步驟360可以例如基于A. Gueziec等人在標(biāo)題為“切割與縫合轉(zhuǎn)化多邊形集合為流形表面(Cutting and·Stitching !Converting Sets of Polygons to Manifold Surfaces),,,在 IEEE可視化與計(jì)算機(jī)圖形學(xué) 艮(IEEE Transactions on Visualization and Computer Graphics),第 7 (2)卷,第136-151頁,2001中出版的文章中所介紹的一種算法。為了去除模型奇點(diǎn),首先識別出奇異的頂點(diǎn)和棱。然后,對識別出的奇異頂點(diǎn)做乘法、并穿過單個(gè)棱進(jìn)行切割,得到了若干個(gè)斷開的流形實(shí)體部分。如果(例如,用戶請求)要求一個(gè)任選的縫合操作,則將邊界的棱連接起來以將該表面維持為一個(gè)流形。所實(shí)施的算法的變體確保了這些代入的多胞形的寬度對于3D印刷而言足夠大。根據(jù)用戶的選擇可以禁止奇點(diǎn)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,在導(dǎo)出步驟365的過程中,輸出的3D模型被儲存為所支持的文件格式,如STL文件格式,或者被直接發(fā)送至3D印刷機(jī)220 (圖2)以便制造。以所支持的文件格式之一存在于文件中的輸出3D模型可以在任何時(shí)候進(jìn)行讀取并發(fā)送至一個(gè)3D印刷機(jī)。如果系統(tǒng)200(圖2)的輸出結(jié)果包括若干模型,則可以將每個(gè)模型儲存在單獨(dú)的文件中。類似地,可以在任何方便的時(shí)間將每個(gè)這樣的3D模型文件發(fā)送至一個(gè)3D印刷機(jī)。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,一個(gè)獨(dú)立的交互部件(稱為查看器)允許用戶在步驟330查看在圖3中呈現(xiàn)的每個(gè)步驟的輸出、進(jìn)行某些改變、并覆蓋默認(rèn)設(shè)置。該查看器將該模型渲染到屏幕(顯示器)上的一個(gè)窗口上,從而將該三維的數(shù)字模型投影到(如從某個(gè)查看點(diǎn)所看到的)包含該屏幕的2D平面上。用戶可以交互地并且較順暢地改變查看點(diǎn)。用戶還可以改變其他相關(guān)的查看參數(shù),例如使用正交的還是透視的投影。該查看器可以裝備有一個(gè)圖形用戶接口(GUI),它允許用戶設(shè)置、重設(shè)、或覆蓋不同的系統(tǒng)參數(shù)。3D印刷機(jī)220 (圖2)限定了一個(gè)包含所有要印刷的部分的建筑體積,典型地是與主軸對齊的一個(gè)框。該查看器可以渲染3D印刷機(jī)220所規(guī)定的建筑體積,將完全或部分超出該建筑體積并且因此必須解散的部分高亮顯示。默認(rèn)地選擇所有完全位于該建筑體積內(nèi)的部分進(jìn)行印刷。該查看器對被選擇用于印刷的這些部分進(jìn)行渲染。它還可以渲染非選定的部分,并且它可以將這兩個(gè)互補(bǔ)的集合以一種用戶可以在選定的與非選定的部分之間進(jìn)行區(qū)分的方式來進(jìn)行渲染。該查看器使得用戶能夠覆蓋由系統(tǒng)200(圖2)進(jìn)行的默認(rèn)選擇,將多個(gè)部分從選定的集合移動(dòng)至非選定的集合并且反之亦然(例如,超出了該限制體積并且不能被選擇用于印刷的部分除外)。根據(jù)本發(fā)明的另一個(gè)實(shí)施方案,用戶可以請求系統(tǒng)200將包括該模型的部分的集合細(xì)分為若干子集。這在該模型沒有全部包含在該建筑體積內(nèi)時(shí)可能變得尤其有用。一種自動(dòng)工具將該模型分為可以獨(dú)立進(jìn)行制造(印刷)的(單獨(dú)的)子模型。不同集合中的部分被不同地渲染,并且用戶可以將多個(gè)部分從一個(gè)集合移動(dòng)至另一個(gè)。然后可以對這些不同的集合基本上獨(dú)立地進(jìn)行進(jìn)一步處理。該查看器允許用戶檢驗(yàn)該“修補(bǔ)過的”模型,即,修補(bǔ)步驟315的輸出。如果用戶對結(jié)果不滿意,那么用戶可以選擇一種不同的修補(bǔ)策略并且重復(fù)應(yīng)用該修補(bǔ)操作。進(jìn)一步地,該查看器可以使用不同的有效化方案策略,并且它可以顯示出該模型中的可能影響3D印刷的潛在偽像。它還可以允許用戶標(biāo)記這些潛在偽像并將其作為提示而提供給這個(gè)修補(bǔ)操作。根據(jù)本發(fā)明的又另一個(gè)實(shí)施方案,該查看器還允許用戶動(dòng)態(tài)地改變比例因子。此外,它允許用戶改變系統(tǒng)200的許多參數(shù),如設(shè)定豎直的和水平的增厚指標(biāo)。該查看器使得能夠?qū)x定的部分進(jìn)行受控的置換,否則這些部分將會被屬類的的增厚操作變形、并且喪失其預(yù)期的功能性。進(jìn)一步地,根據(jù)本發(fā)明的又另一個(gè)實(shí)施方 案,該查看器允許用戶在該模型于步驟370被發(fā)送至3D印刷機(jī)220或在步驟366被保存在輸出模型文件中之前對其進(jìn)行檢驗(yàn)(用戶可以從預(yù)定的格式集合中選擇所希望的輸出文件格式)。圖4A是根據(jù)本發(fā)明的一個(gè)實(shí)施方案的一種自相交的多邊形400的示意圖,該多邊形可以在一個(gè)輸入模型中作為一個(gè)小面出現(xiàn)。模型部分405和410的棱“a”和“b”彼此相交。在頂部右側(cè)的有界區(qū)域是被限定的并且閉合的,但在底部左側(cè)的有界區(qū)域不是。窮盡式的修補(bǔ)策略修正了這個(gè)瑕點(diǎn)。具體而言,將包括無效的小面的自相交多邊形拆分為若干多邊形,其中的一些被保留而其他的被去除。圖4B是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,通過引入一個(gè)恰當(dāng)?shù)睦?17而消除T頂點(diǎn)416的示意圖。圖4C是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,通過在模型425中添加該缺失的四邊形426而形成一種無縫的模型425'的示意圖。包括一個(gè)小面的這個(gè)頂部多邊形在左側(cè)的部分的模型中不存在。加入這個(gè)缺失的多邊形而形成右側(cè)的無縫模型。圖4D是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,通過翻動(dòng)該錯(cuò)誤取向的多邊形431而形成一種無縫的模型430'的示意圖。一個(gè)多邊形的邊界上的這些頂點(diǎn)的順序必須是逆時(shí)針的。在左側(cè)的部分的模型中在這個(gè)包括一個(gè)小面的頂部多邊形的邊界上的這些頂點(diǎn)是按順時(shí)針的順序。這意味著下面這個(gè)平面的法向是錯(cuò)誤地朝下指向的,如在該圖中由箭頭432展示的。將這個(gè)錯(cuò)誤取向的多邊形的邊界上的這些頂點(diǎn)的順序反轉(zhuǎn),而形成右側(cè)的一個(gè)無縫的模型。圖5A是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,在修補(bǔ)步驟315 (圖3)中將單個(gè)三角形505轉(zhuǎn)化為具有零體積的棱柱的示意圖,其中頂部三角形511與底部三角形512之間的距離為零。僅為了清楚起見,頂部三角形與底部三角形511和512在圖5A中是分開的。這個(gè)圖展示了對地貌數(shù)據(jù)的處理。地貌是陸地表面的豎直維度;它典型地表示為地貌特征的海拔、并且通過附屬于單個(gè)小面的棱所界定的非流形2D表面來表示。在修補(bǔ)步驟315的過程中,識別出這個(gè)斷開的三角形505并將其分類為地貌。然后,將一個(gè)具有相反取向的三角形與形成棱柱510的其他特征一起引入。這產(chǎn)生了可以通過增厚步驟325來處理的一個(gè)零體積的部分。圖5B是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,在步驟325(圖3)中應(yīng)用的膨脹操作的示意圖。膨脹后的模型520'包括兩個(gè)部分526'和527',它們具有不同地尺寸的盒子的形狀(類似于包括兩個(gè)部分526和527的原始(未膨脹的)模型520)。這個(gè)包含底部盒527'的頂小面的平面還包含頂部盒526'的底小面。底部盒527'在豎直方向上不夠厚。因此,將其在豎直維度上膨脹。即,將頂面及其附屬特征(即,邊界上的頂點(diǎn)和棱)沿正的Z方向平移。其結(jié)果是,位于這個(gè)包含了底部盒527'的頂小面的平面上方的所有特征也被平移了。圖5C是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,對包括樓梯530(由薄部分組成)應(yīng)用一種屬類的增厚操作從而產(chǎn)生樓梯530'的示意圖。樓梯530"是用戶可以在屬類上產(chǎn)生的樓梯模型樓梯530'的基礎(chǔ)上進(jìn)行選擇的一個(gè)替代方案。樓梯530"是對樓梯530應(yīng)用一個(gè) 放大的增厚操作、并然后根據(jù)原始部分(即,樓梯530)的邊界框進(jìn)行裁剪的結(jié)果,或者它是從用戶可以通過系統(tǒng)200(圖2)訪問的樓梯數(shù)據(jù)庫中提取的一個(gè)模型的實(shí)例。例如,可以將一個(gè)屬類的增厚操作應(yīng)用于一個(gè)由薄部分組成的豎框模型,從而產(chǎn)生根據(jù)本發(fā)明的一個(gè)實(shí)施方案的一種包括分隔了相鄰窗口單兀的部分的豎框模型。典型地不選擇這些窗口用于3D印刷。屬類縮放的結(jié)果包含厚窗口分隔物和小窗口(就高度和寬度而言)??赡芟M氖?,以減小窗口數(shù)目的代價(jià)來保留窗口的尺寸。圖6A是根據(jù)本發(fā)明的一個(gè)實(shí)施方案的包含拓?fù)淦纥c(diǎn)611和612的模型605、610和615的示意圖。這些模型形成了一個(gè)非流形實(shí)體部分。該非流形的(奇異的)棱611和頂點(diǎn)612用更粗的筆繪出。圖6B是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,對其應(yīng)用了縫合操作而由此去除了拓?fù)淦纥c(diǎn)611和612(圖6A)的模型605、610和615的示意圖。識別出了奇異頂點(diǎn)61Γ和棱612'。然后,將識別出的奇異頂點(diǎn)611'和附屬于奇異棱612'的頂點(diǎn)相乘。最后,將這些邊界棱連接起來而維持該表面為一個(gè)流形。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,子系統(tǒng)215(圖2)確保了在縫合過程中新引入的多胞形的寬度對于3D印刷而言足夠厚。圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施方案,將兩個(gè)無縫的墻壁705和710及其所創(chuàng)造的
網(wǎng)格一起通過例如Revitli軟件進(jìn)行統(tǒng)一的示意圖。根據(jù)本發(fā)明的一個(gè)實(shí)施方案,對常規(guī)的
雙行進(jìn)立方體算法(方法)進(jìn)行擴(kuò)展以處理不一致的網(wǎng)格而不是等值面函數(shù),這產(chǎn)生了一種適合于3D印刷的單一的有效的網(wǎng)格。換言之,將該雙行進(jìn)立方體算法應(yīng)用于2D流形網(wǎng)格以便創(chuàng)造其并集的單一的閉合的2D流形表面。由于該行進(jìn)立方體算法要求在這些體素的拐角處的一個(gè)距離場(等值面)(對于一個(gè)網(wǎng)格集合是未定義的),并且由于將該MC算法應(yīng)用于該對偶圖,因此需要該八叉樹中的每個(gè)體素具有一個(gè)對偶點(diǎn)和一個(gè)值。將該對偶點(diǎn)放在該輸入表面上(例如,若單一平面經(jīng)過了該體素,則將它放在這個(gè)平面上或頂點(diǎn)處,如果該頂點(diǎn)是該體素中的唯一特征的話),并且將這個(gè)值設(shè)定為較小的負(fù)值。然后,根據(jù)本發(fā)明的一個(gè)實(shí)施方案,當(dāng)達(dá)到了最大深度并且該體素仍需要進(jìn)行細(xì)分時(shí),可以使用射線追蹤來確定該體素的中心是位于該輸入體積之內(nèi)還是之外,并且相應(yīng)地設(shè)置它的值。使用較小負(fù)值的原因在于這允許使該輸出表面較靠近該輸入表面。其結(jié)果是,通過將這種方法應(yīng)用于模型715,產(chǎn)生了單一的連續(xù)2D流形實(shí)體網(wǎng)格730,這對于3D印刷是有效的。所提出的方法(從雙行進(jìn)立方體算法中擴(kuò)展)可以用于建筑學(xué)(例如處理建筑物和景觀的3D模型)或用于任何其他領(lǐng)域。圖8是根據(jù)本發(fā)明的一個(gè)實(shí)施方案的一個(gè)樣品⑶I的圖示,該樣品顯示了 STL文件格式并且確保用戶能夠控制并選擇要進(jìn)行3D印刷的模型對象。根據(jù)這個(gè)實(shí)施方案,通過使用例如STL模型文件來將較大的模型以3D進(jìn)行印刷可能是個(gè)問題。因此,提出了一種自動(dòng)工具,它可以將該模型自動(dòng)地分為兩個(gè)或更多個(gè)子模型并且將其中的每個(gè)獨(dú)立地進(jìn)行印刷。換言之,可以將該STL文件分為兩個(gè)或更多個(gè)有效的STL文件,使得其中的每個(gè)都包含一個(gè)閉合的2D流形網(wǎng)格。而且,可以提供一個(gè)對應(yīng)的⑶1(圖形用戶接口),它顯示了輸入和輸出格式文件、標(biāo)記了 STL無效區(qū)域并且允許用戶選擇一個(gè)或多個(gè)部分進(jìn)行印刷。這個(gè) GUI可以顯示所有的模型部分和STL輸出,并且因此允許例如建筑師來選擇這些部分進(jìn)行3D印刷。該⑶I還可以包括一個(gè)STL有效化工具,該工具顯示了在該STL文件中可能影響3D印刷的偽像(如空隙、相交處和退化/共線的三角形/棱)并且讓建筑師來決定是改變這些具體的有問題的部分還是繼續(xù)3D印刷。此外,該STL文件可以被轉(zhuǎn)化為其他格式,如可以通過⑶I來可視化的VRML。例如,可以提供一個(gè)數(shù)字模型實(shí)體模型作為系統(tǒng)200(圖2)的輸入,然后通過系統(tǒng)200進(jìn)行處理并通過3D印刷機(jī)220(圖2)來印刷,從而產(chǎn)生一種根據(jù)本發(fā)明的一個(gè)實(shí)
施方案的物理實(shí)體模型。該數(shù)字模型實(shí)體模型可以例如是通過Geoteetum (由建筑師
Dr. Joseph(Yossi)Cory創(chuàng)建的、獲獎(jiǎng)的建筑工作室)設(shè)計(jì)的一種建筑結(jié)構(gòu)??梢允褂靡环N軟件工具來將該數(shù)字模型渲染到屏幕上;這個(gè)渲染工具將包括該數(shù)字模型的3D數(shù)據(jù)投影到2D屏幕上。圖9A-9B —起形成了一種方法的簡化的流程圖展示,該方法是根據(jù)本發(fā)明的某些實(shí)施方案可工作的、用于使得三維對象模型能夠進(jìn)行印刷。圖9A-9B的方法典型地包括以下步驟中的一些或所有,例如是適當(dāng)排序的,顯示為步驟810 :提供一個(gè)建筑結(jié)構(gòu)的建筑三維模型(如Revit、Sketchup, DXF/DWG、VRML、STL)步驟820 :載入到場景圖中步驟830 :決定是否進(jìn)行預(yù)處理,例如使用已知的技術(shù)步驟840 :任選地或在對于應(yīng)用而言適當(dāng)時(shí),進(jìn)行小面取向/法線方向的校正,例如使用已知技術(shù)步驟850 :任選地或在對于應(yīng)用而言適當(dāng)時(shí),使用常規(guī)技術(shù)如德洛奈(Delaunay)三角剖分進(jìn)行三角剖分步驟860 :任選地或在對于應(yīng)用而言適當(dāng)時(shí),進(jìn)行舍入/擾動(dòng),例如使用常規(guī)的技術(shù)步驟870 :任選地或在對于應(yīng)用而言適當(dāng)時(shí),進(jìn)行初始分解/拆分成多面體/實(shí)體,例如使用常規(guī)的技術(shù)步驟880 :對模型中的每個(gè)非凸多面體,進(jìn)行凸分解,由此由每個(gè)非凸多面體產(chǎn)生一個(gè)凸多面體集合步驟890-多面體馨立方體對模型中的至少一個(gè)凸多面體(例如,所有的),嘗試
計(jì)算其與簡單的小凸形(例如,立方體)的閔可夫斯基和,由此對模型中的每個(gè)凸多面體產(chǎn)生一個(gè)膨脹的凸多面體。例如,可以使用具有精確的計(jì)算內(nèi)核的、可商購的CGAL包;閔可夫斯基和的算法計(jì)算典型地由于諸如退化的幾何形狀和/或計(jì)算機(jī)的數(shù)值精度不夠(這導(dǎo)致算法發(fā)散)等不同的限制因素而失效。因此,典型地,使用最高精度的計(jì)算算法,例如CGAL與其“精確的計(jì)算內(nèi)核”的而不是它的其他的內(nèi)核。步驟900 :如果步驟890對于某些凸多面體預(yù)計(jì)會失效或失效了(錯(cuò)誤條件或程序崩潰),則對每個(gè)這樣的凸多面體進(jìn)行自適應(yīng)的分解(例如,按照圖10)。步驟930 :嘗試對步驟890中產(chǎn)生的膨脹的凸多面體進(jìn)行“大的”并集,優(yōu)選是在監(jiān)控內(nèi)存爆發(fā)(blow-up)的同時(shí)進(jìn)行
步驟935 :任選地,如果檢測到內(nèi)存爆發(fā),采取步驟來補(bǔ)救步驟940 :將原始的凸?fàn)顚ο蟮拈h可夫斯基和以及原始非凸?fàn)畹膶ο蟮牟⒓蟮拈h可夫斯基和轉(zhuǎn)化為適合的印刷格式,例如STL步驟950 :使用3D印刷機(jī)來印刷STL或其他所希望的格式的建筑三維結(jié)構(gòu)。圖10是適合于進(jìn)行圖9A、9B的步驟900的一種自適應(yīng)分解方法的簡化的流程圖展示。圖10的方法典型地包括以下步驟中的一些或所有,例如所顯示的,是適當(dāng)排序的步驟960-三角形 立方體對于該模型用來呈現(xiàn)失效的凸多面體的每個(gè)簡單形
狀(例如,三角形),計(jì)算與簡單的小凸形(例如,立方體)的閔可夫斯基和,由此產(chǎn)生膨脹的三角形步驟970 :嘗試對步驟110中產(chǎn)生的膨脹的三角形進(jìn)行“小的”并集,由此獲得一種空心形狀步驟975 :如果并集步驟120失效,則使用CGAL進(jìn)行并集圖9A、9B和圖10的方法并且特別是其步驟880-930典型地特別適合于處理包含不同退化情況的建筑三維模型并且特別適合于克服常規(guī)的退化的幾何形狀不能通過3D印刷機(jī)進(jìn)行印刷這個(gè)事實(shí)??梢詫⒔ㄖS模型縮小以進(jìn)行印刷,然而,3D印刷機(jī)不能印刷一個(gè)低于與印刷機(jī)有關(guān)的最小厚度的元素。在目前對建筑模型實(shí)施閔可夫斯基和的過程中,多面體與立方體的閔可夫斯基和偶爾會失效。如在此說明的自適應(yīng)分解有助于計(jì)算建筑3D模型的閔可夫斯基和而不失效。這種技術(shù)是違反直覺的,因?yàn)樗赡軐⒁粋€(gè)非空心的幾何形狀渲染為空心的,然而,這對于建筑3D模型的3D印刷是合理的,盡管它可能對于其他用途而言是不可接受的。如果要求非空心的幾何形狀,則可以通過對這個(gè)結(jié)果與原始對象進(jìn)行一個(gè)另外的并集步驟來實(shí)現(xiàn)。典型地,圖9A和9B-10的方法所產(chǎn)生的所有的幾何實(shí)體都至少具有最小的厚度。典型地,圖9A和9B-10的方法可工作來修補(bǔ)小的空隙和/或修補(bǔ)缺失的小面?,F(xiàn)在參見圖9A和9B,步驟810可以例如使用軟件工具包來接收輸入,例如但不限于建筑三維模型(如 Revit、Sketchup, DXF/DWG、VRML、STL)。法向校正和三角剖分是適合于進(jìn)行圖9A和9B的步驟830的技術(shù)的實(shí)例。步驟820可以例如包括將該模型載入一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)/儲存庫中以供進(jìn)一步處理,例如使用場景圖技術(shù)。關(guān)于步驟840,可以由法向來決定面取向。有時(shí)候3D模型包含不一致的法向,因此采用了校正。有多種已知的校正技術(shù);幾種常規(guī)的軟件包例如Rhino3D軟件提供了用于法向校正的工具。關(guān)于步驟850,取決于文件格式,可能存在幾何形狀的幾種表現(xiàn)形式,不一定要使用三角形。例如可以通過嵌圖/三角剖分來將形狀/多邊形轉(zhuǎn)化為另一種幾何表示。例如環(huán)面嵌圖。例如,文件格式可以包含多邊形描述;然后可以使用常規(guī)的多邊形三角剖分方法對每個(gè)多邊形進(jìn)行三角剖分。關(guān)于步驟880和890,多面體的凸分解和多面體的3D閔可夫斯基和是通過例如CGAL (計(jì)算幾何算法庫,其手冊是在cgal. org/manual在線可得的)所提供的功能性。關(guān)于步驟890,所了解的是,一個(gè)三角形與立方體的閔可夫斯基和是位于該三角形的這些頂點(diǎn)上的該立方體的一個(gè)凸包。典型地,在步驟970之后,該方法嘗試將步驟890中產(chǎn)生的這些膨脹的凸多面體進(jìn)行“大的”并集(在此將閔可夫斯基求和的輸出稱為“膨脹的凸多面體”),優(yōu)選是在對錯(cuò)誤條件(如內(nèi)存爆發(fā))進(jìn)行監(jiān)控的同時(shí)進(jìn)行。每個(gè)處理后的多面體典型地是該處理后的模型(輸出)的一部分。典型地,對除退化的實(shí)體(例如,具有零長度棱的三角形)之外的所有實(shí)體進(jìn)行了處理。在步驟935,典型地,如果檢測到內(nèi)存爆發(fā),則終止或“殺死”這個(gè)過程。在步驟975,可以采用以下的簡單并集的偽代碼
權(quán)利要求
1.一種用于產(chǎn)生通過3D印刷機(jī)可印刷的建筑結(jié)構(gòu)的一種表現(xiàn)形式的計(jì)算機(jī)化的方法,該方法包括 提供一種建筑結(jié)構(gòu)的建筑模型,該建筑模型包括多個(gè)多面體; 使用一個(gè)處理器來對這些多面體中的至少一個(gè)、以及另一種其尺寸代表了該打印機(jī)的能力的形狀進(jìn)行閔可夫斯基求和;并且 使用所述并集的輸出多面體來產(chǎn)生該通過3D印刷機(jī)可印刷的建筑結(jié)構(gòu)的一種表現(xiàn)形式。
2.根據(jù)權(quán)利要求I所述的方法,該方法在所述閔可夫斯基求和之前還包括將所述多面體之中的每個(gè)非凸多面體分解為多個(gè)凸多面體,并且其中所述閔可夫斯基求和包括對至少一個(gè)凸多面體和另一種其尺寸代表了該印刷機(jī)的能力的形狀進(jìn)行閔可夫斯基求和。
3.根據(jù)權(quán)利要求I所述的方法,還包括將所述表現(xiàn)形式在所述3D印刷機(jī)上進(jìn)行印刷。
4.根據(jù)權(quán)利要求2所述的方法,其中,所述分解包括嘗試將所述多面體之中的每個(gè)非凸多面體分解為多個(gè)除三角形之外的凸多面體,并且如果對于至少一個(gè)單獨(dú)的非凸多面體而言所述嘗試失效,則將所述單獨(dú)的非凸多面體分解為多個(gè)多邊形并將所述這些多邊形并集。
5.一種將輸入的幾何形狀轉(zhuǎn)化成3D可印刷的模型的計(jì)算機(jī)化的3D印刷系統(tǒng),該系統(tǒng)包括 一個(gè)崗可夫斯基求和器,該求和器包括一個(gè)處理器,該處理器可工作來計(jì)算多面體與一個(gè)簡單的小凸形的閔可夫斯基和,由此產(chǎn)生一種3D可印刷的模型;以及 一個(gè)輸出產(chǎn)生器,該輸出產(chǎn)生器可工作來產(chǎn)生一種代表3D可印刷的模型的輸出結(jié)果。
6.根據(jù)權(quán)利要求2所述的方法,其中,所述至少一個(gè)凸多面體包括所有所述的凸多面體。
7.根據(jù)權(quán)利要求I或權(quán)利要求2所述的方法,其中,所述形狀包括一種簡單的小的凸形。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其中,所述形狀包括一種立方體。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其中,所述立方體包括一種Immx Imm x Imm的立方體。
10.一種計(jì)算機(jī)程序產(chǎn)品,包括一個(gè)計(jì)算機(jī)可用媒體,該媒體具有實(shí)現(xiàn)在其中的一種計(jì)算機(jī)可讀程序代碼,所述計(jì)算機(jī)可讀程序代碼被適配成被執(zhí)行而實(shí)施一種方法,該方法用于產(chǎn)生一種通過3D印刷機(jī)可印刷的建筑結(jié)構(gòu)的表現(xiàn)形式,該方法包括 提供一種建筑結(jié)構(gòu)的建筑模型,該建筑模型包括多個(gè)多面體; 對這些多面體中的至少一個(gè)、以及另一種其尺寸代表了該打印機(jī)的能力的形狀進(jìn)行閔可夫斯基求和;并且 使用所述并集的輸出多面體來產(chǎn)生該通過3D印刷機(jī)可印刷的建筑結(jié)構(gòu)的一種表現(xiàn)形式。
11.根據(jù)權(quán)利要求4所述的方法,其中,所述多邊形中的至少一些是三角形。
12.根據(jù)權(quán)利要求I或權(quán)利要求2所述的方法,還包括將通過所述閔可夫斯基求和而產(chǎn)生的閔可夫斯基和中的至少一些進(jìn)行并集,由此產(chǎn)生至少一個(gè)并集的輸出多面體。
13.根據(jù)權(quán)利要求12所述的方法,其中,只有作為分解結(jié)果的每個(gè)凸多面體集合的閔可夫斯基和被并集。
14.一種制備用于3D印刷的建筑模型的系統(tǒng),該系統(tǒng)包括 一個(gè)修補(bǔ)器,該修補(bǔ)器使用至少一個(gè)崗可夫斯基和計(jì)算來進(jìn)行所述建筑模型的修補(bǔ)。
15.根據(jù)權(quán)利要求8所述的系統(tǒng),其中,所述修補(bǔ)包括對所述模型中至少一個(gè)小空隙的修補(bǔ)。
16.根據(jù)權(quán)利要求8所述的系統(tǒng),其中,所述修補(bǔ)包括對至少一個(gè)缺失的小面的修補(bǔ)。
全文摘要
一種用于產(chǎn)生通過3D印刷機(jī)可印刷的建筑結(jié)構(gòu)的一種表現(xiàn)形式的方法,該方法包括提供一種建筑結(jié)構(gòu)的建筑模型,該建筑模型包括多個(gè)多面體;對所述多面體中的至少一個(gè)與另一種其尺寸代表了該印刷機(jī)的能力的形狀進(jìn)行閔可夫斯基求和;并且使用這些并集的輸出多面體來產(chǎn)生這種通過3D印刷機(jī)可印刷的建筑結(jié)構(gòu)的一種表現(xiàn)形式。
文檔編號G06F17/50GK102812463SQ201080051153
公開日2012年12月5日 申請日期2010年10月5日 優(yōu)先權(quán)日2009年10月8日
發(fā)明者伊蘭·西迪, 蓋伊·莫利 申請人:3D M.T.P. 有限公司