【Cinemachine智能相機教程】VirtualCamera(四):Noise屬性

摘要:【長文預警,先收藏後品嚐】如何讓Unity中的相機模擬現實世界手持拍攝的晃動效果呢?Cinemachine的Noise屬性可以讓你在5分鐘內解決這個問題。

洪流學堂,讓你快人幾步。你好,我是鄭洪智,你可以叫我大智。我正在記錄帶小新學Unity的經歷。

自從咱們一起5分鐘入門Cinemachine之後,我和你一起學習了Cinemachine中的VirtualCamera的基本用法VirtualCamera的Body屬性Aim屬性,今天咱們來學習一下它的Noise屬性。
**【長文預警,先收藏後品嚐】**如何讓Unity中的相機模擬現實世界手持拍攝的晃動效果呢?Cinemachine的Noise屬性可以讓你在5分鐘內解決這個問題。

Noise屬性

使用Noise屬性可以模擬相機的晃動。Cinemachine中自帶了一個Basic Multi Channel Perlin算法,可以給虛擬相機的運動添加柏林噪聲。柏林噪聲是一種隨機算法技術,可以給相機添加比較自然的隨機運動。

Basic Multi Channel Perlin需要設置一個Noise Profile屬性。Noise Profile是一個配置文件資產,裏面有噪聲的相關配置。Cinemachine中自帶了幾種profile配置,你也可以自己創建profile。

Amplitude Gain 振幅增益。相機最終的噪聲振幅會是profile中的振幅乘以這個增益係數。設置爲1時使用噪聲配置文件中定義的振幅。將此設置爲0時禁用噪聲。提示:給這個屬性添加動畫可以通過動畫控制噪波增強、減弱的效果。

Frequency Gain:頻率增益。相機最終的噪聲頻率會是profile中的頻率乘以這個增益係數。設置爲1時使用噪聲配置文件中定義的頻率。使用較大的值可以更快地晃動相機。提示:給這個屬性添加動畫可以通過動畫控制噪波變快、變慢的效果。

如何創建或修改Noise Profile

Noise profile是定義程序化生成噪聲曲線相關屬性的資產。Basic Multi Channel Perlin算法使用這個profile來控制相機的運動。Cinemachine在計算相機的位置後會添加噪聲造成的偏移。這樣,相機噪聲不會影響將來相機運動的計算。

Cinemachine包含一些預定義的profile資產。你還可以在CinemachineVirtualCamera組件的Noise Profile屬性上來修改、克隆、定位位置、新建。

我先Clone出來一個6D Shake的Profile。

選中這個Noise Profile後,Inspector中可以直觀地顯示噪聲曲線。x,y和z軸有位置和旋轉的屬性。每個軸可以具有多個層。

如果想創建逼真的程序化噪聲,需要搞懂並選擇合適的頻率和振幅,以確保產生的噪聲質量,噪聲不會出現重複的情況。最有說服力的相機晃動還得使用Rotation噪點,這會影響相機的瞄準。手持攝像機通常情況會有更多的旋轉晃動,而不是位置移動。一般先添加Rotation旋轉噪聲,再添加Position位置噪聲。

令人信服的噪聲曲線通常將低頻,中頻和高頻混合在一起。創建新的noise profile時,可以從每個軸的這三層噪聲開始。

對於振幅(Amplitude),較大的值相機晃動越明顯。對於遠景,使用較小的振幅值,因爲較小的FOV會放大晃動效果。

對於頻率(Frequency),典型的低頻範圍爲0.1-0.5 Hz,中頻範圍爲0.8-1.5,高頻範圍爲3-4。最高可用頻率取決於遊戲的幀頻。遊戲通常以30或60Hz運行。高於遊戲幀速率的噪聲頻率可能會出現採樣出現跳躍的情況。

例如,如果你的遊戲以60幀/秒的速度運行,並且將噪聲頻率設置爲100,則相機會發出斷斷續續的噪聲。這是因爲你的遊戲渲染幀率無法比噪聲頻率更快。

屬性詳解
Preview Time 在Inspector中的圖形預覽的時長。僅用於可視化預覽,不會影響你編輯的噪聲配置文件資產的內容。
Preview Height Inspector中噪聲曲線圖的垂直高度。僅用於可視化預覽,不會影響你編輯的噪聲配置文件資產的內容。
Animated 勾選後,Inspector中的噪聲曲線會水平移動。示僅用於可視化預覽,不會影響你編輯的噪聲配置文件資產的內容。

Position Noise 位置噪波圖層。
Position X, Position Y, Position Z 每個軸都可以設置多層的噪波。每個軸有一個圖形展示。可以設置多層,點擊下面的+或-可以添加或刪除一層。

  • Frequency頻率 噪聲層中的頻率,以Hz爲單位。
  • Amplitude振幅 噪聲層中波的振幅(高度),以距離爲單位。
  • Non-random 選中時不給波形添加柏林噪聲。在沒有Perlin噪聲的情況下,Cinemachine使用規則的正弦波。取消選中可將Perlin噪聲應用於該層,從而使頻率和振幅隨機化,同時保持在所選值的附近。

Rotation Noise 所有軸的所有旋轉噪波圖層。
Rotation X, Rotation Y, Rotation Z 每個軸都可以設置多層的噪波。每個軸有一個圖形展示。可以設置多層,點擊下面的+或-可以添加或刪除一層。

  • Frequency頻率 噪聲層中的頻率,以Hz爲單位。
  • Amplitude振幅 噪聲層中波的振幅(高度),以度數爲單位。
  • Non-random 選中時不給波形添加柏林噪聲。在沒有Perlin噪聲的情況下,Cinemachine使用規則的正弦波。取消選中可將Perlin噪聲應用於該層,從而使頻率和振幅隨機化,同時保持在所選值的附近。

擴展閱讀

【擴展學習】洪流學堂公衆號回覆timeline可以下載Timeline&Cinemachine系列教程全文帶目錄PDF哦,更有視頻教程等着你!


呼~ 今天小新絮絮叨叨的真是夠夠的了。沒講清楚的地方歡迎評論,咱們一起探索。

我是大智(歡迎加我微信:zhz11235),你的技術探路者,下次見!

別走!點贊收藏哦!

好,你可以走了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章