胡芯菲, 彭四偉
?
虛擬演播三維實(shí)時(shí)渲染引擎控制器①
胡芯菲, 彭四偉
(北京化工大學(xué)信息科學(xué)與技術(shù)學(xué)院, 北京 100029)
研究了虛擬演播三維實(shí)時(shí)渲染引擎控制器的設(shè)計(jì)中架構(gòu)、通信方式以及控制協(xié)議等相關(guān)問題. 虛擬演播三維實(shí)時(shí)渲染引擎是虛擬演播技術(shù)核心技術(shù)部件, 除了在渲染功能上與普通三維圖形渲染引擎的區(qū)別, 更重要的一個(gè)區(qū)別的在于面向虛擬演播的應(yīng)用的控制器的設(shè)計(jì). 控制器的架構(gòu)設(shè)計(jì)滿足演播的要求, 同時(shí)演播過程中對(duì)場(chǎng)景的控制需要通過控制器傳輸?shù)戒秩灸K, 控制器與渲染模塊的通信方式設(shè)計(jì)為協(xié)議驅(qū)動(dòng)的TCP方式, 它保障了渲染的實(shí)時(shí)性同時(shí)也能保證控制協(xié)議的可擴(kuò)展性, 便于后續(xù)的研究及開發(fā).
虛擬演播; 控制器; TCP通信; 協(xié)議驅(qū)動(dòng); 控制協(xié)議
隨著虛擬現(xiàn)實(shí)技術(shù)的飛速發(fā)展, 該項(xiàng)技術(shù)逐漸深入到我們的生產(chǎn)生活當(dāng)中. 在軍事、醫(yī)療、工業(yè)設(shè)計(jì)、娛樂、教育和通訊等諸多行業(yè)中, 虛擬現(xiàn)實(shí)技術(shù)在其發(fā)展和研究過程中都起到重要作用[1]. 而在現(xiàn)代演播技術(shù)中, 虛擬現(xiàn)實(shí)技術(shù)更是帶來了翻天覆地的改革, 虛擬演播技術(shù)應(yīng)運(yùn)而生. 目前虛擬演播技術(shù)主要以商業(yè)應(yīng)用開發(fā)為主, 如以色列的ORAD(傲威)的ProSet高清虛擬演播室系統(tǒng)完成了2008年北京奧運(yùn)會(huì)的轉(zhuǎn)播, 國(guó)內(nèi)的新奧特公司的NASET系統(tǒng)被中央電視臺(tái)應(yīng)用于2004年雅典奧運(yùn)會(huì)的直播. 在這些商業(yè)系統(tǒng)中,其虛擬演播三維實(shí)時(shí)渲染方法都是針對(duì)自己的系統(tǒng)進(jìn)行的相應(yīng)開發(fā), 具有龐大、復(fù)雜以及硬件依賴等特點(diǎn), 對(duì)于中小型以及個(gè)人用戶來說是個(gè)很大的負(fù)擔(dān), 因此將虛擬演播三維實(shí)時(shí)渲染引擎作為一個(gè)獨(dú)立的個(gè)體, 研究一個(gè)輕量級(jí)、簡(jiǎn)單、可擴(kuò)展的系統(tǒng)是很有必要的. 本文將針對(duì)虛擬演播技術(shù), 利用OGRE作為基礎(chǔ)對(duì)虛擬演播三維實(shí)時(shí)渲染引擎的設(shè)計(jì)進(jìn)行研究.
伴隨著虛擬現(xiàn)實(shí)技術(shù)和計(jì)算機(jī)圖形學(xué)與演播技術(shù)的共同研究, 為現(xiàn)代媒體技術(shù)翻開了新的篇章, 為演播技術(shù)帶來了一番天翻地覆的變革. 由虛擬現(xiàn)實(shí)技術(shù)和計(jì)算機(jī)圖形學(xué)在媒體行業(yè)研究應(yīng)用衍生而來的虛擬演播技術(shù)不僅推翻了傳統(tǒng)演播技術(shù)的模式, 而且還為演播及節(jié)目的制作帶來了更多的可能性和多樣性.
虛擬演播技術(shù)主要分為兩個(gè)部分: 實(shí)景拍攝部分和虛擬場(chǎng)景部分[2-4]. 實(shí)景拍攝是通過攝像機(jī)拍攝藍(lán)箱或者綠箱中的實(shí)際演播過程場(chǎng)景, 通過色鍵處理器去除藍(lán)箱或者綠箱背景得到實(shí)景拍攝的場(chǎng)景中所需要的內(nèi)容. 虛擬場(chǎng)景部分是由虛擬演播三維實(shí)時(shí)渲染引擎經(jīng)過實(shí)時(shí)渲染得到的演播過程中所需要背景畫面. 將實(shí)景場(chǎng)景和虛擬場(chǎng)景通過圖像合成器進(jìn)行合成處理, 就完成了呈現(xiàn)在電視大屏幕上給觀眾觀賞的電視節(jié)目[5-10].
虛擬演播三維實(shí)時(shí)渲染引擎與普通三維圖形渲染引擎相比, 除了在三維圖形渲染上具備虛擬演播的特色, 更重要的是它擁有一個(gè)適用于虛擬演播的獨(dú)特的控制器. 該控制器在演播過程中采用TCP方式向渲染模塊發(fā)送控制命令對(duì)虛擬場(chǎng)景以及場(chǎng)景中的實(shí)體進(jìn)行控制.
虛擬演播三維實(shí)時(shí)渲染引擎的總體系統(tǒng)架構(gòu)分成三部分: 場(chǎng)景文件系統(tǒng)、渲染模塊、控制器模塊. 系統(tǒng)總體框圖如圖1所示.
圖1 系統(tǒng)總體框圖
場(chǎng)景文件系統(tǒng): 采用XML格式來描述一個(gè)系統(tǒng)中的相關(guān)信息的組織規(guī)范及定義. 本文研究的虛擬演播三維實(shí)時(shí)渲染引擎的場(chǎng)景文件系統(tǒng)是為了給渲染引擎提供相關(guān)的模型文件信息、渲染過程中所需參數(shù), 以及動(dòng)態(tài)特效描述文件.
渲染模塊: 渲染模塊以場(chǎng)景文件系統(tǒng)提供的場(chǎng)景文件作為原料對(duì)虛擬背景場(chǎng)景以及場(chǎng)景內(nèi)的實(shí)體進(jìn)行渲染, 同時(shí)接收控制命令對(duì)場(chǎng)景的控制進(jìn)行響應(yīng)并將當(dāng)前場(chǎng)景狀態(tài)向控制器反饋.
控制器模塊: 采用協(xié)議驅(qū)動(dòng)的TCP方式進(jìn)行控制器模塊與渲染模塊的消息通信, 同時(shí)為了保證控制器的靈活性和可擴(kuò)展性設(shè)計(jì)了通用的控制協(xié)議.
2.1 控制器架構(gòu)
普通的三維實(shí)時(shí)渲染引擎僅僅只是完成定制的實(shí)時(shí)渲染任務(wù), 但是電視演播要求渲染引擎能夠跟隨實(shí)景拍攝的情況以及節(jié)目設(shè)計(jì)的適時(shí)調(diào)整并實(shí)時(shí)地完成相應(yīng)的變化, 讓虛擬背景與實(shí)景相匹配, 效果不失真[11,12]. 因此, 在演播過程中渲染引擎需要能夠?qū)崟r(shí)接收控制命令, 并做出及時(shí)響應(yīng), 控制模塊便是完成傳送控制命令這一需求的模塊.
在控制部分的設(shè)計(jì)上, 為了防止資源競(jìng)爭(zhēng)以及命令沖突產(chǎn)生錯(cuò)誤, 采用同步方式進(jìn)行控制, 控制端向渲染引擎發(fā)送控制指令之后必須等到其收到渲染引擎發(fā)回的指令反饋才能繼續(xù)發(fā)送下一條指令. 在控制端與渲染引擎之間的消息通信采用TCP方式, 控制端首先建立與渲染引擎的安全連接, 并擔(dān)任管理連接的角色. 演播過程中, 在控制端對(duì)命令進(jìn)行設(shè)置, 包括控制對(duì)象、描述動(dòng)作指令的相關(guān)參數(shù), 寫入控制協(xié)議定義的數(shù)據(jù)格式中, 命令數(shù)據(jù)包進(jìn)入待發(fā)送狀態(tài). 控制端檢查其是否處于命令發(fā)送預(yù)備狀態(tài), 狀態(tài)檢查完畢將命令發(fā)送至渲染引擎. 渲染引擎接收到命令后對(duì)命令進(jìn)行檢查, 如果檢查為錯(cuò)誤命令則發(fā)送錯(cuò)誤反饋至控制端, 控制端進(jìn)入新一輪命令發(fā)送預(yù)備狀態(tài); 如果檢查為正常命令則由渲染引擎執(zhí)行命令, 執(zhí)行完畢將命令反饋發(fā)送給控制端, 控制端恢復(fù)預(yù)備狀態(tài). 經(jīng)歷以上過程, 控制端完成一次對(duì)渲染引擎的控制命令發(fā)送.
根據(jù)以上設(shè)計(jì), 控制模塊的控制流程如下:
(1) 控制模塊在建立與渲染引擎的連接并完成控制協(xié)議數(shù)據(jù)包的封裝;
(2) 控制器進(jìn)行自我狀態(tài)檢查;
(3) 將控制命令發(fā)送至渲染引擎, 并等待接收命令反饋(錯(cuò)誤反饋、命令正常完成反饋、命令執(zhí)行異常反饋等);
(4) 控制模塊進(jìn)入下一次命令發(fā)送預(yù)備狀態(tài).
其詳細(xì)控制流程如圖2所示.
圖2 控制模塊流程圖
控制模塊的研究設(shè)計(jì)上主要包含兩個(gè)部分: 攝像機(jī)控制部分和場(chǎng)景動(dòng)態(tài)變化效果控制部分. 在實(shí)際的演播過程中, 根據(jù)實(shí)際拍攝場(chǎng)景中的攝像機(jī)的搖移情況, 虛擬場(chǎng)景中的攝像機(jī)需完成以實(shí)際對(duì)應(yīng)的搖移控制, 使得背景和實(shí)際拍攝的實(shí)景畫面拍攝深度、角度和方位相契合, 讓效果更逼真. 在攝像機(jī)控制部分的設(shè)計(jì)上, 主要使用攝像機(jī)自身坐標(biāo)來進(jìn)行相對(duì)位移的計(jì)算, 進(jìn)行攝像機(jī)搖移.
場(chǎng)景控制部分則主要涵蓋材質(zhì)模型文件中定義的動(dòng)態(tài)特效的播放控制和演播過程中的實(shí)時(shí)動(dòng)態(tài)特效的設(shè)置和播放. 對(duì)于已經(jīng)在材質(zhì)模型文件中定義好的動(dòng)態(tài)特效, 在演播過程中只需控制它的播放和停止. 在演播過程中, 可能會(huì)出現(xiàn)需要臨時(shí)添加的動(dòng)態(tài)特效, 如在新聞直播中出現(xiàn)需要及時(shí)滾動(dòng)播放的緊急通知, 在這種情況下就需要實(shí)時(shí)地在控制器上設(shè)置動(dòng)態(tài)特效相關(guān)命令發(fā)送給渲染模塊進(jìn)行渲染, 控制模塊發(fā)送命令控制其播放.
2.2 協(xié)議驅(qū)動(dòng)的TCP服務(wù)設(shè)計(jì)
從對(duì)虛擬演播三維實(shí)時(shí)渲染引擎的系統(tǒng)架構(gòu)的研究可以看到, 本文研究的虛擬演播三維實(shí)時(shí)渲染引擎中的控制模塊和渲染模塊是兩個(gè)獨(dú)立的模塊, 在演播中, 使用控制模塊向渲染模塊發(fā)送控制命令, 在這兩個(gè)獨(dú)立的模塊之間需要進(jìn)行溝通來完成命令的傳送及執(zhí)行, 這就需要消息通信機(jī)制來協(xié)助完成. 虛擬演播技術(shù), 對(duì)實(shí)時(shí)性的要求比較高, 因此在消息通信機(jī)制方面也要保證通信效率來保證實(shí)時(shí)性. 同時(shí)在消息傳輸服務(wù)的設(shè)計(jì)上, 還要考慮命令執(zhí)行的方式以及對(duì)消息傳輸協(xié)議的擴(kuò)展性的支持.
消息通信主要依靠模塊的傳輸協(xié)議及傳輸服務(wù), 將封裝了控制信號(hào)以及其他相關(guān)信息的數(shù)據(jù)包從控制端傳輸?shù)娇蛻舳? 在演播過程中, 控制信號(hào)的傳輸要保證效率及安全性, 因此控制模式選擇TCP方式進(jìn)行控制信號(hào)的傳輸. 同時(shí), 考慮到渲染過程中操作的正確性, 采用同步的方式進(jìn)行控制命令的傳輸來對(duì)虛擬場(chǎng)景完成控制. 控制模塊在每次發(fā)送控制命令之前進(jìn)行自我檢查, 處于預(yù)備狀態(tài)下才能發(fā)送命令數(shù)據(jù)包, 同時(shí)修改目前的狀態(tài), 直到渲染模塊執(zhí)行完命令接受到從渲染模塊發(fā)送過來的執(zhí)行完成信號(hào)再次將自己設(shè)置成預(yù)備狀態(tài), 才能進(jìn)行下一次的命令發(fā)送.
根據(jù)以上研究分析, 控制模塊的通信傳輸服務(wù)需要具備以下幾個(gè)特點(diǎn): 安全、傳輸效率高、能夠支持同步的方式, 并且為了便于以后的研究及擴(kuò)展, 還需要能夠擴(kuò)展協(xié)議. 本論文針對(duì)控制模塊研究設(shè)計(jì)了基于TCP的、協(xié)議驅(qū)動(dòng)的、可擴(kuò)展的控制指令和消息通信方案. 控制模塊的核心是協(xié)議驅(qū)動(dòng)的TCP通信模塊, 組成通信模塊的兩個(gè)基本服務(wù)類是負(fù)責(zé)數(shù)據(jù)通信的Connection類和負(fù)責(zé)連接請(qǐng)求監(jiān)聽的Listener類.
Connection主要負(fù)責(zé)創(chuàng)建一個(gè)TCP連接, 提供以輪詢的方式接收字節(jié)流. TCP服務(wù)通過遠(yuǎn)程主機(jī)號(hào)和端口號(hào)來建立遠(yuǎn)程連接, 指定所使用的TCP客戶端對(duì)象, 啟動(dòng)工作進(jìn)程. 創(chuàng)建的連接規(guī)定設(shè)置工作線程在空閑時(shí)的掃描時(shí)間、兩次數(shù)據(jù)接收的最小時(shí)間間隔、關(guān)閉連接時(shí)等待工作線程的結(jié)束的時(shí)間以及發(fā)送心跳的時(shí)間間隔, 這幾個(gè)時(shí)間參數(shù)用于判斷連接是否有效、何時(shí)失效以及判斷連接是否正確關(guān)閉等, 以確保連接的安全性和有效性. Connection負(fù)責(zé)具體的數(shù)據(jù)通信過程, 但不負(fù)責(zé)處理數(shù)據(jù)的邏輯協(xié)議, 而是由指定的協(xié)議類的實(shí)例來負(fù)責(zé)邏輯協(xié)議的解析處理. 服務(wù)將遵循通訊協(xié)議將控制命令數(shù)據(jù)包發(fā)送到渲染端, 同時(shí)也發(fā)送其運(yùn)行時(shí)的信息以及收到字節(jié)塊和數(shù)據(jù)幀的通知. 圖3對(duì)Connection類的作用進(jìn)行說明.
圖3 Connection類的作用說明
Listener負(fù)責(zé)監(jiān)聽指定的端口, 響應(yīng)連接請(qǐng)求, 管理已建立的連接. 在監(jiān)聽線程創(chuàng)建過程中, 將指定要監(jiān)聽的端口并且準(zhǔn)備通訊協(xié)議的協(xié)議工廠. 監(jiān)聽啟動(dòng)之后, 監(jiān)聽各個(gè)端口的狀態(tài)并進(jìn)行記錄, 對(duì)已經(jīng)建立的連接進(jìn)行管理, 可關(guān)閉及刪除指定的連接或者所有連接進(jìn)行廣播通知. 在監(jiān)聽線程關(guān)閉時(shí), 同時(shí)將清理掉其所建立的連接. 圖4對(duì)Listener類的作用進(jìn)行說明.
圖4 Listener類的作用說明
為了保證TCP服務(wù)的靈活性和可擴(kuò)展性, 本文研究虛擬演播三維實(shí)時(shí)渲染引擎控制模塊的消息通信機(jī)制中的TCP服務(wù)是可擴(kuò)展協(xié)議的, 因此在前面介紹的TCP服務(wù)框架中的通訊協(xié)議基類是可以由使用及開發(fā)者根據(jù)具體的需求進(jìn)行個(gè)性化的定制設(shè)計(jì). 在研究設(shè)計(jì)中的通訊協(xié)議基類是以數(shù)據(jù)按幀為單位進(jìn)行處理, 通訊協(xié)議負(fù)責(zé)將一組字節(jié)塊解析成一組數(shù)據(jù)幀. 經(jīng)過研究, 數(shù)據(jù)幀的構(gòu)成規(guī)則如下: 首先, 輸入為數(shù)據(jù)片流(每次收到的一個(gè)字節(jié)塊稱為一個(gè)數(shù)據(jù)片), 輸出為數(shù)據(jù)幀流; 其次, 幀起始不一定在數(shù)據(jù)片的起始位置; 再者, 一幀可能分割到一組連續(xù)的數(shù)據(jù)片中, 同時(shí)一個(gè)數(shù)據(jù)片可能包含多個(gè)幀. 數(shù)據(jù)幀從控制模塊傳送到渲染模塊的策略設(shè)計(jì)如下:
(1) 在預(yù)備狀態(tài)時(shí), 等待含有幀起始的數(shù)據(jù)片, 然后進(jìn)入接收狀態(tài);
(2) 在接收狀態(tài)下, 若收到一個(gè)完整幀, 則解析出該幀;
(3) 若提取出數(shù)據(jù)幀后, 沒有新的幀起始, 則清空接收存儲(chǔ), 進(jìn)入預(yù)備狀態(tài).
為了更好地保證本文設(shè)計(jì)的TCP服務(wù)的協(xié)議可擴(kuò)展性同時(shí)降低以其他模塊的耦合性, 本文研究設(shè)計(jì)的協(xié)議類只負(fù)責(zé)幀的解析, 不負(fù)責(zé)幀的處理, 通過通知事件將收到的數(shù)據(jù)幀發(fā)送出去, 由其他專門負(fù)責(zé)處理的對(duì)象來完成幀的處理. 這樣的設(shè)計(jì)方式讓協(xié)議類可擴(kuò)展性以及與其他功能模塊的隔離性表現(xiàn)的比較好, 但是增加了整個(gè)系統(tǒng)的復(fù)雜度, 增加了相應(yīng)的處理類和對(duì)象的管理. 在本文的研究中, 控制協(xié)議的通用格式中針對(duì)具體命令中的參數(shù)存在較大的差別, 以這種方式設(shè)計(jì)的協(xié)議類能夠讓控制協(xié)議的不受到命令參數(shù)的限制.
在本節(jié)研究的TCP服務(wù)中以TCP協(xié)議為基礎(chǔ), 總體架構(gòu)是三部分構(gòu)成: 創(chuàng)建連接、數(shù)據(jù)傳輸、斷開連接. 創(chuàng)建連接階段, 為了保障連接的安全性及有效性, 在連接之前檢查相關(guān)的工作進(jìn)程確定遠(yuǎn)程連接的參數(shù)及對(duì)象, 連接中設(shè)置保持連接有效期的相應(yīng)時(shí)間參數(shù). 在數(shù)據(jù)傳輸過程中, 按照數(shù)據(jù)幀的傳輸策略進(jìn)行傳輸, 其中對(duì)于數(shù)據(jù)片存在一個(gè)緩沖區(qū)來接收字節(jié)流. 在斷開連接的過程中, 不僅僅是單單關(guān)閉連接, 同時(shí)還要確保將網(wǎng)絡(luò)流關(guān)閉、結(jié)束工作線程才能徹底停止數(shù)據(jù)的接收.
2.3 渲染引擎控制協(xié)議
控制模塊通過TCP服務(wù)將控制命令封裝進(jìn)數(shù)據(jù)包傳輸?shù)戒秩灸K, 讓渲染模塊能夠及時(shí)地完成演播中的對(duì)渲染的控制需求. 在對(duì)虛擬場(chǎng)景的控制上, 控制命令的種類及其組合有很多種, 如果每一種命令都自成一種格式, 這種情況下對(duì)控制命令的解析只能采取窮舉的方式來進(jìn)行. 窮舉的解析方式首先對(duì)效率的影響較大, 將影響虛擬演播三維實(shí)時(shí)渲染引擎的實(shí)時(shí)性. 另外, 對(duì)于控制命令來說, 在不同的情況下定義的命令都不相同, 而對(duì)于節(jié)目制作, 設(shè)計(jì)的多樣性和多邊形決定了控制命令不能以窮舉的方式出現(xiàn), 這樣它的擴(kuò)展性及靈活性將大大降低. 因此, 需要一個(gè)渲染引擎控制協(xié)議來規(guī)定控制指令的模式, 讓控制命令在一個(gè)統(tǒng)一的范式下進(jìn)行編碼封裝成數(shù)據(jù)包經(jīng)由TCP服務(wù)從控制端傳輸?shù)戒秩灸K.
操作命令主要是指明在什么時(shí)候由何種對(duì)象對(duì)另外的對(duì)象進(jìn)行了怎樣的操作, 控制協(xié)議則是針對(duì)操作命令的描述的規(guī)范. 在這個(gè)協(xié)議中要規(guī)定以下信息: 命令執(zhí)行時(shí)間、執(zhí)行者、被操作者已經(jīng)相關(guān)操作信息. 在虛擬演播中, 操作命令是即時(shí)發(fā)送到渲染模塊, 由渲染模塊立即實(shí)施執(zhí)行, 因此本節(jié)的控制協(xié)議中命令執(zhí)行時(shí)間不需要進(jìn)行描述. 而虛擬演播三維實(shí)時(shí)渲染引擎的控制模塊發(fā)送的控制命令都是送達(dá)到渲染模塊, 由渲染模塊來執(zhí)行, 所以渲染模塊中同樣也不需要申明命令執(zhí)行者的信息. 因此, 在本文的控制協(xié)議中要規(guī)定被操作者以及操作命令的描述編碼規(guī)范.
在本文提出的虛擬演播三維實(shí)時(shí)渲染引擎的研究中, 控制模塊主要是在演播過程中對(duì)場(chǎng)景的控制. 場(chǎng)景的構(gòu)成除了場(chǎng)景背景, 還包括場(chǎng)景的物體, 比如模型實(shí)體、攝像機(jī)、燈光等, 這些都將成為控制模塊的控制對(duì)象. 在這些控制的對(duì)象中, 根據(jù)場(chǎng)景歸屬范圍將其分為兩個(gè)層次, 第一個(gè)層次是對(duì)于場(chǎng)景整體, 第二個(gè)層次是場(chǎng)景內(nèi)的所有實(shí)體的集合. 基于這樣的組成結(jié)構(gòu), 控制協(xié)議中的控制對(duì)象的表示有兩部分組成, 第一部分指明操作對(duì)象在那個(gè)場(chǎng)景, 第二部分說明操作對(duì)象是指定場(chǎng)景中的哪一個(gè)物體. 而操作命令則由命令指令及其所需要的參數(shù)構(gòu)成, 圖5所示則是控制協(xié)議指定的控制命令數(shù)據(jù)包格式構(gòu)成.
圖5 控制命令數(shù)據(jù)包格式
在數(shù)據(jù)傳輸過程中, 數(shù)據(jù)包的數(shù)據(jù)量是決定傳輸速率, 從而影響虛擬演播三維實(shí)時(shí)渲染引擎的實(shí)時(shí)性, 因此在數(shù)據(jù)包的各個(gè)部分的表示上用盡可能小的數(shù)據(jù)量進(jìn)行描述. 對(duì)于場(chǎng)景、場(chǎng)景內(nèi)實(shí)體以及操作命令均由場(chǎng)景文件信息載入時(shí)存儲(chǔ)的標(biāo)號(hào)表示, 操作命令使用的參數(shù)將按序封裝發(fā)送給渲染端. 場(chǎng)景文件信息解析之后的結(jié)果將以如下形式進(jìn)行存儲(chǔ), 如圖6所示.
圖6 場(chǎng)景文件解析及命令存儲(chǔ)形式
在演播過程中, 控制命令的控制對(duì)象以及控制命令的編碼主要轉(zhuǎn)化成為其對(duì)應(yīng)的序列標(biāo)號(hào), 傳輸?shù)戒秩灸K后使用標(biāo)號(hào)對(duì)應(yīng)于場(chǎng)景文件和命令的存儲(chǔ)結(jié)構(gòu)體進(jìn)行解析以執(zhí)行. 控制命令編碼遵循如下策略:
(1) 場(chǎng)景位不可空缺, 場(chǎng)景內(nèi)實(shí)體位可缺省. 場(chǎng)景內(nèi)實(shí)體位缺省時(shí)表示其對(duì)整個(gè)場(chǎng)景包含場(chǎng)景內(nèi)所物體的操作; 否則操作命令的執(zhí)行對(duì)象是指定場(chǎng)景內(nèi)的指定實(shí)體;
(2) 操作命令中命令位補(bǔ)課空缺, 參數(shù)序列可空缺. 參數(shù)序列的按照命令構(gòu)成的參數(shù)初始化順序進(jìn)行編碼, 解析后按序?qū)ο鄳?yīng)的對(duì)象中的成員進(jìn)行設(shè)置讓控制命令對(duì)控制對(duì)象執(zhí)行.
2.4 實(shí)驗(yàn)
在控制器模塊, 實(shí)際演播過程中的控制信號(hào)將會(huì)根據(jù)發(fā)展和設(shè)計(jì)產(chǎn)生變化或者進(jìn)行相應(yīng)的增加, 本文的研究在控制協(xié)議方面, 研究設(shè)計(jì)了通用的渲染引擎控制協(xié)議. 產(chǎn)生變化或者增加的控制信號(hào), 按照控制協(xié)議中規(guī)定的何時(shí)進(jìn)行編碼封裝, 即可通過TCP服務(wù)將控制信號(hào)數(shù)據(jù)包從控制端傳送到渲染模塊.
在實(shí)驗(yàn)中, 設(shè)計(jì)了三個(gè)實(shí)驗(yàn)對(duì)虛擬演播三維實(shí)時(shí)渲染引擎的控制器進(jìn)行了. 第一個(gè)實(shí)驗(yàn)是在演播過程中添加渲染虛擬場(chǎng)景內(nèi)的實(shí)體的實(shí)驗(yàn), 實(shí)驗(yàn)結(jié)果如圖7所示; 第二組實(shí)驗(yàn)是對(duì)攝像機(jī)的搖移控制, 實(shí)例中攝像機(jī)的坐標(biāo)位置為(0,10,-100), 控制命令位將攝像機(jī)從當(dāng)前位置搖移到原點(diǎn), 對(duì)五個(gè)不同的時(shí)刻進(jìn)行了截圖, 每張截圖對(duì)應(yīng)的是攝像機(jī)向Z軸負(fù)方向移動(dòng)20個(gè)單位, 實(shí)驗(yàn)結(jié)果如圖8所示; 第三組實(shí)驗(yàn)是通過控制器向渲染模塊場(chǎng)景內(nèi)實(shí)體的圓形動(dòng)態(tài)特效的實(shí)驗(yàn), 實(shí)驗(yàn)結(jié)果如圖9所示, 圖10為圓形動(dòng)態(tài)特效的運(yùn)動(dòng)合成結(jié)果.
圖7 第一組實(shí)驗(yàn)結(jié)果
圖7至圖9三組圖給出了相應(yīng)的針對(duì)控制模塊給出的三個(gè)實(shí)驗(yàn)結(jié)果. 在圖7中, 左圖給出了虛擬演播三維實(shí)時(shí)渲染引擎渲染得到的空間背景場(chǎng)景圖, 右圖給出了演播過程中控制器向渲染模塊發(fā)出實(shí)體渲染的信息, 渲染模塊實(shí)時(shí)渲染出空間背景中實(shí)體的截圖, 在實(shí)體的渲染過程中并未影響到空間場(chǎng)景背景渲染結(jié)果. 圖9說明的是向渲染模塊發(fā)出攝像機(jī)搖移的信號(hào), 讓攝像機(jī)從當(dāng)前的位置沿Z軸負(fù)方向移動(dòng)到原點(diǎn)位置, 攝像機(jī)搖移過程中, 攝像機(jī)鏡頭離物體越來越近, 因此顯示出來的實(shí)體越來越大. 圖9是演播過程中控制模塊向渲染模塊發(fā)送實(shí)體的圓形動(dòng)態(tài)特效的指令, 指令中包含背景場(chǎng)景及實(shí)體的編號(hào)、圓形動(dòng)態(tài)特效的指令以及唯一表示圓形運(yùn)動(dòng)的相應(yīng), 渲染模塊渲染得到其圓形運(yùn)動(dòng)八個(gè)時(shí)刻的截圖, 在圖10是對(duì)運(yùn)動(dòng)軌跡的合成效果圖, 從圖10可以看出指令執(zhí)行的的效果確實(shí)是圓形的運(yùn)動(dòng)軌跡. 通過以上的實(shí)驗(yàn)可以看到, 通過控制模塊發(fā)送給渲染模塊的指令能夠被正確執(zhí)行.
圖9 第三組實(shí)驗(yàn)結(jié)果
圖10 第三組實(shí)驗(yàn)圓形動(dòng)態(tài)特效合成圖
本文重點(diǎn)研究設(shè)計(jì)了虛擬演播三維實(shí)時(shí)渲染引擎的控制器, 在虛擬演播三維實(shí)時(shí)渲染引擎的總體系統(tǒng)架構(gòu)的基礎(chǔ)下, 結(jié)合演播的需求, 設(shè)計(jì)控制器. 同時(shí)為了保證控制器與渲染模塊的通信, 設(shè)計(jì)了協(xié)議驅(qū)動(dòng)的TCP通信方式, 在該設(shè)計(jì)下, 控制協(xié)議在通用控制協(xié)議框架下, 能夠根據(jù)實(shí)際演播過程中的要求將控制協(xié)議進(jìn)行具體的實(shí)例化, 使得其更靈活實(shí)用.
虛擬演播技術(shù)是媒體技術(shù)的發(fā)展前進(jìn)的一大步, 將虛擬演播三維實(shí)時(shí)渲染引擎作為一個(gè)獨(dú)立的個(gè)體進(jìn)行研究, 設(shè)計(jì)一個(gè)輕量級(jí)、簡(jiǎn)單易用且擴(kuò)展性良好的虛擬演播三維實(shí)時(shí)渲染引擎為虛擬演播技術(shù), 便于技術(shù)的發(fā)展及傳播.
1 Gibbs S, Arapis C, Breiteneder C, et al. Virtual Studios: An overview. IEEE Multimedia, 1998, 5(1): 18–35.
2 Blond L, Buck M, Galli R, et al. A virtual studio for live broadcasting: The mona lisa project. IEEE Multimedia, 1996, 3(2): 18–29.
3 梁驥.數(shù)字虛擬演播室的研究與應(yīng)用探索.中國(guó)有線電視, 2013,(4):501–506.
4 陳蕙.全媒體交互式演播室的設(shè)計(jì)與建設(shè).電視技術(shù),2014, 38(2):77–79.
5 劉躍.電視事業(yè)戰(zhàn)略發(fā)展與虛擬演播室技術(shù).中國(guó)傳媒科技, 2012,(15):70–73.
6 Rodríguez GR, Montesa AR. A method for obtaining a virtual object within a virtual studio from a real object: EP. EP2736247. 2014.
7 Griesert A. Method for generating a picture in a virtual studio: US. US20020030692. 2002.
8 Lin SW, Chou HC, Lin CM, et al. Method and system for media production in virtual studio: US. US20080232778. 2008.
9 劉霞,張硯.虛擬演播室系統(tǒng)新議.電視技術(shù),2011,35(2): 90–91.
10 朱巍峰,李震陽.數(shù)字化三維虛擬演播室系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).計(jì)算機(jī)技術(shù)與發(fā)展,2010,20(12):213–216.
11 齊越,胡曉峰,張茂軍.虛擬演播室:結(jié)構(gòu)及關(guān)鍵技術(shù).中國(guó)圖象圖形學(xué)報(bào),2000,5(6):457–460.
12 Jeong JS, Park C, Han JJ, Im MS, Jang RH, Kim M, Yoo KH. Development of a 3D virtual studio system for experiential learning. Advanced Computer Science and Information Technology, Springer Berlin Heidelberg, 2011, 195(10): 78–87.
Controller of Virtual Studio Three-Dimensional Real-Time Rendering Engine
HU Xin-Fei, PENG Si-Wei
(College of Information Science and Technology, Beijing University of Chemical Technology, Beijing 100029, China)
A controller of virtual studio three-dimensional real-time rendering engine is proposed in this paper, and the research focuses on the architecture, communication method and control protocol. The virtual studio three-dimensional real-time rendering engine is the core technology of virtual studio. It is different with the general three-dimensional rendering engines in the rendering function and especially in the design of controller for virtual studio application. The architecture design of the controller meets the demands of virtual studio, which is a control command transfer from the controller to the rendering module. The communication method is designed to be a protocol driven TCP communication method. It not only ensures the real-time feature of rendering, but also guarantees the scalability of control protocol, which will facilitate the follow-up research and the application development.
virtual studio; controller; TCP communication; protocol driven; control protocol
2016-04-18;收到修改稿時(shí)間:2016-05-19
[10.15888/j.cnki.csa.005531]