專利名稱:球坐標圖象顯示系統(tǒng)的制作方法
本申請是申請日為1990年5月22日,申請?zhí)枮镹O.07/526,977的美國專利申請的部分延續(xù)。
本發(fā)明相關于計算機動畫制作,更一般地說,相關于計算機圖形和圖象處理。
動畫制作是這樣一種過程將一序列或一系列手繪或計算機繪制的圖象以這樣一種方式組合起來,從而使觀察者看到一幅圖象或多幅圖象從一幀移向另一幀。由于電影和電視實際上是由一序列靜止的畫面所連接起來的。因此,有必要將圖象從一幀到另一幀連系起來,這樣當以成品的速度來顯示時(對視頻而言,每秒30幀),圖象的過渡看起來是流動的。
最一般的是動畫制作技術稱之為單元動畫制作,在單元動畫制作過程中,動畫繪制者根據制作步驟在幻燈片上手繪不同的層或“單元”(或先繪制在紙上,然后摹繪到幻燈片上)。一般來說,每一單元記錄一個單一的容體。這樣一種系統(tǒng)稱之為一個“記錄(紙)”系統(tǒng)。
對一個典型的單元動畫制作應用而言,第一步是以輪廓形式為第一幀繪制圖象,下一步重復繪制這一圖象,這樣在將來看來似乎是若干幀。舉例來說,該將來幀在將來是第九幀,當繪制了這兩個幀后,進行“中間”步驟,在此,該“中間”步驟首先是繪制出現在幀1和幀9中間的幀(幀5),在此步驟之后,繪制末端幀和第一中間幀(幀1和幀5)之間的幀,如此繼續(xù)直到繪出由幀1到幀9持續(xù)出現的所有幀的圖象。在記錄紙系統(tǒng)中,繪制中間幀用背部發(fā)光紙來完成,這樣當繪制中間幀時,外部幀也在繪制者的視線之內。
“中間過程”的第一步稱之為鋼筆測試,通常用鉛筆將其繪制在用別針釘起來的各個單張紙上,然后,將紙畫錄在錄像磁帶上以觀察動畫制作的精度,這可實現對一組幀元素的凸緣同步檢驗表現和移動。下一步稱之為墨跡式畫圖,即用油墨繪制的勻稱線條來跟蹤鉛筆圖畫。第三步包括照相復制。按下來是手工上色,最后步驟是合成。在合成過程中,每個單一幀的所有單元(組成每個動畫制作圖象的層)一層層疊起來并且照相,從而按動畫制作次序形成每一幀。傳統(tǒng)的單元動畫制作過程采用在約三層(幻燈片),其中每一層被認為是一個“單元”,每個單元以輪廓形式繪出,然后將其翻過來從背部上色,接著,將每個單元一層一層疊加起來以產生膠片上的最終圖象。在實際過程中,雖然只有三層,但實際上可能產生四個或五個單元,這是因為每一層本身可能包含多個單元。
要制作高質量和更真實的動畫,使動畫制作圖象跟蹤圖象顯示時所伴隨的音響或聲音總是最基本的。為了保證音響和圖象的一致,音軌和談話部分通常在動畫圖像制作之前錄制,由動畫片制作者跟蹤音響來制作圖像時,也就是說,當一個動畫人物說話時,動畫片制作者繪制其嘴巴和面部表情,使其與預先錄制的音軌同步。
在市場上有各種各樣簡化圖象繪制過程的軟件出售。CAD(計算機動畫設計)程序采用一個方程在兩個點之間產生一系列屏面象素,然后,CAD程序以一組矢量來表示所繪制的一個圖象。采用一個方程來表示圖象信息可以便于產生復雜的效果,諸如圖象操縱、變換和旋轉。
其它的制圖程序處理光柵表示的圖象信息,也可稱其為位映象。在該技術中,一個圖象在屏幕上作為象素的映象來繪制和存儲。對圖象的操縱受到很大限制,原因是對每一象素所存貯的內容與對每一象素所顯示的內容之間存在一一對應的關系。這與基于一個方程或一個矢量的系統(tǒng)相反,在該系統(tǒng)中,每個象素可通過改變方程中的變量來變換。
然而,與基于矢量或圖形的系統(tǒng)中所出現的復雜的計算相比,光柵表示系統(tǒng)的一個優(yōu)點是有其簡便性。
在傳統(tǒng)的以記錄紙為基礎的動畫制作技術中,一個動畫制作者要繪制連續(xù)的圖象,每個圖象在不同的紙張上,其中包含微小的變化。當各個單一紙張迅速持續(xù)觀看時,持續(xù)圖象的變化使觀察者覺得圖象是活動的。圖象的變化可能包含不同的取向、外形和/或姿勢。
作為一個參考,動畫制作者可能地記錄紙上有一組圖形,稱之為活動過程,它提供多個取向和姿勢。當該動畫制作者需要在一個特定位置畫一個圖象時,他將參考該活動過程以他認為必要的尺度和變形在一頁單張紙上畫出一個圖象。
對于這種圖象具有相關位置的系統(tǒng)來說,動畫制作者需要在圖象出現的每一個位置繪制每一圖象。一個圖象可能會出現在一幀中,但如果動畫序列兩個一次被顯示,一個圖象可能會出現在每隔一個幀中。在圖象繪制完成之后,如果需要變化或修改,那么所有的圖象序列可能要全部重新繪制。
傳統(tǒng)的單元動畫制作通過將一個情景劃分為不同的圖象層或圖象單元來解決重繪所有圖象序列的問題,在這種情況下,當需要作任何修改或校正時,不必重繪一個完整的情景。不過還是需要對每一事件畫出每一幅圖象。
用于個人計算機(如Microsoft PaintTM)的繪畫程序可以使用戶從目標的形狀或模型庫中進行選擇以用于畫圖過程中。通常,用戶首先選擇一個目標,如一個園,將其遷引到繪圖區(qū)并以一個園出現在屏面上。用戶可以通過繪制一條半徑線或“擴張”該園來調節(jié)該園的尺寸。繪畫程序所處理的是象素,因為圖象是以位映象來表示的。也可稱其為光柵顯示。
計算機輔助設計(CAD)軟件程序也可用于產生和操縱圖象。CAD程序并不處理象素,而是處理矢量,這些矢量隨后被轉換為用于屏幕顯示的象素表示。對矢量的處理為圖象的修改提供了更大的范圍。與繪畫程序一樣,CAD程序也有目標庫,可從中將目標遷引到繪圖區(qū)進行處理以產生矢量表示的圖象。
本發(fā)明包括一個計算機化的動畫制作系統(tǒng),該系統(tǒng)包括一系列以各種表現形式存貯在多個存貯器結構中的圖象,這些圖象被分為不同部分,以簡化圖象的產生和修改及其色彩應用。這些圖象首先以矢量表示形式繪制和修改,該矢量表示的圖象然后以光柵表示形式存儲起來用于顯示和產生后繼圖象。通過對矢量表示的修改或補充可簡化隨后對所存儲的光柵表示的修改或補充,然后作為一個新的光柵表示重新存貯。最后,將灰度信息和彩色部位信息(尋址彩色查找表)賦予一個圖象的每個象素,這些信息隨后用于建立獨特的轉換函數,以產生動畫制作圖象的最后的彩色型式。
本發(fā)明還包括一種以計算機為基礎制作動畫序列的方法,該動畫序列通過以不同的取向來存貯圖象來產生,每個取向相關于該圖象在一個球座標系統(tǒng)中的旋轉。以這種方式,可以表示一個圖象所需的旋轉和樞軸運動。所有的圖象取向都被存貯起來,以便在合成一個動畫序列時進行檢索。
一個圖象也可分為主要部件和次要部件,次要部件被連到該主要部件以及其它次要部件。在這種方式下,當某一部件移動或改變其取向時,次要部件的相關運動可由系統(tǒng)自動實現。
圖1示出了本發(fā)明的一個存貯器結構的展示圖;
圖1A是根據本發(fā)明的一個實施例的一個設備的框圖;
圖2是在動畫制作中利用本發(fā)明的存貯器結構的示意圖;
圖3示出在本發(fā)明的低位存儲器存貯結構中對一系列幀的存貯;
圖4示出在超高位存貯器存儲結構中對一系列幀的存貯;
圖5是本發(fā)明的動作制作過程的一個流程圖;
圖6是示于圖5中的前三個步驟更詳細的流程圖;
圖7是灰度指定過程的詳細流程圖;
圖8是色彩指定過程的詳細流程圖;
圖9是產生遮蔽特殊效應的流程圖;
圖10是產生蔭影特殊效應的流程圖;
圖11是產生梯度遮蔽特殊效應的流程圖;
圖12是產生疊化特殊效應的流程圖;
圖13是產生合并特殊效應的流程圖;
圖14是產生合成特殊效應的流程圖;
圖15是象素偏移過程的流程圖;
圖16是自動產生中間幀過程的流程圖;
圖17是用球座標系統(tǒng)對本發(fā)明的球體表示;
圖18示出了一個圖象,它定位于球體上不同的位置;
圖19示出了另一個圖象,它定位于球體的相應位置;
圖20示出了帶有圖18和圖19合成圖象的一個球體,圖18和圖19的圖象按其相應于球體位置的每個物體的定位將其合并為一個物體;
圖21示出了用于展示多個部件的附著點的一個人體;
圖22示出了圖21圖象的分解圖;
圖23示出了用于本發(fā)明的數據結構;
圖24示出了用于本發(fā)明的附加的數據結構。
圖1中示出了一個存儲器結構10,該存儲器結構包括一個低位存儲器存儲結構18,一個高位存儲器存儲結構16,一個超高位存儲器存儲結構14和一個矢量存儲器結構22,來自矢量存儲器結構22中的信息被轉換為光柵信息,并且在被存儲在高位存儲器存儲結構16和低位存儲器存儲結構18之前被存儲在存儲器結構12中。
高位存儲器存儲結構16包括許多位面16a-16d,每個位面又包括許多位20,位20相應于在顯示設備上進行顯示時構成一個視覺圖象的圖象元素(象素)。
在存儲器結構16中,16a到16d的每個位面代表一個獨立的(一級信息)圖象,從而存儲器結構包括具有獨立信息的四個位面,可以存儲四個單色圖象。
在本發(fā)明中,為了制作動畫,高位存儲器存儲16中的四個位面的每一個都可能包含一個圖象,這些圖象由一組位比特構成,稱之為光柵圖象,在作為移動參照的一個位面中暫時存儲一個以光柵表示的圖象(如比特位面16a),然后在作為移動參照的另一個位面中(如比特位面16b)中暫時存儲一個表示先前圖象的動作或活動的圖象,這樣就可產生動畫活動序列,以這種方式來利用圖象稱之為圖象的“重影”。
在一個圖象能被存儲在高位存儲器存儲結構16的任何一個位面之前,首先必須“繪制”或產生圖象。在本發(fā)明中,進行動畫制作的圖象是采用一個計算機動畫制作站來產生的,一個示例性的計算機動畫制作站示于圖1A,該動畫制作站包括一個計算機2,該計算機2包含帶有一個中央處理單元和相關硬件6的流水線結構圖象處理硬件,它對前面所描述的存儲器結構10進行操作;包括一個數字化設備4,諸如一個SumagraphicsTM板;還包括圖形顯示硬件9,諸如一個擴展圖形適配器(EGA)監(jiān)視器。圖形存儲器有16位深1,構成一個二維矩形陣列,存儲器的水平方向有2K字,而且還可以擴展。該存儲器的上部字節(jié)和下部字節(jié)可以分別單獨尋址,從而兩個不同的8位圖象可以同時占據存儲器的同一區(qū)域。將其中一個字節(jié)更進一步分為包含高位存儲器存儲結構16和起高位存儲器存儲結構14的兩個4位段。圖象存儲器通過一組實際駐留在一個圖象存儲接口板上的寄存器來控制,該寄存器可由I/O端口來訪問。這五個寄存器構成了控制和狀態(tài)寄存器。控制寄存器通常選擇一種操作方式來傳送圖象數據,而地址寄存器控制數據所放置的地址。
現在再參照附圖1,要進行動畫制作的圖象用一繪畫設備以矢量形式繪出,并以矢量表示存儲在矢量寄存器結構22的矢量文件中,該矢量表示是在被存儲于矢量存儲結構22之前由動畫制作者所制作的一系列矢量定義或(線段)。矢量存儲器結構22可以包括許多矢量文件。由于矢量本身不可能被顯示,它們必須被轉換為光柵表示并顯示在圖形位面12上。
圖形位面12包括一個諸如EGA位面的圖形位面,圖形位面12上的信息被直接顯示在一個顯示設備上,如一個計算機監(jiān)視器,因此,雖然在繪制圖象時圖象信息是以光柵格式顯示的(這樣動畫制作者觀看時看到的是圖象而不是一行數字),但實際上該圖象是從存儲在計算機主存儲器中的一個矢量文件中產生的。采用矢量簡化了圖象制作過程和制作完成之后的處理和修改。
采用屏幕菜單,動畫制作者可在其選擇的高位存貯器存貯結構16的四個位面之一中存儲矢量表示的圖象。在高位存儲器存儲結構16中存儲矢量表示的圖象,以光柵表示格式來顯示圖象。以這種方式,該圖象(一個輪廓結構)的每一個象素在高位存儲器存儲結構16的4個位面的其中之一可作為一個單一位來存儲和尋址。
雖然在本發(fā)明中,高位存儲器存儲結構16有4個位面,但對本領域的普通技術人員而言,應該能理解高位存儲器存儲結構16中可以包含任意個位面,還應該理解,并不需要用到高位存儲器存儲結構16中的所有位面。對高位存儲器存儲結構16的最佳應用是將要進行動畫制作的圖象按不同的動作段來存儲,使這些圖象可以同時顯示(重影),從而動畫制作者可以在重影圖象之間繪制或產生圖象,也就是說,圖象的重影可用作動畫制作者的參照。
低位存儲器存儲結構18在本發(fā)明的本實施例中包含8個位面,與高位存儲器存儲結構16一樣,本領域的普通技術人員可以認識到,根據所需的存儲器結構設計,該低位存儲器存儲結構18可以包含更少或更多個位面。在本實施例中,采用8個位面,從而可對256個灰度陰影(灰度級值)尋址和將其指派給所產生的圖象。
當一個動畫制作者對其所制作的圖象感到滿意后,可以將灰度等級值指派給該圖象。雖然并非必須,但通常還是用單色或彩色對動畫圖象填色。當要對動畫制作圖象填色時,動畫制作者對動畫圖象的不同區(qū)域指派不同的灰度等級值,然后將該已選擇了灰度級的圖象存儲在低位存儲器存儲結構18中。與包含獨立位面的高位存儲器存儲結構相反,低位存儲器存儲結構包含相關的位面。這些相關的位面對每一象素而言包含一個8位字(在本實施例中),從而每一象素可以從256個值范圍內指派一個灰度等級值。
需要注意的是,可以將圖象的光柵表示直接存儲在低位存儲器存儲結構18中,以取代首先將圖象的光柵表示存儲在高位存儲器存儲結構16中。
如果動畫制作圖象要著彩色,仍需對要指派彩色的不同區(qū)域指定一個灰度等級值。通過彩色轉換函數(見本申請人的相關申請EP0,302,454)利用該灰度級值可將彩色提供給圖象。
回顧一下動畫制作者以一種矢量表示格式產生一個圖象,并將其存儲在矢量存儲器結構22的一個矢量文件中,該矢量表示圖象在圖形位面12中轉換為一種光柵表示,從而可以在顯示設備上以一幅圖象形式來顯示,這一圖象隨后以光柵表示形式存儲在高位存儲器存儲結構16的獨立的位面(16a-16d)的其中之一上。表示圖象的不同活動階段的后繼圖象也可以被存儲在高位存儲器存儲結構16中另外的位面上,存儲這些后繼圖象可使得動畫制作者在顯示設備上可以同時顯示圖象,從而在該同時顯示之間可以繪制活動圖象的各個階段。
當動畫制作者對圖象感到滿意后,他選擇灰度等級值將其指派給圖象的不同區(qū)域,一旦對圖象的不同區(qū)域選擇了灰度等級值后,帶有灰度等級值信息的圖象被存儲在低位存儲器存儲結構18中,低位存儲器存儲結構18的位面是相關的,這樣,低位存儲器存儲結構18的每一位(象素)包含8位信息,動畫制作者可從256個灰度等級值范圍內給圖象的各區(qū)域指派灰度等級值。
為了簡化對圖象的重影過程,在本發(fā)明的本實施例中,存儲在高位存儲器存儲結構16中的位面中的圖象被指派不同的色彩,這樣作的目的主要是為了顯示,這一色彩與圖象的最終色彩毫不相關,從而,當動畫制作者從高位存儲器存儲結構16的位面上選擇多幅圖象進行顯示時,所顯示的圖象將以不同的色彩出現,這樣可以在正在繪制的圖象和處于不同移動階段的圖象之間有所區(qū)別,作為一個輔助手段,動畫制作者可選擇色彩的強弱來進行顯示。通過對每個位面上的圖象選擇色彩和色彩的強弱,動畫制作者可調節(jié)該系統(tǒng)以產生最有效的工作環(huán)境。
動畫制作者所采用的另一個手段是輪轉方式,該輪轉手段可以使動畫制作者“運轉”圖象以測試動畫制作的平滑性,這與紙動畫系統(tǒng)中翻動紙頁相似。
為了輪轉圖象,動畫制作者既可選擇自動方式,也可選擇手動方式。自動方式以一預定的速度先向前輪轉圖象,然后向后以保持運動的連續(xù)性。手動方式可使動畫制作者交替地選擇輪轉的方向、速度以及起始點(幀)。
在輪轉過程中,存儲在低位存貯器存儲結構18中的每一個圖象都被輪轉。本系統(tǒng)處理32幀,因而可以在32幀范圍內一直不停地輪轉。對于一次處理多于32幀的系統(tǒng)而言,可以在多于32幀的范圍內輪轉。
為了產生一個彩色圖象(與用于參照目的指派給高位存儲器存儲結構16的位面的彩色不同),彩色轉換函數也需要一個彩色區(qū)值指向彩色查找表,該彩色查找表包含與每個可能的灰度等級值(在本發(fā)明實施例中為256個)相關的HLS(色調、亮度、章度(Saturation))彩色座標值。超高位存儲器存儲結構14將這一信息提供給色彩轉換函數。
超高位存儲器存儲結構14包含四個位面,從而,在本實施例中,可能有16種不同的色彩區(qū),任何一個區(qū)都可被尋址。本領域的普通技術人員會理解和認識到也可存在較多或較少數目的位面,以產生可被尋址的較多或較少數目的色彩(色彩區(qū))。由于在本實施例中有四個位面,從而共有16個色彩可被尋址或指派。每個區(qū)尋址256個不同的色調值。如同在低位存儲器存儲結構18中一樣,超高位存儲器存儲結構14的位面是相關的,即四個位面包含圖象中的每一個象素20的一個四位字。
動畫制作者對每一區(qū)選擇色彩并對要賦值的區(qū)指定該選擇的色彩,對每一區(qū)的色彩賦值與對圖象每一區(qū)的灰度等級值的賦值可以是一致的,也可以是不同的。
在本實施例中,為了在顯示設備上以色彩信息來顯示圖象,必須將色彩信息從超高位儲器存儲結構14中“轉移”到高位存儲器存儲結構16的存儲空間中,這是因為在本實施例中為了顯示的目的僅僅操作12位圖象信息。本領域的普通技術人員應該理解到設計能處理大數目比特位顯示信息的一個系統(tǒng)也可以顯示色彩信息以及光柵表示的“重影”位面圖象。在本實施例中該過程可以通過將色彩信息交換到“重影”位面的存儲器單元來實現。
圖2示出了對高速存儲器存儲結構16的位面16a-16d的利用。圖2的序列A示出了顯示在圖形位面12中的圖象(用四個“X”字符系列表示),示于序列A的圖形位面12中的圖象由動畫制作人員創(chuàng)作并以一組矢量值表示在矢量存儲器結構22的一個矢量文件中。然后,動畫制作者將圖象存儲在高位存儲器存儲結構16的一個位面中,他可以從高位存儲器存儲結構的四個位面中任選一個,在序列A中,圖象被存儲在位面16a中。
序列B示出了將位面16a的圖象顯示在一個顯示設備9上,此外,代表該第一個圖象(以四個“X”字符表示)動作的一個第二個圖象在圖形位面12(沒有示出)上由動畫制作者繪制出來,該新的圖象以一個矢量文件存儲在矢量存儲器存儲結構22中,但在圖形位面12上以一個光柵圖象來表示(并且在顯示設備9上同樣顯示)。為了區(qū)別起見,在動畫制作者的顯示監(jiān)視器9上每個圖象以不同的色彩和不同的強度(可能的話)來顯示,這是因為高位存儲器存儲結構16的每一個位面具有不同的指定的色彩。圖形位面12(圖象的矢量信息的光柵表示)也具有一個指定的色彩,該色彩應該不同于指定給高位存儲器存儲結構16的位面的那些色彩。
當在序列B中繪制了第二個圖象后(以位面16a的圖象作為參考),將這個第二個圖象存貯在高位存儲器存儲結構16的位面16b。在序列C中,原始的和新圖象都被顯示在顯示設備9上(以指派給其相應位面的色彩),動畫制作者可以在圖形位面12(沒有示出)上繪制第三個圖象,該第三個圖象(以一列4個“X”字符表示)表示第一個圖象和第二個圖象的“中間圖象”,第一和第二圖象以其相應的色彩被顯示在顯示設備9上,以允許動畫制作者在適當的位置繪制第三圖象(在圖形位面12上)。然后,動畫制作者將該第三圖象存儲在一個第三位面上,在圖2的序列C中為位面16C。
光柵位面16a、16b和16c分別代表在動畫制作序列的三個單獨的幀中出現的動畫制作圖象。因此,當對這些相應的圖象指定灰度等級信息時,對每一幀的灰度等級信息被存儲在一個不同的存儲器存儲結構18中,以這種方式,對存儲在位面16a的圖象指定一個灰度等級值,然后將該灰度等級值作為一幀的值存儲在一個低位存儲器存儲結構18中。對位面16b中的圖象指定一個灰度等級值,然后將該灰度等級信息作為一個后繼幀的值存儲在一個低位存儲器存儲結構18中。最后,對位面16c的圖象指派一個灰度等級值,該灰度等級信息作為一個第三幀的值存儲在一個低位存儲器存儲結構18中。除非該動畫“故事”對同一圖象的多個幀要求不同的色彩或效果,否則對所有三幀應該有同樣的灰度等級值。
對每一個位面16a、16b和16c在低位存儲器存儲結構中存儲灰度等級信息的過程示于圖3。在圖3的A中(相應于圖2的序列A),由八個二進制1(11111111)表示的一個任意灰度等級(示例性的)對由陰影區(qū)域示出的四個象素進行重復。
在圖3的B中(相應于附圖2的序列B)示出了具有8個1的任意的灰度等級值,該灰度等級值覆蓋由陰影區(qū)域所表示的四個象素。
在圖3的C中(相應于附圖2的序列C)示出了具有8個1的任意的灰度等級值,該灰度等級值覆蓋由陰影區(qū)域所表示的四個象素。
然后,對該例子而言,圖象的活動看起來似乎是X字符從其在第一幀中所在的位置轉移到它們在第二和第三幀中所在的位置,在這一活動序列的三個幀中,每個圖象被指定相同的灰度等級值。
最后的動畫作品以不同的色彩產生每一幅圖象,在這種情況下,必須對用灰度等級值表示的每一個區(qū)指定一個不同的色彩。
圖4中示出了按圖2的序列A、B和C繪制并且存儲在超高位存儲器存儲結構14中的圖象的色彩信息表示。圖4的結構A示出了在圖2的序列A中所繪制的圖象的色彩信息,在陰影區(qū)域的位面中存儲具有四個1(1111)的一個任意值(示例性的),圖4的B和C示出了對圖2和圖3相應圖象的類似存儲。
由一相標識符對每一色彩區(qū)進行定義的查找表(沒有示出)中選擇一個來定義對圖4的A、B、C中的每一個象素存儲在位面中的值所相應的色彩轉換函數,這一信息與8位灰度等級信息(存儲在低位存儲器存儲結構18)一起對每一色彩象素提供一個唯一的輸出色彩,而這本身又導致色彩被施加到顯示在顯示設備9上的最后圖象上,該色彩與灰度等級值和對一個圖象的不同區(qū)由操作者所選擇的色彩相關,但又不是其簡單的相加。在圖2-4所示的例子中,對所有圖象只指定一個色彩,對這些圖象的合成導致最終的動畫或動畫人物。
對每一個能指定給圖象的部位的色彩區(qū)來說,用于產生最后的彩色動畫圖象的信息存儲在低位存儲器存儲結構18、超高位存儲器存儲結構14和查找表(沒有示出)中。
一旦未被填充的圖象得到了動畫制作者的認可并且完成后,矢量信息就不再需要了,在圖形位面12中的信息是暫時的、與任何給定時間顯示在顯示設備上的內容相關。存儲在高位存儲器存儲結構16的位面中的圖象的光柵表示也是暫時的,是設計來簡化活動圖象的繪制和創(chuàng)作的,一旦完成這一工作并且將圖象的灰度等級信息存儲在低位存儲器存儲結構18中后,在高位存儲器存儲結構16中的信息就不再需要了。
圖5以流程圖的形式示出了本發(fā)明的動畫制作過程,方框30表示產生第一個動畫幀圖象;方框32表示產生第N個動畫幀圖象,通常,對圖象動畫制作來說該第N幀圖象是第九幀,根據第一幀和第N幀產生中間幀的過程示于方框34中,如上所述,第N幀是所創(chuàng)作的第二幀,而該中間幀是所創(chuàng)作的第三幀;方框36表示將灰度等級值指定給各區(qū),各區(qū)由圖象輪廓來定義;方框38代表對在方框36中指定了灰度等級的區(qū)指定色彩,方框36和38可以合并為一個同時發(fā)生的步驟;方框40表示增加特殊效應,包括圖象合成和圖象分層。
圖6示出了由方框30-34所表示的步驟的更詳細的流程,如圖6所示,在方框42中,動畫制作者對要進行動畫制作的一個圖象產生圖象輪廓,該信息被存儲在矢量存儲器結構22的一個矢量文件中,通過用矢量表示來繪制圖象,動畫制作者可通過旋轉、伸展、壓縮、復制等等技術來修改和操縱圖象,由于這一原因,以矢量表示的圖象信息如方框44所示存儲在一個矢量文件中,在以后的時間里應該能對圖象進行修改或調整。
一旦制作出了令個滿意的圖象后,該圖象以光柵表示(作為一個映象)存儲在高位存儲器存儲結構16的一個位面上,如前面所述,高位存儲器存儲結構16的每一個位面與一種特別的色彩和強度相關,用于在幀與幀之間產生區(qū)別。在本實施例中,在圖象以光柵表現形式存儲在低位存儲器存儲結構18的一個位面中的同時,將矢量存儲在矢量存儲結構22的一個矢量文件中,當然也可以在不同于光柵信息存儲時間的另一時間來存儲矢量信息。
這時,制作出一個以矢量表示的圖象輪廓,并將其將一種光柵表示形式存儲在高位存儲器存儲結構16中,動畫制作者的下一步是制作一個第二個圖象,該圖象與剛制作出的圖象“動作”之后所處的位置相關,通常該第二個圖象在一序列動畫圖象時是第九幀,在圖5中將其表示為第N幀,判定該步驟是否必要的過程在判別方框48中進行。
為了給第一個圖象和第二個圖象提供適當的聯系,動畫制作者可以用第一個圖象所存儲的位面的色彩來顯示該第一個圖象,這一色彩應該與動畫制作者顯示當前正在制作的矢量表示圖象(在圖形位面12)所用的色彩不同,這一過程在方框50中稱為對圖象的重影。
通過重影(顯示來自高位存儲器存儲結構16中的圖象),動畫制作者可以重影圖象作為參照來繪制當前的圖象,在制作高質量和高精度動畫時這是很有幫助的。為了繪制第二幅圖象(即第九幀),動畫制作者返回到方框42并繪制一幅新的圖象。
當完成后,動畫制作者在其適當的低位存儲器存儲結構18中存儲這個第二幅圖象的光柵表示。但對其適當的幀來說,所有的重影圖象可以顯示在它們相關幀之間的同一面上。在重影過程中,將每個重影圖象指定給居中的幀,其目的僅僅是作為參照,該重影圖象并不存儲在新產生的中間圖象所存儲的存儲器存儲結構18中。
中間幀圖象在圖5中表示為方框34,產生中間幀圖象的過程與前面所描述的產生第一幅和第二幅圖象的過程完全一樣,其區(qū)別只是這是前面所描述的過程的進一步重復。在方框50中,圖象被重影,這時至少有兩個圖象以相關于它們在其中被重影的高位存儲器存儲結構18的位面的不同色彩被顯示。為了繪制一個顯示重影圖象之間的動作的圖象,動畫制作者采用兩個重影圖象作為參照。應該理解,這里并不限制僅僅對兩個圖象進行重影,任何數目的圖象層(僅僅受到高位存儲器存儲結構16的位面數的限制)可被重疊來幫助動畫制作者繪制圖象。當產生了所有的幀后(對這個例子而言是幀1-9),可將灰度等級值指定給由動畫制作者所選擇的圖象的區(qū),如方框36所示。
圖7中示出了灰度等級指定過程36的流程。在方框54中示出動畫制作者選擇一個他需要指定給一個圖象區(qū)的灰度等級值。在動畫制作過程中,一個區(qū)通常可以是由圖象的線條所包圍的任何區(qū)域。一個園的內部是一個區(qū)的例子,同樣園的外部也是一個區(qū)。
方框56示出動畫制作者選擇圖象的一個區(qū)來充填在方框56中所選擇的灰度等級值。通常,一幅圖象包含多個區(qū)域或區(qū),它們將最后接受不同的色彩,例子之一是一個穿著具有不同色彩的服裝的卡通人物。在一幅圖象中可獲得二百五十六個灰度等級,但在本實施例中僅有16個區(qū)。
在方框58,將所選擇的區(qū)域充填以所選擇的灰度等級值。在本實施例中,動畫制作者可以在顯示設備上立即看到出現在所選擇區(qū)的灰度等級。在判定方框59中,判定是否所有區(qū)都充填了灰度等級值,如果沒有,那么在方框54中選擇下一個灰度等級值,對一個特定幀的所有的區(qū)重復過程54-58。以這種方式,可將不同的灰度等級值指定給一幀的所有各區(qū)。也有可能對每一區(qū)有幾種不同的灰度等級。一旦該過程完成后,將這些灰度等級值存儲在低位存儲器存儲結構18中,如方框60所示。在本實施例中,這是對相應于由256個灰度等級值中所選擇的一個值的每一象素所存儲的一個8位值。
由于可以將動畫與實物活動圖象或在動畫制作之前所創(chuàng)作的背景圖象進行合并,因此,在將灰度等級值存貯在其中之前,低位存儲器結構18并不總是“空”的,其它圖象信息,例如一個數字化的實物活動圖象可能已經駐留在其中了。也有可能避過高位存儲器存儲結構16,而將所制作的基于矢量的圖象的光柵表示直接存儲到低位存儲器存儲結構18中。不管怎樣,在圖7中所指定的灰度等級值被存儲在低位存儲器存儲結構18中,并且對原先存儲任意信息的存儲單元進行重寫。
此外,如果低位存儲器結構18為“空”,那么對所有非圖象象素存儲一個均勻的灰度等級值,在本系統(tǒng)中,選擇一個灰度等級值128并且將其存儲起來。
一旦在低位存儲器存儲結構18中存儲了灰度等級信息,并且動畫制作者對區(qū)域和灰度等級選擇感到滿意,那么在方框61中對這一光柵灰度信息作防混淆處理,然后將其存儲在永久性存儲單元中(如硬盤,可移動存儲媒體,等等)如方框62所示。通過在指定的背景下進行防混淆處理以防止圖象適當融合,這種情況可能發(fā)生在所有信息存儲在低位存儲器存儲結構18中之后,或發(fā)生在低位存儲器存儲結構對多個幀來存儲信息之后。
如上所述,必需對每一幀在低位存儲器存儲結構18中提供灰度等級,這意味著每一幀具有存儲在其自身的低位存儲器存儲結構18中的灰度等級值。
圖8所示的流程圖表示對色彩的指定38,在方框63,對還沒有指定色彩的一個特定區(qū)指定一種色彩,例如,為一個卡通人物的服裝指定一種紅色;在方框64,選擇一個要將這種色彩填在其上的區(qū),可以在將灰度等級用到該區(qū)的同時指定一種色彩,對此在圖7中已作了描述,在進行該過程中,應該理解所選擇的一種特殊色彩是與一種特殊的灰度等級相關的,也可以在對某一特定區(qū)選擇和使用該灰度等級之前進行這一過程,這樣就可以將灰度等級和色彩同時施加到某一區(qū),當然,也可以在對某一特定區(qū)選擇和施加灰度等級之后來施加色彩,在任何情況下都需要指定要將一種色彩施加于其上的一個區(qū),在方框65將色彩施加到該選定的區(qū)。
在目前的最佳實施例中,一般是在將一個灰度等級施加到一個區(qū)的同時將色彩施加其上。但在本實施例中并不提供對灰度等級信息和色彩信息的同時顯示。因此,為了顯示色彩信息,動畫制作者必須選擇一個方案來單獨顯示色彩。這并不是本發(fā)明的局限,因為人們已經認識到了在對多個信息進行處理的系統(tǒng)中可以用到額外的信息,以使得在顯示灰度等級信息和圖象修改信息的同時也能顯示色彩。
在本實施例中采用顯示設備上的一個色彩桿來選擇色彩,這些色彩在動畫制作過程之前被選定,用作動畫制作者給每個區(qū)上色的調色板,這樣在一種成品形式的動畫制作過程中能做到高效、協調地涂色。
動畫制作者通過指示一個顯示色彩的色彩轉盤指定哪個區(qū)應該接受某種特定色彩。在本實施例中,這些色彩是由一個24位色彩產生板(例如Targa boardR)來產生的。隨后,這些色彩被鎖進一個色彩桿,該色彩桿被設計者和著色者用來完成對成品的著色。當色彩被選定后,它們出現在用于填充色彩的菜單的側部。對所有區(qū)都選定色彩,在以后的制作過程中對所有進行上色工作的人而言該色彩桿就象數據一樣傳遞。
圖9示出了產生一種遮蔽特殊效應的過程的流程圖,產生遮蔽是指對由動畫制作者所指定的一個區(qū)域指定一種特定的灰度等級(以及相應的色彩),稱之為有效掩罩,這可以使得動畫制作者提供一種如黑色陰影之類的特殊效果或將灰度等級值指定給沒有被圖象輪廓所限定的一個區(qū)。
為了產生這種效果,第一步,動畫制作者選擇一個要遮蔽的區(qū)域,如方框67所示,這可通過區(qū)選擇手段(例如一個容器或一個徒手指定區(qū))來完成,第二步,如方框68所示,動畫工作者選擇一個要施加到這一區(qū)上的灰度等級值,通常是一種黑色或深灰色等級;下一步,如方框69所示,將灰度等級施加于所選定的區(qū)域,所選定的區(qū)域也被稱之為被指定的掩罩或有效掩罩。注意,在將所選定的灰度等級信息施加到所選定的區(qū)域時,會改寫該整個區(qū)域的優(yōu)先的灰度等級信息;在方框70,將該新的灰度等級值存儲在低位存貯器存儲結構18中,從而改寫先前存儲于其中的任何值。同樣,這種手段在對屏幕的區(qū)或段進行遮蔽(或者反過來,白化)時是很有效的。
圖10示出了提供一種特殊的蔭影效應的流程。根據本發(fā)明的最佳實施例,蔭影不同于遮蔽(圖9),這是因為先前的灰度等級沒有被所選擇的一個灰度等級值所取代。在蔭影中,先前的灰度等級象素值被操作者所指定的值所偏移,這樣,可以根據這一偏移值來對先前的象素進行向上或向下調節(jié)。
要加陰影時,動畫制作者第一步選擇要對其加陰影的一個區(qū)域,如方框72所示,這同樣可以用多種方式來完成,諸如窗口或徒手區(qū)域指定;接下來如方框74所示,選擇一個灰度等級偏移值,這個值既可以是正值也可以是負值,分別反映了所指定區(qū)的先前的灰度等級值的增加或減小。然后將該灰度等級偏移值施加到位于所選擇區(qū)域中的灰度等級值中,如方框76所示;最后在方框78中將新的灰度等級值存儲在低位存儲器存儲結構中。
這種手段提供了一種使先前的表面反映出一種更黑些或更亮些的圖象的真實效果,如同許多現實生活中的陰影照片一樣。
圖11示出了產生分段特殊效應的流程,這是本發(fā)明的最佳實施例的另一種特性。對圖象分段包括根據毗鄰的由操作者所選定的區(qū)的灰度等級值來對一個居中區(qū)產生灰度等級值梯度。
首先,在方框80中選擇需要分段的區(qū),這可由任何一種選擇手段(例如窗口、徒手繪畫、連接操作者所選定的頂點,等等)來實現;接下來,如方框82和84所示,選擇“亮”和“暗”區(qū),亮和暗只是用來作為標記以區(qū)別從中導出要進行分段的區(qū)的兩個灰度等級的梯度強度的方向。對亮和暗區(qū)的選擇并不局限于某一個區(qū)。由于亮區(qū)和暗區(qū)僅僅表示可從中導出要分段的區(qū)的灰度等級值,因此,動畫制作者可圍繞要分段的區(qū)域設置許多個亮區(qū)和暗區(qū),這些亮區(qū)和暗區(qū)可圍繞要分段的區(qū)任意設置,也可設置在其毗鄰的區(qū)域。
在方框86中,將灰度等級值指定給亮區(qū)和暗區(qū),從這些值中得到要進行分段的區(qū)。注意,標記“亮”和“暗”表示一個“亮”區(qū)具有一個小于“暗”區(qū)的灰度等級值,這僅僅是用于區(qū)分低灰度值區(qū)域和高灰度值區(qū)域的標記。
在方框88中,根據亮區(qū)和暗區(qū)的線性關系,對要分段的區(qū)中的象素指定灰度等級值。
亮區(qū)和暗區(qū)可以正好相對放置(即在要分段的區(qū)的相對面),也可以放在180°到0°之間的任何一處。當亮區(qū)和暗區(qū)彼此靠近(即相隔0°)時,它們對要分段的區(qū)域所產生的效果就減弱,也就是說,亮區(qū)和暗區(qū)相隔越開(接近180°間隔),那么對要分段區(qū)域的視覺變化就越大。
在要分段區(qū)域的周圍放置許多亮區(qū)和暗區(qū),那么在該要分段區(qū)域會取得更多的變化效果,這些多個亮區(qū)和暗區(qū)可分別看作是亮區(qū)和暗區(qū)的分段。
通常相應于在每個暗區(qū)中的每個象素來處理在亮區(qū)中的每個象素可產生分段,所述暗區(qū)中的象素通過要被分段的區(qū)與亮區(qū)中的象素線性相關,線性相關指的是亮和暗象素與要被分段的區(qū)的關系,在要被分段的區(qū)中的至少一個象素必須在每個亮區(qū)和暗區(qū)的至少一個象素之間相連的一條線段上。如果沒有這種線性關系,那么在要被分段的區(qū)中就沒有象素。
同樣,在暗區(qū)中的每個象素被相關于亮區(qū)中的每個象素來進行處理,所述亮區(qū)中的象素通過要被分段的亮區(qū)與暗區(qū)中的象素產生線性關系。對亮區(qū)和暗區(qū)中的每一個象素相關于通過要被分段的區(qū)域與其產生線性關系的相反的區(qū)中的每個象素進行處理。要求亮區(qū)和暗區(qū)象素之間具有線性關系是因為如果將一個亮區(qū)和一個暗區(qū)相鄰,而在其中間沒有要被分段的區(qū)的話,那么對要分段的區(qū)就不會產生分段。對分段產生影響的還有亮區(qū)和暗區(qū)之間的距離以及其角度關系。
一旦對要分段的區(qū)域指定了灰度等級值后,那么如方框90所示,將該新的灰度等級值存儲在低位存儲器存儲結構18中。
實際的分段過程是通過確定亮區(qū)和暗區(qū)之間灰度等級的差別來進行的。具有灰度等級值150的一個亮區(qū)與具有灰度等級值50的一個暗區(qū)產生一個差100。接著,確定在亮區(qū)和暗區(qū)之間有線性關系的象素的數目。然后根據亮區(qū)和暗區(qū)之間線性相關的象素的數目對亮區(qū)和暗區(qū)的灰度等級值的差進行“傾斜”。如果在亮區(qū)和暗區(qū)之間有100個象素,亮區(qū)和暗區(qū)的灰度等級值分別為150和50,那么在亮區(qū)的一個象素和暗區(qū)的一個象素之間的每個象素被增1,這樣就產生了具有值51,52,53……147,148,149的“中間”象素,這些中間值隨后被加到要分段區(qū)的適當灰度等級值上。如果要被分段的區(qū)在亮區(qū)的一個象素和暗區(qū)的一個象素之間有具有50個象素一段長度,并且對亮區(qū)而言,在要分段的區(qū)中放置50個象素,那么該要分段的區(qū)將有一個灰度等級值101被加到在該要分段區(qū)中最靠近暗區(qū)的象素上,灰度等級102被加到要分段區(qū)的下一個象素的灰度等級值上,如此繼續(xù),直到要分段區(qū)中的所有象素都在其先前的灰度等級值上加上了偏差值。如果要被分段的區(qū)中所有的象素都具有一個灰度等級值10,那么對相應的象素分別加上灰度等級值101,……150。
將新的灰度等級值指定給要被分段的區(qū)中的所有象素。那些在該要被分段的區(qū)之外的區(qū)或在亮區(qū)和暗區(qū)之間沒有線性關系的區(qū)不受影響。亮區(qū)和暗區(qū)(經過要被分段的區(qū))之間的所有線性關系以象素對來確定,也就是說,亮區(qū)中的一個象素必須(通過要被分段的區(qū))與暗區(qū)中的一個象素線性相連起來。
當要被分段的區(qū)中的象素在多對亮區(qū)和暗區(qū)(或者,在有重疊的情況下,有效亮區(qū)和暗區(qū))之間是線性的情況下會產生多次分段。這象對并不需要包含在一種關系中所存在的那么唯一的對。通過對多個亮區(qū)和暗區(qū)對的分段進行排序來次序處理該過程。
圖12示出了產生疊化特殊效應的流程,疊化效應可使一個圖象疊化到另一個圖象中,或一個圖象從另一個圖象中淡入和淡出。這也可以發(fā)生在許多圖象的情況下。
在方框92,選擇要從一個圖象中淡入或淡出的源圖象,在方框94,選擇該淡入或淡出在其上發(fā)生的那個圖象,在方框95,選擇產生該疊化的幀的數目。
方框96示出將源圖象疊化到目標圖象上,該疊化過程在方框95中所選定的幀的數目上產生,這是以百分比關系反映出來的。例如,如果選定了十幀,那么百分之十的源圖象幀將疊化到目標幀上,繼續(xù)進行該過程,直到疊化過程結束。
一旦疊化完成后,那么過程就結束了,如方框100所示。在疊化結束之前,該過程要循環(huán)回去,在目標圖象上淡入(或淡出)的源圖象的數目增大,直到疊化過程完結。
對由屏幕到屏幕到逐漸過渡或顯現諸如重影之類的形象時,疊化過程是一種很有用的手段。
圖13示出了產生合并特殊效應的流程圖。合并效應與疊化效應相似,不同之處只是由源到目標的轉移僅僅經源象素的灰度級的一個預先選定的百分比在一幀上產生。
合并會產生透明效果,如圖象從火或煙中顯現,并且還能產生圖象的反映。例如,一個人的圖象(源)反映在瓷磚地板(目標)上,但該瓷磚地板透過所反映(透明的)源圖象是可以看出的。
圖14示出了產生合成特殊效應的流程圖。合成特殊效應按單元動畫制作的方式進行,它將產生的許多層組合起來形成一個最終的圖象,在動畫制作中經常有這樣的情形,這樣可以產生一個完整動畫序列的不同部分或一個人物的一部分。例如,這一手段可以使得動畫制作者將一幅圖象或一幅圖象的一部分單獨隔離開,并對這些單個圖象或圖象的各部分制作動畫,這種“子動畫”隨后可以合成到其它圖象或該圖象的某部分上。其中一個例子是與臉分開單獨動畫制作眨動的眼睛。通過一個序列的每一幀,可將眼睛的每一個不同的“眨動”合成到臉的圖象上。在整個序列過程中,眼睛的眨動可以呈現在圖象的臉上。另一個例子是一組動畫處理背景,而另一組處理前景,第三組處理初級人物,而第四組處理次級人物。所有這些“層”需要組合在一起(合成)構成最終作品。
合成手段完成從源圖象到一個目標圖象的完成轉移。在方框108中,選擇源圖象;在方框110選擇目標圖象;在方框112,對圖象進行合成,并且用源圖象重寫由目標圖象所占據的存儲單元。
可以進行合成使得源圖象僅僅轉移到其中沒有預先存在的掩罩或不指定象素的掩罩的區(qū)域,這樣,一個人物走在另一個人物之后看起來確實是在該人物后面行走,而不是人物的某些部位攙雜在其中,就如同它們是透明的一樣。如果合成完成了,該過程也就結束了;如果沒有完成(還有其它層要被合成),過程循環(huán)返回到108。
當然,動畫制作者必須決定合成的次序,這樣一個要呈現在背景之前的一個人物的某些部位就不會被背景圖象的相應區(qū)域所重寫。
在圖15中示出了產生象素偏移特殊效應的過程流程圖。這一手段使動畫制作者可以跨過一系列幀來掃視背景,從而產生這些背景移動的效果。許多圖象可以沿著預定的路線設置,如云彩從天空中飄過。采用象素偏移手段,云彩可以移過X座標和Y座標之間的距離,移動速度由動畫制作者預先確定。這種過程可以從一幀到一幀產生,當圖象移出屏蔽“邊界”后可以再次循環(huán)。象素偏移的速度可以修改,從而一個單元移過屏幕的動作可以變快和變慢,運動的軌跡可以編程到象素偏動操作過程中。
在方框118,選擇要作偏移的圖象,在方框120選擇偏移距離的X和Y座標;在方框122完成偏移,這一過程轉換為圖象在屏幕上移過;最后,在方框124,一旦圖象從屏幕移出后,將圖象移回屏幕的另一側,完成對圖象的循環(huán),這使得圖象“環(huán)繞”到下一幀的起點。
圖16的流程圖示出了自動產生居中幀的特殊效應,這一手段在人物或圖象以一個相對恒定的速度沿預定的路線移動或經過預定的旋轉時非常有用。例子之一是一個人物翻過屏幕,另一個例子是人物的胳膊、或腿、或頭等等活動,任何可預見的動作都可通過該手段來確定。
在方框126,選擇要自動居中生成的圖象(或圖象的一個部位);在方框128選定繞一固定點旋轉的角度;在方框130選擇圖象的軌跡。值得注意的是,如果圖象不旋轉,只選擇一條軌跡,反過來,如果圖象只旋轉不運動,那么只選擇一個旋轉角,也可以選擇特定的位置以替代測量圖象所移過的距離;在方框132選擇運動所進行的幀的數目;最后,在方框134由系統(tǒng)確定居中的幀。
采用模糊函數使動畫制作者通過對所選定的象素數目的灰度等級值的平均來模糊色彩。當選定了圖象的一個部件后(如臉上的“玫瑰”雙頰),建立一個有效的蔭罩,其中包含要被模糊的部位和模糊從中淡入的圖象的周圍區(qū)域。例子之一是指定臉的輪廓,臉上沒有眼睛、鼻子等等,但將雙頰模糊處理為一個面罩。
這種面罩被顯示在圖形位面12上。接下來,圖象中不是面罩部件的那些部件被顯示在圖形位面12中他們在面罩上所處的適當部位,這就是說眼睛、鼻子等等被顯示在臉上。接著,相應于象素的數目在進行平均處理(包含在處理過程中)的一個象素的任一面選擇一個值,然后,對所顯示的每一個象素,對所選定數目的相鄰象素的灰度值作平均并將其指定給正被處理的那個象素,只對在有效面罩之內的象素存儲這些新的灰度等級值,即對面頰和周圍的象素,其中由于模糊的結果產生了新的灰度等級值。
圖17示出了一個球面,其上有緯線(227-229)和經線(230-237)的交結點(201-226),用圖17的交點數可以示意本發(fā)明的系統(tǒng)和方法。圖17中所示的交點數并不為本發(fā)明所限制,可以有更多或更少的交點,這與本發(fā)明的特定應用相關。
每一個交點被指定一個唯一的名稱,這一名稱可以是圖17中所示的一個數字。必須保證每個名稱是唯一的。當開始一項工程或制作圖象時,必須確定在球面上所用到的位置的數目(即指定交點數)并指定各種唯一的名稱,這樣建立起了用來制作圖象的“域”。每個圖象或一個圖象的部位被繪制在相應于球面交點的一個位置上。
一個圖象在球面上的位置相關于該圖象在一個球座標系統(tǒng)中的運動。在圖18中,一個人物的鼻子和頭置于球面上多個位置(交點)。為示例起見,頭部示于五個位置,每個位置對應于頭的運動(其旋轉軸位于中心),并對應于在球面上一個交點的位置。例如,在位置A,頭部先是正對前方的,沒有任何傾斜或轉動。如果頭部向右轉幾度(位置B),相應的部分輪廓的位置示于赤道線位置,與處于主赤道線位置的頭部相鄰。該過程在整個球面進行,其中還包括倒轉圖象(沒有示出),看起來似乎物體真在球面上倒轉過一樣,這時觀察者只能看到物體的頭的后部或背部。球面的遠面(或背面)的相應位置當需要時也能顯示出來,圖18僅僅示出了幾種可能的頭部位置。
位于球面交點上的每個圖象被指定一個對應于球面的交點位置的唯一的名稱,球面上的位置(交點)也被指定一個數目,稱之為一個方位碼(見圖23方位碼290),部件本身給定一個文件名,復合圖象表示現在包括部件的文件名及其在球面上的位置,例如“頭1”,這表明頭是所考慮的物體,1是它在球面上的位置和方位的配置。這個唯一的名稱(文件名,球面定位)可以在創(chuàng)作一個動畫序列的任何時間調用。
圖19示出了一個球面,在該球面上相應于圖18圖象的位置(A-E)的每個交點上繪制了圖18圖象的眼睛和嘴巴。
圖19中的部件認為是連接部件,它在球面上有其自身的方位,但和另外的部件聯合動作,例如臉(示于圖18)上的眼睛和嘴巴(圖19所示),當臉在一個動作范圍動作時,眼睛和嘴巴也以相應的方式動作,這一要求在即使眼睛和嘴巴可能有其各自獨立的動作時也成立。例如,當臉經過一個動作范圍動作時,在臉動作的同時眼睛也能眨動,這樣眼睛在作與臉不相關的眨動時還隨臉一起動作。對嘴巴也是如此,當某人頭部動作時,他還可以說話,當他經一動作范圍動作時,他的輪廓相對于嘴部發(fā)生變化,當位于前面的一個觀察者相應于臉部的動作而變化位置能看到上述情形。然而,嘴巴說話時的動作與頭和臉的動作毫不相關。
圖20中,圖18和圖19的兩個連接圖象的組合被示于相應于圖18和圖19所示交點的五個球面交點上。在每一交點都能看到對兩個單獨的球域的組合或連接,它顯示了連接技術。在連接過程中,可以產生由不同的、各自獨立的活動物體所組合的一個人物或物體。最后的結果是圖象整體和其部分可以被保持和組合以產生動畫。通過構造這樣一種圖象整體和部分,可以消除傳統(tǒng)動畫制作過程中的不斷的繪制和重繪。因此,圖象以及整個動畫制作序列可以由新選出的部分來產生,然后,通過選擇圖象的相應部件來顯示在相繼幀的動作使圖象活動起來,這種技術稱為圖象的動作設計。
除單純顯示動作之外,人物說話以及第二個人物和背景也可以加入到該過程中,這樣根據一個故事情節(jié)通過一個活動序列就能使圖象活動起來。
圖21和22示出一個圖象的許多部位(四肢)241-253被附著到主圖象240上,每個附著部位被連在“附著”點254-266,附著點是物體上的某個位置,它與另一物體和相應點附著在一起。在一個圖象的多個位置有許多附著點。
例如,一條胳膊一般認為由幾個部件構成,在圖21中示出了左、右兩條胳膊,首先是大臂(242和245),接著是小臂(243和246),再接著是手(224和247),然后還有手指,每個手指有許多指關節(jié),在這個例子中,所畫的手指包括在手244和247上。每個胳膊段有一個附著點,大臂在點255和258與肩膀相連,同時在連接點256和259與小臂相連;小臂同樣連接到大臂上,同時在連接點257和260通過手腕與手相連。
在確定一個部位空間是附著部位或是連接部位時,在一個動畫序列中某一特定時間活動的一個圖象的部位是很重要的。當頭轉動時,身體及其附件并不必相關于頭的轉動來動作,很顯然,一個人可以在保持身體不動時移動其頭部。但是,當身體轉動時,肩膀必須隨身體而轉動。當身體轉動時,胳臂可能仍能看見或其輪廓仍近似在其原先的位置,但至少胳膊的某部分隨肩膀一起動作了。在身體轉動的情況下,附著部位(胳膊)可能連接到身體轉動的位置,但當頭轉動時,附著部位(胳膊)就不用與頭的轉動連接。
在本發(fā)明中,與其它部位的動作連接或不連接的部位包含在一個文件中,該文件將哪些部位與其它部位的動作相連接、哪些部位是附著在其它部位上的作一分類。對連接或附著的詳細考慮是動畫制作者的任務。動畫制作者采用布局操縱和連接手段或采用鍵盤交替打印出文件來制作該事件。
在本發(fā)明的這一實施例中,附著部位與連接部位完全不同,原因是連接部位與其所連接的部位有相同的動作球面。嘴巴相應于頭的動作而動作,因而,它們有相同的動作范圍和方位球面。對嘴巴的動作而言,如當嘴要說話時,每個嘴動作有其自身的球面。例如,對字母“A”的嘴動作有一個相應于頭動作的動作球面,而對字母“E”的嘴動作則要產生另一個動作球面。通常在動畫制作時,只需制作大約半打嘴作作就可以覆蓋人們能看動說話這一動作的全部范圍。對更復雜的動畫片來說,可以增加更多嘴動作。對嘴的每個動作而言,動畫制作者要繪制相應于該動作的一個新球面,從而使其在該球面上的動作范圍和取向與頭的相應動作相關。
但在附著部件的情形下,它不必隨其所附著的部件來對自己重新取向。在一條胳膀和一個正動作的軀干的情形下,動畫制作者必須對胳膊重新定義以適應軀干的轉動。以上所述是本發(fā)明的一個實施例,而不是其限制,調節(jié)附著部件的取向使其相應于它們所附著的部位的取向完全在本發(fā)明的精神和范圍之內。在這么做時,轉動附著部位從而對其所附的部位的轉動進行校正。
在胳膊附著到軀干的情形下,胳膊動作的球域是相應于繞位于肩膀附著點的軸轉動的位置的域,當軀干向不同方向動作時,附著點(肩膀)的位置也發(fā)生變化,即使胳膊的動作范圍仍在其所附著的點周圍也是如此。
例如,胳膊繞肩膀動作時其軸點在肩上,這種情形當肩膀處于球的中心時是可以看見的。當胳膊移到了球上的不同交點時,它總是繞著中軸點(肩膀)來動作。當軀干經過球面動作時,胳膊仍保持在其獨立的動作球面上,在這一動作中其難點是觀察者看這個球面的透視點不同,所看到的胳膊的獨立的動作球面是不同的。
想象一下,當一條胳膊從肩膀處上舉時,在軀干轉動時被從側面裝在樞軸上,這樣,即使當胳膊在其獨立的活動范圍內的動作時,對該胳膊的視見也是不同的。通過轉動胳膊的球面位置,可將其束縛或連接到相應的軀干位置。
圖23所示是對主機計算機數據結構的描述。本發(fā)明采用AT兼容計算機,該計算機利用386或486微處理器,該微處理器的相聯存儲器和支援電路,再加上一個智能型圖形控制器及其相聯存儲器。
***部件表***示于圖23的主機數據結構的基本單元是基部件記示270(270a-270f),基部件記錄中包含對每一個部件的信息,該部件是稱之為屏幕的一個圖象表示域的單元。在最簡單的情形下,只有一個基部件記錄,這種情形是一個完整圖象的輪廓只需經過一個球面,這種簡單情形沒有任何附著部件。在更復雜的情形下,可能有多組基部件記錄,它們彼此相連從而形成一個分層結構部件樹。例子之一是示于圖18至圖22的人物,其中連接部件和附著部件都必須經過動作制作過程來形成圖象并使其動作起來。
包含在基部件記錄270中的初始信息包括一個取向表(ORILIST)271、一個轉換表(TRANLIST)272、一個連接部件陣列(LINKARRAY)273、連接部件的數目(NLINKS)274、一個組表(GROUPLIST)275以及用來管理分層數據結構的信息。這種連接信息示于SIBLING276和ATTACH277。ORIFILE278指示包含有該部件的有效取向碼的文件。
對每一個基部件,同樣又對每一個基部件記錄270建立取向表271,取向表271中所包含的陣列包括對每一幀的基部件的取向。應當注意的是,在任意給定幀中,所有部件和所有圖象有一個確切的取向。(取向的改變相應于動作和活動),該改變是通過圖象及其不同部件的幀到幀的變化來實現的。
對要進行圖形轉換的每個基部件建立一個轉換表272,該陣列包括對每一幀的一個轉換記錄,它指示對該幀的該部件所進行的轉換。轉換包括動作,示例性的轉換可能是移動、轉動、以及從圖象的原來的形狀擴大或縮小。轉換過程發(fā)生在對動畫的組裝過程中。球狀圖象域只需要包含單元尺寸的圖象。這樣,即使通過動畫片動作設計過程來對圖象進行調節(jié)、仿形和修改,也只需一種球狀表示域。
轉換信息只有在某個給定部件很明顯看出要進行轉換時才分配給該部件,如果一個部件上沒有轉換信息,這意味著對該部分不作轉換。
對為其定義了連接部件的每個基部件建立連接陣列273。如前面所述,一個連接部件是與一個基部件在相同位置、取向畫出并隨基部件轉換的一個部件。對一給定的基部件可以定義一個或多個連接部件,連接部件的起點畫在它所連接的基部件的起點的相同位置。
每個連接部件必須屬于一個連接組。一個連接組用來對用作一個目的的連接部件的集合命名。例如,對一特定的頭來說,可能有一系列眼睛部件,但在一特定的幀或幀系列中只有一個眼部件被用來顯示。一個連接組可用來指示所有的眼睛部件。為了一致起見,屬于一個連接組的所有部件它們的標識名的前幾個字母是相同的,這些共同的字母被用作連接組的名字。例如,眼睛連接組可以稱為EYE,這個連接組的部件名可能是EYEOPEN(眼睛睜開),EYECLOSED(眼睛閉上),EYEHALF(眼睛半閉半合),等等。
在本發(fā)明的實施例中,連接陣列274是二維的。該連接陣列的第一“維”指示顯示特定連接部件的幀的數目;第二“維”是該給定連接部件的連接組。這樣,當需要時,可對每一幀定義一系列連接部件。
對具有連接部件的每一個基部件建立組表275,組表275中的每個表目包括定義一組連接部件的組表名(實際上是一個連接組索引)。一個組索引(G#)是對一個組名表的索引,這是在圖23的數據結構中指定一個特定組的一種方式。組表275與連接陣列同作工作。
在基部件記錄270中建立信息使其能在每一幀的基礎上很容易地改變。在一給定幀,基部件的取向以及可能出現的任何連接部件可以通過改變取向陣列中的一個數目很容易地得到改變。也可以通過將連接陣列274中的連接部件數目用連接組275中相應組的另一個數目來替代來輕易地替換一個連接部件(例如用EYECLOSED)替代EYEOPEN)。
Sibling(同屬)276相關于被連在一起或被定義在一個根級存在的多個基部件,這些多個部件彼此毫不相關,但被連到同一根級,這樣在一段時間可將多個人物配置在一起。通過將每個基部件連接到同屬表276,基部件數據結構270可支持這一過程,同屬表276起始于“第一部件”,該“第一部件”總是根部件。
可以將其它部件附著到一個單一的基部件上來形成一個更復雜的圖象,被附著的部件受到該給定基部件的位置和變換的影響。對一個基部件的所有附著都保持在一個標準連接表同屬表276中,在圖21和22所示的圖象中可以看到一個身體部件有5個附著點,包括兩條胳膊、兩條腿和一個頭,即5個同屬部件,這5個部件被認為是它們之間的同屬,因為它們都受基部件及其相關動作的影響,但它們彼此之間并沒有影響。每個同屬部件與連接在基部件上的其它同屬部件是不相關的。
然而,每一個同屬部件本身又有其自己的附著部件。以胳膊來說,每條胳膊包括一條大臂、一條小臂和一只手,這些部位可以共同動作,但每一部位又有其獨立動作球面表示域。由于多個部件有其自己的球面表示域(如圖21和22中所示的大臂242和245),因此基部件的取向和動作的變化可以直接與一個附著部件的取向和動作的變化相連。
每個被附著的部件必須被指定給一個附著點(如圖21和22中的254-266),這個附著點必須畫在基部件的每一個方位。
一旦制作了一個附著部件后,它可以成為其自身的基部件(如基部件270b和基部件270e),這樣,可以圍繞第一個基部件建立起部件的分層結構樹。系統(tǒng)中的每個部件總要受到它所從屬的部件的影響。
除基部件記錄270之外,在主機中還保持有兩個其它陣列,即名字表陣列283和組表陣列284。名字表陣列283包含部件名285和地址表286,地址表286是對GSP(示于圖24)地址表的一個指示字,這是對GSP數據結構的信息入口點。組表陣列284包括組名287以及與部件被包含在該組相關的信息。N#或名字索引288是對部件名表的索引,G?;蚪M索引282是對組名表的索引。這是一種在基部件記錄270中指示一個特定組的方式。
在圖24中示出了GSP或圖形系統(tǒng)處理機的附加的數據結構表示。在本實施例中,GSP是一種TIGATM兼容的圖形插件,它帶有自身的局部存儲器。GSP數據結構中包括繪制每個部件所需的實際矢量數據,矢量數據指示描述圖形繪制的基本數據。矢量數據由線和點(頂點)組成,當其適當地連接起來時,描述了所需的圖象。在需要時將部件數據全部裝入GSP,部件數據是從一個存儲器存儲設備(諸如一個硬盤驅動器)中全部裝入的,它也可以是在一個快速RAM存儲器中所建立的一個虛盤驅動器中。每當需要繪制一個部件時,就作一檢查,看其數據是否已全部裝入到GSP中了,如果沒有的話,那么在要求繪制該部件的同時將其全部裝入到GSP。在任何一種情形下,當獲得一個對特定矢量數據的指示字之后,調用GSP存儲器常駐例行程序為顯示屏上的部件繪制數據。地址表86與GSP相關連,它是GSP地址的一個陣列,指向部件數據,所需的取向碼290(包括在圖23的Ori表中)用作對地址表286的索引。
地址表86的一個入口零表示一個部件沒被裝入,也沒有裝入該部件的企圖。如果入口為負1,表示企圖裝入一個部件,但還沒有找到該部件數據,在-1的情況下,對這一特定方位的這一點來說,不必再有裝入該數據的企圖,當該部件的相應方位不在方位球面表示域之中時會出現這種情況。如果入口既不為零也不是-1的話,那么就是部位數據的GSP地址。
實際的部位數據包含在一個固定的標題段,該標題段包含有擴展2和附著點293,其后面跟著一個包含有部件294的所有矢量數據的可變尺寸段。矢量數據在終止記錄295中用一對零來終止。
矢量數據由一系列多線條(Polyline)組成,每個多線條包含許多坐標和一個限制符,后面跟著實際的座標數據,在一個多線條中的第一個坐標總是代表“移向”位置或起點,所有剩下的坐標都是“接近”位置,接近位置緊跟在由移向位置所安置的初始值之后。
當一個部件被牽引到、選擇到、和寫到屏幕上時,對該部件完成圖象的最后偏移變換。
權利要求
1.一種以計算機為基礎制作動畫圖象的方法,包括如下步驟a)在第一個球座標方位制作一個第一圖象;b)存儲所述第一圖象,c)在予選數目的額外的球座標方位制作予選數目的額外圖象,所述額外的圖象在方位上與在步驟(a)中所產生的第一圖象不同,而且它們彼此也各不相同;d)存儲所述額外的圖象。
2.如權利要求1所述的方法,其特征在于,所述第一圖象是一個完整圖象的一個主要部件,該完整圖象至少由一個主要部件構成。
3.如權利要求1所述的方法,其特征在于所述第一圖象包括至少一個次要部件。
4.如權利要求3所述的方法,其特征在于進一步包括如下步驟a)在所述次要部件的第一球座標方位為該次要部件制作一個第一圖象;b)為所述次要部件存儲的所述第一圖象;c)為所述次要部件制作予定數目的額外圖象,每一個具有唯一的球座標方位,每一個代表在不同球座標方位的所述次要部分的所述第一圖象;d)存儲所述次要部件的所述額外圖象。
5.如權利要求4所述的方法,其特征在于將具有相同球座方位的所述次要部件的每個圖象與所述主要部件的每個圖象組合起來。
6.如權利要求1所述的方法,其特征在于所述次要部件是一張臉。
7.如權利要求3所述的方法,其特征在于所述次要部件是一張嘴。
8.如權利要求5所述的方法,其特征在于其中所述的主要部件是一張臉,所述次要部件是一嘴。
9.如權利要求5所述的方法其特征在于所述組合圖象組成一序列幀中的一個幀,所述幀序列代表所述組合圖象在所述幀序列是的活動。
10.以計算機為基礎產生動畫圖象的系統(tǒng),其特征在于通過選擇與一個動畫幀的一個予選球座標位置相關的至少一個所述存儲的圖象,并且存貯所述圖象信息來構成所述幀的至少一個部件,至少部分地產生包括一個所述圖象的所述動畫幀。
全文摘要
本發(fā)明為計算機動畫制作系統(tǒng)提供了一個系統(tǒng)和方法,該系統(tǒng)包括一系列存儲在存儲器存儲結構中的圖像。存儲器存儲結構包括若干位面,它被進一步分為至少兩個存儲器結構,第一存儲結構用于以矢量表示存儲操作者修改后的圖像信息,第二存儲結構用于存儲光柵表示的操作者修改后的圖像信息。還為計算動畫制作系統(tǒng)提供了一個系統(tǒng)的方法,其中圖像在一個球坐標定位系統(tǒng)的第一方位上產生,從而產生所需圖像的圖像定位域。
文檔編號G06T13/00GK1075564SQ9211184
公開日1993年8月25日 申請日期1992年12月5日 優(yōu)先權日1991年12月6日
發(fā)明者B·B·桑德魯, R·林納迪 申請人:美國軟片科技有限公司