- 最后登录
- 2022-10-8
- 注册时间
- 2010-12-6
- 阅读权限
- 100
- 积分
- 14150
- 纳金币
- 76544
- 精华
- 23
|
上图就是UniSky的制作天空的一个截图
今天我不想在和往前一样,是step by step的方式了,在这里,我利用unity3d官网的文档,进行了中文的翻译,并且加上了自己的部分注解。同样希望朋友可以很明白,很快的可以上手去制作属于自己的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. 重分利用太阳和月亮的光和颜色,移除场景中其他直射的灯光并且设置环境光的颜色为灰色或黑色.
更多UniSky资料分享尽在web3D纳金网http://www.narkii.com/ |
|