Clipmap

針對Mipmap的一些缺點,提出了Clipmap方法。Clipmap方法首先對原始大紋理創建Mipmap,然後選擇一個分割尺寸,再把每一個Mipmap層分割成矩形格線狀的片,避免了傳統方法先把大紋理分割成小紋理再進行Mipmap過濾,而必須處理紋理邊界的做法。這種分割是在大紋理被指定在單一的坐標系統中,對MMipmap每一層進行的,與幾何無關。

Clipmap機制

Clipmap的優點在於沒有把整個影像金字塔的紋理裝入記憶體,而是將裁剪中心周圍一定範圍內的紋理通過裁剪裝入記憶體。通過這種方法,解析度最高的紋理只覆蓋了幾何模型的一小部分,而解析度較低的紋理占了大部分。需要貼圖的部分只是Clip-mapping的一小部分。
裁剪中心(ClipCenter)是一個任意的紋理坐標,在0層(最高解析度層)指定一個裁剪中心,其它高層可由此導出,各層中心都沿一條線對中,從0層的中心直到Mipmap的頂點。在Mipmap的每一層,通過裁剪中心(ClipCenter)和裁剪尺寸(ClipSize)的定義就精確地選擇了要裁剪的區域,裁剪下來的這些固定大小的矩形區域叫裁剪區(Clipregion)。經裁剪後的Mipmap形成了ClipTexture。ClipTexture是繪製每一幀所需要的Mipmap的小子集,其存儲空間小可以克服硬體容量和頻寬的限制。ClipTexture的整個形狀象方尖塔形,它由兩部分構成,即ClipTexture棧和ClipTexture金字塔。凡是比裁剪尺寸大的Mipmap層就被裁剪,其裁剪下來的裁剪區組成ClipTexture棧,由於裁剪中心是隨視點移動而變化的,由此而生成的裁剪區也動態改變,那么ClipTexture棧數據也需要動態切換。ClipTexture金字塔是由Mipmap中小於等於裁剪尺寸的層組成,這些層不用裁剪,它正好是原始的Mipmap金字塔“塔尖”部分,這些層一次能整個容納在紋理記憶體中,其數據是靜態的,不隨視點移動而變化。
在Clipmap中關鍵問題在於確立裁剪中心ClipCenter點。在平坦的地形上最簡單的方法就是將觀察點投影到地形上,然後利用紋理坐標作為裁剪中心。這個方法的缺點在於clipmap包含了了觀察點後面的紋理,而且出了觀察視景體之外。如果把裁剪中心從觀察點向前挪一定的距離,那么就需要針對不同的解析度選擇不同的裁剪中心。
雖然裁剪紋理算法處理大紋理產生了很好的效果,但是,就目前它的實現基礎來看還有以下限制:
(l)它需要大容量的紋理存儲硬體;
(2)裁剪紋理的有效實時操作需要一些特殊硬體的協助,如需要自動變換紋理映射的硬體,把紋理坐標從原始虛擬空間映射到這個經裁剪的紋理空間叭
(3)裁剪紋理依賴於快速的硬碟訪問以取得紋理數據;
(4)目前支持這項技術的高層系統軟體只有OpenGLPerformer,並且對作業系統要求苛刻,硬體上只有其專用圖形工作站才能支持。所有這些特點對於當前低端平台和低頻寬環境是一種不足,其實現成本高、可移植性差限制了它的推廣套用。
儘管如此,裁剪紋理的實現思想對於解決圖形學中相關問題有非常大的指導意義,這種方法不僅對顯示任意大範圍的紋理是重要的,同時還能減少幾何建模工作。裁剪紋理採用動態從大量數據上裁剪一小部分用於顯示,使用了一些快取預測算法思想提高漫遊的實時性和運用環形裝載模式進行數據重用等,這些方法對處理大量幾何數據的顯示也很重要,利用裁剪紋理的紋理數據顯示算法,整體的數據流可以被輕易地以套用需要按一定大小裁剪,開發這種顯示大場景幾何數據LOD信息的系統是可能的,同時從2D紋理擴展到3D紋理套用也可以借鑑這一做法。

相關詞條

相關搜尋

熱門詞條

聯絡我們