1. 程式人生 > 實用技巧 >Extraction of the Quad Layout of a Triangle Mesh Guided by Its Curve Skeleton 3.5小節精讀

Extraction of the Quad Layout of a Triangle Mesh Guided by Its Curve Skeleton 3.5小節精讀

簡介

將粗四邊形對映到原網格 3.5 Coarse Quad Layout and Mapping 精讀

\(Q\) 表示粗四邊形網格
\(\mathcal{M}\) 表示原始的三角形網格
為了總結我們的計算管線,我們需要去計算了一個引數化從\(\mathcal{M}\)對映到\(Q\),也就是說,定一個一個bijective mapping(聽Games102的課這個表示一個全域性對映,無重疊無交錯)在這兩個之上。為了這麼做,我們設定每個在\(\mathcal{M}\)上的點\(v\)得到一個在\(Q\)上的位置,這個位置被在\(Q\)上的四邊形\(q_i\)和一對引數化座標(歸一化到\([0,1]\times[0,1]\)

。)在\(q_i\)上。將每個在\(\mathcal{M}\)上的頂點對映到一個四邊形區域。
其中,\(Q\)上的邊由對映到\(\mathcal{M}\)上,所對映的邊一般不是\(\mathcal{M}\)上原有的邊。同樣的在\(Q\)上的點,對映到\(\mathcal{M}\)上一般不是\(\mathcal{M}\)上的點。
最終的對映由兩部分組成:

  1. 我們計算一個粗任務通過投影\(Q\)\(\mathcal{M}\)上。
  2. 我們提升投影的效果通過交錯迭代處理修成和縮放。
    3.5.1 初始化對映
    粗對映不需要很精確:粗對映可以包含重疊,扭曲,和在\(\mathcal{M}\)上的區域邊界次優化的位置。
    我們通過以下方式處理。

Skeleton “fattening”. 骨架變胖?(什麼鬼,感覺就是粗骨架呀??)
一個嵌入的\(Q\)被獲得通過方式\(Q\)的盒中心在曲線骨架上,將它們的朝向重新放置通過上面描述的步驟(就是最小化一個能量啥的),和將它們縮放通過關鍵球的半徑;萬一我們沒有關鍵球的半徑,那麼我們將關鍵六面體的和大小通過估算骨架的節點到\(\mathcal{M}\)上的最近的點;這建立了一個粗骨架。
Initial projection 初始化投影
每個在\(Q\)上的點投影到\(\mathcal{M}\)上沿著表面法向量估計從變肥的骨架上平均鄰面,如果投影失敗,在\(\mathcal{M}\)上的最近點被選中(應該是從Q上的點到\(\mathcal{M}\)

上的最近點)。QU:但是正常投影的步驟不太清楚,那句話讀的不太明白。
Subdivision 細分
每個\(q_i\)\(Q\)上的面,迭代細分通過CC細分方案,獲得對應的網格子主要區域\(q_i\);在每個迭代細分處理,新建立的頂點通過上面的步驟投影到\(\mathcal{M}\)
Back-projection. 逆向投影
\(\mathcal{M}\)投影到每個\(q_i\),使用上面相同的策略。

最後我們溢位了變迴圈沿著管道結構,從現在開始,\(Q\)的結合不再相關:在以後的處理程序中,\(Q\)被考研僅僅作為一個2D的長方形,使用鄰接資訊完成。在這種意義上我們的主區域\(Q\)是抽象的,被定義在Pietroni et al.[2010].

3.5.2 提升細節
\(\mathcal{M}\)上的點和邊的佈局,也解決了重疊在初始化對映的時候產生的問題。這個步驟很接近之前文章提出來的細節 [in the second part of Tarini et al. 2011][Campen and Kobbelt 2014b].
程式包括迭代鬆弛\(Q\)投影到\(\mathcal{M}\)上的點,在每個迭代過程中,\(Q\)被分割在一系列“巨集觀區域”,每一個有一些小的組(臨近的四邊形\(Q\)中的)有類瓷盤拓撲(QU:是什麼鬼),一個巨集觀區域被一些點在\(Q\)上的一鄰域組成。在麼個區域的引數化通過平均值引數化進行優化 [Floater 2003]這篇文章有所提及。且保持邊節點韌體。特定地,我們凍結了所有三角形的頂點。在最後的迭代過程中,巨集觀區域,被分解回原來的四邊形。注意到將\(\mathcal{M}\)上的點移動到了在不同的\(Q\)上的四邊形。
不同的組合被使用在每個迭代過程中。如圖所示,看這張圖可以比較簡單的看出來什麼是巨集觀區域。

隨意每個點在\(\mathcal{M}\)上最後都經歷優化,在每個迭代過程中滿足一個貪心演算法:
我們組建增加四邊形到巨集觀區域知道沒有四邊形剩下;對於每個點和每個在\(Q\)上的邊,我們保持追溯最後的迭代在元素經歷了鬆弛。首先我們組賺了一個額定點巨集觀區域,開始從一個構建在\(Q\)的的點點周圍,有冰潔在邊界對於大部分的迭代;
剩下的四邊形被組裝進了邊的巨集觀區域,以相同的標準進行有限排序;最後,單獨的四邊形形成面巨集觀區域。(QU:有點看不懂了。)
鬆弛表現在巨集觀區域的內部也保留了為了展開摺疊區域的目的:如果必要,這個可以被加入到線性約束中,在[Bommes
et al. 2013a].文章之後。沒有保證每個摺疊區域會落在一個完整的巨集觀區域內部,但是在我們的實驗中,我們沒有遇到任何失敗的案例。如果需要提升,ad-hoc 可以很容易的將上述實現。
在 Khodakovsky et al. [2003] 之後,一個頂點的巨集觀區域構成圍繞著在\(Q\)上的不規則點,四邊形被轉化通過一個指數對映為了去將它們攤平在平面上。雖然這個對映是連續的情況下式完全共形的,他可以偶爾增加共形能量,或者引入新的摺疊區域,由於離散的網格區域;這是一個映象技術困難可以總是解決一個區域性和臨時的修正\(\mathcal{M}\);更多的實際遇到的措施,我們使用的,包括凍結或者滾動回信建立的這摺疊三角形和滾回鬆弛處理可以導致一個全域性增加共形能量,我們停止處理直到增加的全域性共形能量沒有超過了預先設定的門限。每一個迭代不能增加總共形能量,被保留通過所有的對映去和來自巨集觀區域,保證了趨同(QU:什麼鬼?)
3.5.3 縮放
我們使用了一個額外的優化,與前面的交織在一起,去決定構想四邊形在\(Q\)上映象管的大小。這將是有用的,為了之後提取半圓形四邊形網格(4.1參照)
首先,為每個四邊形\(q_i\)扎到理想的比率\(r_i\),最小化共形能量Levy et al. [2002].提出的共形能量。這個子問題通過最近的每個內部三角形和每個四邊形的面積均值來解決。
然後,我們找到了一個全域性一致分配對於四邊形的場合寬,回憶,在我們抽象的區域,一個相鄰定義在兩個一對四邊形
TODO