推薦:將NSDT場(chǎng)景編輯器加入你的3D工具鏈 3D工具集:NSDT簡(jiǎn)石數(shù)字孿生 全景視頻Unity 的全景視頻功能可以讓您:
Unity 支持等距圓柱投影 (equirectangular) 布局(經(jīng)度和緯度)或立方體貼圖布局(6 幀)的 180 度和 360 度視頻。 等距圓柱投影 2D 視頻的寬高比應(yīng)恰好為 2:1(360 度內(nèi)容)或 1:1(180 度內(nèi)容)。 立方體貼圖 2D 視頻的寬高比為 1:6、3:4、4:3 或 6:1,具體取決于工作面布局: 要采用 Unity Editor 中的全景視頻功能,必須使用全景視頻剪輯或了解其創(chuàng)作方法。 本頁(yè)面介紹在 Editor 中顯示全景視頻的以下必要步驟:
注意:這是資源密集型功能。為了獲得最好的視覺(jué)效果,應(yīng)采用分辨率盡可能最高的全景視頻(一般為 4K 或 8K)。大型視頻需要更多的計(jì)算能力和資源進(jìn)行解碼。大部分系統(tǒng)對(duì)于最大視頻解碼分辨率有具體限制(比如,許多移動(dòng)設(shè)備限制為 HD 或 2K,而較早的臺(tái)式機(jī)可能限制為 2K 或 4K)。 1.視頻播放器設(shè)置將視頻作為資源導(dǎo)入 Unity。要?jiǎng)?chuàng)建視頻播放器,將視頻資源從 Project 視圖中拖入 Unity Hierarchy 視圖的空白區(qū)域。默認(rèn)情況下,這樣會(huì)設(shè)置組件以播放默認(rèn)攝像機(jī)的全屏視頻。按 Play 即可查看此視頻。 應(yīng)改變此行為以使其渲染到渲染紋理。這樣就可以準(zhǔn)確控制顯示結(jié)果。為此,請(qǐng)選擇 Assets > Create > Render Texture。 設(shè)置渲染紋理的 Size 以準(zhǔn)確匹配視頻。要檢查視頻的尺寸,請(qǐng)?jiān)?Assets 文件夾中選擇該視頻,然后查看 Inspector 窗口。滾動(dòng)到 Unity 的視頻預(yù)覽部分,在預(yù)覽窗口中選擇視頻的名稱,然后將其更改為 Source Info。 接下來(lái),將渲染紋理的 Depth Buffer 選項(xiàng)設(shè)置為 No depth buffer。 現(xiàn)在,打開(kāi)視頻播放器的 Inspector 窗口,并將 Render Mode 切換到 Render Texture。將新的渲染紋理從 Asset 視圖拖到 Target Texture 字段。 進(jìn)入播放模式以確認(rèn)一切正常無(wú)誤。 視頻不會(huì)在 Game 窗口中渲染,但可選擇渲染紋理資源 (Render Texture Asset),然后確認(rèn)其內(nèi)容會(huì)隨每一個(gè)視頻幀更新。 2.創(chuàng)建天空盒材質(zhì)您需要將默認(rèn)天空盒替換為視頻內(nèi)容,從而將全景視頻渲染為場(chǎng)景的背景。 為此,請(qǐng)創(chuàng)建新的材質(zhì) (Assets > Create > Material)。在新材質(zhì)的 Inspector 中將材質(zhì)的 Shader 設(shè)置為 Skybox/Panoramic(選擇 Shader > Skybox > Panoramic)。 將渲染紋理從 Asset 視圖拖到新材質(zhì)的 Inspector 中的 Texture 字段。 必須正確識(shí)別視頻中的內(nèi)容類型(立方體貼圖還是等距圓柱投影)才能正確播放全景視頻。對(duì)于立方體貼圖內(nèi)容(比如靜態(tài)天空盒紋理中常見(jiàn)的交叉和條狀布局),請(qǐng)將 Mapping 設(shè)置為 6 Frames Layout。 對(duì)于等距圓柱投影內(nèi)容,請(qǐng)將 Mapping 設(shè)置為 Latitude Longitude Layout,然后選擇 360 degree 或 180 degree 子選項(xiàng)。如果視頻覆蓋整個(gè) 360 度視圖,請(qǐng)選擇 360 degree 選項(xiàng)。如果視頻只是正面 180 度視圖,請(qǐng)選擇 180 degree。 查看材質(zhì)檢視面板 (Inspector) 底部的 Preview。執(zhí)行平移操作,確認(rèn)內(nèi)容看起來(lái)正確無(wú)誤。 3.將全景視頻渲染到天空盒最終,必須將新的天空盒材質(zhì)與場(chǎng)景關(guān)聯(lián)。
3D 全景視頻在 Player 設(shè)置中開(kāi)啟 Virtual Reality Support(菜單:Edit > Project Settings,然后選擇 Player 類別,并打開(kāi) XR Settings 面板),特別是源視頻有立體聲內(nèi)容的情況下。此設(shè)置將另外解鎖天空盒/全景材質(zhì) (Skybox/Panoramic Material) 中的 3D Layout 選項(xiàng)。3D Layout 有三個(gè)選項(xiàng):Side by Side、Over Under 和 None(默認(rèn)值)。 如果視頻左側(cè)包含左眼內(nèi)容,右側(cè)包含右眼內(nèi)容,應(yīng)采用 Side by Side 設(shè)置。如果左右側(cè)內(nèi)容在視頻中上下分布,應(yīng)選擇 Over Under。Unity 會(huì)檢測(cè)當(dāng)前正在渲染的眼睛,并使用單 Pass 立體渲染將此信息發(fā)送給天空盒/全景著色器。該著色器包含根據(jù)此信息選擇視頻的邏輯;當(dāng) Unity 在 VR 中渲染每只眼睛的內(nèi)容時(shí),即可選擇正確的一半視頻。 對(duì)于非 360 度 3D 視頻(此情況下不應(yīng)使用天空盒材質(zhì)),使用攝像機(jī)近/遠(yuǎn)平面渲染模式時(shí),視頻播放器組件中提供同樣的 3D Layout。 立方體貼圖視頻的備用渲染紋理類型處理立方體貼圖視頻時(shí),可將視頻播放器直接渲染為渲染紋理立方體 (Render Texture Cube),而不是將視頻播放器渲染到 2D 渲染紋理并保留精確的立方體貼圖布局。 為實(shí)現(xiàn)此目的,請(qǐng)將渲染紋理資源的 Dimension 從 2D 更改為 Cube,并將渲染紋理的 Size 恰好設(shè)置為源視頻單個(gè)面的尺寸。 例如,如果有尺寸為 4096 x 3072 的 4 x 3 水平交叉立方體貼圖布局視頻,應(yīng)將渲染紋理的 Size 設(shè)置為 1024 x 1024(4096 / 4 和 3072 / 3)。 渲染到立方體目標(biāo)紋理 (Cube Target Texture) 時(shí),視頻播放器假定源視頻在交叉或條狀布局(使用視頻寬高比進(jìn)行確定)中包含立方體貼圖。視頻播放器隨后用正確的立方體面填充渲染紋理的面。 采用生成的渲染紋理立方體作為天空盒。為此,請(qǐng)創(chuàng)建材質(zhì),并分配 Skybox/Cubemap 作為 Shader (Shader > Skybox > Cubemap),而不是以上所述的天空盒/全景材質(zhì)。 視頻尺寸和轉(zhuǎn)碼添加 3D 內(nèi)容要求視頻寬度或高度增加一倍(對(duì)應(yīng)于 Side-by-Side 或 Over-Under 布局)。 切記,許多臺(tái)式機(jī)硬件視頻解碼器最高支持 4K 分辨率,而移動(dòng)端硬件視頻解碼器最高支持 2K 或更低,因此限制了在這些平臺(tái)上實(shí)時(shí)播放的分辨率。 可采用視頻轉(zhuǎn)碼來(lái)生成更低分辨率版本的全景視頻,但是需要采取預(yù)防措施,避免左側(cè)和右側(cè) 3D 內(nèi)容之間或者立方體貼圖面和相鄰黑色區(qū)域之間的邊緣出現(xiàn)滲色。 總之,應(yīng)以二次冪尺寸創(chuàng)建視頻,并轉(zhuǎn)碼為其他二次冪尺寸,從而減少視覺(jué)瑕疵。 |
|