楊哲 王輝柏
(北方工業大學信息學院 北京市 100144)
隨著計算機硬件設備性能的提升,圖像處理、圖形學、人機交互等技術得到了快速發展。在交互式地形編輯方面,各應用領域更強調編輯結果的真實感以及用戶的交互體驗感。本文在對目前的交互式地形編輯方法進行深入研究的基礎上,發現目前的方法,普遍存在編輯過程復雜、交互方式單一、生成結果存在人工編輯痕跡等問題。
目前的交互式地形編輯技術分為三個方向:基于分形噪聲的地形編輯[1]、基于侵蝕模擬的地形編輯[2]以及基于真實樣本的地形編輯[3]。
文獻[4]在分形布朗運動的原理基礎上,介紹了多種地形表面的創建方法。文獻[5]改進了傳統分形噪聲的地形編輯方法,提升了地形編輯的效率。文獻[6]基于真實地形圖,先模擬生成地形骨架,再進一步得到地形表面,編輯得到具有隨機全局統計特征的真實地形。文獻[7]組合了各種影響因子,控制了分形噪聲產生的隨機過程,可以編輯得到不同的地形特征。文獻[8]基于地形等高線數據,生成離散三維點,進一步構建三維地形。文獻[9]以真實地形圖像集為基礎,進行大規模地形場景的生成。文獻[10]采用對用戶草圖進行細節擴充的方式,進行地形編輯。在研究了目前方法存在的優缺點之后,本文設計了基于用戶多特征草圖的交互式地形編輯系統。
為了使用戶能夠自由地進行地形編輯,得到具有真實感的地形,本文主要研究并設計出一套基于多特征草圖的交互式地形編輯系統。借助該系統,用戶可以自由地繪制山脊線、山谷線和山頂點特征,編輯地形特征草圖;再根據草圖實時生成地形高程圖;最后進行三維可視化,得到地形場景,實現漫游展示。
如圖1所示,本文將系統劃分為以下四個模塊:地形特征提取模塊、地形高程圖生成模塊、地形可視化模塊和人機交互模塊。

圖1:基于多特征草圖的交互式地形編輯系統示意圖
3.2.1 地形特征提取模塊
該模塊采用不同顏色及繪制方式區分地形特征。具體為:紅色代表山脊線,標記方式為線條;藍色代表山谷線,標記方式為線條;綠色代表山頂點,標記方式為點。該模塊包括特征增強和特征提取兩個子模塊。
3.2.1.1 特征增強
該子模塊主要為了解決從第三方獲取的地形高程圖特征不明顯的問題,用于突出其顯著特征。同時根據灰度直方圖設置閾值,對不同的輸入數據進行對應程度的增強,實現特征增強。
3.2.1.2 特征提取
該子模塊主要基于斷面識別法實現,提取山脊線、山谷線和山頂點特征,制作地形特征圖數據集,用于后續網絡的訓練。
3.2.2 地形高程圖生成模塊
地形高程圖生成基于訓練好的生成器模型,可以實時對用戶繪制的地形特征草圖進行預測,生成地形高程圖。該模塊劃分為特征捕獲和高程圖生成兩個模塊。
3.2.2.1 特征捕獲
這里的特征指地形高程圖中的全局結構性特征。由于常規網絡結構只能夠捕獲地形的局部結構性特征,因此,本文在常規的條件式生成對抗網絡中,分別在生成器和判別器中添加自注意力模塊,能夠較好地捕獲地形的全局空間特征,保證生成結果地形特征的完整性,提升了生成器的性能,生成的結果更具有真實感。
3.2.2.2 高程圖生成
訓練好的生成器模型在實際應用中,可以采用Keras 庫中的LoadModel()加載,并對用戶繪制的特征草圖進行一系列格式轉換,得到符合模型輸入的數據格式,再調用Predict(),預測生成地形高程圖。最后將生成結果轉換為.PNG 的格式,用戶可以選擇以不同分辨率進行保存。
3.2.3 地形可視化模塊
地形可視化模塊,是為了用戶編輯得到地形高程圖之后,能夠進一步直觀地觀察繪制結果而進行設置的。該模塊主要包含兩個子模塊,包括網格構建和紋理貼圖。
3.2.3.1 網格構建
網格構建主要考慮不同用戶的設備性能。常規的地形網格是直接采用用戶繪制的地形高程圖構建地形網格,并根據高程值進行不同紋理的自適應貼圖,完成地形可視化。但該模式建立在用戶設備性能較好,且不影響漫游交互體驗的前提下。而層次細節模式則是根據用戶繪制的地形高程圖以及結點和視點的距離完成地形網格的動態構建,因此可以在性能較低的設備上,保證用戶的交互體驗。
3.2.3.2 紋理貼圖
對于地形網格,可以根據地形高程值采用不同紋理進行自適應貼圖,從而增強三維可視化的真實感,提升用戶的交互體驗。由于地形網格場景較大,在采用多重紋理貼圖的過程中也會由于重復平鋪產生重復感,顯得不夠自然。因此需要采用隨機平移和鏡像翻轉等方式,消除平鋪過程的重復感。
3.2.4 人機交互模塊
人機交互模塊直接決定了用戶的交互體驗。該模塊劃分為兩個子模塊:交互界面模塊和交互功能模塊。交互界面包含UI 界面搭建、功能布局和交互提示等功能。交互功能包含地形特征選擇、漫游展示、繪制結果保存等功能。
3.2.4.1 交互界面
軟件整體基于PyQT 插件進行搭建,分別設置了按鈕、畫布、下拉框等控件,構建完整的系統交互視圖界面。界面功能設置簡潔,用戶可以較快地掌握系統的使用。整體布局采用水平分布,分別為用戶草圖繪制區、地形生成結果展示區和功能選擇區。
其中漫游展示功能會啟動漫游窗口,該窗口界面采用Unity3D自帶的UGUI 搭建,為用戶提供交互提示。通過詳細的功能介紹引導用戶進行漫游操作。
3.2.4.2 交互功能
交互功能通過畫筆、按鈕等方式實現交互式編輯。用戶可以通過點擊地形特征下拉框選擇地形特征畫筆。選擇之后在草圖繪制區進行繪制,得到地形特征圖。在地形生成結果展示區實時展示由用戶繪制的地形草圖生成的地形高程圖,為用戶編輯提供反饋。用戶還可以點擊漫游展示按鈕實時觀察由當前地形高程圖可視化的三維地形結果。在得到滿意的地形高程圖之后,用戶點擊保存按鈕選擇相應的文件夾保存繪制結果,同時可以選擇保存圖像的分辨率。
為了驗證基于多特征草圖的交互式地形編輯系統,本文通過實驗驗證系統的可行性和有效性。實驗的硬件環境包括:處理器AMD Ryzen 7 4800H,內存16GB,顯卡NVIDIA GeForce RTX2060;軟件環境包括:Windows10 操作系統,開發語言Python、C#, 開發工具為PyCharm2019、Visual Studio 2019 和Unity3D 2019。
系統運行界面如圖2所示。其中系統的左側的黑色區域為用戶草圖繪制區,右側的黑色區域為地形生成結果展示區。最右邊的側邊欄有5 個功能,分別為清空畫板,保存作品,漫游展示,地形特征選擇,地形圖大小選擇。這里選取了山脊線、山谷線和山頂點三個特征進行繪制。

圖2:繪制地形高程圖
繪制完成之后用戶可以選擇保存當前的繪制結果,也可點擊漫游展示按鈕,進行交互漫游操作,觀察三維地形可視化效果,如圖3所示。

圖3:漫游展示結果
為了解決目前地形編輯方法普遍存在編輯過程復雜、交互方式單一、生成結果存在人工編輯痕跡等問題,本文設計并實現了基于多特征草圖的交互式地形編輯系統。從用戶交互式編輯需求的角度出發,設計了地形特征提取、地形高程圖生成、地形可視化和人機交互四個模塊,分別闡釋了系統模塊功能。最后給出了用戶使用本系統進行交互式編輯過程中的運行截圖。經驗證,該系統運行穩定,易上手且用戶體驗良好,能夠創建出符合用戶個人意愿的地形高程圖,滿足用戶需求。今后可以在該系統上繼續拓展功能,使用戶繪制地形特征草圖時能夠進行更細節的調節。