Aternativa3D 7.5中的MapMapping和LOD技術

轉自 http://uh.9ria.com/space-32359-do-blog-id-6836.html

 

採用的LOD及mipmapping技術,可節約場景生成的時間,提高實時仿真的效果。
MapMapping
叫作貼圖分級細化或Mip貼圖,是材質貼圖的技術,是依據不同精度的要求,而使用不同的材質圖樣進行貼圖。
Mipmap在3D圖形學中主要是用來做anti-aliasing(反鋸齒處理),圖像在縮小時因爲採樣率不夠,就會導致混疊現象,如果是線,就表現爲斷線,如果是紋理比較複雜,就表現爲紋理變得雜亂, 圖形學中經常會用到z值來控制物體的遠近,有時會在一個多邊形中用z值變化來生成縱深感很強的物體,這時在一個多邊形內部的紋理貼圖就會用到不同的縮小比率,如果只用原始的紋理去採樣,就會在縮小比率大的地方(通常是z值大的地方)出現混疊。紋理貼圖,圖形學中將用來貼圖的圖片統稱爲紋理,用來貼圖的紋理大小與真正要渲染的區域不一定是剛好匹配的,這樣就需要做放大或縮小,如果縮小,也就會產生上面所述的混疊現象。原始紋理逐步做下采樣(即圖像縮小),從而生成一系列的不同大小的紋理,這些紋理被稱爲mipmap,使用時按照縮小比率來選擇合適大小的紋理。比如,我們要用做貼圖的紋理大小爲 64x32,對它做下采樣生成32x16,16x8,8x4,4x2,2x1,1x1的紋理,如果要渲染的區域大小爲14x6,那麼我們要麼選16x8的紋理貼,要麼選16x8與8x4的兩塊紋理做線形平均的結果貼圖。
  當物體移近時,程序會在物體表面貼上較精細、 清晰度較高的材質圖案,於是讓物體呈現出更高層、更加真實的效果;而當物體遠離使用者時,程序就會貼上較單純、清晰度較低的材質圖樣,進而提升圖形處理的整體效率。
可以通過alternativa.engine3d.materials.TextureMaterial類的mipMapping屬性來設置材質的細分貼圖方式,alternativa.engine3d.core.MipMapping的3個靜態常量提供了3種方式MipMapping.NONE(Mip貼圖),MipMapping.OBJECT_DISTANCE(按離相機的距離來進行Mip貼圖),MipMapping.PER_PIXEL(按離相機的像素來進行Mip貼圖)。
TextureMaterial類的resolution(分辨率)屬性是指紋理的一像素相對對3維空間的大小,可以通過Object3D類的calculateResolution(textureWidth:int, textureHeight:int, type:int = 1, matrix:Matrix3D = null):Number方法來獲得。

LOD
Levels of Detail,意爲多細節層次,LOD技術指根據物體模型的節點在顯示環境中所處的位置和重要度,決定物體渲染的資源分配,降低非重要物體的面數和細節度,從而獲得高效率的渲染運算。LOD是協調紋理像素和實際像素之間關係的一個標準。一般用於中抵擋顯卡中。

通過alternativa.engine3d.containers.LODContainer類來實現,LODContainer是一個容器類,繼承於Object3DContainer類,通過計算孩子對象(Object3D)相對於相機的距離來決定孩子被渲染的精細度,可以用

setChildDistance(child:Object3D, distance:Number)方法來改變某個子對象的LOD。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章