赞
踩
最近公司需要,需要做一个能动态加载格子的地图,如下图所示:
为此我用c#做了个工具来切割图片
生成的图片如下:
分割后的图块导入到unity中,放入quad上的材质中,然后再把这些quad按照图片原来的相对位置进行拼接,此时会出现缝隙,如下所示:
如果此时放大镜头,会发现,原来每个quad的边缘都出现了特殊颜色的边。
然而观察切割出来的图片却是可以正确拼接的,也没有多余的边缘。这是为什么呢?
这是因为c#工具分割的时候使用了双三次插值图像算法,此算法是采集周围n*n个方向的像素作为参考点,对像素进行插值运算,而工具先把图片进行了分割,这个时候每个图块在放入材质后,边缘会向周围采样,但此时已经丢失了相邻图块的颜色信息,导致计算后的颜色值出现偏差,所以才会出现多余的边缘。
解决办法如下:
比如要切割一张10*10的图块,这个时候需要像周围多采集n个像素的图片,n=具体插值算法的采样宽度,比如双三次插值为4。这个时候生成的图片就尺寸就变成了18*18
然后再unity中对uv进行偏移,其中tiling=10/18,offset=n/18。此时再来观察
完美无接缝
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。