unity 单位 像素 分辨率 正交摄像机size 之间的关系

 

 这个5表示摄像机的视距

代表摄像机拍摄的一般高度

如果16:9的分辨率,100像素为1 unity单位的情况

填充摄像机所需图片大小尺寸为:高度:5*2*100 = 1000    宽度:1000*16/9 = 1778 【1778*1000】

 

 

 

 

 

 

上面这2张图,一个y坐标为  -3.5  ,一个为 -4 ,图片的pixel per unit为200

可计算出2图之间的像素为:0.5 * 200 = 100 像素

如果我们把图的pixel per unit改为100

 

他们的图片会直接放大,但是他们的坐标不变,此时他们之间的距离为 0.5 *100 = 50像素

虽然他们之间的距离像素会发生变化,但是他们之间的unity单位是始终保持不变的,一直是0.5

由此我们可以得到一个游戏素材分辨率转换思路

我们可以改变游戏素材的尺寸,但是不会改变他们在unity里面的大小

比如一个pixel per unit为100,宽高也为100的图,现在要对他进行低分辨处理

 

我们把100*100改成 50*50 ,缩小一倍,然后把pixel per unit也缩小一倍,也就是50即可

高清化则反之,100*100改成200*200  ,pixel per unit改成200

 

高清化的作用

一般我们设计分辨率固定下来后,放大摄像机视距,场景素材会放大,高清化使得放大后的素材不模糊

具体看比例,比如我们正交摄像机size为5,设计分辨率【1920*1080】,推导出铺满场景需要【1778*1000】,则摄像机视角最多放大1000/1080 = 0.92倍,物体不会模糊,这个数字是小于1,没错,严格来讲1080p不应该使用这个size。

如果我们正交摄像机size为14.2,设计分辨率【1920*1080】,推导出铺满场景需要【5049*2840】,则摄像机视角最多放大2840/1080 = 2.62倍,物体不会模糊

 

逆向推导,1080p设计分辨率,1080/100/2=5.4,size至少5.4才是达标的size,所以我们推荐的正交摄像机的size最好是 5.4 至 10,在pixel per unit为100的情况

同时size过大也不好,因为需要绘制更大的素材。算好你的游戏正常视角和最大的视角,来决定你的size。一般来说在最大视角上图片不模糊就是你的正确的size。这种最大视角不应该过大,因为这个比例越大其实就是越浪费。而你的游戏有多少种情况是处于这种放大情况的呢。更不用说在移动平台上更需要节省资源来避免这种资源上的浪费。谷歌商店对安装包体积大小具有100Mb限制,再大需要开发者自行分包,移动平台上安装包越小更有优势

 

最后算了一下,透视摄像机,z为-10.16 的情况,要达到5.4标准,Field of view 值为56

 

如果调整了pixel per unit 那么每次导入的图片则需要设置一下

项目添加如下脚本

 using UnityEngine;
 using UnityEditor;
 
 public class SpritePixelsPerUnitChanger : AssetPostprocessor
 {
     void OnPreprocessTexture ()
     {
         TextureImporter textureImporter  = (TextureImporter) assetImporter;
         textureImporter.spritePixelsPerUnit = 100;//自行设定数值
     }
 }

 

posted @ 2020-06-02 11:37  三页菌  阅读(2823)  评论(0编辑  收藏  举报