付 鈺,陳永當,殷俊清
(1.西安工程大學,陜西 西安 710048;2.西安市現代智能紡織裝備重點實驗室,陜西 西安 710048)
工業機器人是面向工業領域的多關節機械手或多自由度的機械裝置[1]。虛擬展示系統具有可拓展性好、交互性強、方便實現可視化等優點。在工業機器人虛擬展示系統中最為關鍵的步驟是三維模型的建立和優化,模型的精細度和復雜度直接影響系統的沉浸性、真實感和實時性[2-4]。同時由于工業機器人有結構龐雜、細小零件繁多的特點,直接導入虛擬引擎中會存在渲染計算量大等問題。
因此,為了提高后期渲染、交互設計等的計算效率,并確保工業機器人關鍵零部件的精確性,需要對三維模型進行簡化處理。蘭雪艷等[5]提出基于二次誤差測度的三角形鄰域局部分析算法,針對軌道車輛部件模型表面局部區域多尖銳棱角的特點,在經典QEM算法基礎上,引入三角形平均面積、鄰域曲率和頂點權重系數3個約束因子,能保證模型在虛擬現實場景中快速傳輸和逼真顯示。車力等[6]提出一種視覺特征保持的三角形折疊網絡模型簡化算法,針對網格簡化算法存在模型視覺特征丟失問題,結合視覺感知和幾何誤差,能較為便捷地控制模型的簡化深度。張文元等[7]針對人體三維場景的流暢度問題,提出一種改進的QEM算法,將頂點的絕對曲率引入頂點的二次誤差矩陣中,將乘積作為新的誤差測度矩陣,能在簡化過程中較好保留原始模型的尖端特征,實驗結果表明,改進后的算法不會改變基本誤差矩陣的性質,僅改變邊折疊的順序。胡博等[8]針對復雜三維藝術場景優化問題,提出一種結合半邊折疊算法和投影值預處理的方法,通過添加細節層次的預處理階段,運用投影值選擇合適的細節層次視差度量系數,加快了實時計算速度。閔慧芹等[9]針對機械大型裝備在虛擬仿真過程中曲面模型復雜,計算機運算負擔繁重的技術問題,提出一種采用法線貼圖技術對模型進行優化的方法,依據高模產生具有細節特征的法線貼圖給低模,在達到精度要求的前提下,也同時節省渲染運算工作量。
針對工業機器人等重要機械裝備的模型結構復雜、三維網格模型數據量較大且在導出時容易存在破面的問題,本文提出了面向工業機器人虛擬展示系統的三維模型簡化方法,通過引入修正網格頂點的優化環節,以快速排序算法對網格中冗余頂點數據進行濾除,對網格模型簡化進行預處理,建立模型逐步簡化方式生成多層次結構模型。實現了工業機器人的三維多分辨率精確模型簡化優化。
經典的基于二次誤差度量的邊折疊網格簡化算法是由Garland提出。二次誤差度量算法首先確定每個頂點的誤差矩陣,頂點合并操作時再引入誤差評價,然后依據誤差大小來排序各條待收縮邊。在邊折疊過程中首先折疊代價最小的邊,直到模型達到所要的分辨率為止[10]。該算法可以產生較好的模型簡化質量且算法的時間復雜度較低,是現階段較為常用的三維模型簡化方法。
在邊折疊算法中,先選擇三角網格中的1條對于整體模型結構影響較小的邊折疊為1個頂點,并將相關聯的邊和三角形面刪除,然后用新頂點更新受影響的邊和面片[11]。如圖1所示。每次對三維模型進行簡化操作時選擇1條邊作為被刪除的對象,并將其進行折疊且1次合并2個的端點,再移去2個與之鄰接的三角形面片。

圖1 邊折疊法
a.將頂點Vi,Vj均移至新的頂點Vh。
b.用頂點Vj取代頂點Vi。
c.剔除頂點Vj并刪除所有鄰接退化的邊和面。
為了度量精簡模型和原始模型之間的簡化程度,引入誤差度量準則。在計算邊緣折疊代價時,將頂點到相關三角形面片的距離平方和作為模型的簡化誤差度量,也稱為折疊代價。即每一個頂點都計算出一個4×4的對稱二次誤差矩陣Q為
(1)

針對工業機器人零部件繁多、結構復雜,模型細節可能會存在點冗余及邊冗余導致模型在進行網格簡化的過程中出現破損的問題,提出了一套面向工業機器人虛擬展示系統的模型優化簡化方案。方案整體流程如圖2所示,該方案在直接進行網格簡化前加入修正網格的優化環節,以解決工業機器人及其關鍵部件的模型可能存在表面空洞、模型數據量大和相關計算量大等問題,實現網格模型的簡化,為虛擬展示系統提供多種細節層次的模型,滿足系統的實際運行需求。

圖2 改進后的網格模型簡化方案流程
obj文件是由Alias Wavefront公司推出的一種標準的3D模型文件格式[12]。如圖3所示,obj模型能轉化為可讀的文本格式, 存儲了三維模型的頂點、法線和紋理坐標,及其相對應的三角形面片索引和材質使用信息。

圖3 obj文件中的頂點信息和索引列表
結構復雜的工業機器人模型存在巨大的數據冗余,如一個有189 880個三角網格的工業機器人的末端執行工具,obj文件在存儲這些網格面片時使用了95 490個頂點數據,實際上不重復的頂點僅47 745個。如果在模型簡化過程中直接簡化網格,一方面冗余點數據會占用大量的內存計算空間,另一方面三角網格頂點編號的重復性嚴重影響模型簡化的完整和真實程度。因此,合理修正網格頂點的冗余問題是模型簡化的前提和關鍵。
經典的篩除重復編號頂點的2種方法為逐點處理法和二分法。這2種方法能夠較為準確地濾除網格中的冗余點,但對于網格點集龐大、外觀復雜的三維模型,其算法計算效率較低。為了提高刪除重復編號頂點的效率和精確性,提出一種結合快速排序法和頂點與索引間的拓撲關系,對所有頂點分類剔除并更新可能存在索引錯誤的三角形面片的優化環節。其算法原理及關鍵部分代碼如圖4所示,詳細算法步驟如下:
a.頂點坐標矩陣V為頂點數量Nv×3的點集矩陣,運用快速排序算法按第1行升序記為矩陣Vas,相應地建立記錄排序后各頂點的原索引的列向量Ias。找出并刪除矩陣Vas中重復的坐標頂點,將剩余頂點索引放置在列向量Ire內。
b.構建一個維度與頂點坐標矩陣V相等的列向量Iho,根據Ire剩余頂點索引的位置映射到Iho相應位置標記為1,再將Ire和Ias串聯并更新為頂點數量Nv×2的判定矩陣Iju。
c.依據更新后的矩陣Iju映射相應位置是否等于1,選擇保留或刪除其頂點索引,若Iju(i,2)(i=1,2,…,Nv)=1,則相應同行Iju(i,1)的值為矩陣修正后應保留下的頂點索引值;若等于0,同行第1列的頂點數值更換為Ddel。通過既定的頂點與頂點索引間的拓撲關系,搜索三角形面片Nf×3的三角形頂點索引矩陣F中索引值被替換為Ddel的三角形,遍歷測試全部頂點索引。
d.通過對三角形頂點索引矩陣F排序后兩兩列相減,查找一個三角形面片中存在重復點索引,即相減后出現0的位置。刪除所有異常點和相應的三角形頂點索引,將修正后的網格頂點和索引更新存儲到頂點坐標矩陣V和三角形頂點索引矩陣F,生成修正后的三維網格模型。

圖4 修正網格頂點算法原理及關鍵部分代碼
由于工業機器人關鍵零部件簡化優化很大程度上會影響工業機器人在虛擬展示過程中的沉浸性和真實感[13],因此,選取關鍵零部件模型作為修正網格頂點算法的驗證是十分有必要的。
修正網格頂點的結果如表1所示。從頂點和三角形網格面片數量來看,與未修正網格頂點的模型相比,此修正環節能夠較好地濾除冗余點數據及刪減可能存在索引錯誤的三角形網格面片。

表1 工業機器人關鍵部件修正前后
考慮到工業機器人三維模型的復雜程度,為了保證簡化效率,提高簡化精度以及在虛擬展示系統中加速圖形的繪制速度,并控制展示場景的復雜度,在模型簡化的過程中采用逐步簡化的方式進行簡化,通過預設簡化率以存儲不同層次結構的多分辨率細節層次模型。完成一輪簡化后,重新計算模型的頂點數、頂點坐標和基本誤差矩陣等相關信息,再進行下一輪簡化。
在模型簡化這一環節中,為了防止三維模型的外觀特征發生較大的變化,需要度量并控制原模型和簡化模型之間的幾何誤差。常用的誤差度量方式為二次型誤差度量[14]、角度誤差度量[15]和Hausdorff距離度量[16]。為了節省計算時間成本,提高簡化效率,采用二次型誤差度量方式計算待折疊邊的代價。
為了方便計算頂點的誤差,設平面P方程為
ax+by+cz+d=0
(2)
(a,b,c)是平面的法向量,且a2+b2+c2=1,d為任意常數。則平面外任意一點V(x,y,z)到P平面的距離為
(3)
距離的平方可表示為
d(v)=|ax+by+cz+d|2=
(vTp)(pTv)=vTKpv
(4)
式(4)中,Kp為二次基本誤差矩陣[17]:
(5)
定義所有包含頂點V的三角形集合,記為S(v)。如圖5中頂點V的三角形面片集合為
S(v)={△VV1V2,△VV1V3,△VV1V4,…,
△VV2V3,△VV3V4,…,△VV5V6,△VV6V7}
(6)

圖5 頂點V的三角形面片集合
根據第1.2小節描述可知,新頂點誤差矩陣Qh為
Qh=Qi+Qj=∑P∈S(vi)∪P∈S(vj)Kp
(7)
則新頂點的折疊代價函數ΔVh可表示為
a2x2+abxy+acxz+adx+b2y2+
bcyz+bdy+c2z2+cdz+d2
(8)
對式(8)求偏導并使其偏導值為0,則能夠計算出整條邊上誤差最小的點,并作為簡化后新頂點的位置。依據所設定的簡化率,迭代選擇有效的可折疊的頂點對,且度量每一對的二次誤差。并更新受影響的邊的折疊代價和新頂點位置,若達到簡化目標,則停止算法,反之則迭代上述過程。
為了使工業機器人虛擬展示系統更具沉浸性和真實感的環境,采用頭盔式虛擬現實系統,用戶需佩戴HTC Vive或Oculous Rift等頭盔顯示器設備。虛擬展示系統的原理如圖6所示。

圖6 沉浸式工業機器人虛擬展示系統的基本原理
PC主機的CPU為Intel?Xeon?Bronze 3104 Processor,內存為128 GB,硬盤為2 TB。VR系統硬件的核心顯卡設備為NVIDIA GeForce RTX2080Ti,虛擬展示系統采用的操作系統為Windows10。軟件開發語言為C#,三維物體模型的繪制軟件為SolidWorks和Unity3D。
為了驗證本文提出的模型加入修正網格環節的有效性,分別選用工業機器人的主要零部件末端執行器、連接件(臂部)和基座等模型,對模型優化技術的效率進行驗證。
3.2.1 關鍵零部件的簡化數據分析
根據本文的模型簡化算法,可得到關鍵零部件的優化結果如表2~表4所示。

表2 末端執行器多分辨模型優化簡化數據對比

表3 連接件(臂部)多分辨率模型優化簡化數據對比

表4 基座多分辨率模型優化簡化數據對比
由表2~表4可知,通過逐步簡化的方式,可得到不同簡化率下多種層次結構的模型數據。對比數據可以發現,優化后的各關鍵零部件的頂點數、三角面片數和模型的大小都有大幅的縮減,并且經過修正網格頂點的前處理環節,模型簡化的運算時間損耗大大減少,提高了后期實時渲染的效率。
3.2.2 零部件多細節層次三維效果
通過簡化后的三維效果圖能直觀看到運行逐步簡化程序后,可生成不同細節層次的三維模型效果。通過觀察對比,發現圖7和圖8的零部件均有多孔、多內槽的特點,而在圓孔、型腔、凹槽和凸臺等部分,經過前期網格頂點修正環節的優化,避免了直接簡化引起的耗時長、重要特征形狀表面破損的情況。同時,為了使得虛擬展示系統具有更好的真實感體驗,用戶能根據自定的簡化率獲取多種不同細節層次結構的三維模型。并且,最終能夠得到模型整體形狀前后近乎不變的已簡化網格模型。

圖7 基座的不同細節層次下模型簡化效果
在圖7和圖8中利用本文提出的方法進行簡化,雖然模型的網格簡化越來越稀疏,但是基座和連接件(臂部)的整體形狀得到了很好的保留,而且基座的圓孔、圓柱臺和連接件的凸臺及彎曲臂等各個部件仍然可以保持模型的基本特征。

圖8 連接件的不同細節層次下模型簡化效果
本文提出了一種基于經典邊折疊法的改進網格簡化算法。為了解決導出模型中存在的點冗余和邊冗余的問題,在模型簡化前引入修正網格頂點的優化環節,采用快速排序法和頂點與索引間的拓撲關系相結合的方法,能合理剔除并更新模型。此外,由于工業機器人虛擬展示系統中三維模型在紋理映射中的復雜度和計算量影響后期渲染的實時性和真實感,因而采用多分辨簡化的方式對模型進行簡化。該簡化算法根據給定的簡化率迭代,進而生成不同細節層次結構模型。經實驗驗證,所提出的三維模型簡化技術,對工業機器人虛擬展示系統的光照、貼圖和人機交互方面提供了精確、多分辨率的模型信息。