• 沒有找到結果。

互動劇情子模組

四、 系統設計與實作

4.3 轉譯器設計–場景處理模組

4.3.3 互動劇情子模組

互動劇情子模組負責處理劇情訊息,如圖 40 所示,由 Script 分析模組所取 得的劇情訊息,會由一段至多段劇情所構成,而每段劇情又可分為數個段落,每 個段落則由不同數目的物件負責演出的工作。圖 41 是編輯手用來描述劇情的例 子,我們假設圖 40 的劇情 0 正是這個例子,這個例子的意義是,劇情一開始先 由物件 0 演出,等到物件 0 演出完畢後,再由物件 1 與物件 2 同時演出,但是兩 者是各自演完後結束,接下來物件 3 與物件 4 雖然也是同時演出,但是先演完的 會等待後者,直到兩者都演完後,才一起做結束的動作,而圖 41 最後一行的意 義則是由目前的場景跳躍至場景 SceneXX。由圖 40 劇情 0 與圖 41 比較可以發現,

圖 41 的每一行其實代表一個段落。

Script 分析模組所 取得的劇情訊息

劇情 0 劇情 1 劇情 2

段落 0 段落 1 段落 2 段落 3

(Sequential) (Parallel-or) (Parallel-and) (Goto-Scene)

物件 0 物件 1 物件 2 物件 3 物件 4 圖 40 劇情訊息樹狀圖

Actor000.play();

parallel( Actor001.play(), Actor002.play() );

parallel( __parameter.parallel_and(), Actor003.play(), Actor004.play() );

EBook.GotoScene(“SceneXX");

圖 41 編輯手描述劇情的例子 表 2 劇情的處理方式

物件 0 物件 1 物件 2 物件 3 物件 4 SceneXX 劇情

Sequential Parallel-or Parallel-and Goto-Scene

我們把圖 41 的四個段落分為四個不同的類型,如圖 40 劇情 0 所示,分別是

一段劇情轉為 BT script 程式時,會成為一個 Access Unit,也就是說,如果由 Script 分析模組所取得的劇情訊息具有多段劇情的話,轉成 BT script 就會有多個

互動劇情子模組除了處理劇情的 Access Unit 之外,還會產生播放各個物件的 BT script,稱之為物件播放程式碼。在上一段的說明中,我們知道劇情的每一段 落會由一個或多個物件的演出來構成,而一個物件的演出就是靠一份物件播放程 式碼來達成演出的效果。因此,考慮段落的類型,若段落是 Sequential 類型,則 演出的物件只有一個,所以此段落只需要一份物件播放程式碼,反之,若為 Parallel 的元素,而物件播放的程式碼是以 conditional 節點構成,首先,內部有一個 TimeSensor 節點作為此物件播放的時鐘,紀錄演出時間的長度,接下來,若上一 個段落有關閉聲音的需要,在 TimeSensor 節點下會有關閉聲音的程式碼區塊。再 來,會有路徑驅動、縮放驅動、視訊播放、聲音播放各種動作的程式碼區塊,這 些程式碼就是讓物件播放的核心,最後,此物件可能有觸發其他劇情段落演出的 能力,若有此需要,便會加入觸發其他劇情段落的 BT script 程式碼。

Conditional {

TimeSensor

總結來說,互動劇情子模組產生與劇情相關的 BT script 程式碼,並且,相對 於靜態顯示子模組是設定不會動的靜態物件,互動劇情子模組是根據劇情的訊 息,驅動劇情內各物件演出的動作。

相關文件