Unity原生地形系統分析

2021-08-02 08:05:10 字數 1035 閱讀 6448

大體上講,terrain將地形轉換為乙個tree來管理,rootnode就是該地形總共的大小。每個node由4個等大的孩子node組成。每個node,不論處在哪一層,其頂點數都是17*17。整個tree的層數根據heightmap的點數計算。

舉個例子:對於一塊512*512公尺的地形,採用兩公尺一點的方式,其heightmap的大小就是257*257畫素。那麼由於每個node大小為17*17畫素,所以最小層級的node(葉子)大小為32*32公尺,上一層大小為其4倍的64*64公尺,以此類推,帶上根節點一共有5層。

unity的lod演算法相比效率更優先顯示的效果,比較複雜。

terrain的lod以node為單位,若當前node滿足lod要求,就顯示。若需要顯示的更精細,則繼續判斷其子node。

部分手機遊戲使用的地形系統是直接按照地形劃分的小塊與相機之間的距離判斷,離得近的該塊內每個頂點都顯示,隨著距離變遠,每隔2的n次方顯示乙個頂點,n不斷變大。

而unity的地形系統在載入時,對於每個node,會求出heightmap上在該node範圍內的每個點的高度(heightmap粒度的座標)與該點座標對應的在node上的高度的差的絕對值最大值heighterror(因為除了葉子node,node的點密度比heightmap的點密度要稀疏,因此任意座標在node上對應的高度是由其四周的點插值得到的,與該座標在heightmap上的高度往往不同)。表示若顯示該node,則會造成多大的高度誤差。也就是說葉子node因為每個點都與heightmap一一對應,因此heighterror為0。

當判斷每個node的lod時,根據該node的heighterror與距離相機的距離,以及相機的焦距、視距和螢幕的畫素高度,算出該heighterror換算到螢幕上的畫素數量,也就表示如果顯示該node會造成的實際畫素誤差。將該誤差與terrain引數pixelerror比較,若小於該值,就顯示當前node,否則繼續判斷其子node。

這種演算法雖然效果更好,但同時消耗也會更高,lod與高度圖內資料相關使得無法通過lod準確控制螢幕內地形的三角形數量,效率上更加不可控。

terrain的normal是在第一次顯示時計算出來的。

推薦系統 分析

收集使用者資訊的行為記錄模組 分析使用者喜好的模型分析模組 推薦演算法模組 推薦演算法 1.基於內容的推薦系統 content based recommendation 2.協同過濾推薦系統 collaborative filtering recommendation 3.混合推薦系統 hybrid...

系統分析基礎

1.軟體工程定義 總而言之,軟體工程就是把經過實踐考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。2.軟體危機 定義主要表現 解決途徑 3.comomo模型 定義 cocomo,英文全稱為constructive cost model,中文為構造性成本模型。它是一種精確 易於使用的,...

系統分析步驟

拿到需求資料該怎樣進行系統分析呢?步驟如下 1 業務物件 把系統中的業務物件都找出來,分析其主要屬性和各業務物件之間的關係。業務物件主要屬性可以按大類來分,大類下面是基本屬性。例如進銷存系統中的業務物件包括物品 商 計畫單 訂單 倉庫 庫位 客戶 使用者等。物品的屬性分為基礎屬性 編碼 名稱 型號等...