zoukankan      html  css  js  c++  java
  • 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;//自行设定数值
         }
     }
  • 相关阅读:
    Oracle9使用oradata恢复数据库
    我该怎么安排下属的工作项目经理如何分配任务
    如果说中国的程序员技术偏低,原因可能在这里
    项目经理问:为什么总是只有我在加班 – 挂包袱现象
    【转】面试真经
    [JAVA]PING和TELNET用法介绍
    Hello World 你懂的
    线程间操作控件
    获取客户端相关信息
    winfrom 特效 [转载]
  • 原文地址:https://www.cnblogs.com/sanyejun/p/13030244.html
Copyright © 2011-2022 走看看