隨著現代城市的不斷拓展延伸,城市空間多層次、立體模式管理逐漸成爲城市規劃管理的發展趨勢[1],實現城市空間信息管理模式從二維到三維的轉變,三維虛擬城市技術,已經成爲人們關注和研究的熱點[2]。
三維虛擬系統具有多維信息處理、表達和分析的特點,在空間信息的社會化服務中,三維虛擬城市的應用有著越來越明顯的優越性和不可替代性[3]。
文中采用了一種新的模式進行三維虛擬城市的設計,采用三維算法初步建模,Photoshop 進行貼圖加工,3DMAX 進行圖形的渲染,三維引擎 Unity3D 技術實現三維虛擬城市。 該方式制作過程簡潔,三維引擎技術編程難度低,能高效率、高質量完成三維虛擬城市的建設。 整個建設過程包括地理信息數據采集、三維算法建模、3DMAX 後期渲染以及三維引擎技術編程[4]。
1 三維虛擬城市實現設計
首先,獲取地理信息數據。 包括數字高程數據、建築物類型(如草地、水域、道路等)的矢量數據、數字遙感影像圖數據以及地理坐標等[5]。
其次,使用三維建模算法,生成三維數字模型,包括不規則三角網 TIN(顧及地性線)、規則格網 DEM等[6。
第三,進行精細處理,包括建築物點投影變換和裁剪處理、光照模型選擇、建築物要素疊加、點坐標變換、消隱與紋理映射等[7]。
第四,三維模型制作,使用 3DMAX 和 Photoshop工具,對粗糙模型進行加工和渲染,得到高逼真的三維模型。
最後,三維模型的導入,將三維模型根據地理坐標依次導入到 Unity3D 中,進行虛擬技術的開發。具體系統實現設計如圖 1 所示。
圖 1 系統實現結構圖
2 數據采集與處理
數據的收集與處理,主要包括基礎數據准備、實地采集和後期處理。
基礎數據准備主要是收集整理樂山某區域的1: 2000 地形圖和高程點,以及最新的航空影像。 通過地形圖與影像圖的對比和實地考察,劃分區域分布圖和編號圖,用于指導實地數據采集和三維模型建設[8]。
區域分布圖分爲基礎模型、標准模型和精細模型三個級別,編號圖主要是依據道路和景點的分布劃分編號,作爲模型和紋理命名的依據。需要對前期准備和實地采集的數據進行處理[9],如照片的整理、紋理的收集、屬性的彙編,然後建立分片景區照片庫、通用紋理庫、屬性記錄表等。 例如樹的采集,按照樹的種類建立照片庫,對照片進行處理後,按照樹的種類建立通用紋理庫[10]。
地形模型建模采用高精度數字高程模型( DEM)和高分辮率數字正射影像(DOM),制作高精度地形模型[11]。 根據劃定的建模範圍,將 DEM 裁切出來,同時結合航空影像,通過 GIS 軟件將 DEM 和 DOM 轉換到統一坐標系,保證兩者坐標一致,將 DEM 和 DOM 數據導入專業軟件中,自動生成地形模型,將生成的地形模型轉換爲三維建模軟件(如 3DSMAX)兼容的格式,進行紋理映射,生成高精度地形模型。 這種建模方式的主要特點是建模快速、高程精確、模型真實。
對于細節要求高的地形實體,如植被、景觀路等,主要是根據地形圖等高線、高程點以及特征點線,通過三維建模軟件,可采用兩種方式建模。 一是以 1: 2000 地形圖和航空影像作爲參考,先勾勒出整個建模範圍的道路,以道路作爲控制,建立每個景點或者街坊,通過點的高度來表現地形的起伏;也可通過地形圖,先在 CAD 勾勒出道路、建築或人工湖、花壇等封閉的線,參考高程點,在 CAD 調節線中點的高度,然後導入 3DSMAX 中形成面,後者更方便,更准確。 主要特點是表現細膩、色彩美觀協調,能夠細致表現對象變化細節。
3 三維模型建立
模型的建立是整個虛擬系統的重要部分,因此在該過程中工作量較大,工作較繁瑣。 主要實現過程:建築物形狀分析、建築物分類和紋理貼圖處理[12]。
3. 1 建築物形狀分析
建築模型屋頂建模難度較大,因爲屋頂的形狀各有不同,都是由一些簡單的幾何體組成,因此可總結出該區域建築物屋頂的大體幾何體模型如圖 2 所示。
圖2 屋頂幾何模型
3. 2 三維模型分類
爲了便于系統模型和場景的建立,對場景和建築物進行了分區,在建模過程中可以方便建築物與場景地形坐標進行對應,同時也方便多場景的集成。 具體分區如圖 3 所示。
圖 3 三維模型分類
3. 3 紋理貼圖處理
爲了保證模型的高精度和高質量,在建模之前必須要確定各模型的材質,因此首先用相機拍攝一系列的照片來提取材質,建模過程中進行紋理貼圖和實體對比[13]。 具體流程如圖 4 所示。
圖 4 紋理貼圖處理過程
4 實現方法
本系統的業務邏輯處理用 C#、Javascript 技術實現,使用 Unity3D 引擎開發平台進行開發。 實現中最主要的技術是:場景漫遊技術、物理效應仿真技術和場景切換技術[14]。
4. 1 場景漫遊技術
場景漫遊技術主要包括鍵盤控制和鼠標控制,能讓用戶在虛擬城市系統中前後左右任意方向行走。 同時能控制運動的速度。 內容描述如下:
該段代碼實現的功能就是按鍵盤上面的 W、S、A、D 鍵 能 實 現 前 後 左 右 的 移 動。 先 定 義 兩 個 變 量MoveSpeed(移動速度)和 RotateSpeed(旋轉速度),接下來進入函數入口 Update,如果按 W 鍵時程序就回運行 forward*deltaTime*MoveSpeed;也就是攝像機向前移動 MoveSpeed,因爲 MoveSpeed 的初始值爲 5,所以移動的速度爲 5,以此類推,當按下 S 鍵的時候,程序運行 forward*deltaTime*-MoveSpeed,這時運動的方向爲一個負值所以表現出來的就是往後退。 速度也爲5;當按下 A 鍵時程 序運行 up * deltaTime * - RotateSpeed 此時攝像機會往左邊旋轉,其旋轉速度爲20;當按下 D 鍵時程序運行 up * deltaTime * RotateSpeed 此時攝像機會往右邊旋轉,其旋轉速度爲20。
4. 2 物理效應仿真技術
本系統中物理效應仿真技術主要是實現動畫場景的仿真,動畫仿真技術包括水池波浪仿真、重力仿真等。 內容描述如下(對水池波浪仿真的描述):