舞臺(tái)視效聯(lián)動(dòng)控制系統(tǒng)旨在實(shí)現(xiàn)一個(gè)集成化、一體化的綜合控制臺(tái),該控制臺(tái)可以實(shí)現(xiàn)對(duì)舞臺(tái)燈光的控制及多路、多格式媒資內(nèi)容的播放控制。因此,在功能上,主要有以下需求:可以預(yù)先編排燈具的動(dòng)作及所要播放的媒資內(nèi)容的播放順序,在表演時(shí)可以準(zhǔn)確控制燈具,從而實(shí)現(xiàn)燈具的調(diào)光、變色、旋轉(zhuǎn)等功能,同時(shí)能夠?qū)崿F(xiàn)對(duì)所要播放的媒資內(nèi)容的編輯、播放/暫停及播放速度的控制。此外,在可用性上,要實(shí)現(xiàn)界面的簡(jiǎn)單友好,所見即所得,用戶可以通過該系統(tǒng)實(shí)現(xiàn)對(duì)舞臺(tái)燈光與視頻設(shè)備方便快捷的控制。
1舞臺(tái)視效聯(lián)動(dòng)控制系統(tǒng)總體設(shè)計(jì)
1.1 系統(tǒng)硬件設(shè)計(jì)
舞臺(tái)視效聯(lián)動(dòng)控制系統(tǒng)的硬件整體,可以劃分為前面板和主控模塊兩部分,系統(tǒng)硬件結(jié)構(gòu)圖見圖1。其中,前面板主要負(fù)責(zé)搜集和發(fā)送鍵盤數(shù)據(jù),主控模塊為系統(tǒng)的核心部分,主要負(fù)責(zé)邏輯運(yùn)算的處理以及對(duì)視效設(shè)備的控制,主控模塊通過RS485總線與前面板進(jìn)行通信。系統(tǒng)主控模塊采用PC級(jí)別的主板,并結(jié)合FirePro W7000專業(yè)顯卡,通過內(nèi)置輸出板卡來(lái)實(shí)現(xiàn)不同形式的信號(hào)的輸出,通過DMX接口輸出DMX控制信號(hào),實(shí)現(xiàn)對(duì)燈光的控制,通過DVI接口或DP1.4接口輸出視頻信號(hào)到投影機(jī)或者LED屏等顯示設(shè)備,實(shí)現(xiàn)對(duì)視頻的控制。
1.2 軟件總體設(shè)計(jì)
舞臺(tái)視效聯(lián)動(dòng)控制系統(tǒng)軟件采用分層的設(shè)計(jì)思路,將系統(tǒng)軟件劃分為界面層和核心層,各層之間分別獨(dú)立設(shè)計(jì),通過調(diào)用接口函數(shù)實(shí)現(xiàn)層與層之間的數(shù)據(jù)交換。在劃分層次的基礎(chǔ)上,分別對(duì)各層進(jìn)行功能模塊劃分,軟件總體架構(gòu)圖見圖2。
1.3 軟件核心層設(shè)計(jì)
舞臺(tái)視效聯(lián)動(dòng)控制系統(tǒng)需要實(shí)現(xiàn)對(duì)常規(guī)燈與電腦燈的控制,而電腦燈的種類多種多樣,每種燈具所實(shí)現(xiàn)的功能也各不相同,為了實(shí)現(xiàn)對(duì)電腦燈的控制,系統(tǒng)應(yīng)該具備支持用戶添加自定義燈庫(kù)文件的功能,該功能由燈庫(kù)配置模塊實(shí)現(xiàn)。所謂燈庫(kù)文件,是對(duì)一個(gè)燈具的描述,該系統(tǒng)采用XML語(yǔ)言對(duì)設(shè)備進(jìn)行描述。
對(duì)燈庫(kù)文件進(jìn)行加載與保存操作時(shí),需要對(duì)XML文件進(jìn)行解析,采用QXmlStreamReader類和QXmlStreamWriter類進(jìn)行解析,相比較Qt的SAX解析器,這種方式速度更快、更方便。
由于系統(tǒng)中通常需要保存數(shù)量龐大的燈庫(kù)文件,為了提高程序的運(yùn)行效率及用戶的使用體驗(yàn),避免一些不必要的性能開銷,燈庫(kù)配置模塊采用延遲加載的方式,在對(duì)象創(chuàng)建時(shí),僅將燈庫(kù)文件的路徑存儲(chǔ)起來(lái),并不對(duì)燈庫(kù)文件進(jìn)行解析,直到真正使用該對(duì)象時(shí)才進(jìn)行解析。解析之前,先檢測(cè)該燈庫(kù)文件是否加載完成,如果當(dāng)前是第一次使用該對(duì)象,則會(huì)使用之前存儲(chǔ)的燈庫(kù)文件的路徑來(lái)完成燈庫(kù)文件的解析,完成以上過程才真正完成一個(gè)燈庫(kù)文件的加載。
燈光功能模塊主要負(fù)責(zé)實(shí)現(xiàn)單步場(chǎng)景、序列、內(nèi)置圖形等功能,視頻功能模塊則負(fù)責(zé)實(shí)現(xiàn)視頻的編輯與播放功能。其中,視頻的編輯功能主要有畫中畫、多路視頻拼接、字幕添加等功能。燈光功能及視頻功能具有常用的公共接口,這些接口主要負(fù)責(zé)實(shí)現(xiàn)功能ID的設(shè)置與獲取,功能的名稱、種類、運(yùn)行時(shí)間、運(yùn)行狀態(tài)的設(shè)置等。
數(shù)據(jù)管理模塊負(fù)責(zé)管理燈光控制信號(hào)的輸入與輸出,采用插件模式進(jìn)行構(gòu)建,以支持多種燈光控制協(xié)議及數(shù)據(jù)傳輸方式。該模塊以Universe類為核心,提供可以安裝輸入輸出插件的接口,通過安裝需要的插件,完成對(duì)輸入和輸出接口的配置。所有的輸入輸出插件的加載與緩存均交由SVELCIOPluginCache類進(jìn)行管理,通過load方法進(jìn)行插件的加載,加載后通過InputPatch類與OutPatch類分別對(duì)輸入和輸出插件進(jìn)行包裝,將包裝后的插件交由InputOutputMap類進(jìn)行統(tǒng)一管理,根據(jù)每個(gè)插件的配置將其與相應(yīng)的Universe對(duì)象進(jìn)行綁定。數(shù)據(jù)管理模塊關(guān)系框圖見圖3。
任務(wù)調(diào)度模塊的核心目標(biāo)是保證系統(tǒng)內(nèi)部運(yùn)行的燈光功能及視頻功能能夠按照用戶設(shè)定的時(shí)間,準(zhǔn)確實(shí)時(shí)地進(jìn)行調(diào)度與執(zhí)行,同時(shí),也允許用戶根據(jù)實(shí)際需要,隨時(shí)啟動(dòng)和停止任務(wù)調(diào)度、調(diào)整燈光功能與視頻功能的執(zhí)行順序。
任務(wù)調(diào)度模塊,包括調(diào)度管理和調(diào)度執(zhí)行程序兩部分。調(diào)度管理負(fù)責(zé)為需要調(diào)度的對(duì)象提供工作空間,每一個(gè)燈光功能通常包含以下內(nèi)容:實(shí)現(xiàn)該功能要使用的燈具,燈具的配接信息,燈具各個(gè)通道的DMX值,以及該功能的運(yùn)行時(shí)間。因此,核心層其他模塊中的實(shí)例對(duì)象均由調(diào)度管理部分進(jìn)行統(tǒng)一管理,這為內(nèi)存對(duì)象的管理提供了很大的便利。調(diào)度執(zhí)行程序部分則負(fù)責(zé)實(shí)現(xiàn)實(shí)際的燈光功能與視頻功能的調(diào)度,包括功能的啟動(dòng)、停止及調(diào)度。燈光功能與視頻功能遵循的調(diào)度流程大致相同,以燈光功能為例,其調(diào)度流程見圖4。
圖4 調(diào)度流程圖
首先創(chuàng)建一個(gè)功能對(duì)象,并進(jìn)行運(yùn)行時(shí)間、淡入淡出時(shí)間等屬性的設(shè)置,將屬性設(shè)置完畢后的對(duì)象添加到核心調(diào)度模塊的Doc對(duì)象中,交由Doc對(duì)象進(jìn)行管理,使用start方法啟動(dòng)功能對(duì)象舞臺(tái)控制系統(tǒng),并將其添加到調(diào)度執(zhí)行程序,交由調(diào)度執(zhí)行程序進(jìn)行調(diào)度。每次調(diào)度時(shí),調(diào)度執(zhí)行程序首先對(duì)功能隊(duì)列進(jìn)行讀取,若該對(duì)象在功能隊(duì)列中有調(diào)用該對(duì)象的preRun方法,然后將其添加到運(yùn)行隊(duì)列中,并進(jìn)行通道DMX的目標(biāo)值及淡入淡出時(shí)間的設(shè)置。當(dāng)調(diào)度執(zhí)行程序從運(yùn)行隊(duì)列中獲取到功能對(duì)象時(shí)舞臺(tái)控制系統(tǒng),會(huì)調(diào)用該功能對(duì)象的write接口,進(jìn)行通道值及淡入時(shí)間的寫入,生成當(dāng)前的通道值,并將該值輸出到數(shù)據(jù)管理模塊。當(dāng)調(diào)度執(zhí)行程序發(fā)現(xiàn)該功能對(duì)象已經(jīng)運(yùn)行結(jié)束時(shí),會(huì)調(diào)用該對(duì)象的postRun方法,將設(shè)置了淡出時(shí)間的通道添加到調(diào)度執(zhí)行程序中。完成以上步驟以后,調(diào)度執(zhí)行程序會(huì)將該功能對(duì)象從運(yùn)行隊(duì)列中移除。
1.4 軟件總體框架
基于簡(jiǎn)單友好的原則,根據(jù)系統(tǒng)實(shí)現(xiàn)的功能,對(duì)系統(tǒng)軟件界面進(jìn)行模塊劃分,系統(tǒng)軟件界面總體框架設(shè)計(jì)見圖5。每個(gè)模塊對(duì)應(yīng)一個(gè)單獨(dú)的選項(xiàng)卡,用戶根據(jù)需求點(diǎn)擊相關(guān)的選項(xiàng)卡,即可進(jìn)入相應(yīng)的模塊進(jìn)行操作。
2舞臺(tái)視效聯(lián)動(dòng)控制軟件的應(yīng)用測(cè)試
基于Windows操作系統(tǒng),在QtCreator下使用C++對(duì)軟件的各個(gè)模塊進(jìn)行實(shí)現(xiàn),并采用基于QtTest的單體測(cè)試方法對(duì)軟件各部分進(jìn)行單元測(cè)試,對(duì)各個(gè)模塊的各類成員函數(shù)分別進(jìn)行測(cè)試。經(jīng)測(cè)試,各部分滿足設(shè)計(jì)要求,運(yùn)行正常。軟件的主界面見圖6。
用戶可以點(diǎn)擊界面左側(cè)“打開文件”,從本地直接加載一個(gè)演出文件,在演出管理界面,點(diǎn)擊“播放”按鈕,即可運(yùn)行。也可以新建一個(gè)空白的演出文件進(jìn)行編輯。
點(diǎn)擊軟件主界面上方任意一個(gè)選項(xiàng)卡,將會(huì)進(jìn)入對(duì)應(yīng)的模塊。點(diǎn)擊“設(shè)備”選項(xiàng)卡,進(jìn)入設(shè)備管理模塊,在該模塊可以對(duì)燈具進(jìn)行添加、刪除、編輯等操作。該模塊界面的左側(cè)有一個(gè)列表,負(fù)責(zé)顯示當(dāng)前工作區(qū)中的所有已經(jīng)配接的燈具信息。選擇燈具后,窗口右側(cè)會(huì)顯示所選燈具的詳細(xì)信息。點(diǎn)擊界面上方的“添加燈具”按鈕,將會(huì)彈出添加燈具對(duì)話框,在對(duì)話框左側(cè)會(huì)顯示所有可用的燈具制造商列表,每個(gè)燈具制造商欄下都包含一個(gè)或多個(gè)型號(hào)的燈具,單擊列表中一個(gè)燈具時(shí),對(duì)話框右側(cè)將會(huì)顯示該燈具的通道及模式信息,選擇要使用的模式,并設(shè)置配接地址及配接數(shù)量,完成以上操作,點(diǎn)擊確認(rèn)即可完成燈具的配接。
點(diǎn)擊“功能”選項(xiàng)卡,進(jìn)入功能管理模塊,功能管理模塊見圖7,在該模塊可以進(jìn)行功能的創(chuàng)建、刪除及編輯等操作。創(chuàng)建各種功能的按鈕位于該模塊界面上方,界面下方的功能列表用于顯示所有已經(jīng)創(chuàng)建的功能,每種功能都設(shè)置了獨(dú)立的項(xiàng),每次創(chuàng)建的新功能都會(huì)出現(xiàn)在對(duì)應(yīng)的類別下,創(chuàng)建新功能或者點(diǎn)擊已經(jīng)創(chuàng)建的功能時(shí),界面會(huì)顯示該功能對(duì)應(yīng)的編輯器,每種功能都有屬于自己的編輯器,在編輯器中所做的更改都會(huì)被立即存儲(chǔ)到對(duì)應(yīng)的功能中,不需要進(jìn)行額外的確認(rèn)操作。
以視頻編輯器為例,點(diǎn)擊視頻編輯器中的“畫中畫”按鈕,可以在當(dāng)前視頻播放窗口再打開一個(gè)文件進(jìn)行播放,所實(shí)現(xiàn)的畫中畫效果見圖8。點(diǎn)擊視頻編輯器中的“視頻疊加”按鈕,將彈出視頻疊加界面,視頻拼接效果見圖9,最多可輸入9路視頻進(jìn)行拼接,可自定義拼接方式與拼接畫面大小,設(shè)定好文件輸出路徑,執(zhí)行視頻拼接指令即可完成多路視頻的拼接操作。此外,用戶可以將編輯完成的燈光功能或者視頻功能,與界面下方的推桿進(jìn)行配接,也可根據(jù)需要在“模擬控臺(tái)”界面添加按鈕、旋鈕等部件與功能進(jìn)行配接,在演出時(shí)直接使用推桿、旋鈕、按鈕即可快速運(yùn)行相應(yīng)的功能。
點(diǎn)擊“Show”選項(xiàng)卡,進(jìn)入演出管理模塊,演出管理模塊見圖10。演出管理模塊界面以多軌道的形式呈現(xiàn),這是視頻編輯軟件的典型視圖,用戶可以根據(jù)燈光功能或視頻功能開始運(yùn)行的時(shí)間,將功能放置在時(shí)間軸指定的位置。燈光功能與視頻功能基于相同的時(shí)間軸,可以很好地實(shí)現(xiàn)對(duì)燈光設(shè)備與視頻設(shè)備的協(xié)同控制。
點(diǎn)擊“模擬控臺(tái)”選項(xiàng)卡,進(jìn)入模擬控臺(tái)管理模塊,用戶可以根據(jù)需要添加按鈕,推桿,旋鈕等部件。點(diǎn)擊“輸入/輸出”選項(xiàng)卡,進(jìn)入輸入輸出管理模塊,輸入輸出管理模塊見圖11。該模塊界面左側(cè)為可用的域的列表,默認(rèn)情況下,軟件會(huì)提供4個(gè)域,用戶可以根據(jù)需要點(diǎn)擊“添加域”按鈕進(jìn)行添加。界面右邊會(huì)顯示檢測(cè)到的插件的信息,及該插件的輸入、輸出和反饋線路信息。在界面左側(cè)的域列表中選擇一個(gè)域,再在右側(cè)的插件列表中對(duì)該域的輸入、輸出及反饋線路進(jìn)行配接,每個(gè)域一次只可以配接一條輸入、一條輸出和一條反饋線路,被選中的插件的信息會(huì)在界面右下角進(jìn)行顯示。
完成各個(gè)模塊的單元測(cè)試后,在演播廳對(duì)整個(gè)舞臺(tái)視效聯(lián)動(dòng)控制系統(tǒng)進(jìn)行實(shí)地測(cè)試,測(cè)試結(jié)果表明,該系統(tǒng)可以實(shí)現(xiàn)舞臺(tái)視效聯(lián)動(dòng)控制的功能。
節(jié)選自《演藝科技》2020年第3期白石磊,鎖意涵,徐 開,吳智勇,范緒威,莊 暢《舞臺(tái)視效聯(lián)動(dòng)控制系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)》,轉(zhuǎn)載請(qǐng)標(biāo)注:演藝科技傳媒。更多詳細(xì)內(nèi)容請(qǐng)參閱《演藝科技》。
(本文僅用于行業(yè)交流學(xué)習(xí),并不用于商業(yè)用途。文中觀點(diǎn)為作者獨(dú)立觀點(diǎn)。如不慎侵涉第三方權(quán)益,請(qǐng)與我們聯(lián)絡(luò),我們將第一時(shí)間刪除處理。)