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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM