四叉樹,分為父節點,當前節點和四個子節點六個節點指標,根節點沒有父節點,葉子節點沒有子節點。
過程分為初始化,瓦片資料更新,和**
1,初始化,
(1)設定初始位置,並根據給定座標確定包圍盒 ,如果是世界座標,則轉為經緯度,這樣可以知道用的哪塊瓦片資料(即序號第幾行第幾列),這個瓦片資料的行列和級別,可以組合成需要的瓦片名稱,從而生成該四叉樹節點需要的紋理。該節點給予有影象標誌和可渲染標誌
(2)與監控類指標進行關聯,這個監控類同時也是渲染類,在非同步渲染和要求節點所需資料時起到作用,同時也是生產者與消費者過程中的消費者部分(生產者為要求的瓦片名稱,消費者是根據瓦片名稱生成紋理)
(3)從根節點開始到子節點的順序遍歷。首先判斷是否是根節點,如果沒有父節點,則是根節點,則獲取根節點的瓦片資料(通過監控類),
,如果不是根節點,也就是向下走了,則可以先從左上子節點進行遍歷,依次獲取資料。
(4)對四叉樹節點記上標誌,是否有資料,是否被剔除,是否可以被渲染,獲取紋理的節點是可以被渲染的。
(5)用的是三維紋理,所以每個節點都要有相對於根節點的紋理座標。根節點uv起始座標是(0.0,0.0),終止uv座標是(1.0,1.0);其他節點根據父節點的uv座標和中心點的uv座標,計算出該節點的uv座標。遞迴
2,資料更新
(1)首先用攝像機六稜錐進行剔除不在可視範圍內的節點,減少資料,具體方法就是判斷節點的包圍盒是否與六稜錐相交
(2)根據攝像機與各個節點的包圍盒中心的距離確定級別以及是否可視。如果不可視則**該節點的子節點。如果可視且沒有子節點且有瓦片資料則裂分為4個子節點,否則 ,如果沒子節點,則認為是葉子節點,給予該節點可渲染標誌,否則遞迴更新子節點資料
3,瓦片資料的渲染
(1)對於所有的子節點,先通過遞迴查詢帶有可渲染標誌的,放入可渲染四叉樹節點集合中。
(2)通過節點集合查詢相應的頂點陣列
(3)根據三維紋理陣列,進行渲染
四叉樹與八叉樹
前序 四叉樹或四元樹也被稱為q樹 q tree 四叉樹廣泛應用於影象處理 空間資料索引 2d中的快速碰撞檢測 儲存稀疏資料等,而八叉樹 octree 主要應用於3d圖形處理。對遊戲程式設計,這會很有用。本文著重於對四叉樹與八叉樹的原理與結構的介紹,幫助您在腦海中建立四叉樹與八叉樹的基本思想。本文並不...
四叉樹與八叉樹
前序 四叉樹或四元樹也被稱為q樹 q tree 四叉樹廣泛應用於影象處理 空間資料索引 2d中的快速碰撞檢測 儲存稀疏資料等,而八叉樹 octree 主要應用於3d圖形處理。對遊戲程式設計,這會很有用。本文著重於對四叉樹與八叉樹的原理與結構的介紹,幫助您在腦海中建立四叉樹與八叉樹的基本思想。本文並不...
四叉樹與八叉樹
前序 四叉樹或四元樹也被稱為q樹 q tree 四叉樹廣泛應用於影象處理 空間資料索引 2d中的快速碰撞檢測 儲存稀疏資料等,而八叉樹 octree 主要應用於3d圖形處理。對遊戲程式設計,這會很有用。本文著重於對四叉樹與八叉樹的原理與結構的介紹,幫助您在腦海中建立四叉樹與八叉樹的基本思想。本文並不...