[加拿大] 拉斯·威爾克 湯姆·卡爾弗特 朗達(dá)·雷曼 艾琳·福克斯 撰 英曼莉 譯
“The dance is unhappily an illiterate art; it knows nothing of yesterday; it cares nothing for tomorrow.”
“不幸的是,舞蹈是一種文盲的藝術(shù);它對(duì)昨天一無所知;它對(duì)明天毫不關(guān)心?!?/p>
——《紐約時(shí)報(bào)》,1932年12月4日
在舞譜系統(tǒng)出現(xiàn)之前,舞蹈被認(rèn)為是一種瞬間的藝術(shù)。舞譜允許對(duì)舞蹈進(jìn)行客觀地記錄,就像樂譜允許作曲家對(duì)音樂作品的意圖進(jìn)行說明一樣。雖然有許多舞譜系統(tǒng)存在,但最常見的是拉班舞譜和貝耐什記譜法 (Benesh Notation)。前者在北美最常見,位于紐約的美國舞譜局(Dance Notation Bureau,DNB)63年來一直致力于創(chuàng)造、保存和傳播這種系統(tǒng)地記錄舞蹈的舞譜(美國舞譜局官網(wǎng)地址:www.dancenotation.org)。由此產(chǎn)生的檔案為學(xué)者、學(xué)生、表演者和公眾提供了一個(gè)容易獲得的、詳細(xì)的舞蹈記錄,使人們能夠以一種其他媒介無法實(shí)現(xiàn)的方式研究舞蹈。
雖然舞譜是舞蹈重建和舞蹈研究的基礎(chǔ),但不幸的是,很少有舞蹈家或編舞者能讀舞譜,而有能力寫譜的則更少。因此,許多人已經(jīng)意識(shí)到,如果有一個(gè)基于計(jì)算機(jī)的工具將舞譜制作成動(dòng)畫,將會(huì)有相當(dāng)?shù)膬?yōu)勢(shì)。這一設(shè)想最早可以追溯到20世紀(jì)60年代,諾爾(Noll)在《舞蹈雜志》(Dance Magazine)上發(fā)表的文章①NALL A M.Choreography and Computers[J].Dance Magazine,1967(7):43—45.,以及默斯· 坎寧漢(Merce Cunningham)在同一時(shí)期的探討②參見:CUNNINGHAM M.Changes/Notes on Choreography[M].New York:Something Else Press,1968.。第一次嘗試將計(jì)算機(jī)應(yīng)用于拉班舞譜應(yīng)該是1974年,西蒙弗雷澤大學(xué)(Simon Fraser University)的澤拉· 沃洛夫斯基(Zella Wolofsky)的碩士學(xué)位論文《計(jì)算機(jī)對(duì)選定的拉班舞譜符號(hào)指令的詮釋》(Computer Interpretation of Selected Labanotation Commands)③參見:WOLOFSK Z.Computer Interpretation of Selected Labanotation Commands[D].M Sc thesis,Simon Fraser University,1974.。隨后,有一定數(shù)量的項(xiàng)目都集中在對(duì)拉班舞譜不同方面的詮釋上④參見:BADLER N,SMOLIAR S.Digital Representations of Human Movement[J].Computing Surveys,1979(1):19—38;BROWN M,SMOLIAR S,WEBER L.Preparing Dance Notation Scores with a Computer.Computers and Graphics[J].1978(1):1—7;CALVERT T W,CHAPMAN J.Computer Assisted Notation of Human Movement[C]// Proceedings of 1978 ACM Conference,1978:731—736.。
在開發(fā)基于計(jì)算機(jī)的拉班舞譜的解釋方法的同時(shí),人們也在努力實(shí)現(xiàn)協(xié)助創(chuàng)造和編輯舞譜系統(tǒng),以及其他專門協(xié)助編舞的工具?!袄鄬懽鳌本庉嬈魇嵌砗ザ碇萘⒋髮W(xué)露西· 維納布爾(Lucy Venable)領(lǐng)導(dǎo)開發(fā)的⑤VENABLE L,SUTHERLAND S,ROSS L,TINSLEY M.LabanWriter 2.0[P].Ohio State University,1989.,而在西蒙弗雷澤大學(xué),湯姆· 卡爾弗特(Tom Calvert)帶領(lǐng)了一個(gè)開發(fā)各種人類動(dòng)畫技術(shù)的團(tuán)隊(duì)⑥CALVERT T W,WELMAN C,GAUDET S,et al.Composition of Multiple Figure Sequences for Dance and Animation[J].The Visual Computer,1991:114—121.?!袄鄬懽鳌本庉嬈骼昧水?dāng)時(shí)相對(duì)便宜的蘋果電腦(Macintosh computer)圖形功能,為創(chuàng)建和編輯拉班舞譜譜子提供了一個(gè)簡(jiǎn)單而直觀的、類似文字處理的系統(tǒng)。麥克貝耐什(MacBenesh)—一個(gè)為貝耐什記譜法開發(fā)的類似寫作系統(tǒng)—由滑鐵盧大學(xué) (Waterloo University)的朗達(dá)· 雷曼(Rhonda Ryman)和她的同事研發(fā)⑦RYMAN R,HUGHES-RYMAN R.The MacBenesh Editor:A Word Processor for Benesh Notation[J].Dance Notation Journal,1986(2):16—26.。大約在同一時(shí)期,“生命形式”也被開發(fā)出來(Life Forms)(www.danceforms.com),為編舞者和動(dòng)畫師提供了一個(gè)簡(jiǎn)單的、對(duì)用戶友好的系統(tǒng),以試驗(yàn)動(dòng)畫人物的運(yùn)動(dòng)模式。學(xué)生、記譜員、教育工作者和編舞者都在使用“拉班寫作”和“生命形式”,許多人建議將它們聯(lián)系起可以通過其他渠道獲取舞譜創(chuàng)造、編輯符號(hào)以及制作動(dòng)畫的詳細(xì)資料⑧參見:GRAY J.Dance in Computer Technology:A Survey of Applications and Capabilities[J].Interchange,1984(4):15—25;HUNT FES,PLITIS G,HERBISON-EVANS D.LED & LINTER:An X-WINDOWS Mini-Editor and Interpreter for LABANOTATION[R].Technical Report 343,Basser Department of Computer Science,University of Sydney,2003;University of Birmingham.Calaban Project[EB/OL].(2005—07—01) [2022—05—07].http://www.bham.ac.uk/calaban/frame.html;CALVERT T,WILKE L,RYMAN R,et al.Applications of Computers to Dance[J].IEEE Computer Graphics and Applications,2005(2):6—12.。
本文描述了“拉班舞者”系統(tǒng)的開發(fā)—一個(gè)將拉班舞譜動(dòng)畫化的工具?!袄辔枵摺钡妮斎胧莵碜浴袄鄬懽鳌睉?yīng)用程序的數(shù)字化舞譜,用于生成和編輯拉班舞譜。在開發(fā)制作新的解釋系統(tǒng)時(shí),我們尋求能正確處理絕大多數(shù)運(yùn)動(dòng)情況并能識(shí)別運(yùn)動(dòng)情景的通用技術(shù)。
魯?shù)婪颉?拉班(Rudolf Laban)在他的時(shí)代是一位杰出的編舞家和舞蹈家。1928年首次發(fā)表了《拉班記譜法》(Kinetography Laban),這是一個(gè)表示人體運(yùn)動(dòng)的符號(hào)系統(tǒng),后來被人熟知為拉班舞譜。該系統(tǒng)是現(xiàn)代關(guān)鍵幀動(dòng)畫系統(tǒng)的先驅(qū),因?yàn)樗茉谇宄臅r(shí)間點(diǎn)上捕捉身體各部位的位置信息。
某一特定肢體的姿勢(shì)或姿態(tài)是由寫在頁面上的九個(gè)方向形狀(九個(gè)之一),再加上水平高度(Level)來確定的,水平由填充形狀內(nèi)的陰影表示。形狀符號(hào)的長(zhǎng)度決定了完成該姿勢(shì)所需要的時(shí)長(zhǎng)。這些符號(hào)被安置在一個(gè)三線譜譜表(Staff)上,靈感來自五線樂譜。舞譜需要從下往上讀,而不是從左往右讀;底部的雙橫線表示動(dòng)作順序的開始;頂部的雙橫線表示動(dòng)作結(jié)束。底部雙橫線下面的符號(hào)表示起始位置。如同樂譜一樣,三線譜被劃分為小節(jié),小節(jié)的時(shí)長(zhǎng)由速度和每小節(jié)的節(jié)拍數(shù)來確定。一個(gè)或多個(gè)三線譜可以被安排成一個(gè)譜子,每個(gè)三線譜代表一位舞者的動(dòng)作(見圖1)。圖1顯示了一位舞者的舞譜示例圖。
圖1 拉班舞譜的三線譜表
在水平方向上,三線譜被分為幾個(gè)欄目(column),將符號(hào)歸入它們所對(duì)應(yīng)的身體部位。這些欄目從三線譜的中心線往外排列,代表身體的左右對(duì)稱性。
拉班舞譜以一種獨(dú)特的方式使用最靠中間兩欄的符號(hào)。在這里,這些符號(hào)描述了身體重量的方向是從一個(gè)支撐部位(通常是腳)轉(zhuǎn)移到另一個(gè)支撐部位,從而確定了主體的運(yùn)動(dòng)。水平高度表明該步伐是以屈膝、直腿還是立腳尖的方式進(jìn)行。與姿態(tài)符號(hào)一樣,符號(hào)的長(zhǎng)度表示執(zhí)行該步伐所需的時(shí)間。在垂直方向上,符號(hào)之間的空白意味著主體已經(jīng)離開了地面,如跑步、跳躍或跨跳步。
拉班舞譜提供了大量的輔助符號(hào),可以用來修飾主要符號(hào)、小節(jié)和欄目的含義。附加符號(hào)用來表示舞臺(tái)上主體的安排(舞臺(tái)平面圖)和他們采用的路徑,或者表示實(shí)體(肢體或?qū)ο螅┲g的空間關(guān)系。特殊的符號(hào)用來表示一個(gè)肢體所影響到的方向或轉(zhuǎn)動(dòng),而不是它所在的欄目所暗示的那個(gè)肢體。因此,拉班舞譜可以提供任意數(shù)量的細(xì)節(jié)說明。它可以快速地粗略一筆帶過動(dòng)作,也可以明確到手指上的關(guān)節(jié)位置來描述一個(gè)動(dòng)作。這些可以在安· 哈欽森· 蓋斯特(Ann Hutchinson-Guest)的書中找到關(guān)于拉班舞譜系統(tǒng)的完整描述①參見:HUTCHINSON-GUEST A.Labanotation or Kinetography Laban:The System of Analyzing and Recording Movement[M].New York:Theatre Arts Books,1970.,美國舞譜局官網(wǎng)也有教程。
“拉班寫作”是一個(gè)建立于蘋果電腦的2D圖形編輯器,專門用于創(chuàng)建拉班舞譜的譜子。由俄亥俄州立大學(xué)舞蹈系的露西· 維納布爾教授領(lǐng)導(dǎo),和團(tuán)隊(duì)成員斯科特· 薩瑟蘭(Scott Sutherland)、大衛(wèi)· 拉利(David Ralley)與喬治· 卡爾(George Karl)一起開發(fā)(可 從https://dance.osu.edu/research/dnb/laban-writer免費(fèi)下載)。用戶在“拉班寫作”的虛擬頁面上創(chuàng)建一個(gè)或多個(gè)譜表,并從選項(xiàng)板中選擇拉班舞譜符號(hào)。符號(hào)被放置在相對(duì)應(yīng)的身體部位的欄目上。用戶可以拉伸或壓縮方向并改變符號(hào)的長(zhǎng)度,持續(xù)時(shí)間由其垂直長(zhǎng)度表示。修飾符號(hào)被放置在它們所修改的主要符號(hào)的底部或欄目的位置—這操作在本質(zhì)上容易出錯(cuò)。
“拉班寫作”中使用的拉班舞譜符號(hào)被視為二維圖形對(duì)象,大致分為兩個(gè)子類別—可伸縮的符號(hào)和固定尺寸的符號(hào)。可伸縮的符號(hào),如方向和轉(zhuǎn)動(dòng)符號(hào)和時(shí)長(zhǎng)有關(guān),而固定尺寸的符號(hào)通常修飾或指定舞譜的欄目、小節(jié)或總譜的其他方面。在“拉班寫作”中存儲(chǔ)的符號(hào)并沒有明確的欄目和時(shí)間信息—符號(hào)的笛卡兒位置(Cartesian position)①笛卡兒位置用于繪制二維,即 X(高度)和Y(寬度)位置。被用來縮短其欄目和小節(jié)。因此,美國標(biāo)準(zhǔn)信息交換代碼(American Standard Code for Information Interchange,ASCII)的“拉班寫作”文檔只用于屏幕上的圖形設(shè)計(jì),不包含關(guān)于拉班舞譜的結(jié)構(gòu)、舞蹈或人體運(yùn)動(dòng)的知識(shí)。關(guān)于“拉班寫作”文件格式的詳細(xì)描述可以在以下網(wǎng)址找到:https://www.dance.ohio-state.edu/labanwriter/LW4/LW44FileFormat.html。值得注意的是,文件中的每條記錄都包含了繪制符號(hào)的所有必要信息,如類型、位置、尺寸大小、顏色、特殊字體等。在數(shù)據(jù)流中,信息是按照用戶放置的順序排列的,沒有任何特定排序?!袄鄬懽鳌笨梢源蛴〕隼辔枳V的譜子,或者以三種通用的圖形文件格式(PNG、PICT或JPEG)之一儲(chǔ)存為二維光柵圖像。這個(gè)圖形文件被微軟視窗版本的“拉班舞者”用來作為展示舞譜的手段。
“拉班舞者”是我們開發(fā)的獨(dú)立應(yīng)用程序的名稱,致力于將“拉班寫作”文檔轉(zhuǎn)化成單一人體圖像的動(dòng)畫,包含了翻譯所需的所有算法的實(shí)現(xiàn)。以下是對(duì)這些算法的描述。
要將“拉班寫作”的文檔轉(zhuǎn)化為動(dòng)畫,首先需要將一串圖形符號(hào)轉(zhuǎn)化為一組在拉班舞譜環(huán)境下有意義的數(shù)據(jù)對(duì)象。這些數(shù)據(jù)對(duì)象按照運(yùn)動(dòng)符號(hào)的開始時(shí)間和它們所在的欄目進(jìn)行排序,因?yàn)檫@表示相對(duì)應(yīng)的身體部位。同時(shí)收集修飾符號(hào),然后根據(jù)它們的接近程度與它們所修飾的符號(hào)或相關(guān)欄目進(jìn)行關(guān)聯(lián)。由此產(chǎn)生的數(shù)據(jù)對(duì)象被放置在一個(gè)數(shù)據(jù)結(jié)構(gòu)中,該結(jié)構(gòu)概念上類似于拉班舞譜的譜子,其組織方式與動(dòng)畫中常用的通道數(shù)據(jù)結(jié)構(gòu)大致相同。
這個(gè)綜合舞譜數(shù)據(jù)結(jié)構(gòu)包含一個(gè)通道圖(根據(jù)舞譜的欄目生成),每個(gè)通道都與不同的肢體或支撐相關(guān)。每個(gè)通道內(nèi)的符號(hào)按時(shí)間排序,每次輸入都包含所有可能的修改信息。輔助信息,如時(shí)間、路徑或關(guān)系,也存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)外的符號(hào)通道中。為了完成這個(gè)階段,數(shù)據(jù)對(duì)象時(shí)間可以根據(jù)上下文的規(guī)則調(diào)整,以反映姿勢(shì)的真實(shí)時(shí)間。
在“拉班舞者”中,人體動(dòng)畫是基于骨架層次的、可變形的多邊形網(wǎng)格模型。骨架的關(guān)節(jié)角度由關(guān)鍵幀動(dòng)畫通道控制,另外還用了四個(gè)逆向運(yùn)動(dòng)學(xué)鏈來驅(qū)動(dòng)手臂、腿、腳和手。為達(dá)成此目的,選擇運(yùn)動(dòng)學(xué)算法(Inverse Kinematics using A Nalytical solutions,IKAN)②TOLANI D,GOSWAMI A,BADLER N.Real-Time Inverse Kinematics Techniques for Anthropomorphic Limbs[J].Graphical Models,2000:353—388.,該算法專門用于控制有七個(gè)自由度的模擬的人類肢體,具有確定解而非迭代解。
表現(xiàn)腳和手的位置與方向的終端控制器由關(guān)鍵幀通道控制。這些通道具有線性插補(bǔ)和圓弧插補(bǔ)位置的附加功能,可在姿勢(shì)與姿勢(shì)之間創(chuàng)建可信路徑。
骨架結(jié)構(gòu)中的根關(guān)節(jié)點(diǎn)(如髖關(guān)節(jié))的全局位置由一個(gè)三維貝塞爾曲線(Bezier curve)③一種用于計(jì)算機(jī)圖形學(xué)和相關(guān)領(lǐng)域的參數(shù)曲線,參見:MORTENSON M E.Mathematics for Computer Graphics Applications[M].2nd ed.New York,NY:Industrial Press,1999.控制,其參數(shù)由后面討論的腳步算法決定。
“拉班舞者”對(duì)身體種類沒有限制。只要它們具有相同的運(yùn)動(dòng)學(xué)模型,就可以進(jìn)行動(dòng)畫制作。目前有四個(gè)單獨(dú)的模型,由兩位女性和兩位男性組成,為現(xiàn)代舞和古典舞定制。
一旦源自“拉班寫作”的文檔轉(zhuǎn)化合成舞譜,所產(chǎn)生的數(shù)據(jù)結(jié)構(gòu)的符號(hào)通道將被遍歷。特定身體部位遇到的每一種符號(hào)類型都有一個(gè)單獨(dú)的規(guī)則來處理,這些規(guī)則將姿態(tài)、轉(zhuǎn)動(dòng)和支撐轉(zhuǎn)化為肢體的關(guān)鍵幀、終端控制器或步伐的位置和時(shí)間信息。下面的內(nèi)容提供了一些詳細(xì)資料。
盡管拉班舞譜可以指定任何的肢體姿勢(shì)細(xì)節(jié),但是方向符號(hào)只定義大部位的姿態(tài),如整只手臂或整條腿,也可以用修飾符號(hào)來定義伸展或彎曲(例如,肘部彎曲的程度)。使用查找表可以很容易地將姿態(tài)符號(hào)轉(zhuǎn)化為球面坐標(biāo),用于確定腿和手臂的球面關(guān)鍵幀。由于拉班舞譜姿態(tài)符號(hào)的坐標(biāo)系在全局術(shù)語定義為上下,但在主體面對(duì)不同方向時(shí)重新定義前后、左右,因此增加了一些復(fù)雜性。查找表也提供手和腳的默認(rèn)方向,可將符號(hào)類型與方向聯(lián)系起來。
不能直接從符號(hào)在舞譜上的確切位置來翻譯符號(hào)的時(shí)間,而必須根據(jù)相關(guān)的前后動(dòng)作來解釋,這是翻譯拉班舞譜反復(fù)出現(xiàn)的一個(gè)問題。例如,雖然一個(gè)姿勢(shì)被記錄在一個(gè)拍子里,但通常動(dòng)作發(fā)生的時(shí)間是在拍子開始前,并在拍子上到達(dá)。這可能是因相鄰或隨后的符號(hào)而產(chǎn)生變化,例如,手臂姿態(tài)必須與腿部姿態(tài)同步,而腿部姿態(tài)又受到支撐符號(hào)的制約(如在腿部姿態(tài)接觸地面成為下一個(gè)支撐前,須留出足夠的時(shí)間來完成腿部姿態(tài))。
與姿態(tài)有關(guān)的另一個(gè)復(fù)雜情況是,肢體在姿態(tài)之間有必須遵循的路徑。一般來說,對(duì)于手臂的姿態(tài),手的路徑應(yīng)該遵循一條弧線。當(dāng)兩個(gè)連續(xù)的手臂姿態(tài)方向相差180°時(shí),如手臂從前中到后中方向時(shí),手會(huì)沿著一條直線到肩部,肘部會(huì)彎曲,然后展開手臂,試圖達(dá)到后中方向的位置。類似的,腿部姿態(tài)通常遵循以臀部為頂點(diǎn)的圓錐形路徑,但在極端的姿態(tài)之間會(huì)遵循一個(gè)更復(fù)雜的路徑。
在拉班舞譜中,姿態(tài)也可指定為肢體的子部分(如上臂、前臂、手指)。這在實(shí)踐中可以使用模型中每個(gè)關(guān)節(jié)的單獨(dú)關(guān)鍵幀控制器來實(shí)現(xiàn),但目前尚未完成,因?yàn)楸仨氃O(shè)計(jì)一些途徑在逆向運(yùn)動(dòng)學(xué)(整個(gè)肢體)和正向運(yùn)動(dòng)學(xué)(部分肢體)動(dòng)畫源之間無縫鏈接。
一般來說,腿部和手臂的姿態(tài)是以同樣的方式生成的;然而,腿部姿態(tài)有一個(gè)特殊問題,因?yàn)樗鼈儽仨毐徽系教幚碇巫兓催\(yùn)動(dòng))的系統(tǒng)中。這種整合將在隨后的內(nèi)容中討論。
在拉班舞譜中,符號(hào)顯示在一段時(shí)間內(nèi)由哪個(gè)肢體部位支撐身體,以及運(yùn)動(dòng)的方向(如果有的話)。例如,腳和腳之間的支撐變化,結(jié)合向前的運(yùn)動(dòng),就會(huì)產(chǎn)生向前走或跑。因此,這個(gè)符號(hào)并沒有明確規(guī)定相關(guān)肢體的彎曲和延伸,而是留給聰明的舞者去判斷實(shí)現(xiàn)特定方向的支撐變化所需的動(dòng)作。為了生成動(dòng)畫,我們必須找到從支撐變化中推斷出肢體運(yùn)動(dòng)的方法。
首先我們探索了一種方法,該方法以通常用于過渡的動(dòng)畫序列存儲(chǔ)數(shù)據(jù)庫為基礎(chǔ)。格雷切(Gleicher)等也采用了相似的方法,從運(yùn)動(dòng)捕捉數(shù)據(jù)中合成任意的運(yùn)動(dòng)路徑①GLEICHER M,SHIN HJ,KOVAR L,et al.Snap together Motion:Assembling Run-Time Animation[C]// Symposium on Interactive 3D Graphics,2003.KOVAR L,GLEICHER M,PIGHIN F.Motion Graphs[J].ACM Transactions on Graphics,2002(3):473—482.。這在很多方面都很有效—舞譜專家可以創(chuàng)建一個(gè)關(guān)鍵幀動(dòng)畫序列來實(shí)現(xiàn)所需要的運(yùn)動(dòng)轉(zhuǎn)換。我們采用了本質(zhì)上屬于有限狀態(tài)機(jī)的模型,形成一套固有模式。遺憾的是,擴(kuò)展性不是很好,因?yàn)榭赡艿霓D(zhuǎn)換數(shù)量隨著運(yùn)動(dòng)的復(fù)雜性而呈指數(shù)式增長(zhǎng)。拉班舞譜的支撐符號(hào)只指定了從當(dāng)前狀態(tài)開始移動(dòng),因此相同的符號(hào)模式可以導(dǎo)致完全不同的動(dòng)作,這取決于在遇到符號(hào)之前舞者的狀態(tài)。
對(duì)所有第一次接觸拉班舞譜的人來說,支撐的變化和腳步之間的相似之處是顯而易見的。而這種相似性表明,還存在第二種將舞譜轉(zhuǎn)化為動(dòng)畫的方法。事實(shí)上,人們已經(jīng)開發(fā)了一些從腳的位置和時(shí)間來重建雙足運(yùn)動(dòng)的一些技術(shù),包括吉拉德(Girard)②參見:GIRARD M.Interactive Design of 3D Computer-Animated Legged Animal Motion[J].IEEE Computer Graphics and Applications,1987(6):39—51.,以及最近的米歇爾· 范· 德· 潘內(nèi)(Michiel van de Panne)③VAN DE PANNE M.From Footprints to Animation:Computer Graphics Forum[J].1997(4):211—223.。我們采用的正是這第二種技術(shù),它既簡(jiǎn)單又能產(chǎn)生高度可信的結(jié)果,可通過調(diào)整來滿足轉(zhuǎn)化的要求。
范· 德· 潘內(nèi)的算法在優(yōu)化過程中改變了樣條曲線的參數(shù),試圖找到一個(gè)受簡(jiǎn)單動(dòng)態(tài)模型和所謂的舒適項(xiàng)約束的質(zhì)心(COM)的平滑路徑。優(yōu)化過程中,誤差項(xiàng)最小化計(jì)算公式如下:
方程式中εphysics是質(zhì)量加速度的組成部分,它不能通過腿部的簡(jiǎn)化模型(即連接與COM接觸點(diǎn)的線)來實(shí)現(xiàn)。圖2和圖3顯示了單腿站立和雙腿站立的圖解。εcomfort只是一種對(duì)腿部必須伸展或彎曲多少才能達(dá)到接觸位置的度量。
圖3 雙腿站立
支撐符號(hào)到腳步位置和時(shí)間的轉(zhuǎn)換是相當(dāng)直接的。支撐符號(hào)本質(zhì)上指示了下一步的方向,并被定位在譜表上的某個(gè)絕對(duì)時(shí)間。相比之下,腳步的位置是絕對(duì)的,但時(shí)間總是和最后的腳步相關(guān)。為了確定下一個(gè)腳步的位置,我們只需假設(shè)一個(gè)適合當(dāng)前身體模型的步長(zhǎng),并將其乘以步進(jìn)方向矢量。雖然這是該過程的本質(zhì),但步長(zhǎng)也取決于其他因素,如邁步的方向。一個(gè)人通常向前邁出的步伐要比向側(cè)面邁出的步伐大。同樣,步伐的水平高度也很重要,立腳尖邁出的步伐比全腳邁出的步伐要小。如果實(shí)驗(yàn)對(duì)象在跑步或單腳跳,步長(zhǎng)也會(huì)增加,這在舞譜中以空中時(shí)間表示。實(shí)驗(yàn)對(duì)象在空中的時(shí)間越長(zhǎng),步長(zhǎng)(腳的位置到一個(gè)點(diǎn)的長(zhǎng)度)就越大,單腳跳躍產(chǎn)生的步長(zhǎng)比跑步小得多。實(shí)現(xiàn)自然步幅的算法通過試錯(cuò)進(jìn)行了優(yōu)化,從系統(tǒng)的表現(xiàn)可以看出,結(jié)果總體上是令人滿意的。
在生成腳步位置和時(shí)間后,優(yōu)化器被運(yùn)行以生成質(zhì)心路徑。接下來,為腳步生成關(guān)鍵幀,以便在正確的時(shí)間實(shí)現(xiàn)腳步位置,并在步態(tài)的騰空階段指定腳的位置。反向運(yùn)動(dòng)學(xué)被用來對(duì)腿部的其他關(guān)節(jié)設(shè)置動(dòng)畫處理流程。自動(dòng)生成可信的關(guān)鍵幀在范· 德· 潘的原始論文中沒有得到充分發(fā)展,這是我們工作的主要貢獻(xiàn)之一。圖4顯示了“腳步”系統(tǒng)的示意圖。
圖4 腳步系統(tǒng)
腳部關(guān)鍵幀分為三個(gè)獨(dú)立的類別:地面關(guān)鍵幀、騰空關(guān)鍵幀和姿態(tài)關(guān)鍵幀。地面關(guān)鍵幀代表了腳部從著地到抬起的轉(zhuǎn)換過程,其位置和方向是以全局坐標(biāo)來確定的。騰空關(guān)鍵幀決定了在未確定的腿部姿態(tài)的情況下,腳如何從動(dòng)作到著地的過程。騰空關(guān)鍵幀的數(shù)量和位置取決于運(yùn)動(dòng)模式和速度。步行、跑步、跳躍和側(cè)步都需要完全不同的關(guān)鍵幀,由于模式?jīng)]有通過支撐姿勢(shì)和腳步明確表達(dá),所以必須從前后動(dòng)作中推測(cè)。腳的騰空關(guān)鍵幀、位置和方向是取決于臀部的局部坐標(biāo)系。如上文所述。姿態(tài)關(guān)鍵幀是由鄰近支撐欄的姿態(tài)符號(hào)派生出來的,姿態(tài)關(guān)鍵幀的位置是以髖部局部球面坐標(biāo)給出的,而方向關(guān)鍵幀是以踝部局部坐標(biāo)給出的。
腳部的插值引擎很復(fù)雜,因?yàn)楸仨毟櫵谌魏翁囟〞r(shí)間使用的坐標(biāo)系。為了實(shí)現(xiàn)這一點(diǎn),插值狀態(tài)變化的時(shí)間被記錄在一個(gè)單獨(dú)的通道中。
腳在地面上的時(shí)間又被分為三個(gè)不同的階段:部分腳著地(腳跟或腳趾)、全腳著地和腳抬起。在腳跟著地的過程中,腳跟被限制在同一個(gè)全局位置。如圖5所示,在足部接觸時(shí)間的某個(gè)固定的子區(qū)間內(nèi),腳部從著地位置旋轉(zhuǎn)到腳掌位置。腳部圍繞腳跟接觸位置的瞬時(shí)旋轉(zhuǎn)是腳跟著地(顏色較深)和全腳著地角度(顏色較淺)的線性插值。瞬時(shí)腳踝位置(即IK目標(biāo)位置)是由腳的幾何形狀計(jì)算出來的。
圖5 腳后跟著地到全腳著地
對(duì)于腳尖著地,或腳尖著地時(shí)的碾軋,前腳掌被限制在固定的同一全局位置。此外,相對(duì)于腳步方向來說,腳可以被限制在一個(gè)固定的平面上彎曲,或者可以自由地圍繞上軸旋轉(zhuǎn),如當(dāng)主體圍繞腳趾樞軸轉(zhuǎn)動(dòng)時(shí)。第一步是計(jì)算腳踝的位置,假設(shè)腳平放在地面上,如果從這個(gè)位置到臀部的瞬時(shí)距離大于腿長(zhǎng),那么腳趾必須彎曲才能有效地拉長(zhǎng)伸展距離。在這種情況下,要計(jì)算一個(gè)新的腳的方向,使腳踝腳趾矢量與沿著髖部到最初計(jì)算位置的直線上的點(diǎn)對(duì)齊,這個(gè)點(diǎn)正好是在直線上一個(gè)腿長(zhǎng)的位置。然后可以根據(jù)幾何學(xué)算出腳踝的位置(見圖6)。
圖6 腳趾旋轉(zhuǎn)
腳趾關(guān)節(jié)被自動(dòng)控制,使其彎曲以避免穿透地面。這是通過找到以前腳掌為中心,半徑等于腳趾長(zhǎng)度的圓與地面的交點(diǎn)來實(shí)現(xiàn)的。腳趾的方向要與連接前腳掌和正確交點(diǎn)的矢量對(duì)齊。
為腳的騰空階段生成可信的關(guān)鍵幀的任務(wù)取決于許多有時(shí)相互矛盾的因素。更為復(fù)雜的是,該算法必須能夠僅通過足跡提供的位置和時(shí)間信息來區(qū)分不同的運(yùn)動(dòng)模式。
在最簡(jiǎn)單的情況下,即向前行走,只需要一個(gè)位置和一個(gè)方向的關(guān)鍵幀就可以為腳生成一個(gè)可信的路徑。然而,在雙腳交叉的情況下,必須插入額外的關(guān)鍵幀,以避免雙腳相互交疊(見圖7)。對(duì)于跑步或跳躍,需要幾個(gè)關(guān)鍵幀來生成“踢”和落地的準(zhǔn)備動(dòng)作。時(shí)間和位置對(duì)于實(shí)現(xiàn)一個(gè)可信的結(jié)果至關(guān)重要,同樣的關(guān)鍵幀可能無法滿足不同的跑步或跳躍,具體取決于行進(jìn)的速度或距離。例如,跑步和慢跑需要非常不同的騰空關(guān)鍵幀,為了實(shí)現(xiàn)這一點(diǎn),只能根據(jù)在空中的時(shí)間基本關(guān)鍵幀進(jìn)行參數(shù)化的重新定位。
圖7 交叉需要額外的關(guān)鍵幀
一般來說,插入腿部姿勢(shì)關(guān)鍵幀來代替原本自動(dòng)生成的正常騰空關(guān)鍵幀,需要對(duì)姿態(tài)插值施加限制以確保腳不穿透地面。這是通過限制踝關(guān)節(jié)的最小高度來實(shí)現(xiàn)的,使其始終高于腳踝和腳跟的標(biāo)稱距離,踝關(guān)節(jié)被調(diào)整,使腳掌始終保持高于地板或與地板持平。這些措施是必要的,因?yàn)樽藙?shì)與腳步算法計(jì)算出的質(zhì)心路徑無關(guān),否則腳可能會(huì)被迫低于地面。此外,在骨盆和腰部添加了特殊的關(guān)鍵幀,以補(bǔ)償用單腿做動(dòng)作,而另一條腿保持固定在地面上時(shí)明顯的重量不平衡。
在拉班舞譜的支撐欄中,一個(gè)轉(zhuǎn)動(dòng)符號(hào)表示一個(gè)轉(zhuǎn)身或旋轉(zhuǎn)。原有的腳步算法中沒有考慮這一點(diǎn),因此需要進(jìn)行一些修改。我們的解決方案是,將路徑優(yōu)化過程劃分為以發(fā)生樞軸旋轉(zhuǎn)的點(diǎn)為界的子片段。這些點(diǎn)被標(biāo)記為固定的點(diǎn),因此不會(huì)被優(yōu)化算法移動(dòng)。額外的關(guān)鍵幀被自動(dòng)插入到骨盆中,這樣模型就會(huì)按符號(hào)指定的角度圍繞自身的軸線旋轉(zhuǎn)。腳掌固定在樞軸點(diǎn)上,腳后跟抬離地面,但可以繞垂直軸擺動(dòng)。騰空的腳在地面上保持一個(gè)中立的位置。
支撐欄中的保留符號(hào)表示主體暫時(shí)處于靜止?fàn)顟B(tài),在這種情況下質(zhì)心路徑的生成與樞軸旋轉(zhuǎn)以相同的方式處理,也就是說,優(yōu)化發(fā)生在固定端點(diǎn)之間的子段上。
拉班舞譜使用特殊的邊緣符號(hào)來表示運(yùn)動(dòng)是沿著彎曲的路徑發(fā)生的。每個(gè)曲線符號(hào)通常將轉(zhuǎn)彎角度表示為一個(gè)完整圓的一部分。符號(hào)的跨度表示彎曲發(fā)生的支撐變化。轉(zhuǎn)圈的數(shù)量由編輯器在支撐符號(hào)之間進(jìn)行分配。
“拉班舞者”配備了一個(gè)簡(jiǎn)單的用戶界面,如圖8所示,由一個(gè)顯示舞臺(tái)上舞者的渲染、選擇主要攝像機(jī)視角之一的按鈕和一組標(biāo)準(zhǔn)的播放控件組成。渲染子窗口對(duì)鼠標(biāo)活動(dòng)作出反應(yīng),允許用戶通過繞行、平移或縮放虛擬攝像機(jī)來調(diào)整視角??梢詮南吕倪x項(xiàng)中選擇不同的舞者模型,也可以選擇打開或關(guān)閉有聲節(jié)拍器,以及改變從腳跟著地或腳尖著地的運(yùn)動(dòng)偏好。打開對(duì)話框,可從文件菜單欄中調(diào)用一個(gè)“拉班寫作”的文檔??梢赃x擇在舞臺(tái)上顯示計(jì)算出的腳步位置的落地處(見圖8)。
圖8 用戶界面
該界面的一個(gè)重要特點(diǎn)是在屏幕的左側(cè)顯示原始拉班舞譜的同步譜表。隨著動(dòng)畫的進(jìn)行,光標(biāo)在舞譜上向上移動(dòng),并且可以在停止回放時(shí)“拖動(dòng)”光標(biāo)以設(shè)置所需的時(shí)間。
“拉班舞者”是一個(gè)實(shí)用的工作原型—即使不完整,但它已經(jīng)可以作為一種教學(xué)工具。未來的一個(gè)主要研究重點(diǎn)是衍生一種用于拉班舞譜教學(xué)的數(shù)字化表示系統(tǒng)。有別于拉班舞譜傳統(tǒng)的在頁面上的繪制方式,目前拉班舞譜編輯器生成的文檔將舞譜的元素儲(chǔ)存為具有X和Y坐標(biāo)的圖形對(duì)象。嚴(yán)格意義上的圖形化方法的問題在于,雖然它足夠滿足用戶查看或打印舞譜的需求,但譜子本身并不能導(dǎo)出動(dòng)作分析。我們目前的計(jì)劃是制定一個(gè)描述XML結(jié)構(gòu)的語言模式來代表拉班舞譜。我們相信,這種交換格式能更廣泛的應(yīng)用,而不僅僅是創(chuàng)建和傳播舞譜,它可以成為代表人類運(yùn)動(dòng)的標(biāo)準(zhǔn)方式,而這一點(diǎn)到現(xiàn)在為止還沒有做到。
另一個(gè)問題是需要從符號(hào)自動(dòng)生成可信的人體運(yùn)動(dòng)。雖然“拉班舞者”在那些我們有明確符號(hào)的身體部位制成運(yùn)動(dòng)方面做得還不錯(cuò),但身體其他部位的運(yùn)動(dòng)在很大程度上被忽略了,或者以一種特定的方式處理,比如旋轉(zhuǎn)骨盆和背部關(guān)節(jié)來補(bǔ)償腿部動(dòng)作。這需要一個(gè)更復(fù)雜的人體模型,以及根據(jù)它的運(yùn)動(dòng)方式來生成自然的人體運(yùn)動(dòng)。貝爾羅赫(Baerlocher)已經(jīng)生產(chǎn)了一些IK技術(shù)①BAERLOCHER P,BOULIC R.An Inverse Kinematics Architecture Enforcing an Arbitrary Number of Strict Priority Levels[J].The Visual Computer,2004(6):402—417.,這些技術(shù)可以有多個(gè)次要目標(biāo),如保持平衡、注意力集中或四肢定向。雖然這些技術(shù)還不是實(shí)時(shí)的,但還需要找到類似的通用方法。
“拉班舞者”的當(dāng)前版本只處理明確指定姿態(tài)或支撐變化的符號(hào)。拉班舞譜有豐富的符號(hào),這些符號(hào)要么傳達(dá)前后動(dòng)作的相關(guān)信息,如身體各部位之間的空間關(guān)系;要么傳達(dá)風(fēng)格上的概念,如力效(effort)或優(yōu)雅。同樣的,拉班舞譜可以描述多個(gè)舞者之間的互動(dòng),指定接觸和空間上的靠近程度。
在將來,我們計(jì)劃實(shí)施一個(gè)能夠融合多個(gè)來源的動(dòng)畫系統(tǒng)。通過這種方式,“拉班舞者”就能同時(shí)利用更廣泛的動(dòng)畫技術(shù),以便更準(zhǔn)確地生成預(yù)期效果。
這項(xiàng)工作的主要貢獻(xiàn)之一,是證明了使用基于符號(hào)的表述作為一種緊湊而充分的人體運(yùn)動(dòng)交換格式的可行性。我們相信,自發(fā)明拉班舞譜以來的76年,拉班舞譜已經(jīng)發(fā)展成為一種豐富的描述性語言,而數(shù)字版本將非常適合作為這樣一種交換格式。它還可以將目前不同的領(lǐng)域聯(lián)系起來,如舞蹈編排、舞譜、人體動(dòng)畫和動(dòng)作分析。
用于生成人類運(yùn)動(dòng)的程序性技術(shù)的開發(fā),是我們的另一貢獻(xiàn)。這在計(jì)算機(jī)游戲等領(lǐng)域能有更廣泛的應(yīng)用。①參見:MIZUGUCHI M,BUCHANAN J,CALVERT T.Data Driven Motion Transitions for Interactive Games[C]// Eurographics 2001—Short Presentations.Eurographics Association,2001.
致 謝
我們感謝美國國家人文基金會(huì)(National Endowment for the Humanities,ENH)對(duì)美國舞譜局的資助,為這個(gè)項(xiàng)目提供了支持。早期的支持是由美國國家藝術(shù)基金會(huì)(National Endowment for the Arts,NEA)和保護(hù)美國舞蹈的國家倡議(National Initiative to Preserve America’s Dance,NIPAD)提供的。我們也感謝米歇爾· 范· 德· 潘內(nèi)博士對(duì)腳步算法的建議和大衛(wèi)· 埃伯利(David Eberly)對(duì)野魔法(Wild-Magic)3D圖形API使用的授權(quán)。