A Survey on Procedural Modeling for VirtualWorlds -論文閱讀筆記

Introduction
PM包括一系列自動生成方法,用一組輸入參數自動的對特定內容進行生成。PM可以與很多領域相聯繫,如物理模擬、植被和城市分佈模擬等。PM最吸引人的地方是可以用少量參數生成很多變種的模型而無需大量數據,另外,一個複雜的幾何實體可以用過程式生成模型和一組參數來表示。的目的是大幅減少建模工作,並且可以由一組隨機參數生成大量的不同的結果。但除了其擁有緊湊的表示方法、高效率和看似無窮的變種,大多數PM仍舊不能適應藝術家進行手工建模,而需要操作者用複雜的參數對生成結果進行控制,非常不直觀,且比較保守。

  • 本文主要內容:
    介紹相關PM方法,根據其使用的技術對方法進行分類,對近期PM方向的進展進行概覽,用相關評價標準進行評估,並給出展望。
    評價標準如下:直觀性和易用性、用戶可控程度、分類(隨機、AI、模擬、語法、數據驅動、計算幾何)、應用方向(地形、植被、道路、水域、建築、城市)。
Terrain
  • height map
    最常見的地形數據就是一張二維的高度圖,而地形的海拔可以由分形技術進行過程式生成。但是高度圖由無法生成特殊地形(懸崖、洞穴)的侷限,可替代的地形存儲技術包括分層數據結構、體素數據、3D網格。
  • midpoint displacement:
    早期的地形生成算法是基於細分技術(subdivision methods),首先生成一個粗糙的地形然後通過迭代不斷進行細化和隨機細節。
    算法如下:
    每次生成一個新的點,它的高度數據是其所處的三角形網格的平均,加上一個隨機的偏移量。偏移量的範圍隨迭代次數的增加而減少,最後得到一個分形布朗運動(fBM)的表面。地形生成控制算法通過控制迭代次數和初始偏移量控制地形的精細程度,但是不控制特徵生成的位置。
  • 其他高度圖隨機生成算法:
    1.通常基於噪聲生成器如perlin noise,通過對幾種頻率的縮放和求和得到更像山的地形。布朗分形運動很適合生成山脊和丘陵地形,並且適於並行計算,因爲它的每個格點不受鄰近點影響,可以獨立計算。高階噪聲函數還可以對有體積的物體進行生成,如大理石、樹木或雲層,如果高階部分是時間的函數,還可以產生一定動態效果。這些算法基本是同一性質的,對高度圖的控制都依賴於初始參數,這些參數可能不直觀,並且被限制在一個區間內,可以用濾波函數進一步處理。
    2.比較好的進一步改進的方法是用基於物理的算法添加對腐蝕和天氣情況的模擬,比如熱氣流和簡單的水的腐蝕作用。熱氣流模擬算法可以通過從高到底擾動材質,直到傾斜角達到臨界點,來避免突兀的變化。水力學模擬是根據地形傾斜的角度對水流和被腐蝕物進行細胞運動的模擬。但目前有兩個侷限,需要很多初始控制參數,不易把握、CPU計算能力達不到。除了對網格點進行操作的算法,也有用粒子在大範圍地形中模擬3D的水流腐蝕的算法,它可以在GPU中高效的運行,不過達成真實感需要非常多的粒子。
    3.有一種設想是將地形的限制條件以掩膜圖像的形式表達,並用搜索算法對地形進行變形以迎合掩膜圖像,但是這種方法計算代價太大。
    4.基於一個既有的實例和大比例尺下地形的特徵曲線,根據實例提取和校準高度信息。這種方法直觀,但不能處理微小的地形特徵。
    5.一種算法設想通過預設代理來創建特殊地形(海灘、海岸、山脈)等,它可以控制特殊地形生成的頻率但是不能控制生成位置。
    6.使用AI基於真實世界的高程模型合成高度圖,但是網格交界處可能發生突變,並且不能交互的控制地形。
    7.基於草圖描繪山脈輪廓生成地形
Vegetation

植物過程式生成的方法可以根據生成的精細程度劃分,L分形系統可以生成分叉結構,可以生成精細到植物器官、植物整體、整個植被生態系統三個層次的植物。dL-systems可以模擬植物生長過程。Open L-systems可以使植物體受外部環境影響或引導。
過程式生成通常不會允許植物與地形進行交互調整,但事實上陰影、碰撞等外部因素是影響植物形態的重要條件。將植物模擬爲競爭資源的粒子,每個粒子的運動軌跡定義了一條獨立的枝幹,該粒子還可以再分枝或長出樹葉。這種做法也可以用來模擬葉脈或小型植物羣落。

Water bodies

1.首先根據高度圖生成一個河流網絡,然後遞歸的進行分叉,生成小溪流。
2.最初用一個三角形的兩條邊分別表示河流的入邊和出邊,然後對三角形進行細分。
3.將粒子放在最高點,用簡單的物理模擬其沿着山脊下落的過程。
4.用一條線畫出河水的軌跡,再用算法模擬其河水和河岸的細節。不過這樣不能保證符合物理特性。

Roads

可以基於用戶輔助定義路徑或關鍵點,或者基於AI算法。地面不能穿過水系,移除路徑經過的所有植物,並要使地形適於路面鋪展。
1.一種基於shader的方法,將路面數據紋理與高度圖紋理混合。

City layout

生成城市的方法可以有基於模式的,基於主體的模擬、基於L系統的或基於張量場的。最簡單的做法是生成稠密的網格,並通過噪聲干擾減少重複性。
1.更精細的一種方法是觀察實際生活,選出集中有代表性的街區模式,進行組合和混合。首先生成高速公路,形成路網的骨架,然後用細小的網格填補空白。和植物一樣,路網可以用生長模型來模擬。
2.應用L系統,以人口密度和特殊的道路分佈模式爲目標,進行導向。
3.統計學對一個樣例城市的道路進行分析
4,一種基於主體的模擬將城市劃分爲住宅、商業、工業、政府工作區、綠化等區域,在種子點放置擴充器和連接器,擴充器搜索未被連接的區域,連接器負責連接。
5.基於用戶交互的城市生成,首先由用戶定義主路上的點,然後用幾種街區模式進行填充。
5.用戶手繪草圖後,將草圖和過程式生成的城市道路用算法進行剪切和歸併。
6.從種子點開始追蹤張量場的流線。
7.給定主要路網和希望生成的村莊類型,迭代的生成村莊,每次根據地形、斜坡、方位等,選擇權重最大的位置生成房子。

Building

大多數採用形式重寫方法,如L系統,split grammer,shape grammer等,作爲從2D圖片生成3D建築的方法。也有一些用真實世界數據建立語法的,如建築表面的照片。
過程式建築表面生成:2D split grammer,在建築平面圖上添加簡單圖形或分形,生成建築。split grammer可以生成連續的較真實的表面,可以控制同一個建築不同的層不一樣,如底商。 CGA shape grammer是專門用於3D建模,並生成屋頂和旋轉的形狀的。它根據平面圖擠出一個建築。但是這樣沒有考慮每個建築的角色,遺失了一些語義學信息,因此將這些信息提煉成一個圖。

Building interiors

建築內表面的生成與通常的基於語法生成表面的方法很不相同。
1.實時生成辦公樓,只有處在視點中時才分割樓層,進一步生成走廊和獨立的房間,根據幾種模板對傢俱進行生成。
2.基於正方化樹圖。開始先有一個2D的建築輪廓和所需要的房間類型,然後遞歸的將輪廓劃分爲更小的區域,最後生成走廊連接不連通的區域。
3.首先構造一個圖表達房間之間的關係,圖節點代表房間,邊代表房間之間的連接(門或牆)。根據圖生成建築空間,根據某種權重決定房間的大小。
Some available systems
工具介紹和選擇

Discussion

一些方法是完全基於隨機算法的,如用噪聲生成器布朗分形等。另外一些基於ai方法如path finding or planning algorithm。模擬的方法可能融合了物理,城市建模,生物等學科,很成功的應用在地形腐蝕等模擬。基於語法的方法可以被認爲是純粹的過程式生成方法。
少數的pm技術是被現實世界數據提取出的例子或模式所驅動的。很多其他算法應用了分割算法 ,space fill methods,圖像處理,生長算法和最優化算法。
也可以從數據的角度觀察PM方法,如噪聲生成器可以搭配arbitrary的虛擬數據集使用,地形生成器通常用DEM、網格或體積表示法。
現在的PM算法成果還不盡如人意主要是基於兩個原因:
1.不直觀不好控制,對使用有很多限制。
2.多種過程式生成方法不能協同工作。
PM最重要的一個問題之一就是設計者對輸入的控制,及後續修改,最糟糕的情況是隻有幾個參數來進行生成,好一些的可能需要一個非常冗長的定義過程,改進的有可視化節點編輯器、基於草圖繪製的生成、inverse PM等。

Conclusion
  • PM發展的關鍵節點:
    1、允許實時全局編輯的過程式生成方案
    2、多種過程式生成方法的結合和融合
    3、靈活結合過程式生成模型和手工編輯模型的能力
    4、PM工具與現有內容生成管線的無縫結合
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章