摘 要:一部動(dòng)畫(huà)作品的制作過(guò)程是一個(gè)復(fù)雜的不斷反復(fù)#65380;逐步完善的過(guò)程,如何進(jìn)行數(shù)據(jù)版本的標(biāo)示并管理產(chǎn)品版本的變遷是一個(gè)困繞許多管理者的問(wèn)題#65377;通過(guò)分析動(dòng)畫(huà)制作過(guò)程中的數(shù)據(jù)流轉(zhuǎn)機(jī)制,采用文檔引用結(jié)構(gòu)樹(shù)來(lái)描述各個(gè)制作環(huán)節(jié)的文檔關(guān)系,設(shè)計(jì)一個(gè)獨(dú)特的數(shù)據(jù)結(jié)構(gòu),能夠?qū)崿F(xiàn)在動(dòng)畫(huà)制作過(guò)程中快速地逐級(jí)傳遞文檔的變更信息,從而有效地控制大型并行環(huán)境中的動(dòng)畫(huà)制作過(guò)程,提高協(xié)同工作效率#65377;
關(guān)鍵詞:動(dòng)畫(huà)制作; 文檔結(jié)構(gòu)樹(shù); 變更設(shè)計(jì)
中圖分類號(hào):TP311.12文獻(xiàn)標(biāo)識(shí)碼:A
1 引 言
一部動(dòng)畫(huà)作品的制作過(guò)程是一個(gè)復(fù)雜的過(guò)程,所涉及到的人員眾多#65377;在大部分動(dòng)畫(huà)制作數(shù)碼化后的今天,制作過(guò)程中每個(gè)環(huán)節(jié)所產(chǎn)生的中間文檔繁多,利用計(jì)算機(jī)網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)技術(shù)進(jìn)行各個(gè)環(huán)節(jié)間的文檔傳遞和管理是十分必要的#65377;特別是在動(dòng)畫(huà)制作的反復(fù)變更過(guò)程中,如果沒(méi)有有效的途徑及時(shí)將修改信息傳遞到與之關(guān)聯(lián)的其它制作人員,控制好文檔的版本變更,則無(wú)法在動(dòng)畫(huà)的變更制作過(guò)程中有效地協(xié)同工作,大大影響制作效率#65377;
2 控制動(dòng)畫(huà)制作過(guò)程中數(shù)據(jù)的流轉(zhuǎn)機(jī)制
在動(dòng)畫(huà)制作過(guò)程中,各個(gè)制作環(huán)節(jié)的完成標(biāo)志就是提交本環(huán)節(jié)的制作成果,這些成果隨環(huán)節(jié)的不同,數(shù)據(jù)格式各異#65377;這些文檔主要分為正在制作的個(gè)人工作文檔#65380;完成后等待審核的提交文檔#65380;審核通過(guò)后作為其它環(huán)節(jié)輸入的共享文檔和制作完成后最終歸檔的歸檔文檔#65377;
個(gè)人工作文檔是在各個(gè)環(huán)節(jié)的制作過(guò)程中由制作人員正在制作的文檔,存儲(chǔ)在制作人員的私有空間中,通常只有制作人員本人可以進(jìn)行修改#65377;當(dāng)制作人員完成一個(gè)環(huán)節(jié)的任務(wù)后,將個(gè)人工作文檔提交給審核人員審核,則該文檔從工作狀態(tài)轉(zhuǎn)化為提交狀態(tài),存儲(chǔ)在整個(gè)制作項(xiàng)目的共享空間中#65377;處于提交狀態(tài)的文檔稱作提交文檔,此時(shí)只有審核人員有權(quán)進(jìn)行修改,其它人員只能進(jìn)行瀏覽#65377;由該環(huán)節(jié)的審核人員審核后,如通過(guò)則該文檔將由提交文檔轉(zhuǎn)換成供后續(xù)環(huán)節(jié)使用的共享文檔#65377;如沒(méi)有通過(guò),則將其退回給制作人員進(jìn)行修改,該文檔狀態(tài)由提交狀態(tài)返回到工作狀態(tài)#65377;當(dāng)所有的環(huán)節(jié)執(zhí)行完成后,最后一個(gè)環(huán)節(jié)生成的文檔將是本項(xiàng)目的最終文檔,歸檔成為可以發(fā)行的歸檔文檔,存儲(chǔ)在整個(gè)制作項(xiàng)目的歸檔空間中#65377;在進(jìn)行最終文檔歸檔時(shí),需要檢測(cè)該文檔所引用的所有引用文檔,并一起進(jìn)行歸檔#65377;文檔的狀態(tài)轉(zhuǎn)換圖如圖1所示#65377;
3 文檔的組織結(jié)構(gòu)
分析動(dòng)畫(huà)制作過(guò)程中的數(shù)據(jù)流轉(zhuǎn)機(jī)制,我們發(fā)現(xiàn),各個(gè)環(huán)節(jié)間的聯(lián)系主要通過(guò)兩條途徑實(shí)現(xiàn):一是通過(guò)動(dòng)畫(huà)制作流程定義各環(huán)節(jié)間的關(guān)系,即本環(huán)節(jié)與前后環(huán)節(jié)間的關(guān)系;二是通過(guò)共享文檔的引用建立文檔引用層次關(guān)系,即本環(huán)節(jié)所產(chǎn)生的文檔,是依據(jù)哪個(gè)環(huán)節(jié)的哪個(gè)文檔經(jīng)過(guò)處理生成的#65377;
那么從動(dòng)畫(huà)制作過(guò)程的首環(huán)節(jié)開(kāi)始,所產(chǎn)生的文檔是整個(gè)動(dòng)畫(huà)制作過(guò)程中其它環(huán)節(jié)的制作依據(jù),每經(jīng)過(guò)一個(gè)環(huán)節(jié),都將生成一批新的文檔,這些文檔將成為其后續(xù)的某些制作環(huán)節(jié)的制作依據(jù),一直到最后環(huán)節(jié)生成最終作品#65377;一個(gè)典型的動(dòng)畫(huà)制作過(guò)程的文檔引用結(jié)構(gòu)樹(shù)如圖2所示#65377;該圖描述了一個(gè)作品從“劇本”開(kāi)始,由導(dǎo)演分解編寫(xiě)成“分鏡頭故事版”,再根據(jù)“分鏡頭故事版”編制出“角色設(shè)計(jì)圖”和“顏色設(shè)定表”#65377;將“分鏡頭故事版”分解成不同的場(chǎng)景和“角色設(shè)計(jì)圖”及“顏色設(shè)定表”一起分發(fā)給相應(yīng)的制作人員分別制作各個(gè)場(chǎng)景的“角色動(dòng)作”和“場(chǎng)景設(shè)計(jì)”,再分別合成各個(gè)場(chǎng)景的故事,最后合成為作品的整個(gè)過(guò)程中的文檔關(guān)系#65377;
文檔引用結(jié)構(gòu)樹(shù)反映動(dòng)畫(huà)制作流程中的文檔傳遞關(guān)系,每個(gè)環(huán)節(jié)所生成的文檔都可以說(shuō)是整個(gè)作品的一個(gè)半成品,在經(jīng)過(guò)了所有的制作環(huán)節(jié)之后,才能最終生產(chǎn)出最終作品#65377;
每一個(gè)最終發(fā)行版本都將擁有一棵完整的文檔引用結(jié)構(gòu)樹(shù),它描述了整個(gè)作品的制作過(guò)程#65377;
計(jì)算技術(shù)與自動(dòng)化2007年6月第26卷第2期朱曉菊等:支持協(xié)同工作的動(dòng)畫(huà)制作過(guò)程控制機(jī)制
4 文檔的版本控制機(jī)制
一個(gè)動(dòng)畫(huà)作品,不可能在整個(gè)制作過(guò)程中通過(guò)制作流程一次性完成而不經(jīng)過(guò)任何修改,而且在很多環(huán)節(jié)的制作時(shí)間是重疊甚至是并行的#65377;對(duì)一個(gè)動(dòng)畫(huà)產(chǎn)品來(lái)說(shuō),其制作過(guò)程是一個(gè)不斷反復(fù)#65380;逐步完善的過(guò)程#65377;在傳統(tǒng)的制作過(guò)程中,令管理者最為頭疼的問(wèn)題是控制各個(gè)環(huán)節(jié)的修改版本,并需要快速地將設(shè)計(jì)的變更傳遞到正確的環(huán)節(jié)和正確的制作人員#65377;為了能夠快速有效地傳遞文檔的變更,需要設(shè)計(jì)有效的文檔版本控制機(jī)制#65377;
首先需要定義一下版本#65380;版次的概念#65377;
版本:版本是指一個(gè)歸檔文檔,經(jīng)過(guò)修改后重新歸檔的修改版#65377;
版次:版次是指在制作過(guò)程中,不斷反復(fù)修改完善過(guò)程中的共享文檔的修改版#65377;
由以上定義可以看出,版本是在歸檔空間作用于歸檔文檔的,而版次是在共享空間作用于共享文檔的#65377;一般情況下,版次的變更會(huì)比版本的變更要頻繁一些#65377;
工作文檔通常由制作人員的初始設(shè)計(jì)產(chǎn)生,也可以由其他文檔導(dǎo)出#65377;工作文檔在成為共享文檔之前其變更可能很頻繁,但因?yàn)樗鎯?chǔ)在制作人員的個(gè)人空間中,這種變更不會(huì)影響其它環(huán)節(jié)的制作過(guò)程#65377;
共享文檔的變更需要進(jìn)行及時(shí)的傳遞,并加以控制,因?yàn)橐霉蚕砦臋n的其它環(huán)節(jié)的制作人員必須及時(shí)的收到變更通知以便隨時(shí)對(duì)正在制作的工作文檔進(jìn)行更新#65377;所以當(dāng)一個(gè)工作文檔經(jīng)審核轉(zhuǎn)換成共享文檔時(shí),需要記錄不同的版次#65377;
歸檔文檔在歸檔空間中,文檔一旦歸檔是不允許變更的#65377;如果需要進(jìn)行修改,必須啟動(dòng)一個(gè)修改流程,獲得一個(gè)新的版本號(hào)創(chuàng)建一個(gè)新的版本#65377;
傳統(tǒng)的文檔引用結(jié)構(gòu)樹(shù)通常采用兩個(gè)表來(lái)描述,一個(gè)是文檔目錄表,用來(lái)記錄文檔的基本信息;一個(gè)是文檔引用結(jié)構(gòu)表,用來(lái)記錄文檔的引用關(guān)系#65377;那么,采用什么樣的版本傳遞機(jī)制才能將變更信息有效地進(jìn)行傳遞呢?從文檔引用結(jié)構(gòu)樹(shù)上,可以看到,除樹(shù)葉外,每一個(gè)節(jié)點(diǎn)都將受其下層節(jié)點(diǎn)的影響#65377;一旦修改了某個(gè)節(jié)點(diǎn)的版次,其上層節(jié)點(diǎn)必須對(duì)此作出反應(yīng),并根據(jù)已修改的下層文檔進(jìn)行本節(jié)點(diǎn)文檔的修改#65377;所以,任何一個(gè)版次的修改都必須及時(shí)地通知其上層節(jié)點(diǎn),且是逐層向上傳遞的#65377;為此,需要在文檔引用結(jié)構(gòu)樹(shù)中記錄相應(yīng)的變更信息#65377;在傳統(tǒng)的文檔引用結(jié)構(gòu)表中,添加一個(gè)標(biāo)志字段,用來(lái)記錄該文檔的所引用的子文檔中有無(wú)版本更新,只要有一個(gè)或一個(gè)以上的子文檔有新版本,則將此標(biāo)志字段置為Y,只有當(dāng)所有子文檔的版本更新都被處理完后,才能將該標(biāo)志字段置為N#65377;同時(shí),需要添加一個(gè)文檔更新表,用來(lái)記錄標(biāo)志字段置為Y時(shí)對(duì)應(yīng)的子文檔的更新版次,其表結(jié)構(gòu)主要有父文檔號(hào)#65380;父文檔版次號(hào)#65380;子文檔號(hào)#65380;子文檔新版次號(hào)#65377;當(dāng)父文檔處理完其中的一個(gè)更新版次后,相應(yīng)的記錄將從該表中刪除,并更新文檔引用結(jié)構(gòu)表中當(dāng)前父文檔的該子文檔的版次號(hào)為新版次號(hào)#65377;當(dāng)文檔更新表中當(dāng)前父文檔的所有子文檔的記錄全部處理完成后,更新文檔引用結(jié)構(gòu)表中當(dāng)前父文檔的標(biāo)志字段為N,并產(chǎn)生一個(gè)當(dāng)前父文檔的新版次號(hào),更新該文檔的所有父文檔的標(biāo)志字段為Y,添加相應(yīng)的記錄到文檔更新表中#65377;圖3圖示了文檔的版次變化時(shí)的傳遞過(guò)程#65377;
圖3中的a#65380;b#65380;c#65380;d描述的是在共享空間中的一次修改過(guò)程#65377;通常一個(gè)作品的修改是要反復(fù)進(jìn)行的,當(dāng)經(jīng)過(guò)幾次反復(fù)后,其文檔層次引用結(jié)構(gòu)樹(shù)上的版次可能更新成圖4所示#65377;全部修改完成后,將要對(duì)已經(jīng)修改完成的文檔進(jìn)行歸檔,將文檔存入歸檔空間#65377;這時(shí),所有被更新過(guò)的文檔都必須更改其版本號(hào)#65377;圖5是在歸檔空間中的與圖4對(duì)應(yīng)的文檔層次引用結(jié)構(gòu)樹(shù)#65377;可以看到,文檔在共享空間中是靠下層已升版標(biāo)志傳遞更新信息的,文檔的最新更新將以版次號(hào)加以區(qū)分,同一文檔的新版次總是取代其舊版次#65377;只有在需要保存文檔的變更歷史時(shí),才有必要保存所有的版次#65377;一旦文檔進(jìn)行歸檔,有了新的版本,則一個(gè)作品的不同版本代表的是不同的產(chǎn)品,可以同時(shí)引用同一作品的不同版本#65377;
5 協(xié)同工作機(jī)制
一個(gè)動(dòng)畫(huà)產(chǎn)品的制作是由一個(gè)團(tuán)隊(duì)共同完成的#65377;從文檔的版本控制機(jī)制中,可以看到一個(gè)文檔的修改可能影響到所有以它為依據(jù)創(chuàng)建的文檔#65377;當(dāng)一個(gè)文檔的版次變更時(shí),在文檔更新表中記錄其所有的父文檔,并更新文檔引用結(jié)構(gòu)表中所有父文檔的相應(yīng)標(biāo)志#65377;這樣,能快速地通知所有與其相關(guān)的團(tuán)隊(duì)成員協(xié)同進(jìn)行產(chǎn)品的修改#65377;
同時(shí),一個(gè)文檔可能同時(shí)有多個(gè)子文檔進(jìn)行了版次更新#65377;由于每次更新均會(huì)在文檔更新表中添加相應(yīng)的記錄,所以能夠及時(shí)得到所有已更新子文檔的更新信息,保證多人同時(shí)修改不同的文檔后能及時(shí)通知其共同的父文檔所有人,可以在多個(gè)子文檔進(jìn)行更新后一次性更新父文檔的版次,減少了版本變更次數(shù)和工作量,大大提高了工作效率#65377;
6 結(jié)束語(yǔ)
對(duì)一個(gè)動(dòng)畫(huà)產(chǎn)品來(lái)說(shuō),其制作過(guò)程應(yīng)該是一個(gè)不斷反復(fù)#65380;逐步完善的過(guò)程,所產(chǎn)生的數(shù)據(jù)就會(huì)是一個(gè)不斷生成新版本的漸進(jìn)過(guò)程,數(shù)據(jù)版本的標(biāo)示和產(chǎn)品版本的變遷是一個(gè)困繞許多管理者的問(wèn)題#65377;本文討論的解決方案能支持大型制作工程,提高協(xié)同工作效率#65377;同時(shí),該方案也適應(yīng)于其它行業(yè)如機(jī)械制造企業(yè)的產(chǎn)品設(shè)計(jì)過(guò)程的協(xié)同控制#65377;
鑒于作者的水平有限,希望能以此起到拋磚引玉的作用,不正之處,還望專家指正#65377;
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。