• 【转】UniSky入门资料


    上图就是UniSky的制作天空的一个截图。今天呢,我不想在和往前一样,是step by step的方式了,在这里,我利用官网的文档,进行了中文的翻译,并且加上了自己的部分注解。同样希望朋友可以很明白,很快的可以上手去制作属于自己的sky。
    UniSky是一个令人瞠目结舌的程序天气插件。他提供了模拟大气视觉效果系统。可以让你快速创建出AAA级别的逼真的天空。
    注意:UniSky目前不支持Unity Xbox。
    如何设置UniSky?
    UniSky很简单就可以导入到你的项目中:
    注意:首先重要的是确保你的摄像机可以看到UniSky.修改摄像机的标签为"Solid Color"并且设置颜色为黑色.设置摄像机裁切面大约为100000左右.
    1. 第一步导入你选择的包到你的场景中,并且打开文件夹.
    2. 在"Resource"文件夹中找到"UniskyAPI"预置,把他拖到你的层次面板.
    3. 拖拽你的主摄像机到UniSkyAPI's编辑器UI的"Scene Camera"槽中.
    4. 现在你可以实例化并且通过脚本控制UniSkyAPI.
    5. 下面的API函数,我都已经给加上了中文注解,想设置什么环境,就加上相应的api函数的调用就ok啦!
    API函数/参数
    下面是对UniSky参数的介绍,并且都对其进行了效果解释。下面的列表可以再UniSkyAPI.js/cs中找到。
    //一天的时间(0到24小时循环) SetTime(float time); LerpTime(float time, float milliseconds); GetTime();

    //返回太阳的颜色 GetSunColor();

    //启用或禁用太阳和月亮的阴影。类型: "LightShadows.None" 、"LightShadows.Hard"和 "LightShadows.Soft"
    public void SetSunShadows(LightShadows sunShadows)
    public void SetMoonShadows(LightShadows moonShadows)
    //设置暴风雨云层中心的坐标 SetStormCenter(Vector3 stormCenter);
    //散射半径,他影响着天空的颜色(默认是45000,通常情况下是一个真实的天空) SetScatteringRadius(float scatteringRadius); LerpScatteringRadius(float scatteringRadius, float milliseconds);
    //主大气层的覆盖是(-5到5) void SetCloudCover(float cloudCover); LerpCloudCover(float cloudCover, float milliseconds);
    //黑暗的云层,不是暴风雨的大气层。(2-0,越低,云层颜色越深) SetPrecipitationLevel(float precipitationLevel); LerpPrecipitationLevel(float precipitationLevel, float milliseconds);
    //暴风雨的覆盖层级是(建议是-3.5到-1.0) SetStormCloudCover(float cloudCover); LerpStormCloudCover(float cloudCover, float milliseconds);
    //雨的数量。没有大暴雨的,但是都是小雨。(任何地方都是从0-1000) SetRainLevel(float rainLevel, float sfxLevel); LerpRainLevel(float rainLevel, float sfxLevel, float milliseconds);
     
    //特大暴雨。一片都有雨。(任何地方都是从0-200) SetStormLevel(float stormLevel, float sfxLevel); LerpStormLevel(float stormLevel, float sfxLevel, float milliseconds);
     
    //太阳的亮度或浓度。由于黑暗中阴天或暴风雨天(0到0.5)淡入淡出 SetSunIntensity(float intensity); LerpSunIntensity(float intensity, float milliseconds);
     
    //设置内置雾(0到0.03) SetFogLevel(float fogLevel); LerpFogLevel(float fogLevel, float milliseconds);
    //设置屏幕图像上滴落的速率(0到5) SetDropletLevel(float dropletLevel); LerpDropletLevel(float dropletLevel, float milliseconds);

    //设置云的方向,加速度和演化的速度。X=x方向和加速度,Y=y方向和加速度,Z=演化速度(0到1) SetCloudSpeedDirection(Vector3 speedDirection); LerpCloudSpeedDirection(Vector3 speedDirection, float milliseconds);

    //光晕差异。设置云边缘的照明强度(0到10)。提示:设置为0左右,会有一个很好的卷云效果。 SetGlowVariance(float glowVariance); LerpGlowVariance(float glowVariance, float milliseconds);
     
    //设置云褪色到大气中的距离(0到20) SetViewDistance(float viewDistance); LerpViewDistance(float viewDistance, float milliseconds);
     
    //调节默认颜色。建议RGB的默认值(1.5,1.5,1.5)。如果你想要粉红色或绿色的云:D SetColorVariance(Vector3 colorVariance); LerpColorVariance(Vector3 colorVariance, milliseconds);
    //如果你想时间自动循环,这个是时间流逝的速度。(0到0.1) SetSpeedOfTime(float speedOfTime);

    //改变光散射到云中,只影响云的颜色。最好是保持他的默认值,40.(-20到100) SetRayleighLevel(float rayleighLevel);

    //如果启用该选项,一天中时间的播放器与系统时钟同步。 SetUseSystemTime(bool enabled);
    //改变环境光的颜色。我建议在一天的时间内进行插值或混浊。 SetAmbientLighting(Color ambientLevel); LerpAmbientLighting(Color ambientLevel, float milliseconds);
    //设置月亮的大小 SetMoonSize(float moonSize);
     
    //清除雾滴缓存 ClearDropletBuffer();
     
    //设置打雷闪电的频率。越高越频繁(0到100)。
    SetLightningFrequency(float frequency);
     
    重要提醒:
    1. 为了避免着色器的问题重要的是保留UniSky的位置和缩放.如果有需要,缩放你的场景或适当的使用脚本来回移动,你不会失去场景的任何缩放.
    2. 如果你看不到完整的天空或不能看到月亮,有可能是摄像机剔除掉他了.为了避免这个问题设置摄像机的远切面为一个很高的值(或许100000).一个聪明的解决方案是设置预置体在他自己的层,不会被摄像机的远切面剔除,你仍然可以保持一个更有效的剔除效果.
    3. 重分利用太阳和月亮的光和颜色,移除场景中其他直射的灯光并且设置环境光的颜色为灰色或黑色.

    看完上面的这些内容,已经学会了如何来制作sky,但是想制作出来一个逼真效果很赞的sky,需要你花点耐心多做些参数细化的设置,搭配出来sky的环境。如果再想有进一步的了解sky的工作原理,亲,那就好好的研究下里面的脚本和shader方面的东东喽!come on

  • 相关阅读:
    数型DP
    士兵杀敌(三)(RMQ)(DP) or ( 线段树 )
    还是回文
    dp(DAG)
    mysql的内连接外连接查询
    一些概念
    函数式编程中的一些概念
    Optional<T>
    计算文件和字符串的MD5摘要
    SpringMVC的一些配置
  • 原文地址:https://www.cnblogs.com/DragonX/p/3199238.html
Copyright © 2020-2023  润新知