Aternativa3D 7.5中的MapMapping和LOD技术

来源:互联网 发布:软件开发者路线图 pdf 编辑:程序博客网 时间:2024/04/30 13:51

转自 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。
原创粉丝点击