最新的CIMRTS v1.0.10中在要素管理中的材质美化增加**「放大采样」** 和**「缩小采样」**参数,对于透明树叶可以达到较好效果。
在CesiumLab中,一棵树处理完成后,在EarthSDK中,就是呈现这样缩小就会有树叶丢失的情况。效果如下:
在CIMRTS中通过改变采样参数已经解决了这个问题。效果如下:
如何做到的呢?
首先进入编辑创建的数据集页面,在要素管理页面选中纹理,点击下面的材质美化
打开材质美化的设置面板
决定树叶半透明纹理在缩小时不消失的关键就在最下面的**「放大采样」** ,「缩小采样」
这里的采样就涉及到OPENGL中的纹理相关知识,百度一下都有现成的文档说明,在这里就简单说下我的理解吧,这里分放大和缩小两种情况
放大采样
- NEAREST:最临近点采样,选择中心点最接近纹理坐标的那个像素,这种方式会带来纹理放大的时候会有锯齿感或者颗粒感。
- LINEAR:线性采样,采样会基于纹理坐标附近的纹理像素,计算出一个平均值,近似出这些纹理像素之间的颜色。这种方式产生的纹理放大效果更加平滑,边缘没有明显的锯齿,视觉效果更为柔和。但是因为与周围的像素做加权平均了,纹理放大的时候会变模糊,这是正常现象。
最后有一点提醒下,由于无需进行复杂的插值计算,GL_NEAREST模式在性能上通常优于GL_LINEAR。
缩小采样
- NEAREST:和放大采样中的最临近点采样 原理一致,在缩小采样中适用于半透纹理(树,栏杆,护栏)。所以示例模型材质缩小采样就是适合这种方式。
-
LINEAR:和放大采样中的线性采样 原理一致,在缩小采样中适用于纹理中有很多线的情况。
-
NEAREST_MIPMAP_NEAREST :当纹理需要缩小时,会预先计算多个不同分辨率的纹理图像,并选择最接近当前纹理尺寸的Mipmap级别,并使用最临近点采样方法来生成最终的像素颜色。
-
LINEAR_MIPMAP_NEAREST:选择最接近当前纹理尺寸的Mipmap级别,并使用线性插值进行纹理坐标的采样
-
NEAREST_MIPMAP_LINEAR:在两个最匹配像素大小的Mipmap之间进行线性采样,使用最临近点采样方法来生成最终的像素颜色。
-
LINEAR_MIPMAP_LINEAR:CesiumLab一直采用这种,在两个最匹配像素大小的Mipmap之间进行线性采样,并使用线性插值进行纹理坐标的采样。这种采样方式就会导致半透明的贴图丢失。就如文章开始介绍的那棵树模型用CesiumLab处理后在预览缩小时会有树叶消失的情况。
综上所述,针对这棵树模型而言,要效果平滑,另外还要像素颜色正确,可以在纹理被缩小 的时候使用最临近点采样(NEAREST) ,被放大 时使用线性采样(LINEAR)。
那肯定有人要问在处理不同的模型的时候应该如何去设置这两个参数呢?这个真没有标准答案,其实这个纹理采样的选择也不是完全绝对的,大家可以多试几次,达到最优的情况。
这也就是我们为什么会把这两个参数放到材质美化里面:一般来说使用CIMRTS来处理模型,这两个参数本不必要设置,只是针对特殊的材质(特别是带有半透的纹理),我们处理完再预览的时候发现有问题,才会回到材质美化中来调整效果。