專利名稱:控制可移動裝置的設(shè)備與方法
技術(shù)領(lǐng)域:
本發(fā)明涉及控制模仿生物的可移動裝置或其二維模擬的設(shè)備,該可移動裝置設(shè)置有人造肢體、用于接收控制信號的裝置及用于生成人造肢體的驅(qū)動信號的裝置,該設(shè)備包括-設(shè)置有用戶用來輸入命令的輸入裝置的用戶界面,-通過第一通信線路連接到用戶界面上的中央處理單元,該中央處理單元包括-存儲關(guān)于該可移動裝置的位置的數(shù)據(jù)的第一存儲裝置;-從所述第一存儲裝置中讀取數(shù)據(jù)的讀取裝置;-從所述讀取裝置接收所述數(shù)據(jù)并在所述位置之間計算插入的運動及相應(yīng)地移動該角色的編輯裝置。
這種配置是從歐洲專利申請0,428164中已知的,該申請公開了在顯示器上顯示諸如人樣生物等移動角色的動畫產(chǎn)生裝置。為了計算所要求的動作,將移動角色分解成諸如手臂、腿等不同部分。在獨立的時間標(biāo)度上分配給這些部分獨立的動作。計算出這些獨立的動作之后,通過將這些獨立的動作加在一個時標(biāo)上而建立角色的組合動作。這些部分的獨立動作是用配置成在從存儲器中讀出的角色的“基本形狀”之間計算插入動作的處理器建立的?!盎拘螤睢倍x為基本配置數(shù)據(jù),即角色在預(yù)定位置上的預(yù)定姿勢。不存儲基本動作軌跡或原子動作。雖然已知的配置能控制動畫角色的平滑動作,仍存在著完善受控動作來呈現(xiàn)更象人或動物的動作的需求。
本發(fā)明的第一目的為提供用于控制看起來象生物的二維或三維角色的動作、向該角色提供盡可能自然,即象人或動物的動作的設(shè)備。
按照本發(fā)明的設(shè)備構(gòu)成用于構(gòu)造能夠象人一樣動作、說話及表達情緒的象機器人的玩偶的設(shè)計的一部分。在本上下文中,“動作”定義為時間上的一連串位置與姿勢,“說話”定義為時間上的一連串特定聲音而“情緒”則定義為表達動作與聲音的方式。在能夠象人一樣動作、說話與表達情緒的玩偶的情況中,動作、說話與情緒必須是同步的。本發(fā)明涉及使玩偶能夠部分地作為指定的情緒與/或指定的話語的函數(shù)而象人一樣動作的設(shè)備與方法。
因此,本發(fā)明的另一目的為提供能使裝置響應(yīng)來自瞬時環(huán)境的信號而移動的動作編輯器/合成器單元。這一目的所需的控制信息必須能在高層上指定。用戶必須能將與所要求的情緒關(guān)聯(lián)的所要求的動作饋入動作編輯器/合成器單元中,后者將用戶提供的說明翻譯成用于該裝置的控制信號。傳輸給所述裝置的控制信號得出自然的(人的)動作。
又一目的為用戶必須能夠?qū)⒅T如憤怒或疲勞等傳統(tǒng)語義中的情緒饋入動作編輯器/合成器單元,此后后者便能將所述情緒包含進玩偶的最終動作中而無須完全新的動作說明。
又一目的為必須有可能快速地對動作說明作出任何糾正。
因此,本發(fā)明提供如上定義的設(shè)備,其特征在于,--所述第一存儲裝置存儲有關(guān)裝置的預(yù)定原子動作的原子動作數(shù)據(jù),--所述編輯器裝置配置成計算亞原子動作并將它們插入鄰接的原子動作之間,要插入前面的原子動作與后面的原子動作之間的任何亞原子動作計算成,使它在開始部分上與所述前面的原子動作而在結(jié)束部分上與所述后面的原子動作重合,從而前面的原子動作、亞原子動作及后面的原子動作的組合動作是平滑而穩(wěn)定的。
利用這一配置,讀取的原子動作之間所需的亞原子動作的計算不僅基于特定原子動作的結(jié)束點及后面的原子動作的起始點并且還基于所提到的第一動作接近其結(jié)束點的進程及后面的原子動作超過其起始點的進程。換言之,所述的編輯器計算延伸超過特定原子動作的結(jié)束點及超過下一原子動作的起始點的附加動作路徑,使得所述路徑能作為一種“粘接劑”插入兩個原子動作之間。原子動作可用數(shù)據(jù)服從諸如人或動物等實際生物導(dǎo)出,從而改進該裝置的組合動作的自然外觀,因為可使原子動作盡可能地象人或象動物。
有利地,本設(shè)備還設(shè)置有第二存儲裝置,其中提供有與裝置的預(yù)先指定的動作有關(guān)的情緒動作數(shù)據(jù),這些動作與設(shè)備模仿的人物的情緒相連接,其中的讀取裝置也裝備成從第二存儲裝置中讀取,及其中的編輯器也裝備成按照用戶輸入的情緒計算亞原子動作。情緒可以諸如反映在特定的面部表情上,這便是嘴與眼瞼的特定位置,這需要諸如玩偶的臉部的特定動作。
再者,設(shè)備上可設(shè)置有第三存儲裝置,提供有聲音數(shù)據(jù),其中還將讀取裝置裝備成讀取聲音數(shù)據(jù),及其中還將編輯器裝備成按照用戶輸入的聲音計算亞原子動作及提供包含聲音數(shù)據(jù)的控制信號。通過加上這一第三存儲裝置,便有可能使該裝置不僅象生物(例如人)那樣動作也能發(fā)出與該生物相關(guān)的聲音(例如說話)。利用這一配置,可以保證使該裝置的嘴作出與發(fā)出的聲音對應(yīng)的動作。
編輯器最好是基于模糊邏輯的以便用戶能以日常語言輸入命令。目前模糊邏輯是廣泛應(yīng)用于編程的一種技術(shù)。這種邏輯能用于不存在精確解或精確求解起來太復(fù)雜的問題。因此,模糊邏輯是用于將用戶用日常語言規(guī)定的命令(例如命令“快走”)翻譯成裝置的動作的流暢模式的有力的、適用的工具。
為了建立用戶借助模擬手段能用來檢驗所期望的裝置的動作的一種電子觀察器,中央處理單元可裝設(shè)有第四存儲裝置,該裝置裝有用于在編輯器所計算的控制信號的基礎(chǔ)上在監(jiān)視器上模擬期望裝置要作出的動作的軟件。
第一、第二與第三存儲器能存儲關(guān)于已用傳感器,例如在活的測試人身上的數(shù)據(jù)服獲得的動作的數(shù)據(jù)。
本發(fā)明還涉及用于控制模仿生物的可移動裝置或其二維模擬的方法,該可移動裝置設(shè)置有人造肢體、用于接收控制信號的裝置及生成人造肢體的驅(qū)動信號的裝置,該方法按照下述步驟執(zhí)行
-通過設(shè)有輸入裝置的用戶界面輸入命令,-按照用戶輸入的命令從第一存儲裝置中讀取關(guān)于裝置的位置的數(shù)據(jù),-計算所述位置之間的插入動作并相應(yīng)地移動該角色,其特征在于,-從所述第一存儲裝置中讀取原子動作,-計算亞原子動作并將它們插入鄰接的原子動作之間,要插入前面的原子動作與后面的動作之間的任何亞原子動作是這樣計算的,使它在開始部分上與所述前面的原子動作并在結(jié)束部分上與后面的原子動作重合,從而前面的原子動作、亞原子動作與后面的原子動作的組合動作是平滑的及穩(wěn)定的。
按照本發(fā)明的進一步有利的方法在其它從屬權(quán)利要求中指出。
下面參照附圖更詳細地說明本發(fā)明,這些圖用圖形展示本發(fā)明的基本原理,而并不限制保護范圍。
圖1為象機器人的玩偶的圖形表示;圖2至4為展示本發(fā)明的工作的方框圖;圖5為動作編輯器/合成器單元的結(jié)構(gòu)的圖形表示;圖6a為用于中央處理單元的存儲器配置的圖形表示;圖6b為在一段時間上伴隨有特定的情緒與特定的話語的玩偶動作的圖形表示;圖7示出用于輸入變量“速度”與“距離”及用于輸出變量“行動”的成員函數(shù);圖8示出極性圖;圖9示出不同運動群之間的關(guān)系;圖10示出用在本發(fā)明中的庫的可能配置。
圖1高度示意性地示出用不同肢體構(gòu)成的玩偶1其中一些肢體能相對于鄰接的肢體在三個獨立方向上互相移動,例如前臂相對于上臂,而其它肢體則只能相對于相鄰的肢體在一個方向上轉(zhuǎn)動,例如下腿相對于上腿。保存有玩偶1的先前指定指令的記錄器示意性地用參照數(shù)字2指示。實踐中,將記錄器2提供在玩偶1的身體中或身體上。記錄器2上設(shè)置有與用戶通信的天線3。
圖2示意性地示出,特定的動作可定義為從特定的位置x過渡到特定的要求位置y。在這一上下文中,還在圖2的上一半中示出能在位置x與位置y之間定義位置z,從位置x到位置y的過渡必須通過位置z進行。動作的持續(xù)時間部分地取決于位置x與要求的位置y之間的過渡的數(shù)目。然而,由于從位置x到位置y的過渡必須盡可能地象自然過渡(這就是說象人的過渡),在圖2的上半部分中的各種過渡上施加了限制并且動作的持續(xù)時間主要由各種位置之間的過渡的持續(xù)時間所決定。
圖2的下半部分示出說話可定義為一連串不同聲音。在說話的情況中,持續(xù)時間主要由各種接連的聲音的持續(xù)時間決定。
圖3示意性地示出可將玩偶1的特定行為分解成各種各樣的子行為。例如這里稱作序列的“問候”行為可分解成頭的三個接連的位置(位置x、y與z)及兩個接連的聲音(聲音1與2)。在本例中,位置x定義為玩偶的頭是直立的位置,位置y是頭彎下的位置而位置z則是頭又直立的位置。在聲音1上玩偶說出詞“Hello”,而聲音2對應(yīng)于詞“I’m Dutchy”。圖3還示意性地示出聲音1必須在從位置x到位置y的過渡中產(chǎn)生,而聲音2則必須在從位置y過渡到位置z時產(chǎn)生。這是因為作為時間的函數(shù)的這一模式向玩偶賦予人的儀容。
圖4示出可以鏈接各種序列(行為)。圖4還示出各肢體可作為時間的函數(shù)并行移動。序列x表示問候行為,如圖3中示意性地示出的。問候行為后面有序列y,在其中玩偶伸出手來。序列y后面又依次有序列z,在其中玩偶說再見。序列y與z與序列x一樣各包括預(yù)定義的位置??蓪⑼媾季幊虨橐幻嫦蚯白?序列q)一面問候(序列x)并伸出手來(序列y)。類似地,在伸出手(序列y)并說再見(序列z)之后可將玩偶編程為往回走(序列r)。序列q與r同樣各包含各種預(yù)編程的位置。正如序列x、y與z一樣。
圖4還示出可為各序列x、y與z編程各種情緒(情緒a、b與c)。例如可將問候編程為快樂方式(情緒a),而伸出手來可以有禮貌地進行(情緒b)而說再見則是衷心的(情緒c)。
玩偶1最好通過經(jīng)由天線3的無線通信接收其輸入數(shù)據(jù)。輸入數(shù)據(jù)最好包括相對于玩偶1的特定起始位置的玩偶的鄰接肢體之間的所有關(guān)節(jié)的角差,結(jié)合聲音,使玩偶能說話。各關(guān)節(jié)的角差包含預(yù)保存的數(shù)據(jù)與/或瞬時生成的數(shù)據(jù),如下面將說明的。
玩偶1的新動作是由用戶3指定的。圖5示出動作編輯器/合成器單元的總體結(jié)構(gòu)內(nèi)的用戶4。用戶4通過用戶界面與中央處理單元6通信,界面包含諸如示意性示出的個人計算機5,該計算機裝備有監(jiān)視器12及鍵盤13。與中央處理單元6的通信通過雙向通信線路11進行。中央處理單元6至少包含編輯器7與讀取器8,下說明它們的功能。中央處理單元6還設(shè)置有各種存儲器用于存儲標(biāo)準(zhǔn)動作的動作存儲器20、用于存儲情緒的情緒存儲器21、用于存儲與聲音相關(guān)的數(shù)據(jù)的聲音存儲器22以及通用存儲器19。當(dāng)然也能設(shè)置存儲其它數(shù)據(jù)的其它存儲裝置。
動作編輯器/合成器單元的結(jié)構(gòu)還包括用于與操作員通信的維護界面15,操作員希望將新信息加到存儲器19至22上。為了這一目的,維護界面15通過雙向通信線路16連接在中央處理單元6上。新信息例如與新的動作類型相關(guān),這種動作已在裝有傳感器的移動測試人的協(xié)助下記錄下來。這可以在所謂的“數(shù)據(jù)服”18的協(xié)助下實施。這一數(shù)據(jù)服18包括諸如上百個各種傳感器,它們記錄測試人員的動作。傳感器信號記錄預(yù)定時間上關(guān)于肢體的空間位置的信息。中央處理單元6生成輸出信號23,該信號是為了使玩偶1以用戶4指定的方式移動而用于玩偶1的控制信號。
模仿人類的動作的軟件包的設(shè)計與實現(xiàn)一般性地描述如下。能作出的動作的部分包括一群“原子”動作,也就是已由操作員預(yù)記錄的基本動作,利用它們有可能構(gòu)成所有可能的動作。
可以在存儲器20至22中獲得記錄的動作。動作的長度可從一幀變化到數(shù)千幀。每秒動畫包括固定數(shù)目的幀。
能夠用編輯器7生成新動作。這些新動作是任意數(shù)目的“原子”動作的組合??赏ㄟ^加上作為情緒與/或速度的結(jié)果的動作而調(diào)整各動作。為了組合原子動作而必須生成的過渡必須得出人類的動作。為了檢驗這些結(jié)果,最好設(shè)置一個電子觀察器。
可將開發(fā)的程序分成兩個不同的階段脫機階段及聯(lián)機階段。在脫機階段中,為了形成新動作,能夠改變、組合、增加動作等等。在聯(lián)機階段中,各動作實時發(fā)生。在聯(lián)機階段中,能用來進行調(diào)整的計算時間較少,因此改變的可能性受到限制。為了能實時執(zhí)行動作,動作是作為相對于時間的接連的位置存儲的。
人體的構(gòu)造是高度復(fù)雜的。人的動作模型因此也特別復(fù)雜。在使用模型時,它只包括最主要的信息,有可能模仿人體的某些動作。除了其它信息以外,模型必須包含關(guān)于肢體的尺度與重量的信息,以及關(guān)節(jié)的可能角度的上限與下限。
例如,可以利用人體的分段模型,人體在其中用例如23段表示。各段包含一個肢體,它具有特定長度及一個關(guān)節(jié),它能相對于鄰接的肢體進行特定的轉(zhuǎn)動。
肢體的自由度是由關(guān)節(jié)在用“偏轉(zhuǎn)”、“俯仰”與“傾斜”指定的三個獨立方向上的轉(zhuǎn)動可能性確定的。偏轉(zhuǎn)角為在橫向平面中的轉(zhuǎn)動,俯仰角為在赤道平面中的轉(zhuǎn)動而傾斜角則為在正平面中的轉(zhuǎn)動。各方向具有最小與最大偏角。如果在特定方向上沒有偏角,最小偏移便等于最大偏角。
動作是通過改變偏轉(zhuǎn)角、俯仰角與/或傾斜角生成的。只要角度在偏角限度內(nèi),便生成人體可執(zhí)行的動作。為了使動作呈現(xiàn)為人的動作,角度必須按照預(yù)定的規(guī)則改變。這防止產(chǎn)生看起來不象是人的動作。
在生成玩偶1的動作模式時應(yīng)避免不穩(wěn)定的動作。不穩(wěn)定性定義為加速度的改變速度或位置的三次導(dǎo)數(shù)。兩點之間的最平滑的動作為不穩(wěn)定性最小的。實際上,最小值永不可能是實際最小值,因為在這一情況中的動作會持續(xù)無窮大的時間。實踐中,所使用的值為在要求的速度上的可能的最小值。
除了作為要生成的動作的參數(shù)的不穩(wěn)定性之外,重心的位置也是重要的參數(shù)。為了防止玩偶1失去平衡,只能將重心設(shè)定為來自相對于玩偶1的腳的一組預(yù)定義的位置中的一個位置。
人們感受不同時動作也不同換言之他們“有情緒地”動作。憤怒的人的動作與快樂或悲傷的人的動作不同。在情緒的影響下也能產(chǎn)生速度變化。這意味著給定的動作相對于時間呈現(xiàn)的方式能夠改變。有時情緒只在動作的速度上具有影響,但有時情緒也影響動作本身。例如由于質(zhì)量慣性的原因,速度改變也能導(dǎo)致不同的動作。
通??蓪⒁粋€人的相對長的動作細分成較小的動作。可將相對長的動作看成一系列用過渡連接的較小的動作,如圖2、3與4中所示。例如可將一個動作細分為三步,走、坐與吃。還能依次將這些較小的動作本身細分成作為最小的識別動作單元的“原子”動作。例如可將走路看成是一系列步伐。這意味著可將動作細分成帶有預(yù)定義的起點與終點的“原子”動作。必須用過渡動作將一個動作的終點與后面的動作的起點互相連接,過渡動作必須呈現(xiàn)為人類的動作。必須原封不動地將起點與終點互相“粘接”,這便是編輯器7的任務(wù)(圖5)。
帶有中間過渡的接連的動作一起形成為了完成該動作關(guān)節(jié)必須經(jīng)過的路徑。通常為了執(zhí)行某一動作要使用一個以上關(guān)節(jié),這意味著標(biāo)識一個特定動作存在著各種路徑。對于這些關(guān)節(jié)中的每一個,必須將路徑翻譯成偏轉(zhuǎn)、俯仰與傾斜角。
這里最重要的問題是必須將用戶4用正常日常語言指定的動作的描述翻譯成玩偶1的動作。該動作可以是已可在存儲器20至22中獲得的,但并非一定如此。如果不是這樣,則必須計算該動作。
換言之,用戶4用日常語言思考而計算機要求精確值。這兩種方式通常并不互相一致。由于從一個域到另一個域的翻譯不是1∶1的關(guān)系,翻譯中需要一定技巧?!澳:边壿嫷氖褂檬亲龅竭@一點的有力工具,因為這種邏輯能用自然概念工作。這種自然概念能與人的情緒相關(guān)。“模糊”邏輯的使用將在說明書中稍后說明。
通常將情緒細分成七大組驚奇、渴望、反感、憤怒、歡樂、悲傷及中性。這些情緒及其組合構(gòu)成一切可能的情緒。其它情緒,即特定情緒的另一種說法,必須用這七種基本情緒表達。當(dāng)然,每一個人都有自己對情緒的解釋,因此必須為新人指定新的情緒,一旦描述了這些新的情緒,便能將它們加到任意動作群上。如果特定的情緒不能得到動作,則編輯器7本身可作出嘗試從動作群中檢索其它動作并將它們用在所關(guān)心的功能上。因此,編輯器7必須具有一定程度的智能以便能執(zhí)行其任務(wù)。編輯器7必須能為指定的動作選擇正確的原子動作。當(dāng)然,迄今為止尚不能保證組合動作將得出正確表現(xiàn)。這是高度依賴于已能在存儲器中獲得的動作及依賴于編輯器已選擇的動作互相匹配的可能性的。
使用自然日常語言作為輸入手段是與一種動作能以不同方式表達這一問題關(guān)聯(lián)的。表達“快走”與“跑”表示同一動作,但這些概念之間沒有(尚未)連接。然而,這一連接可用“模糊邏輯”建立,結(jié)果編輯器將是強有力的設(shè)備,因為通過調(diào)整例如“速度”,便能無需與用戶4的任何交互作用而試驗不同的動作群。
圖6a示出屬于中央處理單元6的存儲器的可能配置。各種與人的動作對應(yīng)的動作路徑是存儲在動作存儲器20中的。例如,存儲區(qū)20a包含關(guān)于“行走”動作的位置數(shù)據(jù),而存儲區(qū)20b則包含關(guān)于“坐”的位置數(shù)據(jù),存儲區(qū)20c包含關(guān)于“揮手”的位置數(shù)據(jù),存儲區(qū)20d包含關(guān)于“說話”的位置數(shù)據(jù),存儲區(qū)20e包含關(guān)于“睡覺”的位置數(shù)據(jù),而存儲區(qū)20f包含關(guān)于“握手”的位置數(shù)據(jù)。
如上面指出的,可將各動作路徑分解成原子動作。
情緒存儲區(qū)21a包含例如關(guān)于“友好”情緒的位置數(shù)據(jù)。這些數(shù)據(jù)能與身體的姿勢相關(guān),但特別是與嘴唇及眼瞼的位置相關(guān)。前面已經(jīng)在諸如H.Kobajashi等人的“Study on face robot for active human interface”,I.E.E.E.International Workshop on Robot and Human Communication,Science University of Tokyo,1993,中描述過其面部能夠用上面定義的七種基本情緒表達各種情緒的方式構(gòu)成的機器人的頭部。
例如,在存儲區(qū)21b中存儲與情緒“驚奇”相關(guān)的動作路徑,而在區(qū)21c中存儲與情緒“憤怒”相關(guān)的動作路徑。當(dāng)然,情緒存儲器中還包括存儲其它基本情緒的動作路徑的其它存儲區(qū)。
在通過玩偶1實時播演記錄的數(shù)據(jù)時,必須將三層,即聲音(說話)、動作與情緒疊加在一起。各方面更詳細地示出在圖6b中,其中這三層是用時間上的一實例展示的。例如,玩偶1可能已編程為行走、握手及說話一段預(yù)定的時間,在這一期間玩偶1是友好的。所述預(yù)定時間段后面可以跟隨后續(xù)時間段,在其中玩偶1在驚奇的同時說話?,F(xiàn)在盡可能地從可獲得的標(biāo)準(zhǔn)動作中讀出相關(guān)動作,然而中間過渡則必須在編輯器7的協(xié)助下計算(圖5)。
為了充分利用玩偶1,必須事先編程動作。這意味著必須為特定的動作將值分配給各關(guān)節(jié)的偏轉(zhuǎn)、俯仰與傾斜角。很清楚,對于存在著例如20個以上關(guān)節(jié)的人形玩偶而言,這是一項非常復(fù)雜的或甚至不可能的任務(wù)。然而,可以有各種方法使玩偶移動而沒有必要編程每一個關(guān)節(jié)。
第一種方法涉及記錄測試人所作的動作。測試人執(zhí)行玩偶1要作出的動作,測試人穿著如上所述的所謂的數(shù)據(jù)服18。偏轉(zhuǎn)、俯仰與傾斜角是由數(shù)據(jù)服確定的。然后將這些關(guān)節(jié)角加到玩偶1上。這一方法是復(fù)雜、昂貴與緩慢的,因為必須事先執(zhí)行與記錄每一種動作。如果只采用這一方法,結(jié)果也是不能調(diào)整動作,其結(jié)果是如果必須作出與已記錄的動作有些不同的動作,必須整個記錄該新的動作。此外,不能將情緒加到記錄的動作上,其結(jié)果是必須為各有關(guān)的情緒編程與單個概念(諸如“向前行走”)關(guān)聯(lián)的特定動作。
第二種可能的方法與在高層上說明動作相關(guān)。這意味著給出動作的完整描述。然后按照數(shù)據(jù)說明計算動作本身并將其用作用于玩偶1的輸入。然后便能執(zhí)行各指定的動作并適應(yīng)各情緒及速度。這一方法需要長的計算時間,因為必須為各關(guān)節(jié)計算值。人的動作的所有特征及人體的力學(xué)特征都必須同樣考慮進去。這一方法的另一缺點是不可能在高層上指定每一種動作。一些動作無法指定因為它們太復(fù)雜。結(jié)果不能用這一方法執(zhí)行這類動作。
第三種方法為前兩種方法的組合。在這一第三種方法中,所要求的動作是由穿著數(shù)據(jù)服18的測試人執(zhí)行的。記錄測試人執(zhí)行的動作并例如通過維護界面15(圖5)將其存儲在動作存儲器20中。然后便有可能在高層上指定特定的要求動作并利用存儲在動作存儲器20中的信息。為了建立要求的動作,在編輯器7的協(xié)助下將記錄的動作互相連接。以這一方法計算的動作可用作對玩偶1的輸入。這一方法的優(yōu)點是沒有必要在每一時間點上記錄完整的各動作或計算整個動作。這一方法的缺點是實際上動作存儲器20提供有原子動作,其結(jié)果是必須以使整個動作仍呈現(xiàn)人類的動作的方式計算各種相連接的原子動作之間的過渡。此外,還必須有可能依賴于情緒所確定的限制來調(diào)整原子動作。這一第三方法比第一方法更靈活并比第二方法明顯地占用較少計算時間。
作為總結(jié),按照上述第三方法,動作編輯器/合成器單元執(zhí)行下述步驟1.在穿著數(shù)據(jù)服18的測試人的協(xié)助下記錄動作;2.將記錄的動作整個地或者分解成不同的原子動作存儲在動作存儲器20中;3.如果要建立新的人類動作,利用來自動作存儲器20的動作及原子動作。
新動作是通過在高層上指定要求的動作與要求的情緒設(shè)計的。如上所述,指定的動作已經(jīng)分解成出現(xiàn)在動作存儲器20中的原子動作了。讀取單元8從動作存儲器20中讀取這些原子動作,同時考慮到所要求的速度及指定的情緒。指定的情緒可以在指定的動作上加上限制與/或增加其它肢體(例如面部)的動作。有可能指定的動作已記錄為帶有指定的情緒,從而可以從動作存儲器20中讀出整個相關(guān)的動作。如果不是這樣,則必須由動作編輯器/合成器單元本身組合該動作。
讀出了動作存儲器20中可獲得的所有必要動作之后,必須將它們組合,從而產(chǎn)生單一的流暢動作。只有在動作的說明中不存在沖突時這才是可能的。例如,在為同一肢體指定了兩個或更多動作時或者在同一時間點上兩上不同的肢體必須在同一位置上時便可能存在沖突。這些沖突必須在執(zhí)行相關(guān)動作之前確定。如果沒有沖突,便能生成流暢的動作。
為了事先能預(yù)測所要求的動作,希望也能訪問電子觀察器,后者可用來模擬玩偶1的要求動作并能將其顯示給用戶。這種電子觀察器可能已實現(xiàn)在中央處理單元6的存儲器19中。然后可將模擬的動作三維地顯示在屏幕12上。電子觀察器旨在向用戶4提供能從各種視角上觀察記錄的動作及生成的子動作的組合的工具。這在中斷現(xiàn)有的動作并使現(xiàn)有的動作部分互相流通時提供幫助。此外,能夠?qū)崟r跟蹤建立的動作,這樣便使用戶有可能根據(jù)需要糾正動作。
可以用作電子觀察器的各種工具是已知的,例如AVS程序。這是提供非常強有力的觀察系統(tǒng)的高度復(fù)雜的程序。此外還有稱作“JACK”的動畫程序,它是為相對于人們必須用來工作的設(shè)備的人體工程學(xué)要求的目的而研制的?!癑ACK”程序提供人體的詳細三維圖象。
當(dāng)在電子觀察器的幫助下顯示模擬的動作時,利用了存儲在動作存儲器20中的動作。動作存儲器20以及情緒存儲器21能包含用于不同尺寸的各種玩偶的信息。
電子觀察器程序能分成兩個不同的階段,即聯(lián)機階段與脫機階段。在聯(lián)機階段中,在電子觀察器的幫助下實時播放存儲的動作。如果愿意,為電子觀察器輸出的信號也可饋入玩偶1。在這一階段中與用戶4交互作用的可能性受到限制,因為已占用了可獲得的計算時間的相當(dāng)大的部分。
在脫機階段中,用戶具有對所要求的動作的全部控制。在這一階段中根據(jù)需要編輯、存儲動作并使之可見等。
為了生成完整的動作,如上所述必須用流暢的過渡將存儲在存儲器中的動作“粘接”在一起。所述的“粘接”在一起比將來自存儲器的原子動作簡單地互相連接要復(fù)雜得多,因為一個原子動作的終點有可能與下一個原子動作的起點不符合。必須計算不單純地依靠這兩個原子動作的起點與終點的過渡。為了得到流暢的過渡,還必須研究一個原子動作的結(jié)束部分及下一原子動作的開始部分。
不能從存儲器中讀出要計算的過渡。過渡是自動地插入必須互相連接的兩個接連的原子動作之間的。過渡需要多長取決于這兩個接連的原子動作。因此事先不可能預(yù)計過渡將要占用的時間長度。當(dāng)一個原子動作的終點與后一原子動作的起點之間的距離增加時,便需要更多的時間。此外,過渡還取決于用戶指定的表情,因為情緒在要執(zhí)行的動作上施加限制并且可能需要其它肢體的附加動作,諸如嘴與眼瞼的動作。
為了生成流暢的動作,只是計算一個原子動作的終點與后一原子動作的起點之間的流暢過渡是不夠的。過渡的開始部分必須精確地遵照第一動作的模式而過渡的結(jié)束部分則必須遵照第二原子動作的模式。因此,過渡實際上必須在第一原子動作的終點以前開始并在第二原子后隨動作的起點之后結(jié)束。如果原子動作之一非常短,計算出的過渡可能完全重疊所述原子動作。這意味著還必須遵照所述短原子動作以前及以后的整個動作的模式。
從而,便有可能通過將短的原子動作互相連接來生成新的動作。為了使裝置按照用戶輸入的命令執(zhí)行流暢的動作,編輯器7的任務(wù)便是在已經(jīng)從存儲器20-22中讀出的原子動作之間計算所需的亞原子動作并將這些亞原子動作插入已讀出的原子動作之間。
在所有時間,動作存儲器20都能被測試人借助數(shù)據(jù)服18執(zhí)行的動作補充。數(shù)據(jù)服18中的傳感器所檢測到的身體位置或者能通過維護界面15直接提供給中央處理單元6或者能首先保存在諸如軟盤等適用于這一目的的數(shù)據(jù)載體上,然后能被維護界面15讀取。以類似的方式,有可能利用作用在測試人面部的傳感器采集關(guān)于與特定的情緒相關(guān)的面部表情的數(shù)據(jù)。然后可通過維護界面15將所述面部表情加到情緒存儲器21中。
同樣,可將與發(fā)出特定的字的聲音相關(guān)的下顎與嘴唇的動作在傳感器與所保存的相關(guān)數(shù)據(jù)的幫助下與關(guān)于聲音本身的數(shù)據(jù)一起通過維護界面15記錄在聲音存儲器22中。
當(dāng)在同一時間點上要用不同的肢體執(zhí)行兩個或更多動作時,采用了堆積技術(shù)來控制這些同時的動作。因為一個移動肢體能影響其它肢體的動作,在其它肢體動作上施加了額外的限制。如果已為特定的肢體指定了特定的動作,為了使為該肢體指定的動作成為可能,其它肢體也許同樣必須移動。這被翻譯成有關(guān)的關(guān)節(jié)的偏轉(zhuǎn)、俯仰與傾斜角的附加限制。
在生成特定的動作時這不一定是正確的。因此編輯器提供了用于編輯生成的動作的設(shè)施。編輯能涉及諸如速度或相關(guān)情緒。編輯能脫機或聯(lián)機進行。在聯(lián)機編輯的情況中,只可能在運行中的程序上加上少許改變,因為這時能得到的計算時間是較短的。
對于不同的情緒某些動作是不同的。例如,人在快樂與憤怒時走路的姿勢不同。因此,存儲器中包含與不同情緒相關(guān)的不同動作。如果選擇了特定的情緒,便從存儲器中讀出與該情緒相關(guān)的動作。在聯(lián)機階段中情緒的表達只能在選擇的情緒中編輯。例如,如果在“悲傷”情緒中執(zhí)行動作,在該動作期間這一情緒不能改變成“快樂”。
這一點也適用于在速度的情況中??赡芤言诖鎯ζ?0中保存了各種不同速度的要求的動作。在脫機階段中作出關(guān)于速度的假設(shè)。在聯(lián)機階段中只能在與存儲在存儲器20中的速度相關(guān)的動作的限制內(nèi)編輯與該特定的選擇的速度相關(guān)的動作。例如在一個動作中不可能將快走變成慢走。
如果用戶4沒有指定情緒或速度,則能將編輯器編程為作出關(guān)于情緒或速度的正確選擇。
已研制出用于通過組合存儲在庫中的預(yù)記錄的動作而建立新動作的例程。這一組合應(yīng)得出“人(或動物)的動作”,這意味著例程生成的動作應(yīng)很好地接近真人(或動物)的動作。
這些例程并不意味著從零開始生成人(或動物)的動作。這些例程建立的動作象人(或動物)的動作,但并不保證人類以相同方式執(zhí)這些動作。
組合動作所需的數(shù)據(jù)是由用戶界面提供的。這意味著用戶界面將要組合的動作的標(biāo)識符傳遞給例程。例程從庫中檢索數(shù)據(jù)。例程建立的動作存儲在庫中,并將對應(yīng)的標(biāo)識符返回給用戶界面。
情緒與速度是所謂的修飾因子。它們都對動作產(chǎn)生自己的影響。無法描述這種影響,因此只能從帶有該情緒與速度的現(xiàn)有動作中推定這種影響(如果完全可能)。
在指定動作時,有可能在庫中得不到與這一運動(motion)組合的情緒與速度的特定組合。
對這一情況作出反應(yīng)的巧妙方法為找出最符合的動作,但現(xiàn)在要考慮到所要求的情緒與速度。不檢驗運動本身。選擇動作的標(biāo)準(zhǔn)取決于所要求的情緒與該動作的情緒的相似性。對于速度也同樣適用。因此必須提供用來確定情緒之間的符合性的某些知識。對于不同的運動群(motion group),可能存在用于比較情緒與速度的不同約束。
對后兩種方法的擴展包括在作為另一種運動群(用自然語言表示的)的較慢(或較快)版本的運動群之間進行連接。
因為情緒與速度的數(shù)目幾乎是無窮的,它們只能在用戶的幫助下指定。它們只能用自然語言指定,并可通過給出一個或兩個字的描述來增加。
鑒于只有七種基本情緒,任何新情緒應(yīng)相對于各基本情緒給出。用戶必須指定新情緒及它們的聯(lián)系。為了保持在自然語言水平上,將提供關(guān)鍵字的模糊集合來指定這些聯(lián)系。
最后一種方法可擴展成指定與當(dāng)前情緒具有天生聯(lián)系的情緒的聯(lián)系。這意味著沒有必要指定與基本情緒的所有聯(lián)系,因為大多數(shù)與新的情緒沒有任何聯(lián)系。
速度沒有這樣復(fù)雜的聯(lián)系。新的速度可被賦予線性度量上的值。
庫的目標(biāo)為提供動作、情緒、速度與聲音的完整集合。
知道了不可能用帶有中性情緒的運動來檢索帶有任意情緒的運動,便清楚了必須記錄帶有不同情緒的動作。
對于速度稍為容易一些。速度的小的變化導(dǎo)致動作的小的變化,但當(dāng)速度增加或減小得越來越多時,動作便變成了新的動作。
盡管如此,還是可以仿效這一知識。記錄兩個不同的運動以及通過組合這兩個記錄的運動試驗并找出中間運動要容易得多。
既然有了運動群,是否應(yīng)將群分成只存儲一個動作,以及帶有多種速度的一種情緒或帶有多種情緒的一種速度的較小部分?這一方法的問題在于通常在單個文件中只有非常少的動作,所以從現(xiàn)有的動作組合新的動作需要一張收集現(xiàn)有動作的表。否則程序不知道一種特定運動的哪些動作存在。這一方法的優(yōu)點是能在線性時間中找到特定的動作。
因此本方法將建立運動群,并將它們存儲在不同的文件中。這一文件包含帶有任何情緒與任何速度組合的這一特定運動。
聲音是是特別的情況。只需記錄與存儲它們。它們不能象動作那樣修改,所以應(yīng)記錄角色必需說的任何事情。
編輯器7為可用自然語言指定動作的工具。動作包含運動、情緒、速度與聲音。因此只能對動作進行描述。程序并不使用它們,意味著程序不理解描述。它們只能作為對存儲器的幫助給出。它們能用來選擇與指定動作等。
總是指定默認(rèn)的動作。默認(rèn)的運動是由程序從小的動作中構(gòu)成的。它們是從帶有小的動作的庫中隨機選擇的并在這些動作與要求的動作干擾時能在時間上移位。它可以包含所有種類的不同運動,如呼吸與眨眼等。
編輯器7是最終接納或拒絕動作的工具。在第一瞬間中它將試圖找到指定的動作。當(dāng)這一點失敗時,便利用描述尋找取代要求的組合的情緒與速度的其它組合。然后需要低級層來將這些組合組合成新的動作。并將結(jié)果呈交給用戶。
為了指定動作,提出了能在其上放置要求的行動的時間線。存在著兩種從庫中選擇動作的供選擇的方法。它們可以通過從庫中取出帶有要求的情緒與速度的運動而精確地指定。但這一動作并不存在時,便不能選擇而只能通過指定該運動群來選擇。這將采用默認(rèn)的情緒與速度。
粘貼與堆積是非常不同的操作。粘貼通常在比堆積少的動作上工作。粘貼只要將兩個不同的動作粘接在一起。但在特定的時間上指定的所有動作都必須堆積。實際上,低級層并不知道有多少動作必須堆積。
程序包含能展開的一個長的行動。編輯器7可用來組合運動、情緒、速度與聲音。能將包含較小的運動的動作分割開,檢索這些較小的運動。通過這一方法可利用生成的部分運動來建立新的運動。只要存在組合的動作,便能進行分割。
在一個時間上可能只有一個總體情緒。當(dāng)兩個組合的動作不具有完全相同的情緒時,將由最強的動作(帶最高優(yōu)先級的)提供情緒。但在完成分割時,便恢復(fù)原來的情緒。
在某一時間上可存在多種速度。但對于一段只存在一種速度。與情緒一樣,最強的動作提供速度。
觀察器在建立新的動作的過程中將是有用的工具。它對于分解記錄的運動及選擇動作的部分是有用的。沒有它甚至不可能檢驗動作指定的結(jié)果。
在執(zhí)行動作時觀察器應(yīng)能穿過一定的路徑以便從不同的視點顯示圖形。這些路徑稱作軌跡。
應(yīng)當(dāng)給予用戶指定模型的配置的可能性。用于檢索模型的配置的方法為通過使用段模型的性質(zhì)。這一模型可作為一種樹來觀察,隨機地將基底選擇為骨盆。每一段包含一個關(guān)節(jié)及一根“骨頭”。肢體從基底構(gòu)成樹枝。
模型中最小的結(jié)構(gòu)為段。一段為一條肢體與對應(yīng)的關(guān)節(jié)的組合。為了建立模型的結(jié)構(gòu),必須將各段相連接。除了基底段之外,各段具有一個祖先段。祖先段是將當(dāng)前段連接在模型上的段。各段可具有若干后代。
人所執(zhí)行的運動可粗略地分成兩類循環(huán)運動與非循環(huán)運動。
因為抽樣率是不變的,因此每幀的時間是不變的,不同速度的循環(huán)運動也需要不同數(shù)目的幀。例如“慢走”的一個循環(huán)可能占用60幀,而例如“快走”可能只需要40幀。這意味著在建立新運動時,這一運動的幀時間也必須是不變的。一種建立具有不變的幀時間的運動的技術(shù)為定標(biāo)(scaling)。定標(biāo)一運動時,在該運動上加上或去掉幀。以兩種方式使用定標(biāo)。第一種方式是當(dāng)運動是用與軟件中所使用的幀時間不同的另一種幀時間記錄時。當(dāng)必須在庫中不能得到的速度上建立運動時也使用定標(biāo)。這一新運動必須從庫中可得到的運動中建立。
在用戶界面中,設(shè)計了記事板。這意味著用戶從庫中選擇運動并將它們放在時間線上。時間線上放置運動的位置設(shè)定該運動的起始時間與結(jié)束時間。在設(shè)計程序時,由用戶界面生成一張事件表。然后將這一事件表送至運動例程。
在這些例程中,分析該事件表來確定應(yīng)在何處進行堆積與粘貼。在確定了這一點時,便進行堆積與粘貼。堆積與粘貼得出一組庫運動。利用這些庫運動來建立記錄板上指定的運動。
因為運動應(yīng)當(dāng)開始的點或運動應(yīng)當(dāng)結(jié)束的點永遠是不同的,運動的開始與結(jié)束不能加到庫中。在循環(huán)運動開始時,身體通常不在開始動作所要求的狀態(tài)中。
存在著兩種方法來開始循環(huán)動作。最簡單的方法是從當(dāng)前的姿勢移動到動作的第一幀的姿勢只需要計算從當(dāng)前的姿勢到開始姿勢的過渡。另一種方法是建立從當(dāng)前狀態(tài)到最佳匹配狀態(tài)的過渡。用這一方法建立的過渡比用第一種方法計算的過渡短。最佳匹配是通過計算當(dāng)前姿勢與循環(huán)運動中每一幀的姿勢之間的距離找出的。距離是通過將兩種姿勢中對應(yīng)關(guān)節(jié)的值相減而計算出的。將差的絕對值相加。所有的差的相加結(jié)果給出兩種姿勢之間的距離。
當(dāng)同時指定了若干運動時,運動的堆積意味著對肢體的控制。為了正確地處理這些并發(fā)的運動,賦予運動優(yōu)先級。
當(dāng)同時執(zhí)行兩個或更多運動時,關(guān)節(jié)的角值可被一個以上運動所改變。因為在一個時刻關(guān)節(jié)的角值只能有一個值,必須為關(guān)節(jié)的值作出選擇。同時進行的運動越多,堆積越困難。
某些庫運動包含關(guān)于對運動本身不必要的肢體的信息。例如在庫運動“行走”中,主肢體為行走必需的肢體。手臂的運動不是行走所必需的。但大多數(shù)人在行走時移動他們的手臂。因此將手臂運動加到庫中作為默認(rèn)運動。這些默認(rèn)運動具有低優(yōu)先級,這意味著它們可被任何指定運動改變。
在同一時刻上可為某一肢體指定若干運動。因為在一個時間上只能作出一個運動,需要選擇一個運動。只有當(dāng)弄清楚哪一個運動是正確的時才能做到這一點。為了能作出正確的選擇,賦予各運動一個優(yōu)先級。
存在著若干種運動?!葜埂窃跊]有指定其它運動時作出的動作。休止是由軟件自動選擇的。這一動作可被任何指定運動取代。因此休止動作具有非常低的優(yōu)先級。所謂的默認(rèn)運動被賦予較高的優(yōu)先級,因為它取代休止動作。另一類運動便是由另一條肢體的運動引發(fā)的肢體運動。賦予這一運動比默認(rèn)運動高的優(yōu)先級,因為移動另一條肢體時必須作出此運動。將最高優(yōu)先級賦予直接指定的運動。
運動的定標(biāo)意味著在運動上增加幀或從運動上去掉幀。進行定標(biāo)來改變幀時間或改變運動中的幀數(shù)。
在通過組合兩個存在的運動來建立一個不存在的運動時也需要進行定標(biāo)。只有在兩個運動具有相同的幀數(shù)時才能組合它們。因此在將兩個動作組合之前必須將它們定標(biāo)到新運動的幀數(shù)上。
定標(biāo)能通過求幀的平均值完成。當(dāng)必須增加幀時,新幀是通過復(fù)制原來的幀或組合幀建立的。在求平均值時用一個因子來指定各原始幀的權(quán)重。各幀采用多少取決于原始幀的開始與結(jié)束時間及新幀的開始與結(jié)束時間。這些開始與結(jié)束時間不一定是絕對時間。時間也可以是老幀與新幀之間的比。在必須去掉幀時,也將幀組合來建立新的幀。
智能是必須對動作進行定義的方式的一部分。其意圖是采用自然語言可簡化用戶界面的使用。程序需要一定形式的智能來知道例如‘快與笨拙地走’意味著什么。在這一語句中可以識別出三個部分‘走’、‘快’與‘笨拙’。‘走’表示記錄的運動的描述對于這一點不需要智能。另一方面‘快’為速度,中性運動的修飾詞。對于任何記錄的運動這種速度應(yīng)表示為(幾乎)相同的速度。對于情緒‘笨拙’也一樣對于任何運動,‘笨拙’應(yīng)差不多表示相同的情緒。如果記錄每一種運動,這將沒有什么意義然而這不是真正的意圖。如果記錄了足夠的運動并將它們存儲在庫中,將必須從存在的運動中建立新的運動。為了使程序知道某一運動看起來怎樣,必須知道指定的情緒和速度與其它情緒和速度的聯(lián)系。只有這樣,才能從存在的動作建立新的動作。
在討論將自然語言連接到界面上的方法之前,我們將對模糊邏輯作一介紹。
假想你在路上的一輛車中。你必須調(diào)整你對周圍的車流的行為并與前面的車輛保持一定距離。因此你在做其它事情的同時觀察車子的速度及與下一輛車之間的距離。在這一信息的幫助下,你應(yīng)用剎車、加速器等。實際上,你接收兩種輸入,速度與距離,并從中推導(dǎo)出輸出,即行動。該推導(dǎo)過程被模擬,但在此之前,必須定義一些變量。
為了簡化這一例子,將不同的變量分成幾個部分。將速度分成慢、中等與快。將它們稱作成員。
各成員是定義在其變量的一定間隔上的成員函數(shù)(membershipfunction)?!奥睆拇蠹s10mph開始一直繼續(xù)到35mph,等等。在其曲線到達頂部(15-30mph)的情況下“慢”是真正的慢。25到35mph的間隔是一定程度的慢與一定程度的中等速度。25mph為慢的成分多及稍有中等速度。30mph為慢與中等速度各半,而35mph是稍慢及中等速度成分較多。對于距離與行動,類似的推理也成立。這意味著在一定的間隔中可以有一個以上的成員是有效的。這為從一個成員到另一個成員提供平滑的過渡??蓪⒊蓡T函數(shù)描繪成任何類型的圖從鐘形圖到三角形以及它們之間的任何形狀。圖7中說明這一點,其中示出兩個輸入變量(速度與距離)及輸出變量(行動)的成員函數(shù)。
行動分成能執(zhí)行的不同行動。下面是屬于這些變量的規(guī)則庫的一部分。速度與距離稱作前件,行動稱作結(jié)果。在這一實例中,各變量在每一條規(guī)則中至多使用一次。
-如果速度為慢且距離為長則行動為加速-如果速度為慢且距離為短則行動為剎車-如果速度為中等且距離為中等則行動為穩(wěn)定-如果速度為快且距離為長則行動為加速
-如果速度為快且距離為中等則行動為穩(wěn)定-如果速度為快且距離為短則行動為氣袋推導(dǎo)過程是通過估計規(guī)則庫模擬的。規(guī)則庫中的每一條規(guī)則覆蓋不同組合的總區(qū)域的一小部分。如果規(guī)則庫是嚴(yán)格定義的,則整個區(qū)域?qū)⒈桓采w。
對于速度與距離的任何兩個值(在值域內(nèi)的),這些變量的不同成員具有一定程度的成員資格度,從0(無)到1(完全)。一個特定的輸出成員的成員資格度越高,它在最終結(jié)果上的影響越大。在各規(guī)則中,將這些值填入,得出該規(guī)則的輸出成員的成員資格度。這實際上是該規(guī)則的真實性程度。累計一個輸出成員的不同成員資格度,然后應(yīng)用去模糊性方法(defuzzification method)產(chǎn)生最終結(jié)果。下表示出輸入組合的一個實例。速度與距離兩者都不是精確定義的速度有些慢與有些中等;距離有些中等與有些長。這意味著若干規(guī)則可能有些活躍,導(dǎo)致一個以上的有效輸出成員。在這一實例中將前件的最小值用作輸出成員的值。加速與穩(wěn)定各為0.4真實,導(dǎo)致在加速與穩(wěn)定之間某處的值。
慢0.6長0.4加速0.4慢0.6短0.0剎車0.0中等 0.4中等 0.6穩(wěn)定0.4 行動快0.0長0.4加速0.0 1.0m/S2快0.0中等 0.6穩(wěn)定0.0快0.0短0.0氣袋0.0速度=28及距離=60的實例得出行動=1.0。
得出輸出成員的成員資格度有許多方法,也有許多方法來取得輸出的最終值。前者可利用前件的最小或最大成員資格度得出;后者可取加權(quán)平均值產(chǎn)生。
成員數(shù)目越多結(jié)果越精確,但另一方面不同規(guī)則的數(shù)目變得非常大。所以必須找出黃金中位數(shù)。
下面說明模糊邏輯的使用。
所采用的模型包含七種基本情緒。和色彩相似,任何可能的情緒都應(yīng)使用基本情緒檢索。因此必須完成某些情緒的構(gòu)成。
與所有基本情緒的聯(lián)系在所有情況中,一種新的情緒必須與至少兩種基本情緒有關(guān),以便填充基本情緒之間的空間。實際上圖8的極性圖給出一個實例,但它只對相鄰的兩種基本情緒有用。兩種不相鄰的情緒之間的聯(lián)系將導(dǎo)致另一種情緒,它與其間存在聯(lián)系的情緒不同。放置情緒的次序決定能夠作出哪些其它表情。當(dāng)然,這是一種非常不愉快的特征。如果用戶指定了中性與不喜歡之間的聯(lián)系,意想不到的事情發(fā)生了情緒驚奇意想不到地成為聯(lián)系的一部分。
為了克服這一問題,不能再讓放置情緒的次序再起任何作用。這些方法的基本問題是希望立刻監(jiān)視這些聯(lián)系的用戶。如果存在著不超過三個演員便能實現(xiàn)這一點,因為處理n個變量導(dǎo)致n維的圖形。在我們的模型中,我們必須處理至少七種不同情緒(演員),這意味著必須消除視覺聯(lián)系。必須單獨地為各基本情緒指定新情緒與基本情緒之間的聯(lián)系。這一聯(lián)系表示新情緒與基本情緒之間的符合程度。它并不給出新情緒的速度信息。利用前面的方法,這是包含在情緒的說明中的。
與所有情緒的聯(lián)系與同一種基本情緒的聯(lián)系的擴展一樣,這只表示說明的明確表達。能夠更詳細地給出的不是速度而是符合性。但因為過了一段時間之后你簡單地用完了情緒,它們將被增加為帶有某種速度的情緒而不是作為完全新的情緒。盡管如此,這似乎是一種有意義的擴展,因為能夠連接新建立的情緒來建立新情緒,而無須返回到基本情緒。并且最接近的情緒之間的聯(lián)系清楚得多。有鑒于這些方面,我們選擇這一方法。
必須指定新情緒與現(xiàn)有情緒之間的聯(lián)系。它描繪出將一種情緒分割成其大小表示新情緒與其它情緒之間的符合程度的部分。實際上,所有其它情緒能用大小為0的餅片表示。
分割不必要用精確值指定,因為它是完全主觀的某些百分比的差別并不引入注意。因此圖中省去伴隨的百分比。這意味著必須采用值的“鄰域”。模糊邏輯便在這里進入視線。對于用戶,使用自然語言是最容易的。模糊邏輯的最主要優(yōu)點在于它實現(xiàn)這一特征。
分類器的描述將落入值的范圍中。這能用成員函數(shù)做到。各變量得到其本身的表示該變量的有效范圍的成員函數(shù)??偟姆秶怯沙蓡T函數(shù)集構(gòu)成的。
用戶不能作出成員函數(shù),因為他必須具有模糊邏輯知識,這是與每一個人都能使用該程序這一事實對立的。用戶可指定不同的分類器,而程序?qū)⒓由蠈?yīng)的成員函數(shù)。每當(dāng)存在分類器時,便能用它來指定新情緒與其它情緒之間的聯(lián)系。
如果能作出不同基本情緒之間的聯(lián)系,則將丟失情緒的瓦欏方型分級。這種聯(lián)系只表示符合程度。情緒的分級實際上是運動的速度。因此這意味著沒有封裝速度它必須在外部給予。速度提供用來執(zhí)行運動的快慢。不同速度之間的聯(lián)系比不同情緒之間的聯(lián)系簡單。與分類器一樣,不能以精確值給出值,因為這沒有意義。使用在其上給出所有不同速度的一根柱。新的速度可通過將其放在柱上來指定。通過放在柱上將確定其值。
屬于速度的另一點如下如果與兩個不同的運動群一起使用,一個副詞能具有一種以上含義。例如,‘快走’與‘快說’是都能加上快的兩種運動,但它具有非常不同的意義。然而,兩者多多少少具有相同的值,因此這可能不成問題。
利用運動群有一個優(yōu)點每當(dāng)對于庫中的特定運動不存在情緒與速度的組合時,程序能搜索最象所要求的組合的組合。某一組合可能替代另一組合這一事將提高適用性并減少生成節(jié)目的時間。
自然語言的奇妙而強有力的特征為緊密相關(guān)的運動的平滑過渡,‘響亮地說話’與‘輕聲地呼喚’幾乎是同一行為,帶有相同的面部表情與相同的叫喊,但‘呼喚’與‘喊叫’則肯定是不同的行為。這便是伴隨的修飾詞自然地將這些行為帶到一起。這意味著只通過修改修飾詞便能使一種特定的運動處于不同的狀態(tài)中。通過增加一個副詞,一個運動能加入其本身的運動群以外的不同運動群。
兩個相鄰的行為的區(qū)域有可能部分地相交。圖9示出說話、呼喚與喊叫的例子。深灰色區(qū)域為不同運動群的相交部分。如果在說話上加上響亮,運動將變強并移位到深灰色區(qū)中。
將這些聯(lián)系筑入動作編輯器7中將得出非常強有力的工具。通過將情緒或速度加在例如呼喚上,不僅將檢驗呼喚,還要檢驗說話或喊叫,這取決于伴隨的表情或速度。
上面描繪的方案能容易地轉(zhuǎn)換成模糊邏輯的術(shù)語。事實上,由于自然語言而的確存在模糊邏輯,假定自然術(shù)語并不表示一個精確的值。
用戶將建立其運動群,其中排除了成員函數(shù)的標(biāo)準(zhǔn)分割。程序能向用戶提供用戶能從中選擇一種的不同聯(lián)系與/或成員函數(shù)的范圍。或者,以比較先進但掌握起來比較復(fù)雜的方式提供一組模糊術(shù)語,它們說出關(guān)于成員函數(shù)的重疊部分的某些方面。它們的范圍能從狹窄到廣大的。用戶能利用這些術(shù)語來指定成員函數(shù)。而程序則必須從這一信息中收集聯(lián)系的正確種類。
在搜索一個動作時,將返回符合得最好的動作。如果找到精確的符合,則只返回這一個。但如果不能得到該動作,我們能決定只返回最好的一個。如果情緒(例如)不是剛好正確的那一種,有可能檢索帶有所要求的情緒的另一方面的情緒的動作(當(dāng)然在可獲得時)。然后可將這兩個運動互相組合,得出比任何單獨的單個動作更接近要求的情緒。
無論如何,我們認(rèn)為這一‘方法’是值研究的。事實上,由于有七種基本情緒,我們正在處理七維矢量空間。并且必須找出帶有并不一定存在的第一情緒的動作的對等物。這一方法能利用速度工作。
前面部分中所描述的對象之間的模糊聯(lián)系起到目標(biāo)的作用。如果用戶在編輯器7中指定動作,很可能庫中沒有帶有所要求的情緒與速度的運動。情緒與速度的模糊說明負(fù)責(zé)在這一特定的運動群中找到與最接近的速度組合的最接近的情緒。而運動群之間的模糊聯(lián)系將盡一切力量來返回一個可接受的動作。這些基于模糊的論點的組合將產(chǎn)生實際上可能的最佳結(jié)果。
模型的結(jié)構(gòu)可分割成一級與二級結(jié)構(gòu)。一級結(jié)構(gòu)設(shè)定從中能識別諸如腿、臂與背等圖的形狀的結(jié)構(gòu)。二級結(jié)構(gòu)包含能夠不改變模型的結(jié)構(gòu)而省略的段,例如手指。因為一次結(jié)構(gòu)設(shè)定模型的形狀,這一結(jié)構(gòu)是最重要的。
在模型能使用之前,應(yīng)當(dāng)初始化。模型的初始化意味著建立模型中所有的段,將這些段連接在它們的祖先上,及設(shè)定關(guān)節(jié)角的值??蓪⒊跏蓟殖蓛刹糠?。第一部分為建立段并將段連接在其祖先上。第二部分為設(shè)定初始值。
利用配置文件來初始化模型。第一配置文件包含用于建立段及將它們連接到它們的祖先上的數(shù)據(jù)。第二配置文件包含用于初始化段中的角的數(shù)據(jù)。一段的各角具有最小與最大值及偏置量。
必須抽樣動作。這意味著必須將人物的連續(xù)動作分解成離散的狀態(tài)。各狀態(tài)指定人物在時間t+Δt上的姿勢,其中Δt為抽樣時間。各姿勢存儲在幀中。幀的結(jié)構(gòu)建立如下關(guān)節(jié)的狀態(tài)是用與段的標(biāo)識符組合的三個值(偏轉(zhuǎn)、俯仰及傾斜)指定的??蓪M合到幀緩沖器中,它指定人物在時間上的姿勢,得到一動作。
設(shè)定模型的狀態(tài)的角可作為相對的或絕對的角給出。
絕對角的問題是不存在兩個相繼的段之間的聯(lián)系。不知道一段是如何相對于前一段定位的。不可能檢驗是否破壞了最小或最大界限。
相對角是相對于前一段測定的,這表示模型的原點是模型本身的一部分。如果采用相對角,則不將模型連接在環(huán)境上。這也表示不清楚運動如何影響模型在環(huán)境中的位置。這一問題可通過在環(huán)境中選擇一個固定點并測定基底段相對于這一固定點的位置來解決。在這一情況中只有基底點與環(huán)境有聯(lián)系。
人類永遠是以某種方式與環(huán)境連接的。
如果將基底段連接在現(xiàn)實的世界上,必須選擇一個固定點以將定向段連接在其上。這一段負(fù)責(zé)模型在環(huán)境中的定向。存在著許多能起固定點作用的候選點。
定向段為帶有可變長度與可變固定點的段??勺冮L度是必要的,因為定向段同時表示人物的高度。固定點是可變的,因為在行走時左與右腳交換地確定人物連接在環(huán)境上的位置。當(dāng)左腳接觸地面時,左腳確定固定點。當(dāng)右腳接觸地面時,右腳確定固定點。在行走期間,當(dāng)一只腳放在地上而另一只腳尚未抬起時,兩只腳都接觸地面。在這一時刻必須改變固定點。似乎人物的重心確定固定點的位置。換言之,固定點為重心在地面上的投影。
可將存儲在庫中的運動分割成兩部分。第一部分是關(guān)于運動的統(tǒng)計數(shù)據(jù)。第二部分是運動本身的數(shù)據(jù)。這兩部分存儲在同一運動文件中。運動被打開或關(guān)閉從而由低級例程進行讀或?qū)憽?br>
事件是必須在一定時間段上執(zhí)行的行為。因此運動的執(zhí)行可看作事件。如果要執(zhí)行一個以上運動,便生成事件表。在這一事件表中運動是按照它們的開始時間排序的。用戶界面用事件表與低級例程通信。在設(shè)計記事板時,便從記錄板建立事件表。然后將這一記事板送至運動例程。
如果關(guān)節(jié)的狀態(tài)要從某一關(guān)節(jié)的給定位置計算,則必須利用逆向運動學(xué)。逆向運動學(xué)是非常困難的問題,因為存在許多解。通常逆向運動學(xué)是通過倒置Jacobian矩陣進行的。因為這是非常困難的,逆向運動學(xué)問題是用模糊邏輯解決的。對于熟悉本技術(shù)的人員,使用模糊邏輯解逆向運動學(xué)問題的方法是已知的。必須使該方法適應(yīng)于在所實現(xiàn)的模型中工作。
數(shù)據(jù)通常不以MEd Com中所使用的格式記錄。因此必須轉(zhuǎn)換預(yù)記錄的運動并將其存儲在MEd Com庫中。如果角度是徑向及相對于前一段給出的,它們便采取Med Com格式。
如果要改變運動的幀時間,如果從兩個存在的運動建立新的運動,或如果要改變運動的速度,則必須定標(biāo)運動。定標(biāo)因子指定要定標(biāo)運動的方式。
定標(biāo)因子是永遠大于零的一個值。如果定標(biāo)因子等于1,便不執(zhí)行定標(biāo)。如果0<定標(biāo)因子<1,便去掉幀,如果1<定標(biāo)因子,便增加幀。定標(biāo)因子的最佳值為1/3≤定標(biāo)因子≤3,因為如果定標(biāo)因子更小或更大,則必須增加或去掉太多的幀。這對定標(biāo)后的運動的推移影響太大。
當(dāng)增加幀時,最多將運動的兩幀組合以得出一個新幀。我們通過取兩幀的加權(quán)平均值建立新幀。
可以給出建立新幀的通用公式。因此必須區(qū)分兩種不同情況。新幀是用下述方法增加的復(fù)制原始段的內(nèi)容。當(dāng)新幀的開始時間晚于原始幀的開始時間,且新幀的結(jié)束時間早于原始幀的結(jié)束時間時出現(xiàn)這種情況。在這一情況中新幀=原始幀。
取原始幀的一部分及下一原始幀的一部分。當(dāng)新幀的開始時間早于原始幀的結(jié)束時間,及新幀的結(jié)束時間晚于原始幀的結(jié)束時間時出現(xiàn)這一情況。
通過將多個老幀組合到一個新幀而去掉幀看起來象建立新幀。在去掉幀時,組合原始幀來建立一個新幀。
在定標(biāo)例程中去掉幀的通用公式是難以給出的,因為至少必須區(qū)分五種不同情況。新幀可使用下述部分生成·一個或多個完整的幀。如果新幀是從一個老幀生成的,則不進行定標(biāo)。
·一個或多個完整的幀及下一幀的一部分。
·一幀的一部分及一個或多個完整的幀。
·一幀的一部分及下一幀的一部分。
·一幀的一部分,一個或多個完整的幀及下一幀的一部分。
庫是完全模塊化建成的。這具有非常靈活的優(yōu)點。
各庫文件包含其自己的二叉樹。這意味著能夠很快地找到一項。當(dāng)然哪些信息能很快找到取決于搜索標(biāo)準(zhǔn)。其它信息如果存在的話只能通過線性搜索查找,這表示必須檢驗庫文件中每一個元素直到找到正確的元素為止。
幾乎每一個庫文件中都包含某種串,象動作與情緒的描述。串處理起來比較麻煩,因為它們具有不確定的長度。這導(dǎo)致從庫文件中排除字符串。
明顯地,刪除元素的后果是大的。有鑒于此,我們已決定忘記關(guān)于元素的消除。通常這將不成問題,因為與將要增加的元素的數(shù)目相比,將被刪除的元素的數(shù)目是無足輕重的。當(dāng)然,永遠可以實現(xiàn)刪除?,F(xiàn)在,新元素是加在文件的尾部的,而忽略文件內(nèi)部的任何空閑空間。
存儲數(shù)據(jù)的一種方法是用散列技術(shù)。使用散列具有太多的缺點。
由于庫是復(fù)雜的,它需要一些說明。下面在圖10的幫助下說明庫的一些細節(jié)。
在庫樹的基底上,便是“虛擬對象”類。這一類純粹是一個抽象類。庫中各元素直接或間接地繼承虛擬對象。
文件系統(tǒng)數(shù)據(jù)(File System Data)包含管理文件所需要的信息。一種重要的數(shù)據(jù)便是一個特定文件的用戶數(shù)。
二叉庫(Bin Base)實現(xiàn)盤上的二叉樹的處理。因此,它存儲其左與右子女的標(biāo)識符。
串(String)處理用戶生成的諸如組名、標(biāo)簽與描述等每一個串。將各串寫在同一個文件上(并且文件仍由文件系統(tǒng)處理)。
串庫(String Base)實現(xiàn)串?dāng)?shù)據(jù)庫串之間的連接,供在子類及運動數(shù)據(jù)中使用。通過串庫它繼承二叉樹結(jié)構(gòu)。
實際數(shù)據(jù)分類為情緒庫(Emotion Base)、群庫(Group Base)與速度庫(Velocity Base)。除了樹信息,這些類提供它們自己的信息。
*對于情緒庫,當(dāng)前存儲與七種基本情緒的聯(lián)系。
*對于群庫,存儲與較慢版本與較快版本(它們都是群)的連接。
*對于速度庫,只存儲強度。
人物將上述三類結(jié)合到一起。每一個人物只保存一個情緒庫、群庫及速度庫。
統(tǒng)計數(shù)據(jù)(Statistics Data)只用來將信息從修飾詞庫(Modifier Base)穿過到文件系統(tǒng)。
修飾詞庫存儲帶有一種情緒與一種速度的一個記錄或生成的運動。修飾詞庫文件只包含來自同一運動群的運動。
已經(jīng)實現(xiàn)了一種壓縮只存儲帶有改變角度的段。我們已實現(xiàn)的另一種壓縮為Lemple-Ziv Welch編碼。這是一種自適應(yīng)方法。
段必須如上所述互相連接,因此為了在模型上加上一段,必須給出該段的祖先。因為祖先必須存在,第一段的祖先為基底,它是由程序提供的?,F(xiàn)在還不清楚應(yīng)如何指定象脊柱這樣的柔性段。當(dāng)前的選擇為將段分成若干更小的子段。對于所選擇的各角,指定最小與最大的偏移(傾斜、俯仰與偏轉(zhuǎn))。
在次序區(qū)中可指定不同的角的計算次序。默認(rèn)值復(fù)位當(dāng)前段的調(diào)整,但并不立即影響模型?!白饔谩睂?dāng)前段的調(diào)整插入實際模型中,從而改變模型?!皠h除”從模型中去掉當(dāng)前段。子女段將接受被去掉的段的祖先段作為其祖先,而祖先則接受被去掉的段的子女?!爸匦录虞d”加載某一人物的最后配置,而“保存”則保存所作出的每一種調(diào)整。下一次加載模型時,將使用這一新配置。
利用配置窗彈出觀察窗口,其中用棒狀圖示出當(dāng)前調(diào)整。能加亮當(dāng)前段以控制對這一特定段作出的調(diào)整。
為了顯示模型,將起始段作為基底,它出現(xiàn)在每一個人物中。從這一點起,必須穿過其所有子女、及它們的子女的子女等。在節(jié)4.4中,我們將討論關(guān)于在其環(huán)境中畫出人物的其它一些方面。
觀察器包含下述部分帶有下述按鈕的控制板1、(暫停)在激活時停止動作,而在去激活(deactivated)時恢復(fù)。
2、(回繞)快速回繞動作,或在播放按鈕有效時,快速向后播放動作。
3、(播放)利用播放按鈕可看見任何動作或節(jié)目。再一次按下或使用停止按鈕可以去激活。
4、(卷繞)快速卷繞動作,或在播放按鈕有效時,快速向前播放動作。
5、(記錄)可利用這一按鈕來選擇動作的部分或記錄觀察器的軌跡。
6、(停止)可以為若干原因使用停止按鈕。它將去掉任何有效的按鈕的激活。
7、(前面)觀察器將搜索前一動作,而在播放按鈕有效時恢復(fù)播放。
8、(慢)按下這一按鈕時減少每秒的幀數(shù)。將動作播放得較慢。
9、(快)按下這一按鈕時增加每秒的幀數(shù)。將動作播放得較快。
10、(下一個)觀察器將搜索下一動作,并在播放按鈕有效時恢復(fù)播放。
一個畫圖區(qū)。在該區(qū)中顯示人物。
一個信息區(qū)。在該區(qū)中顯示當(dāng)前幀號、當(dāng)前播放時間及當(dāng)前每秒的幀數(shù)。
一個按鈕區(qū)“復(fù)位”將人物復(fù)位到其原始位置上?!瓣P(guān)閉”將關(guān)掉觀察器。
為了能從任何一面觀察人物,鼠標(biāo)按鈕是起作用的。如果在畫圖區(qū)內(nèi)按下鼠標(biāo)按鈕,在一定方向上拖曳鼠標(biāo)可得到任何視圖。實現(xiàn)在觀察器中的變化有旋轉(zhuǎn)、平移及推拉鏡頭。在將人物連接到‘現(xiàn)實’世界上時,必須使其可見從而觀察效果。因此觀察器中必須包含三維效果,諸如地平線及行走平臺。因此我們需要對世界的永久性連接。
對這一問題的可能解決方法是凍結(jié)模型的當(dāng)前狀態(tài),并確定選擇的段的精確位置。在下幾幀上該段將留在這一位置上直到改變了固定段為止。關(guān)注點是帶有與基底段不同的固定段的模型狀態(tài)的計算?;锥问瞧渌卸蔚淖嫦?,因此知道了這一段的位置跟著便知道其它所有位置。但當(dāng)基底段不是固定點時,基底段(以及中間的段)的位置必須從固定段的位置中計算出。永遠必須首先計算固定段的位置。當(dāng)?shù)竭_了固定段時,必須找出回到基底的路線。計算不同角度的次序必須顛倒,因為現(xiàn)在祖先在其子女后面通過。當(dāng)?shù)竭_了基底時,便象前面所進行的一樣執(zhí)行了所有的計算。
當(dāng)然,這一方法也有問題。例如,當(dāng)在行走時交替地凍結(jié)一只腳時,該人物將走出畫圖區(qū)。這只能通過使觀察器同時執(zhí)行跟蹤來防止。然而,這一方法已作出相當(dāng)?shù)牟顒e。
主區(qū)域用來指定動作。這里可以放置所需要的數(shù)量的時間線。用矩形表示的行為位于這些時間線上。第一條線顯示以秒表示的時間。選擇行為的理由是去掉它們或?qū)⑿袨檎归_成基礎(chǔ)行為。在選擇行為時,還加亮?xí)r間線的伴隨的描述。這能用來去掉時間線。
當(dāng)前只能用滾動按鈕來進行滾動,但在將來,應(yīng)給出所要求的幀號。在水平滾動區(qū)中,在按鈕旁邊,還有一條顯示在其中指定了行為的整個時間間隔的線。利用這一滾動條,能非??斓卣业揭粋€特定點。
在組合動作或節(jié)目的不同階段上,必須顯示時間線的不同部分。這不僅意味著必須顯示其他行為,也顯示更多或更少行為。因此有必要能改變描繪的幀的數(shù)目。這能通過推或拉鏡頭來安排。必要時,能一次顯示一幀到數(shù)千幀。當(dāng)前這只能通過使用推拉鏡頭按鈕來完成,但應(yīng)當(dāng)也有可能實際上使用戶指定要顯示的幀數(shù)或時間間隔。
通過利用時間線可選擇行為并將它們放在時間線中。時間線為半無限長的線,它從0開始在正方向上永遠進行下去。
編輯器7的時間線是用雙鏈接表的一張雙鏈接表表示的。時間線的數(shù)目將不象采用雙鏈接表時所需要的那樣多,但采用這種表的原因是垂直滾動比較容易。第一表連接時間線,而各時間線包含行為的表。
能展開行為來揭示其內(nèi)部。只要存在對一部分動作的描述便能做到這一點。當(dāng)完全將動作變換成精確的角值時,便不能再進行展開。
對于時間線只實現(xiàn)兩種行為增加與刪除。
在時間線上增加行為非常簡單。只要將鼠標(biāo)點在正確的時間線上。在這一等時線上搜索正確的開始時間,并按下左鼠標(biāo)按鈕。拖曳鼠標(biāo)到正確的結(jié)束時間并釋放按鈕。行為可能不具有正確的長度,意味著進行動作的時間間隔是不正確的。通過拖曳鼠標(biāo)重新將行為的長短確定在正確的時間上便能解決這一問題。行為只能通過按下刪除行動按鈕來刪除。
每當(dāng)建立一個節(jié)目時,對這一完整的節(jié)目作出的改變導(dǎo)致丟失過渡。為了避免重新編輯所有過渡,必須記錄這些改變??蓪⑵浯鎯υ谝粡埍碇?,為作出的各改變保存開始幀與結(jié)束幀。用一種方式或另一方式對動作的改變將影響表中的幀。
因為必須為各動作指定速度,在展開循環(huán)運動時很清楚將發(fā)生什么事情將根據(jù)需要頻繁地重復(fù)運動來填滿該行為的整個時間間隔。反之,非循環(huán)運動的展開便是問題。在速度保持不變時,如果空間太小,動作將被切斷,或者在空間太大時,人物將保持在一定的位置上。當(dāng)精確地填滿行為的空間時,動作將慢下來或快起來,而與伴隨的速度相反。另一方面,你可能忘記屬于這一動作的速度,而只依賴于動作的大小。將動作展開成完美地符合時間間隔。循環(huán)動作也將展開通常在庫中只能得到一個循環(huán),因此該動作將只包含一個展開的循環(huán)。老速度可用來確定新速度。很明顯,最佳處理方法是向用戶提供這兩種選擇。
如果不存在諸如描述一種情緒所使用的情緒的數(shù)目的限制等事物,則可將情緒及其聯(lián)系分開并存儲在兩個不同的文件中。
現(xiàn)在已經(jīng)實現(xiàn)了組合不同運動群的非常簡明的版本,這只是為了測試。在這一版本中使用了標(biāo)準(zhǔn)成員函數(shù),意味著兩個相鄰變量的一半成員函數(shù)是重疊的。進一步使用并隨機地初始化了一些偽造的運動群、情緒與速度。
在聯(lián)機階段中,程序必須知道更新后的人物的狀態(tài)。因此如果可能必須發(fā)送、執(zhí)行各幀數(shù)據(jù),并且實際上必須送回得出的幀。
在模型中,關(guān)節(jié)是在肢體的起點上。模型包含一個柔性的背。應(yīng)當(dāng)利用這一柔性的背來制作背部曲線。為了以平滑的方式利用正常的關(guān)節(jié)之間的柔性的背,我們決定用C++來實現(xiàn)該模型。采用C++的優(yōu)點是非常容易在模型上增加功能及向其增加新參數(shù)。這一實現(xiàn)現(xiàn)在是完全獨立于用于模型的數(shù)據(jù)結(jié)構(gòu)的。
利用庫例程來存儲運動。庫例程關(guān)于存儲在庫中的數(shù)據(jù)類型是透明的。運動現(xiàn)在是以幀緩沖器的形式存儲在庫中的。下面描述如何設(shè)計這一幀緩沖器?,F(xiàn)在將動作數(shù)據(jù)與統(tǒng)計信息寫入同一庫文件中。將統(tǒng)計信息寫在文件開始處,動作數(shù)據(jù)寫在統(tǒng)計信息后面。在這一階段上,開發(fā)運動類。
關(guān)于循環(huán)運動,只將循環(huán)部分存儲在庫中。因為運動是循環(huán)的,從哪一幀開始循環(huán)并不重要??蛇x擇與當(dāng)前位置匹配得最好的幀作為開始。然后建立到這一最佳匹配幀的過渡。
最佳匹配幀是其角值接近當(dāng)前位置的角值的幀。同時,從當(dāng)前姿勢到開始幀所建立的過渡的持續(xù)時間應(yīng)盡可能短。
模糊邏輯仍然是科學(xué)研究領(lǐng)域中一個非常小的課題。它似乎用得越來越象計算機語言,一種使程序員能以高級構(gòu)造生成程序然后翻譯成實際機器代碼的翻譯產(chǎn)品。它使軟件更接近用戶,因而變得更易于以自然術(shù)語交流。從自然術(shù)語到精確值的翻譯仍必須進行,但能夠以較為松散的方式指定。
進行過實驗來觀察是否能組合運動。建立了在不同速度上的兩種行走運動之間的過渡。這種過渡是通過每次從兩種運動中取一幀并通過取這兩幀的加權(quán)平均值組合這一運動而建立的。在建立各幀之后,改變權(quán)重。以這一方式,第一運動在新幀上的影響減少,而第二運動的影響增加。從這一方式建立了以平滑的方式連接速度的過渡。
還進行過對循環(huán)運動的開始的實驗。在記錄的循環(huán)中進行了對最佳匹配幀的搜索。最佳匹配幀是其值最接近起始姿勢的值的幀。建立從起始姿勢到最佳匹配幀的過渡。用于這一過渡的幀是通過在起始姿勢的幀與最佳匹配幀之間內(nèi)插而建立的。雖然這一過渡是用內(nèi)插法建立的,它看起來是人類的。
另一運動僅通過在兩個點之間內(nèi)插建立。這一運動是通過指定一對關(guān)節(jié)的起始角與結(jié)束角而建立的。給出了關(guān)節(jié)必須在其中從起始角移動到結(jié)束角的步驟的量。這些幀是用內(nèi)插法建立的。這一運動看起來非常自然,雖然并未在運動上加上任何人類的運動。
從這些實驗中可以得出結(jié)論,運動很快看起來象是人類的。也許因為觀察者看見人物的運動,他便假定該運動也是人類的。這一事實能夠用在過渡的建立中。沒有必要進行復(fù)雜的變換來使運動看起來象人的。
從關(guān)于預(yù)記錄的運動及預(yù)測的運動的分析可以看出預(yù)記錄的運動包含大量噪聲。由于這些噪聲,不能看見運動中的小的細節(jié),也難于從運動中抽取特征。
經(jīng)驗獲悉記錄運動的每一個人采用其自己的格式來存儲運動。因此,我們所接收的運動都是以不同的格式存儲的。對于所接收的各種不同格式,必須改變將運動從記錄的格式轉(zhuǎn)換成用在庫中的格式的轉(zhuǎn)換例程。
因為沒有建立關(guān)于如何記錄運動或關(guān)于記錄運動的存儲格式的事物,最好以下述格式存儲所有運動。
角值應(yīng)在徑向上給出。
角值應(yīng)相對于前一段給出。
角的次序應(yīng)為傾斜角、偏轉(zhuǎn)角、俯仰角。
動作應(yīng)作為接連的幀的集合記錄。
在一幀中,應(yīng)記錄所有使用的關(guān)節(jié)的角值。
關(guān)節(jié)的角值應(yīng)作為關(guān)節(jié)標(biāo)識符及三種角值的組合記錄。
應(yīng)在分開的文件中寫入哪一標(biāo)識符對應(yīng)于哪一段名。
如果按照這些規(guī)則記錄了所有運動,便能實現(xiàn)將這些運動存儲在Mde Com庫中的轉(zhuǎn)換例程。這能避免必須編寫轉(zhuǎn)換例程,或必須使轉(zhuǎn)換例程適應(yīng)所記錄的各新的運動種類。
上面已參照于玩偶1的動作描述了本發(fā)明。然而,很明顯本發(fā)明不限于象人類的玩偶1。本發(fā)明的原理也能應(yīng)用在例如象動物的裝置上。
權(quán)利要求
1.用于控制模仿生物的可移動裝置(1)或其二維模擬的設(shè)備,該裝置設(shè)置有人造肢體,帶有用于接收控制信號的裝置(3)及用于生成人造肢體的驅(qū)動信號的裝置(2),該設(shè)備包括-用戶界面(5),設(shè)置有用戶(4)用來輸入命令的輸入裝置(13),-中央處理單元(6),通過第一通信線路(11)連接在用戶界面上并包括--第一存儲裝置(20),存儲關(guān)于裝置(1)的位置的數(shù)據(jù);--讀取裝置(8),從所述第一存儲裝置(20)中讀取數(shù)據(jù);--編輯器裝置(7),接收來自所述讀取裝置的所述數(shù)據(jù)及計算所述位置之間的插入動作并相應(yīng)地移動該角色,其特征在于,--所述第一存儲裝置(20)存儲關(guān)于該可移動裝置的預(yù)定原子動作的原子動作數(shù)據(jù),--所述編輯器裝置(7)配置成計算亞原子動作并將它們插入鄰接的原子動作之間,將要插入前面的原子動作與后面的動作之間的任何亞原子動作計算成使得它在開始部分上與所述前面的原子動作重合且在結(jié)束部分上與所述后面的原子動作重合,從而前面的原子動作、亞原子動作與后面的原子動作的組合動作是平滑與穩(wěn)定的。
2.按照權(quán)利要求1的設(shè)備,其特征在于,該設(shè)備還設(shè)置有第二存儲裝置(21),其中提供有與裝置(1)的預(yù)指定的動作有關(guān)的情緒動作數(shù)據(jù),所說的動作與該設(shè)備模仿的人物的情緒相連接,讀取裝置(8)還裝備成從第二存儲裝置(21)中讀取,以及編輯器(7)還裝備成按照用戶(4)輸入的情緒來計算亞原子動作。
3.按照權(quán)利要求1或2的設(shè)備,其特征在于,該設(shè)備還設(shè)置有第三存儲裝置(22),其中提供有聲音數(shù)據(jù),該讀取裝置(8)還裝備成讀取聲音數(shù)據(jù),以及該編輯器(7)還裝備成按照用戶(4)輸入的聲音來計算亞原子動作并提供還包括聲音數(shù)據(jù)的控制信號。
4.按照權(quán)利要求1至3中任一項的設(shè)備,其特征在于,該編輯器(7)是基于模糊邏輯的,從而用戶(4)能用日常語言輸入命令。
5.按照前面的權(quán)利要求之一的設(shè)備,其特征在于,該中央處理單元還設(shè)置有第四存儲裝置(19),其中裝備有用于在編輯器(7)所計算的控制信號的基礎(chǔ)上在監(jiān)視器(13)上模擬該裝置(1)要作出的期望動作的軟件。
6.按照前面的權(quán)利要求之一的設(shè)備,其特征在于,該設(shè)備還設(shè)置有維護界面(15),該維護界面通過第二通信線路(16)連接在中央處理單元(6)上并裝備成分別按照預(yù)定的動作、情緒與聲音分別向中央處理單元(6)的第一(20)、第二(21)與第三(22)存儲裝置提供數(shù)據(jù)。
7.按照權(quán)利要求6的設(shè)備,其特征在于,所述設(shè)備還設(shè)置有用于記錄由活的測試人執(zhí)行的動作的數(shù)據(jù)服(18),該數(shù)據(jù)服能連接在維護界面(15)上。
8.用于控制模仿生物的可移動裝置(1)或其二維模擬的方法,該裝置設(shè)置有人造肢體,帶有用于接收控制信號的裝置(3)及用于生成人造肢體的驅(qū)動信號的裝置(2),上述方法是按照下述步驟進行的-通過設(shè)置有輸入裝置(13)的用戶界面(5)輸入命令,-按照用戶(4)輸入的命令從第一存儲裝置(20)中讀取關(guān)于可移動裝置的位置的數(shù)據(jù),-計算所述位置之間插入的動作并相應(yīng)地移動該角色,其特征在于,-從所述第一存儲裝置(20)中讀出原子動作,-計算亞原子動作并將它們插入鄰接的原子動作之間,將要插入前一原子動作與后一動作之間的任何亞原子動作計算成使得它在開始部分上與所述前一原子動作重合而在結(jié)束部分上與所述后一原子動作重合,使得前一原子動作、亞原子動作與后一原子動作的組合動作是平滑與穩(wěn)定的。
9.按照權(quán)利要求8的方法,其特征在于,還包括從提供有關(guān)于與該設(shè)備所模仿的人物的情緒相連的裝置(1)的預(yù)定動作的情緒/動作數(shù)據(jù)的第二存儲裝置(21)中讀取數(shù)據(jù),及按照用戶(4)輸入的情緒計算亞原子動作的附加步驟。
10.按照權(quán)利要求8或9的方法,其特征在于,還包括從提供有聲音數(shù)據(jù)的第三存儲裝置(22)中讀取及按照用戶(4)所要求的聲音計算亞原子動作以及提供包含聲音數(shù)據(jù)的控制信號的步驟。
11.按照權(quán)利要求8至10之一的方法,其特征在于,為了使該裝置按照用戶(4)輸入的命令執(zhí)行流暢的動作而對已讀出的原子動作之間所要求的亞原子動作的計算及在原子動作之間執(zhí)行的所述亞原子動作的插入以及對應(yīng)的控制信號的提供是基于模糊邏輯的,從而用戶(4)能以日常語言輸入命令。
12.按照權(quán)利要求8至11之一的方法,其特征在于,在編輯器(7)計算出的控制信號的基礎(chǔ)上在監(jiān)視器(13)上模擬裝置(1)要作出的期望的動作。
13.按照權(quán)利要求12的方法,其特征在于,由活的測試人所執(zhí)行的動作是在數(shù)據(jù)服(18)的幫助下記錄的。
全文摘要
用于控制模仿生物的可移動裝置(1)或其二維模擬的設(shè)備與方法,該裝置設(shè)置有人造肢體,帶有用于接收控制信號的裝置(3)及生成人造肢體的驅(qū)動信號的裝置(2),該設(shè)備包括:設(shè)置有用戶(4)用于輸入命令的輸入裝置(13)的用戶界面(5),通過第一通信線路(11)連接在用戶界面上的中央處理單元(6),該中央處理單元包括:提供有由一系列原子動作構(gòu)成的并且還能基于情緒的動作數(shù)據(jù)的存儲裝置(20,21,22),用于計算所讀出的原子動作之間所需的亞原子動作并在原子動作之間插入所述亞原子動作從而使該裝置執(zhí)行流暢的動作的編輯器(7)。
文檔編號G06T13/00GK1192812SQ96196236
公開日1998年9月9日 申請日期1996年6月27日 優(yōu)先權(quán)日1995年6月28日
發(fā)明者阿里·亨德里克·尼古拉斯·范維林根 申請人:阿里·范維林根視頻膠片產(chǎn)品公司