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

来源:https://www.cnblogs.com/sanyejun/p/13030244.html

在这里插入图片描述
这个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;//自行设定数值
     }
 }
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值