當前位置:首頁 >教程首頁 > VRay >讓畫麵更逼真!詳解在後期軟件中製作運動模糊效果

讓畫麵更逼真!詳解在後期軟件中製作運動模糊效果

發布時間:2018-11-17 19:57:24


導言:親愛的朋友們大家好,戴老師我又回來啦。繼上一次給大家分享了在後期軟件中製作景深效果後,已經過了一段時間。之前也有朋友跟我說很期待繼續分享在後期軟件中製作運動模糊的效果。我的微博:http://weibo.com/david376

眾所周知,在三維軟件中渲染運動模糊效果是極其耗費渲染時間的事情,但是運動模糊這種視覺效果在有較快運動物體的三維短片中卻起著相當重要的角色。那麼如何又快又好地實現運動模糊對於製作三維短片的工作者來說則是一個重要的課題。

這一次分享的製作經驗,使用三維軟件為Maya,使用渲染器有VRay和Mental ray;使用的後期軟件有AE和Nuke,基本涉及了大家平時習慣使用的主流軟件,滿足不同人群的需要。

本文以及錄製的視頻結構,會分為理論部分和操作部分兩大塊。對於不熟悉這些概念的朋友來說,可以先從理論開始看起,了解一下運動模糊的來龍去脈,以及我們在做動畫的時候,運動模糊是非常有必要的。因為考慮到要照顧不了解的朋友,所以理論部分依然是講解得極為細致、深入淺出。

對於已經比較熟悉了的朋友,可以直接查閱自己使用的渲染器和軟件對應的後期操作部分。

理論部分:

我們先來做個小試驗:抬起你的手,在你的麵前快速搖晃,那麼現在你看到的是什麼?是你的手,是的,但不是平時看到的那種,而是帶著拖尾的,有虛影的手。你所看到的這種現象,就是運動模糊。

不論是通過肉眼觀察,還是通過相機拍攝,我們總是能夠觀察到這樣一種運動模糊的現象。可以說,它是普遍存在的一種視覺現象。

產生的原因也很簡單:當光進入人的眼睛或者鏡頭,會形成一個反映現實場景的“象”。我們的眼睛或者鏡頭,接受光都是有一個節奏的,會接受一下,不接受一下,即是說,我們看到的畫麵其實是斷裂的一張一張畫麵,並不是我們通常以為的連貫的動態。隻是這些斷裂的畫麵,會被我們的大腦理解成一個運動的過程而已(視覺暫留現象)。

假設我們每次觀察最短持續時間是0.01s,在這0.01s裏,有個小球從a點跑到b點;如果小球跑的很慢,a點和b點幾乎重合,我們眼中的小球就比較清晰;如果小球跑的很快,a點和b點離得很遠,那麼我們看到的小球,每一張畫麵,都是一條從a到b那麼長的拖影。




如前文所說,運動模糊是在現實生活中隨處可見的現象。為了讓我們做的片子視覺效果真實可信,合理的運動模糊是必不可少的。

我在這裏再舉一個例子讓大家更深刻地體會這一點。我們都知道,一般動畫或者電影用的幀率是24fps,即每秒鍾播放24張靜止的圖片,連著播放看起來就像是動態的畫麵。但是,在遊戲中呢,一般的幀率要盡量保證在60fps,即每秒鍾播放60張靜止畫麵,如果低於這個數值,哪怕是40fps,玩家也會覺得卡得動不了。這裏似乎就有衝突了,為什麼動畫用24fps覺得很流暢,而遊戲必須要60fps才行呢?兩者差這麼多。

聰明的朋友在這裏估計已經猜出個大概了。原因確實是在於運動模糊。一般的電影拍攝,因為使用的硬件設備,是必然會有運動模糊的。動畫片,製作精良一點的,也都會有運動模糊,包括二維動畫,甚至漫畫,你看到的所謂的速度線,其實都是運動模糊的藝術化處理手法。

但是在遊戲裏,因為機能限製,早些年根本沒有運動模糊這種東西的。直到近幾年,一些3A大作,才慢慢普及了運動模糊。而這個時候你就可以去觀察一個現象,當你開啟遊戲裏的運動模糊效果時,就算你的畫麵幀率降到30fps,你也不會覺得卡。我也是以前在玩《蝙蝠俠:阿甘之城》的時候第一次觀察到這個現象,後來經過仔細思考得出這樣的結論,最後又查到一些資料論證了我的猜測:運動模糊可以降低畫麵幀率而感覺不卡。

那麼運動模糊怎麼會有這種奇效呢?首先,人眼每秒鍾可以接受60張左右的畫麵,所以,遊戲畫麵設置在60fps看著不會卡。那動畫和電影的24fps+運動模糊怎麼就不卡?是因為電影裏的一幀,因為有運動模糊,涵蓋的信息量其實是包含一個片段,而不是隻有一個靜止狀態的。再回想下上麵的圖片,小球從a點到b點的運動,很快的時候,運動模糊包含的信息是a到b這一段距離,而如果沒有運動模糊,你隻能取一個點,可以想象,畫麵就會斷斷續續,就會卡。所以說,動畫和電影,雖然隻有24fps,但因為有了運動模糊,卻可以涵蓋整個運動過程的全部信息,所以看著不會卡,甚至很舒服。而如果你做動畫的時候,不加運動模糊,想一想用24fps去跑的遊戲吧,畫麵效果不忍直視啊。

包括在三維軟件中直接渲染運動模糊,它會給你在兩個最小時間幀裏繼續細分時間,把之間的畫麵也給你渲染出來,然後經過一些差值的算法得到一個模糊的過程。所以,這裏也印證了,運動模糊可以涵蓋掉一整段的運動信息。同時也說明了,為什麼三維軟件裏直接渲染運動模糊,渲染時間會成倍上升了!

到這裏,理論知識就算大概普及了。感謝大家又看我囉嗦了一大堆,相信大家有耐心看完的,都已經意識到運動模糊在動畫裏是有多麼的重要了!不要走開,之後是更精彩的實際操作。

實際操作部分:

1)在Mental ray中做準備

首先我們講講如果使用Mental ray的話,操作方法應該是怎麼樣的。Mental ray中有三個跟運動模糊有關的通道,分別是2D Motion Vector、3D Motion Vector、Normalized 2D Motion Vector。到底選擇哪一種,要根據你使用的後期軟件來決定。如果是使用AE,那麼就要使用Normalized 2D Motion Vector;如果使用的是Nuke,那麼就要使用2D Motion Vector。而3D Motion Vector要在哪裏用,我也是沒有查到。

我做了一個簡單的場景來講述如何使用這些通道。 

場景渲染出來的基本效果

2D Motion Vector視覺效果

Normalized 2D Motion Vector通道視覺效果

做了粗略的運動模糊以後的視覺效果

2)Motion Vecotr通道所代表的含義

那麼這些紅紅綠綠的motion vector通到底是什麼意思呢?其實他們隻是用圖片來裝載信息,圖像本身並沒有識別的意義,有點像法線貼圖的意思。用Normalized 2D Motion Vector通道來說吧,首先藍通道是不會使用的,所以藍通道裏裝什麼都沒關係,默認情況下,藍通道會填充滿50%的灰,或者在某些軟件裏也會完全舍棄,變成0;紅通道和綠通道的默認值也是0.5,當某個像素的紅通道數值小於0.5的時候,軟件會理解這個像素向左跑,數值越小跑的越快;當某個像素的紅通道數值大於0.5的時候,軟件會理解這個像素在往右跑,數值越大跑的越快。同理,綠通道是數值大於0.5向上跑,小於0.5向下跑。取值範圍當然在0到1之間(或者用ps的理解是0-255)。

上麵是我在AE中的截圖,AE將Normalized 2D Motion Vector的藍通道舍棄,全部為0。於是,如果一個圖片上沒用東西動的話,顏色應該是(0.5,0.5,0)或者(128,128,0),即是你看到的大麵積的黃色,有些地方又有些別的顏色,則表示在進行一些運動。

對於Normalized 2D Motion Vector通道來說,我們還可以對圖片進行一定程度的分析來理解它的含義。而2D Motion Vector通道則更難理解,因為它不像Normalized 2D Motion Vector通道一樣,取值範圍在0到1之間。2D Motion Vector沒有取值範圍,保存的是浮點數據,可以理解為,可以容納無限大的數值,也可以容納無限小的負數!是的,2D Motion Vector有些地方其實是負值,所以,正常人看圖片是無法理解這張圖的含義的,它隻能拿給計算機去計算用。

那麼Normalized 2D Motion Vector通道和2D Motion Vector通道又有什麼區別呢。所謂normalized,翻譯過來叫做標準化,在計算機領域裏,一般都是指把某一個範圍的數值映射到0到1的範圍之內。比如說,你的最小值為-500,最大值為500,normalized以後,最小值變為0,最大值變為1,原來的0變為0.5,原來的250變成0.75,原來的-250變成0.25了。所以,這兩個通道承載的內容其實是沒有本質區別的,隻不過數值分布的空間不一樣。而不同的後期軟件有自己對數值的偏好而已。

3)在AE中合成你的motion vector通道

在AE中我們要使用一個叫做rsmb(real smart motion blur真的聰明運動模糊)的插件來實現運動模糊效果。這個插件可以識別我們渲染出來的motion vector通道。具體的操作是你對你的顏色層使用RSMB插件,在跳出來的屬性麵板裏,使用的圖層選擇你的Normalized 2D Motion Vector通道,max displace(最大位移)的值跟Maya中的數值要一致,一般默認為256,blur amt(blur amount模糊程度)的數值默認0.5,這個數值你可以理解為運動模糊效果的強度,越大越強,別的就不用考慮了。

運動模糊本身的設置是隻有這麼簡單,現在我們已經可以得到不錯的結果,但是還是有很多的問題等待我們去修正。

比如說,這個案例裏,我做了一個小球跳動的動畫,同時攝像機也用運動,但是在後期做運動模糊的時候,卻隻能看到小球模糊了,而別的東西都沒有模糊。觀察2D Motion Vector通道也會發現,隻有球有運動信息,別的地方都沒有。這種效果當然是不正確的。

動畫中某一幀的畫麵 

該幀對應的2D Motion Vector通道

4)如何正確使運動模糊通道記錄攝像機運動信息

那麼該怎麼修正呢?很簡單,在Mental ray中,你的primary renderer默認是raytracing,這在大部分情況下都是很好的,但是對於我們現在這個案例,卻會導致我們的運動模糊通道不計算攝像機的運動。所以,我們得切換到scanline掃描線作為我們的primary renderer。雖然說是掃描線,但是需要使用光線追蹤的地方,mental ray還是會使用raytracing去計算的,不用擔心渲染不好反射折射這些。大多數時候我們改成scanline都不會有什麼影響的,隻是在這個案例裏你必須改成scanline才能記錄攝像機的運動信息。

講primary renderer改成sanline以後,2D Motion Vector通道獲得了正確的信息

在Maya2013版本以及其以前的版本中,這個指令在features標簽欄下麵的primary renderer裏選擇。但是在Maya2014和Maya2015版本中,這個選項轉移到了quality的legacy options裏麵了,默認還不能勾選,你需要把sampling mode改為legacy sampling mode才能勾選。勾選了以後渲染出來的motion vector通道就正常了,並且在後期做的運動模糊效果也正確了。 



 
 
5)如何分層渲染運動模糊通道

除此之外,還有一些別的問題。我做了一塊透明的擋板,當我的主體,運動的球體,從透明的擋板前麵跳過的時候,出現了明顯的錯誤:被遮擋的部分運動模糊的強度遠遠不夠。

產生這個錯誤的原因是,運動模糊通道隻會記錄模型上的點的位移信息,不會考慮你這個東西是不是透明的。於是,被擋板遮住的球體,運動信息會繼承靜止的擋板,於是就出現了不正常的模糊效果。

 
另外,在某些幀也會看到,快速運動的球體,邊緣的模糊效果會有一種割裂感,明顯看著不對勁。

那麼產生這個問題的原因又是什麼呢?主要是我們現在的做法,直接對一個顏色層做運動模糊效果,球運動的速度和地麵運動的速度差異非常大,後期軟件在計算這種運動速度差別很大的物體疊在一起的情況的時候,處理的效果往往很糟糕。

那麼該怎麼解決?解決這兩個問題的方法是一致的:對場景中的物體進行分層;地麵一層,快速運動的球體一層,透明的擋板又一層。然後分開做運動模糊效果。這樣,每一個單獨的物體都會得到自己正確的運動模糊效果,並不會相互影響而出現圖中所示的拙劣的計算結果。最後再把它們合成成完好的結果。

具體的操作步驟和之前說的一致,隻不過要對分開的每一個圖層進行單獨的一次操作,操作數量可能有點多。而且如果你的場景同時還要做景深的效果的話,那麼設置可能更加複雜一些。你要對每一個單獨的層做景深和運動模糊,並且,要對你的z通道做運動模糊(不然顏色層運動模糊了,而z通道層還是清晰的,二者不一致,就會導致景深出問題,雖然很多時候並不一定觀察得出來。)
關於後期景深的做法,我在之前也出過教程詳細地講解過,沒看過的同學這裏有傳送門:

後期景深基礎篇,教程地址:


9)VRay中輸出多通道的exr文件

如果你使用的輸出格式是exr(multichannel),那麼你就會將所有的通道打包在一起。這個時候,你的velocity通道更像是前麵說的Normalized 2D Motion Vector:以0為靜止,正值右上,負值左下。是更適合nuke的數值儲存方式。在nuke中的操作方式也可以參考之前mental ray部分的講解。

那麼問題又來了,如果我強行要在AE裏麵做呢?相信聰明的朋友已經領悟了,就是給velocity通道的數值全部加上0.5!是的,你可以用色階工具,把output黑的一端拖到0.5來實現,或者新建一個半灰的固態層,用add模式疊加在velocity通道上來實現。或者你可以找一些自己的方法,隻要實現效果都可以。

10)後期運動模糊的局限

因為畢竟是在後期軟件裏模擬的效果,能力有限。所以還是有一些效果是無法實現的。比如說一個人在鏡子前麵跑,人可以做後期模糊,但是鏡子裏的人卻不能模糊。看到這裏的朋友應該能自己想明白個中道理了。

還有折射的問題,複雜物體的折射往往也非常複雜,基本無法後期去模擬運動模糊效果。

遇到以上問題,直接在三維軟件裏麵渲染吧,就目前來說,哪怕再慢也隻能接受。

最後還有影子的問題。影子總是會被當做地麵或者投影上去的物體的一部分跟著移動,但是常識告訴我們這是不對的。如果一個人在跑步,攝像機不動,你在後期做運動模糊,就會看到一個靜止的影子。這算是比較常見的一個問題的,但還好這個問題是有解決的可能的。你可以把運動的影子單獨分層出來,用一些方向模糊之類的濾鏡去模擬運動模糊的效果,畢竟不是模型,沒法獲得它的運動信息的。當然你還可以使用RSMB pro插件,注意這個效果跟我們一般用的RSMB pro vector不一樣,他不需要你輸入一個有速度信息的通道,而是隻要你有一段動畫,就會智能給你計算模糊,而且很多時候計算出來的效果非常給力,是真的很聰明的運動模糊!你可以嚐試對影子層單獨使用RSBM pro,效果一定可以。


結語:

那麼這一期的分享到這裏就告一段落啦。有什麼問題可以來我的微博和博客提問。


新浪博客:@戴老師的渲染作坊

說實話,這一期的教程花了我相當多的時間和精力,並不是內容有多難多複雜,主要是涉及到兩款渲染器和兩款後期軟件,工作量有點大,光寫文檔就花了我兩天多的時間了,之後還要錄視頻什麼的,而且我一旦開始做,就想要做到很好。所以我的內容非常多,講解很細致,我完全可以把很多點都一筆帶過的,但是就是怕一些新手朋友看不懂。哪怕我自己多敲一些字,多說一些話,能夠解決大家心裏的疑惑,我就滿意了。在做這期教程的過程中,有很多時候也感到疲憊和痛苦,也會浮現很多想要放棄的念頭。但是每次回憶起自己最開始學這些軟件的時候,因為這樣一點點的簡單的問題而通宵在網上找答案,往往一個問題要花上兩三天時間卻隻為了那麼簡簡單單的一句答案而已。我就會想到還有多少網友和曾經的我一樣,正在計算機屏幕的那一頭苦苦地思考著,搜索著,隻為了得到這麼幾句話就能說清楚的答案。

有一句話叫做,朝聞道夕可死,說的就是獲取知識的快感。我作為整理和傳播知識的人,同樣也有這種超越於吃喝和活塞運動之上的快感。這是驅動我做免費分享的源動力。其次是大家對我所做工作的認可和鼓勵,也一直讓我堅定我做的事情是有意義的。

不知道最近大家有沒有看《星際穿越》,電影的最後,主角意識到,指引他去NASA,希望他不要離開女兒,把問題的答案傳遞給女兒的,並不是什麼高級外星文明,其實就是未來的自己!是他自己親手拯救了自己拯救了人類。

這種感覺,很像小時候看《哈利波特3》(全係列我最最喜歡的一本了,也是因為我要說的這一段劇情),哈利波特在湖邊差點被攝魂怪殺死,關鍵時刻被一個男人救了下來,那個男人使用的正是他父親守護咒,哈利波特於是一直相信自己的父親還活著。小說的最後,哈利波特穿越回過去,站在湖邊看著倒在湖邊曾經的自己,期待著父親的出現,來拯救自己,他是多麼渴望看到父親一眼。然而那個期待的人卻一直沒有來,直到最後的最後,他才瞬間恍然大悟,那個人不是他父親!就是現在的他自己!於是他念頭咒語發動守護咒,多少次都不能順利發動的咒語,這一次卻充滿了異常強大的能量。他保護了曾經的自己!

有時候,我做教程,似乎也有這樣一種感覺。雖然過去的我不可能看到現在的我的教程,但還是有千千萬萬的朋友會像曾經的我一樣,在我的教程裏受益。

哪怕你對外界有多大的期待,等到最後那一刻,你會發現,拯救自己的,還是你自己。

在後期軟件中製作運動模糊(理論篇)

在後期軟件中製作運動模糊(mr操作篇)

在後期軟件中製作運動模糊(vray操作篇)

項目文件地址
华体会hth体育网 賞析
  • 2101期學員李思庭作品

    2101期學員李思庭作品

  • 2104期學員林雪茹作品

    2104期學員林雪茹作品

  • 2107期學員趙淩作品

    2107期學員趙淩作品

  • 2107期學員趙燃作品

    2107期學員趙燃作品

  • 2106期學員徐正浩作品

    2106期學員徐正浩作品

  • 2106期學員弓莉作品

    2106期學員弓莉作品

  • 2105期學員白羽新作品

    2105期學員白羽新作品

  • 2107期學員王佳蕊作品

    2107期學員王佳蕊作品

專業問題谘詢

你擔心的問題,火星幫你解答

微信掃碼入群領福利

掃碼領福利最新AI資訊

點擊谘詢
添加老師微信,馬上領取免費課程資源

1. 打開微信掃一掃,掃描左側二維碼

2. 添加老師微信,馬上領取免費課程資源

×

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯係,請保持電話暢通!
確定