徐明曄
北京電影學(xué)院中國電影高新技術(shù)研究院,北京 100088
隨著影視行業(yè)進(jìn)入數(shù)字時(shí)代,三維場(chǎng)景等數(shù)字資產(chǎn)的處理及復(fù)用成為重要研究課題之一。場(chǎng)景描述,是指制作特效電影和游戲的過程中通常會(huì)生成、存儲(chǔ)和傳輸大量的3D 文件。制作管線中許多協(xié)作環(huán)節(jié)(建模、著色、動(dòng)畫、燈光、渲染)通常都有自定義的場(chǎng)景描述,適用于制定后期軟件的制作需求和工作流程,而其它后期制作軟件則無法讀取或編輯。
通用場(chǎng)景描述 (Universal Scene Description,USD)[1]為表示場(chǎng)景中各類資源提供了一套統(tǒng)一的描述方式,服務(wù)于影視級(jí)3D 數(shù)據(jù)的生成、存儲(chǔ)、處理、管理和復(fù)用等[2]。USD 可用于創(chuàng)建、表達(dá)和修改虛擬世界的一組數(shù)據(jù)結(jié)構(gòu)和應(yīng)用編程接口(Application Programming Interface,API),不僅支持幾何圖形、鏡頭、照明和材質(zhì)等虛擬世界的基礎(chǔ)知識(shí),也能夠表征它們之間的各種關(guān)系,包括屬性繼承和實(shí)例化等。同時(shí),USD 也是一個(gè)用來合成場(chǎng)景和解析場(chǎng)景中數(shù)值的文件格式,可以用于不同后期制作軟件之間 (Maya、Houdini等)的文件交換和數(shù)據(jù)傳輸,也可以直接用作3D 場(chǎng)景文件。
USD 最早由皮克斯公司研發(fā),2016 年作為一種開源免費(fèi)項(xiàng)目公開。皮克斯公司最早研究USD 這種格式,是為了確保它可以共享和重用數(shù)十萬個(gè)3D資產(chǎn)用于其電影[3]。該格式允許在實(shí)時(shí)工作區(qū)中重復(fù)使用3D 數(shù)據(jù)集,同時(shí)保持原始文件完好無損。USD 作為皮克斯研發(fā)的第四代場(chǎng)景描述方式,得到行業(yè)廣泛認(rèn)可。USD 的發(fā)展歷程,最早可以追溯到1995年上映的《玩具總動(dòng)員》,以每個(gè)鏡頭為單位,均由一個(gè)單一的線性程序文件描述。皮克斯研發(fā)團(tuán)隊(duì)逐漸在其自主研發(fā)的動(dòng)畫系統(tǒng) “木偶”中引入引用、分層、編輯和變化的概念,并從 《蟲蟲危機(jī)》的制作開始得以發(fā)展。2004年,皮克斯研發(fā)團(tuán)隊(duì)在“木偶”系統(tǒng)的基礎(chǔ)上,又設(shè)計(jì)開發(fā)出第二代動(dòng)畫系統(tǒng)Presto,解決了 “木偶”遇到的合成和覆蓋3D場(chǎng)景描述等功能無法協(xié)作使用的問題,提供了統(tǒng)一的第二代場(chǎng)景描述。該描述方法支持從單個(gè)網(wǎng)格到整個(gè)模型,再到環(huán)境或鏡頭的所有粒度的引用、覆蓋、變化和其他操作,以單一文本格式編碼,并使用單一合成引擎進(jìn)行評(píng)估。2008—2009年,管線開發(fā)團(tuán)隊(duì)開始構(gòu)建TidScene,一個(gè)由二進(jìn)制數(shù)據(jù)庫(Berkeley D B)支持的幾何模式,使用輕量級(jí)場(chǎng)景作為編寫和讀取時(shí)間采樣數(shù)據(jù)的機(jī)制。TidScene的核心元素為OpenGL渲染插件,該插件允許所有管線應(yīng)用程序直接從TidScene預(yù)覽渲染,其本地引用特性能夠支持分層、場(chǎng)景“隔離”(即只加載場(chǎng)景的一部分)、資產(chǎn)引用和調(diào)整。USD 項(xiàng)目于2012年啟動(dòng),任務(wù)是將Presto的組合引擎和低級(jí)數(shù)據(jù)模型與TidScene的惰性訪問、時(shí)間采樣數(shù)據(jù)模型和輕量級(jí)場(chǎng)景結(jié)合起來,提供了一個(gè)全新的描述方式。
USD 是一個(gè)描述體系,可以是一系列文件格式,也可以是一套工具或插件。USD 提供了豐富的工具集,用于讀取、寫入、編輯和快速預(yù)覽3D 幾何圖形、陰影、燈光、物理和越來越多的圖形等[4]。同時(shí),由于USD 的核心場(chǎng)景和組合引擎不受任何特定領(lǐng)域的影響,因此USD 能夠擴(kuò)展至其他領(lǐng)域,以編碼和組合各類3D 數(shù)據(jù)。
USD 將數(shù)據(jù)組織到基礎(chǔ)容器的分層命名空間中。除了子基礎(chǔ)容器之外,每個(gè)基礎(chǔ)容器還可以包含屬性和關(guān)系,統(tǒng)稱為特性。屬性具有可隨時(shí)間變化的類型化值,關(guān)系是指向?qū)哟谓Y(jié)構(gòu)中其他對(duì)象的多目標(biāo) “指針”,當(dāng)引用導(dǎo)致名稱空間改變時(shí),USD 負(fù)責(zé)自動(dòng)重新映射目標(biāo)?;A(chǔ)容器及其內(nèi)容被組織成一個(gè)稱為層的文件。下列羅列的對(duì)象為構(gòu)成USD 的各級(jí)元素。
(1)基礎(chǔ)容器。英文為Prims,全稱為Primitive,是構(gòu)成USD 的基本單位。每個(gè)基礎(chǔ)容器都有一個(gè)名稱,0個(gè)或多個(gè)命名屬性,以及0 個(gè)或多個(gè)子級(jí)。例如,正方體是個(gè)基礎(chǔ)容器,燈光是一個(gè)基礎(chǔ)容器,材質(zhì)是一個(gè)基礎(chǔ)容器?;A(chǔ)容器是定義階段的對(duì)象樹中的“節(jié)點(diǎn)”。
(2)特性。英文全稱為Property。特性一般包含屬性和關(guān)系兩種。屬性是描述基礎(chǔ)容器的類型化值(例如整數(shù)、顏色、變換矩陣、數(shù)組等),而關(guān)系則是在一個(gè)基礎(chǔ)容器和另一個(gè)基礎(chǔ)容器之間建立的鏈接。
(3)元數(shù)據(jù)。英文全稱為Metadata,是一種依附在基礎(chǔ)容器、資產(chǎn),甚至是圖層上的額外信息。
(4)層。英文全稱為L(zhǎng)ayer,它是基礎(chǔ)容器和資產(chǎn)的存放工具,其中的元素要按照層級(jí)結(jié)構(gòu)組織好。通常來說,一個(gè)USD 文件 (.usd格式的文件)是一個(gè)層,一個(gè)層可以表示場(chǎng)景的一個(gè)片段,如道具、角色、裝備的一部分,燈光設(shè)置等;也可以表示用來創(chuàng)建基準(zhǔn)的默認(rèn)值,例如包含鏡頭序列設(shè)置的圖層。
(5)合成操作符。英文全稱為Composition Arcs,是USD 提供的一套用于方便實(shí)現(xiàn)場(chǎng)景組裝的操作符。USD 中有六種合成操作符,分別為子層(Sublayers)、引 用 (References)、負(fù) 載 (Payloads)、變體 (Variants)、繼承 (Inherits)和特化(Specialises)。子層是最常見的一種,它類似于Photoshop中的圖層,USD 中的子層可以定義USD層的堆棧,堆棧按強(qiáng)度順序排列,子層可以互相覆蓋,在具有相同屬性的兩個(gè)子層合并時(shí),只有最強(qiáng)的子層才能顯現(xiàn)屬性;引用則用于將新項(xiàng)目添加到場(chǎng)景中;負(fù)載就像可以延遲加載的引用,可以在場(chǎng)景中選擇部分項(xiàng)目加載到內(nèi)存中;變體用于在接種的項(xiàng)目之間進(jìn)行切換,在相同的物體有不同版本時(shí)可以在其中進(jìn)行選擇;繼承類似于面向?qū)ο蟮木幊陶Z言中的類,在規(guī)定成同一類的事物中,可以從事物的基元中繼承;特化的工作方式類似于繼承。六種合成操作符的強(qiáng)度順序由強(qiáng)到弱依次為子層(Sublayers)、繼承 (Inherits)、變體 (Variants)、引用(References)、負(fù)載 (Payloads)、特化 (Specialises),這個(gè)順序由縮寫LIVRPS給出。
(6)舞臺(tái)。英文全稱為Stage,是把所有層從根層向下合成的結(jié)果。通常一個(gè)舞臺(tái)就對(duì)應(yīng)于場(chǎng)景中用于遍歷查詢的一個(gè)物件,這個(gè)舞臺(tái)給出了基礎(chǔ)容器和特性在命名空間中的位置信息以及相關(guān)屬性的數(shù)值等完整的數(shù)據(jù)信息。
(7)模式。英文全稱為Schema,其含義是一組屬性的集合,這些屬性賦予了基礎(chǔ)容器含義。目前USD 支持的模式有幾何模式、立體模式、陰影模式、照明模式、骨骼動(dòng)畫模式等,隨著未來USD 的發(fā)展也會(huì)支持更多的模式。
USD 支持多種文件格式,具有統(tǒng)一的API和豐富的工具集,支持多人修改同一資產(chǎn)或場(chǎng)景。USD常見的文件格式有四種:二進(jìn)制文件 (.usdc 格式)、文本文件(.usda格式)、壓縮文件 (.usdz格式)和插件文件格式。
(1)二進(jìn)制文件。拓展名為usdc的文件,也被稱為crate文件,是一種經(jīng)過精確壓縮和內(nèi)存映射的快速訪問文件格式,也可以使用擴(kuò)展名usd進(jìn)行存儲(chǔ)。usdc文件擁有高效的編碼和無損壓縮,打開的時(shí)候只讀入基礎(chǔ)容器和特性的層級(jí)關(guān)系;屬性和時(shí)間采樣可以用命令來控制。
(2)文本文件。拓展名為usda的文件,其設(shè)計(jì)原則是為了可讀性,使開發(fā)者直接讀懂3D 文件的內(nèi)部結(jié)構(gòu)。usda文件是一種無損格式,任何usd文件都可以轉(zhuǎn)換成usda文件,便于在不進(jìn)行渲染的情況下理解usd文件中的內(nèi)容及進(jìn)行調(diào)試,usda文件和usd文件一樣可以打開和進(jìn)行渲染,也可以像crate文件一樣以u(píng)sd擴(kuò)展名進(jìn)行存儲(chǔ)。
(3)壓縮文件。拓展名為usdz的文件,是由皮克斯公司和蘋果公司聯(lián)合開發(fā)的一種數(shù)據(jù)格式,它相當(dāng)于一種壓縮形式的打包文件,包括了USD 文件和所需貼圖、紋理等各種資產(chǎn),多數(shù)情況下用于視覺特效的制作中。
(4)插件文件。除了以上文件外,usd也支持Alembic文件,在USD 預(yù)覽程序usdview 中可以直接讀取和引用,其他公司也可以自行研發(fā)文件解析插件,以擴(kuò)展應(yīng)用USD 并添加對(duì)其文件格式的支持。
USD 首要特性就是高速性,即可以快速加載和回放大數(shù)據(jù)集。實(shí)現(xiàn)高質(zhì)量數(shù)字藝術(shù)的最重要因素之一,就是能夠快速且頻繁地迭代設(shè)計(jì)資產(chǎn)和動(dòng)畫,以期在實(shí)現(xiàn)3D 美術(shù)編輯場(chǎng)景的同時(shí),盡可能提升呈現(xiàn)令人滿意的視覺反饋的速度,以及在多個(gè)應(yīng)用程序之間遷移新數(shù)據(jù)或恢復(fù)崩潰會(huì)話的速度。USD通過探索算法的改進(jìn),更好地利用現(xiàn)代多核系統(tǒng)和GPU 以及圖像壓縮技術(shù),最大限度地減少訪問遠(yuǎn)程存儲(chǔ)數(shù)據(jù)的延遲,實(shí)現(xiàn)了通過最小化延遲來最大化美術(shù)迭代。
其次,USD 支持非破壞性編輯。非破壞性編輯指的是在整個(gè)流水線中的參與人員,可以通過自己的層來獨(dú)立完成工作,而不會(huì)破壞上游或下游參與人員的創(chuàng)作。USD 最基本的構(gòu)圖弧線,即子層操作符,通過允許美工人員在自己的層中工作,使不同部門或同一部門內(nèi)的多個(gè)美工人員同時(shí)在同一資產(chǎn)或場(chǎng)景上工作,所有這些都將在USD 文件中明確指定的強(qiáng)度順序中進(jìn)行組合和解決。當(dāng)建模的美工人員更改較弱層中定義的幾何拓?fù)鋾r(shí),此功能雖不能自動(dòng)調(diào)整較強(qiáng)層中的陰影數(shù)據(jù),但它可以使每個(gè)美工人員獨(dú)立工作,而無需刪除或編輯任何其他美工人員的工作,并有助于提供更改的清晰審計(jì)跟蹤,有助于解決諸如更改拓?fù)渲惖膯栴}。
另外,USD 具備通用性。由于USD 是一個(gè)開源的項(xiàng)目,可以在不同的軟件之間交互使用。USD提供了豐富的通用語言,用于定義、打包、組裝和編輯3D 數(shù)據(jù),方便使用多個(gè)數(shù)字內(nèi)容創(chuàng)建應(yīng)用程序。像許多其他交換包一樣,USD 提供了一個(gè)低級(jí)數(shù)據(jù)模型,在“文件格式級(jí)別”規(guī)定了數(shù)據(jù)如何編碼和組織,加上一組 (可擴(kuò)展的)高級(jí)模式,為網(wǎng)格或轉(zhuǎn)換等提供有意義的API和組織。在此基礎(chǔ)上,可以創(chuàng)建具有幾何圖形、材質(zhì)、燈光和其他屬性的資產(chǎn)定義。
USD 的出現(xiàn),規(guī)范了后期制作的流程,使得不同團(tuán)隊(duì)、使用不同操作軟件的工作人員都可以在同一體系下交流協(xié)作,大大提升了影視后期制作的效率。皮克斯在2019年上映的動(dòng)畫電影《玩具總動(dòng)員4》中,構(gòu)建了一個(gè)擁有超1萬億個(gè)多邊形的世界,實(shí)現(xiàn)這樣龐大的三維場(chǎng)景,依賴于不斷進(jìn)步的圖形渲染和數(shù)據(jù)管理,也是皮克斯在USD 應(yīng)用層面的一次成功。值得一提的是USD 的變體操作符功能,為 《玩具總動(dòng)員4》中的每種資產(chǎn)創(chuàng)建了多個(gè)變體,如圖1所示,借助USD 的變體功能,實(shí)現(xiàn)了以多種形狀、著色和紋理進(jìn)行資產(chǎn)的差異化創(chuàng)建,以形成資產(chǎn)的多版本變體,并能以指定版本進(jìn)行資產(chǎn)調(diào)用。自此,皮克斯將USD 納入具有悠久歷史的跨部門協(xié)作標(biāo)準(zhǔn)流程,演變成了符合當(dāng)代制作要求的新型資產(chǎn)流程工具。
圖1 借助USD變體功能生成差異化資產(chǎn)
同時(shí),因其開源特性,不同團(tuán)隊(duì)在使用它時(shí),可以根據(jù)需求在其基礎(chǔ)上擴(kuò)展新功能。如圖2所示,Animal Logic工作室在2021年上映的動(dòng)畫電影《比得兔2:逃跑計(jì)劃》中,就使用了USD 的燈光渲染工作流程。USD 在燈光工具組的工作中發(fā)揮了非常重要的作用,Animal Logic工作室開發(fā)了名為Grip的USD 原生庫,是基于節(jié)點(diǎn)基礎(chǔ)的程序化場(chǎng)景修改工具,還有另外一個(gè)Filament QT-based應(yīng)用,讓藝術(shù)家可以與USD 場(chǎng)景、Grip 引擎、產(chǎn)品、渲染器和流程工具等進(jìn)行交互。這些功能都大大提升了電影的制作效率。
圖2 動(dòng)畫電影 《比得兔2:逃跑計(jì)劃》中USD燈光渲染制作界面
鑒于USD 的非破壞性編輯和通用性等優(yōu)點(diǎn),越來越多電影制作部門開始使用USD,改善原制作流程中3D 數(shù)據(jù)協(xié)作困難的狀況,擁有USD 邏輯的USD 工作流程也應(yīng)運(yùn)而生。如圖3 所示,USD 工作流程最大的特點(diǎn)就是解決了原流程中多方協(xié)作和文件讀取困難導(dǎo)致的重復(fù)返工問題。在USD 工作流程中,Layout、動(dòng)畫、特效、燈光等每一個(gè)部門,都可以使用USD 文件相互交流,允許各部門僅保留自己工作需要的圖層參考,而隱藏掉和自己完全無關(guān)的圖層。同一個(gè)部門的不同工作者也可以通過建立子圖層,在不更改別人工作結(jié)果的情況下,給出自己的編輯和修改,這使得整個(gè)流程更加便捷高效。
圖3 USD工作流程示意圖
除了流程上的簡(jiǎn)化,USD 以其獨(dú)特的封裝方式,為影視后期制作帶來了新技術(shù)優(yōu)勢(shì)。如圖4所示,以Maya的相同場(chǎng)景內(nèi)容為例,通過對(duì)比以普通場(chǎng)景保存和通過USD 方式保存的兩種文件,不難發(fā)現(xiàn),USD 存儲(chǔ)的場(chǎng)景在存儲(chǔ)時(shí)間和打開時(shí)間上均優(yōu)于普通方式,文件大小也減少了許多。
圖4 普通場(chǎng)景與USD場(chǎng)景對(duì)比示意圖
Maya支持的USD文件包括.usd、.usdc、.usda以及部分.usdz多種格式文件。在導(dǎo)出方面,Maya 2023支持ASCII(.usda文件)和二進(jìn)制格式(.usd或.usdc文件)兩種方式導(dǎo)出USD 文件,在導(dǎo)出時(shí)選擇合適的導(dǎo)出模式即可。隨著USD 的發(fā)展和被行業(yè)廣泛認(rèn)可,越來越多后期制作軟件開始兼容USD。Render Man 發(fā)布了適用于USD 插件USD Hydra的圖像處理插件hdPrman以支持USD的使用;Houdini 18及其用于外觀開發(fā)的Solaris工具集也是完全基于USD 搭建的;Maya 2023.3已支持USD 的最新版本USD v0.20.0。相信隨著技術(shù)的革新和應(yīng)用的推廣,未來,USD 將在后期制作中發(fā)揮重要作用。
USD 的研發(fā)和應(yīng)用,從一定程度上規(guī)范了影視制作中的后期制作流程,為不同部門從業(yè)者和不同軟件使用者之間,搭建了交流協(xié)作的橋梁,提升了后期制作效率,也為視效技術(shù)的發(fā)展提供了通用數(shù)據(jù)處理方案,推動(dòng)影視行業(yè)3D 資產(chǎn)標(biāo)準(zhǔn)化管理。未來,隨著數(shù)字電影技術(shù)的不斷發(fā)展,數(shù)字資產(chǎn)的生成、存儲(chǔ)、處理、管理和復(fù)用將更加便捷和規(guī)范。