楊哲 王輝柏
(北方工業(yè)大學(xué)信息學(xué)院 北京市 100144)
隨著計算機硬件設(shè)備性能的提升,圖像處理、圖形學(xué)、人機交互等技術(shù)得到了快速發(fā)展。在交互式地形編輯方面,各應(yīng)用領(lǐng)域更強調(diào)編輯結(jié)果的真實感以及用戶的交互體驗感。本文在對目前的交互式地形編輯方法進行深入研究的基礎(chǔ)上,發(fā)現(xiàn)目前的方法,普遍存在編輯過程復(fù)雜、交互方式單一、生成結(jié)果存在人工編輯痕跡等問題。
目前的交互式地形編輯技術(shù)分為三個方向:基于分形噪聲的地形編輯[1]、基于侵蝕模擬的地形編輯[2]以及基于真實樣本的地形編輯[3]。
文獻[4]在分形布朗運動的原理基礎(chǔ)上,介紹了多種地形表面的創(chuàng)建方法。文獻[5]改進了傳統(tǒng)分形噪聲的地形編輯方法,提升了地形編輯的效率。文獻[6]基于真實地形圖,先模擬生成地形骨架,再進一步得到地形表面,編輯得到具有隨機全局統(tǒng)計特征的真實地形。文獻[7]組合了各種影響因子,控制了分形噪聲產(chǎn)生的隨機過程,可以編輯得到不同的地形特征。文獻[8]基于地形等高線數(shù)據(jù),生成離散三維點,進一步構(gòu)建三維地形。文獻[9]以真實地形圖像集為基礎(chǔ),進行大規(guī)模地形場景的生成。文獻[10]采用對用戶草圖進行細節(jié)擴充的方式,進行地形編輯。在研究了目前方法存在的優(yōu)缺點之后,本文設(shè)計了基于用戶多特征草圖的交互式地形編輯系統(tǒng)。
為了使用戶能夠自由地進行地形編輯,得到具有真實感的地形,本文主要研究并設(shè)計出一套基于多特征草圖的交互式地形編輯系統(tǒng)。借助該系統(tǒng),用戶可以自由地繪制山脊線、山谷線和山頂點特征,編輯地形特征草圖;再根據(jù)草圖實時生成地形高程圖;最后進行三維可視化,得到地形場景,實現(xiàn)漫游展示。
如圖1所示,本文將系統(tǒng)劃分為以下四個模塊:地形特征提取模塊、地形高程圖生成模塊、地形可視化模塊和人機交互模塊。
圖1:基于多特征草圖的交互式地形編輯系統(tǒng)示意圖
3.2.1 地形特征提取模塊
該模塊采用不同顏色及繪制方式區(qū)分地形特征。具體為:紅色代表山脊線,標(biāo)記方式為線條;藍色代表山谷線,標(biāo)記方式為線條;綠色代表山頂點,標(biāo)記方式為點。該模塊包括特征增強和特征提取兩個子模塊。
3.2.1.1 特征增強
該子模塊主要為了解決從第三方獲取的地形高程圖特征不明顯的問題,用于突出其顯著特征。同時根據(jù)灰度直方圖設(shè)置閾值,對不同的輸入數(shù)據(jù)進行對應(yīng)程度的增強,實現(xiàn)特征增強。
3.2.1.2 特征提取
該子模塊主要基于斷面識別法實現(xiàn),提取山脊線、山谷線和山頂點特征,制作地形特征圖數(shù)據(jù)集,用于后續(xù)網(wǎng)絡(luò)的訓(xùn)練。
3.2.2 地形高程圖生成模塊
地形高程圖生成基于訓(xùn)練好的生成器模型,可以實時對用戶繪制的地形特征草圖進行預(yù)測,生成地形高程圖。該模塊劃分為特征捕獲和高程圖生成兩個模塊。
3.2.2.1 特征捕獲
這里的特征指地形高程圖中的全局結(jié)構(gòu)性特征。由于常規(guī)網(wǎng)絡(luò)結(jié)構(gòu)只能夠捕獲地形的局部結(jié)構(gòu)性特征,因此,本文在常規(guī)的條件式生成對抗網(wǎng)絡(luò)中,分別在生成器和判別器中添加自注意力模塊,能夠較好地捕獲地形的全局空間特征,保證生成結(jié)果地形特征的完整性,提升了生成器的性能,生成的結(jié)果更具有真實感。
3.2.2.2 高程圖生成
訓(xùn)練好的生成器模型在實際應(yīng)用中,可以采用Keras 庫中的LoadModel()加載,并對用戶繪制的特征草圖進行一系列格式轉(zhuǎn)換,得到符合模型輸入的數(shù)據(jù)格式,再調(diào)用Predict(),預(yù)測生成地形高程圖。最后將生成結(jié)果轉(zhuǎn)換為.PNG 的格式,用戶可以選擇以不同分辨率進行保存。
3.2.3 地形可視化模塊
地形可視化模塊,是為了用戶編輯得到地形高程圖之后,能夠進一步直觀地觀察繪制結(jié)果而進行設(shè)置的。該模塊主要包含兩個子模塊,包括網(wǎng)格構(gòu)建和紋理貼圖。
3.2.3.1 網(wǎng)格構(gòu)建
網(wǎng)格構(gòu)建主要考慮不同用戶的設(shè)備性能。常規(guī)的地形網(wǎng)格是直接采用用戶繪制的地形高程圖構(gòu)建地形網(wǎng)格,并根據(jù)高程值進行不同紋理的自適應(yīng)貼圖,完成地形可視化。但該模式建立在用戶設(shè)備性能較好,且不影響漫游交互體驗的前提下。而層次細節(jié)模式則是根據(jù)用戶繪制的地形高程圖以及結(jié)點和視點的距離完成地形網(wǎng)格的動態(tài)構(gòu)建,因此可以在性能較低的設(shè)備上,保證用戶的交互體驗。
3.2.3.2 紋理貼圖
對于地形網(wǎng)格,可以根據(jù)地形高程值采用不同紋理進行自適應(yīng)貼圖,從而增強三維可視化的真實感,提升用戶的交互體驗。由于地形網(wǎng)格場景較大,在采用多重紋理貼圖的過程中也會由于重復(fù)平鋪產(chǎn)生重復(fù)感,顯得不夠自然。因此需要采用隨機平移和鏡像翻轉(zhuǎn)等方式,消除平鋪過程的重復(fù)感。
3.2.4 人機交互模塊
人機交互模塊直接決定了用戶的交互體驗。該模塊劃分為兩個子模塊:交互界面模塊和交互功能模塊。交互界面包含UI 界面搭建、功能布局和交互提示等功能。交互功能包含地形特征選擇、漫游展示、繪制結(jié)果保存等功能。
3.2.4.1 交互界面
軟件整體基于PyQT 插件進行搭建,分別設(shè)置了按鈕、畫布、下拉框等控件,構(gòu)建完整的系統(tǒng)交互視圖界面。界面功能設(shè)置簡潔,用戶可以較快地掌握系統(tǒng)的使用。整體布局采用水平分布,分別為用戶草圖繪制區(qū)、地形生成結(jié)果展示區(qū)和功能選擇區(qū)。
其中漫游展示功能會啟動漫游窗口,該窗口界面采用Unity3D自帶的UGUI 搭建,為用戶提供交互提示。通過詳細的功能介紹引導(dǎo)用戶進行漫游操作。
3.2.4.2 交互功能
交互功能通過畫筆、按鈕等方式實現(xiàn)交互式編輯。用戶可以通過點擊地形特征下拉框選擇地形特征畫筆。選擇之后在草圖繪制區(qū)進行繪制,得到地形特征圖。在地形生成結(jié)果展示區(qū)實時展示由用戶繪制的地形草圖生成的地形高程圖,為用戶編輯提供反饋。用戶還可以點擊漫游展示按鈕實時觀察由當(dāng)前地形高程圖可視化的三維地形結(jié)果。在得到滿意的地形高程圖之后,用戶點擊保存按鈕選擇相應(yīng)的文件夾保存繪制結(jié)果,同時可以選擇保存圖像的分辨率。
為了驗證基于多特征草圖的交互式地形編輯系統(tǒng),本文通過實驗驗證系統(tǒng)的可行性和有效性。實驗的硬件環(huán)境包括:處理器AMD Ryzen 7 4800H,內(nèi)存16GB,顯卡NVIDIA GeForce RTX2060;軟件環(huán)境包括:Windows10 操作系統(tǒng),開發(fā)語言Python、C#, 開發(fā)工具為PyCharm2019、Visual Studio 2019 和Unity3D 2019。
系統(tǒng)運行界面如圖2所示。其中系統(tǒng)的左側(cè)的黑色區(qū)域為用戶草圖繪制區(qū),右側(cè)的黑色區(qū)域為地形生成結(jié)果展示區(qū)。最右邊的側(cè)邊欄有5 個功能,分別為清空畫板,保存作品,漫游展示,地形特征選擇,地形圖大小選擇。這里選取了山脊線、山谷線和山頂點三個特征進行繪制。
圖2:繪制地形高程圖
繪制完成之后用戶可以選擇保存當(dāng)前的繪制結(jié)果,也可點擊漫游展示按鈕,進行交互漫游操作,觀察三維地形可視化效果,如圖3所示。
圖3:漫游展示結(jié)果
為了解決目前地形編輯方法普遍存在編輯過程復(fù)雜、交互方式單一、生成結(jié)果存在人工編輯痕跡等問題,本文設(shè)計并實現(xiàn)了基于多特征草圖的交互式地形編輯系統(tǒng)。從用戶交互式編輯需求的角度出發(fā),設(shè)計了地形特征提取、地形高程圖生成、地形可視化和人機交互四個模塊,分別闡釋了系統(tǒng)模塊功能。最后給出了用戶使用本系統(tǒng)進行交互式編輯過程中的運行截圖。經(jīng)驗證,該系統(tǒng)運行穩(wěn)定,易上手且用戶體驗良好,能夠創(chuàng)建出符合用戶個人意愿的地形高程圖,滿足用戶需求。今后可以在該系統(tǒng)上繼續(xù)拓展功能,使用戶繪制地形特征草圖時能夠進行更細節(jié)的調(diào)節(jié)。