阮崇浩,汝 欣,彭來湖,胡旭東
(浙江理工大學(xué)浙江省現(xiàn)代紡織裝備技術(shù)重點實驗室,浙江 杭州 310018)
Mr.ChonghaoRuan@gmail.com;ruxin@zstu.edu.cn;laihup@zstu.edu.cn;xdhu@zstu.edu.cn
襪品作為一年四季不可或缺的服飾品,除了滿足人們?nèi)粘5拇┲枨笸?,其在醫(yī)療、運動、塑形等領(lǐng)域的應(yīng)用范圍不斷擴大,例如醫(yī)療壓力襪、跑步襪、瘦腿襪等。這些襪品在設(shè)計上需要符合使用者的足部特征,在生產(chǎn)時需要進行精細的外形控制。而傳統(tǒng)的襪品生產(chǎn)技術(shù)受商業(yè)CAD軟件的限制,并不能很好地適應(yīng)這些新需求。傳統(tǒng)襪品開發(fā)流程包括設(shè)計、打樣、測試、批量生產(chǎn)。工人需要根據(jù)襪品設(shè)計稿手動計算出生產(chǎn)所需的編織參數(shù),并輸入款式文件中。同時傳統(tǒng)的編織參數(shù)計算方法存在一定缺陷,例如各部段的橫列數(shù)是取固定的橫向密度進行計算的,其結(jié)果并不準(zhǔn)確,往往需要通過反復(fù)打樣對參數(shù)進行調(diào)整才能達到設(shè)計要求,這個過程繁復(fù)冗雜。
近年來,隨著計算機圖形學(xué)技術(shù)的蓬勃發(fā)展,針織織造技術(shù)以數(shù)字化、智能化為發(fā)展主線,不斷對針織設(shè)備與工藝流程等進行智能化改造。WU等人提出了一種可將三維模型轉(zhuǎn)化為仿真織物模型的方法,但該織物模型的一行網(wǎng)格對應(yīng)于實際針織物中一行沒有端點的閉合紗線橫列,不具備可編織性。IGARASHI等人設(shè)計了一個可以將三維模型轉(zhuǎn)化成編織指導(dǎo)圖的系統(tǒng),使用者可以根據(jù)圖案的指導(dǎo)手工編織各個小塊,最后組裝成完整織物。MCCANN等人開發(fā)了一種編譯器,可以將經(jīng)過排版的形狀基元的組合圖案轉(zhuǎn)換為V型橫機的機器指令。NARAYANAN等人首次實現(xiàn)了將三維網(wǎng)格模型通過網(wǎng)格重構(gòu)轉(zhuǎn)換為針織機指令。但是,這些方案僅適用于可進行自由加減針的橫機。
圓襪機相比于橫機具有更高的生產(chǎn)效率,是生產(chǎn)襪品的首選機型。本文針對傳統(tǒng)襪品生產(chǎn)中存在的問題,利用圖形學(xué)技術(shù),并結(jié)合圓襪機的工作原理,設(shè)計了一款襪品三維輔助設(shè)計系統(tǒng)。用戶可以使用常規(guī)建模軟件進行建?;蚶萌S掃描的方式對襪品的外形進行設(shè)計。系統(tǒng)會根據(jù)特定規(guī)則在模型表面進行頂點采樣,快速、準(zhǔn)確地獲取機器生產(chǎn)所需的編織參數(shù)。本文的研究旨在減少襪子款式開發(fā)中復(fù)雜的工藝計算,為機織技術(shù)從工業(yè)化向大眾化轉(zhuǎn)變提供思路。
三維設(shè)計相較于平面設(shè)計更加直觀立體,同時其在復(fù)雜精細的外形設(shè)計方面具有得天獨厚的優(yōu)勢。為了能夠顯示、處理三維設(shè)計模型,本系統(tǒng)主要分為四個模塊,分別是模型加載模塊、約束環(huán)繪制模塊、網(wǎng)格采樣模塊及路徑編譯模塊,如圖1所示。這四個模塊正好對應(yīng)系統(tǒng)將設(shè)計模型轉(zhuǎn)化為編織參數(shù)的四個主要步驟。首先系統(tǒng)會通過模型加載模塊將設(shè)計模型的數(shù)據(jù)讀取到內(nèi)存中,并對模型信息進行一些預(yù)處理。然后,用戶需要在模型表面通過繪制約束環(huán)的方式標(biāo)記模型的襪口、襪頭位置。系統(tǒng)會從繪制的約束環(huán)出發(fā),沿著模型表面,根據(jù)特定的規(guī)則對模型的頂點進行采樣,繪制出一條類似真實紗線軌跡的編織路徑。最后通過路徑編譯模塊,將編織路徑轉(zhuǎn)化成圓襪機的編織參數(shù)并進行輸出。
圖1 系統(tǒng)結(jié)構(gòu)Fig.1 System structure
如圖2所示為系統(tǒng)技術(shù)框架。由于系統(tǒng)需要對三維模型進行渲染、處理,因此選用VC++進行開發(fā)。SDL2是一款跨平臺開發(fā)庫,旨在通過OpenGL和Direct3D提供對音頻、鍵盤、鼠標(biāo)、操縱桿和圖形硬件的低級訪問。本系統(tǒng)使用SDL2庫進行基礎(chǔ)窗口搭建,使用OpenGL進行三維圖像渲染,使用ImGUI進行用戶交互界面開發(fā)。用戶可通過在窗口內(nèi)操作UI組件或鼠標(biāo)、鍵盤來調(diào)用程序執(zhí)行相應(yīng)動作,實現(xiàn)頂點采樣等操作。同時系統(tǒng)會實時建立程序中對象的OpenGL緩存,通過GPU將圖像渲染,輸出到窗口中,實現(xiàn)用戶操作的視覺反饋。
圖2 系統(tǒng)技術(shù)框架Fig.2 Technical framework of the system
模型加載模塊主要有讀取模型基本數(shù)據(jù)、讀取約束文件、計算頂點法向量、計算邊信息四項功能。
(1)讀取模型基本數(shù)據(jù):系統(tǒng)按行讀取obj文件中的數(shù)據(jù),然后根據(jù)行首的標(biāo)識符將數(shù)據(jù)存放到相應(yīng)的數(shù)組中。讀取的模型數(shù)據(jù)包括頂點坐標(biāo)、頂點法向量及三角面索引。
(2)讀取約束文件:若輸入模型所在目錄下存在同名的約束文件,系統(tǒng)會在加載模型時自動讀取約束文件中的信息,即已保存的約束環(huán)的約束點在頂點坐標(biāo)數(shù)組中的索引(數(shù)組下標(biāo))。
(3)計算頂點法向量:兩點構(gòu)成一條直線,系統(tǒng)會根據(jù)讀取的頂點法向量、頂點坐標(biāo)及設(shè)置的法向量長度計算出法線另一端點的坐標(biāo),并將法線的兩端點坐標(biāo)兩兩一組存儲到一個pair容器數(shù)組中以用于頂點法向量渲染。
(4)計算邊信息:系統(tǒng)遍歷三角面索引數(shù)組,整理出所有的邊,即找出每個頂點的所有相鄰頂點,并計算出頂點到相鄰頂點的距離(即邊長)。邊信息會被用于約束環(huán)繪制、網(wǎng)格采樣等操作中。
載入模型后,用戶可以使用鼠標(biāo)、鍵盤在模型表面放置多個約束點,系統(tǒng)會將這些約束點按順序連接成約束環(huán),如圖3所示。其實現(xiàn)原理在于本系統(tǒng)使用了Dijkstra最短路徑算法,該算法主要用于求解帶權(quán)圖中一點到其他點的最短路徑,是求解網(wǎng)格頂點最短路徑問題所使用的最廣泛的、經(jīng)典的算法。
圖3 繪制約束環(huán)Fig.3 Drawing constraint rings
(1)算法思想
算法從起始頂點出發(fā)向外擴展,從相鄰頂點中選取最合適的頂點加入路徑,確定路徑下一個“當(dāng)前點”的唯一考慮因素是相鄰的頂點與起點間的距離,直到擴展到達目的頂點。
(2)算法步驟
如圖4所示,查找頂點→的最短路徑的完整步驟如下:
①剛開始={},={、、、、},其中為源點,對應(yīng)的路徑長度為0。集合中與源點直接相鄰的頂點存在正常的路徑長度,為兩點間的距離;中與源點不相鄰的頂點對應(yīng)的路徑長度為∞。
②將中與源點間距離最短的頂點轉(zhuǎn)移到中,并作為中間點,重新計算中各頂點的路徑長度。如果源點經(jīng)過中間點到頂點的路徑長度比之前計算的路徑長度短,則更新中頂點的路徑長度。以圖4步驟2為例,上一步中→的路徑最短,因此將頂點轉(zhuǎn)移到集合中,并作為中間點。以為中間點重新計算中各頂點的路徑長度,點和點E的當(dāng)前路徑比之前計算的∞小,更新從源點到點和點的路徑長度。
圖4 Dijkstra算法步驟Fig.4 Steps of Dijkstra algorithm
③重復(fù)步驟②直到集合變?yōu)榭铡?/p>
為了避免多次讀取同一模型時需要重新繪制約束環(huán),系統(tǒng)會將用戶繪制的約束點以頂點坐標(biāo)索引形式存儲到二維數(shù)組中(約束環(huán)可存在多個,每個環(huán)由多個約束點構(gòu)成),并輸出到cons格式文件中,下次讀取該模型時加載模塊會自動加載對應(yīng)的cons文件繪制出約束環(huán)。
為了模擬真實襪品紗線軌跡的形態(tài)特點,我們將網(wǎng)格采樣過程細分為四個階段:襪筒階段→襪跟階段→襪腳階段→襪頭階段,如圖5所示,步驟如下:
圖5 網(wǎng)格采樣算法流程圖Fig.5 Flow chart of mesh sampling algorithm
(1)執(zhí)行水平采樣,將襪頭環(huán)上的所有頂點添加到目標(biāo)頂點集中。系統(tǒng)沿著紗線的實際編織方向以均勻的寬度對目標(biāo)頂點集進行采樣,并將采樣節(jié)點水平相連。當(dāng)采樣過程再次回到起始節(jié)點時就完成了水平采樣,生成一條初始采樣點橫列。
(2)執(zhí)行縱向采樣生成一組新的采樣節(jié)點。系統(tǒng)遍歷當(dāng)前橫列中的所有采樣節(jié)點,根據(jù)相鄰節(jié)點頂點法向量的叉積得到當(dāng)前橫列所在面的法向量。然后從當(dāng)前橫列的節(jié)點出發(fā),沿著與面法向量相反的方向找到一個采樣高度處的頂點,作為一組新的采樣節(jié)點。采樣高度并不是固定不變的,縱向采樣會根據(jù)所處部位的襪品線圈圈高特征去動態(tài)地調(diào)整采樣的高度。例如在襪筒階段,系統(tǒng)會根據(jù)采樣點的頂點法向量和其所在面的面法向量間的夾角對采樣高度動態(tài)地進行調(diào)整,以此模擬真實紗線因受力所產(chǎn)生的形變,如圖6所示。同時采樣點的數(shù)量也會變化,在襪跟、襪頭階段,我們在采樣算法中加入了加減針規(guī)則,使得采樣點個數(shù)變化符合加減針規(guī)律。
圖6 襪筒階段采樣高度調(diào)整Fig.6 Sampling height adjustment of sock leg
(3)執(zhí)行鏈接,將相鄰的節(jié)點水平鏈接以獲得新橫列。同時將當(dāng)前橫列的最后一個節(jié)點與新橫列的第一個節(jié)點鏈接,使得新橫列與當(dāng)前橫列相連。最后,將新橫列設(shè)置為當(dāng)前橫列。
(4)執(zhí)行平滑處理。如果模型的頂點數(shù)較小,則隨著采樣的迭代進行,生成的橫列可能會變得不平整。因此,系統(tǒng)采用了加權(quán)移動平均法對生成的采樣點橫列進行平滑處理,即平滑處理后的節(jié)點坐標(biāo)是該節(jié)點處理前坐標(biāo)與其相鄰節(jié)點的坐標(biāo)的加權(quán)平均值。
(5)重復(fù)步驟(2)—步驟(4),若循環(huán)中滿足了階段切換條件,就切換采樣階段與規(guī)則,直至滿足襪頭階段結(jié)束條件。每個采樣循環(huán)中都加入了階段切換判斷:例如襪品模型在襪筒與襪跟交界處的頂點具有曲率局部最大的特征。因此在襪筒階段的每個采樣循環(huán)內(nèi),系統(tǒng)都會計算生成的采樣點的曲率,一旦其滿足曲率局部最大特征就切換采樣的階段。
編織路徑就像網(wǎng)格模型與編織參數(shù)之間的橋梁。一方面,編織路徑是在模型表面上采樣生成的,因此其捕獲了設(shè)計模型的外形特征;另一方面,系統(tǒng)可以從編織路徑中獲取各部段的橫列數(shù)及橫列寬度等編織參數(shù)。其中,橫列的寬度并不能直接在襪機中進行設(shè)置,系統(tǒng)會將橫列的寬度進一步轉(zhuǎn)換成用于控制織物寬度的上機參數(shù)——線圈長度。最后,系統(tǒng)會將這些編織參數(shù)輸入襪品的鏈條文件,襪機就能夠?qū)υO(shè)計的襪品進行織造。
系統(tǒng)界面和生產(chǎn)硬件如圖7所示。在實驗中,我們使用了WLT-6F全電腦襪機進行織造,針筒的針數(shù)設(shè)置為108 針,紗線材料選用棉紗。如圖8所示,系統(tǒng)輸入的網(wǎng)格模型具有1,090,000 個頂點,采樣過程耗時35 分38 秒,生成編織路徑,然后通過編譯得到各個部段的橫列數(shù)及橫列的線圈長度。各個部段的橫列數(shù)如表1所示。襪機根據(jù)輸出的編織參數(shù)織造的襪品如圖8所示。為了更好地呈現(xiàn)襪品的形狀,我們使用了軟泡沫模型進行填充,可以看出襪品與模型表面較為貼合。在無任何熱定形處理的情況下,經(jīng)系統(tǒng)指導(dǎo)編織的襪品能夠較好地還原輸入模型的外形。
圖7 實驗環(huán)境Fig.7 Experiment environment
圖8 實驗過程Fig.8 Experiment process
表1 各部段橫列數(shù)Tab.1 Number of rows in different part
本文設(shè)計和實現(xiàn)了基于三維網(wǎng)格采樣的襪品輔助設(shè)計系統(tǒng),該系統(tǒng)初步實現(xiàn)了使用網(wǎng)格采樣算法指導(dǎo)襪品的織造,將與圖形學(xué)技術(shù)相結(jié)合的新型針織織造技術(shù)拓展到圓襪機領(lǐng)域。實驗結(jié)果表明,由該系統(tǒng)指導(dǎo)編織的襪品在外形上與設(shè)計模型基本一致。我們的方案可以有效減少襪品款式開發(fā)中復(fù)雜的工藝計算,縮減打樣工序。同時該系統(tǒng)結(jié)合了三維設(shè)計的優(yōu)勢,可以讓襪品的款式設(shè)計變得更直觀立體,尤其適用于復(fù)雜精細外形的設(shè)計。然而,該系統(tǒng)的實現(xiàn)方案和計算效率還可以從以下幾方面進行優(yōu)化:
(1)方法改進:目前,系統(tǒng)通過用戶繪制約束環(huán)的方法來標(biāo)記采樣算法的關(guān)鍵位置。未來我們考慮使用模型各點的SDF(形狀直徑函數(shù))提取模型的骨架,并結(jié)合區(qū)域分割的方法自動獲取這些關(guān)鍵位置,以減少人工干預(yù)。
(2)系統(tǒng)擴展:我們計劃添加織物仿真功能,以呈現(xiàn)帶有線圈細節(jié)的“紗線模型”,而不是簡單的編織路徑,并計劃添加一個編輯工具,允許用戶編輯和修改“紗線模型”,如YUKSEL等人開發(fā)的工具。此外,系統(tǒng)目前只支持平針組織,為系統(tǒng)添加其他組織結(jié)構(gòu)與花型(如羅紋組織、集圈組織)的支持也在我們的計劃列表中。同時,系統(tǒng)的代碼仍處于開發(fā)級別,采樣過程的計算時間還可以進行顯著優(yōu)化。