JP2004030502A - Simulation method, simulation apparatus, and simulation program - Google Patents

Simulation method, simulation apparatus, and simulation program Download PDF

Info

Publication number
JP2004030502A
JP2004030502A JP2002189163A JP2002189163A JP2004030502A JP 2004030502 A JP2004030502 A JP 2004030502A JP 2002189163 A JP2002189163 A JP 2002189163A JP 2002189163 A JP2002189163 A JP 2002189163A JP 2004030502 A JP2004030502 A JP 2004030502A
Authority
JP
Japan
Prior art keywords
motion
action
data
joint
character
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2002189163A
Other languages
Japanese (ja)
Inventor
Maki Oshita
尾下 真樹
Akifumi Makinouchi
牧之内 顕文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kyushu TLO Co Ltd
Original Assignee
Kyushu TLO Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kyushu TLO Co Ltd filed Critical Kyushu TLO Co Ltd
Priority to JP2002189163A priority Critical patent/JP2004030502A/en
Publication of JP2004030502A publication Critical patent/JP2004030502A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To produce a natural action of a character in real time even when extremely great shock or external force is imparted to the character. <P>SOLUTION: The simulation apparatus is provided with: an action synthesizing means 12 for producing continuous first action data by smoothly connecting data representing present states of a portion to be a reference of the character and of all joints and data of a plurality of acting states; an action control means 13 for calculating translational and rotational acceleration of the portion to be the reference of the character and angular acceleration of the joints to realize the natural action with the produced action data as a target action; an action decision means 14 for deciding whether or not the natural action is to be realized with the action data produced by the action control means 13 as a target action; a reaction producing means 15 for producing data of a suitable reaction in place of the action data when the natural action is not realized as a result of the judgement by the action judging means 14; and an action operating means 16 for calculating data representing the acting state of the character. <P>COPYRIGHT: (C)2004,JPO

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータゲームなどに登場する人物や動物等の仮想キャラクタの動作をリアルタイムに生成するシミュレーション方法、シミュレーション装置およびシミュレーションプログラムに関する。
【0002】
【従来の技術】
コンピュータゲームに登場する人物などのキャラクタの動作は、あらかじめ作成しておいた動作データを連続的に再生することによって生成している。そのため、従来のコンピュータゲームでは、一定の動作の繰り返ししか再現できないという制約がある。この制約は、キャラクタが単体で動作している場合にはそれほど問題とならない。しかしながら、キャラクタ同士が衝突したり、外部から力を加えられたりといった、環境からの力学的な変化が加えられた場合には、自然な動作を生成できないという大きな問題が生じる。
【0003】
例えば、キャラクタが衝突したり押されたりしたときには、バランスを崩してよろめいたり、転倒したりといった動作を再現することが期待される。このような動作は、外部からの衝撃や力が加わる場所や大きさに応じて変化させる必要がある。しかしながら、現在の主なアプローチでは、一定の動作を再生することしかできないため、キャラクタが毎回同じ倒れ方をするといった不自然な動作が再現されてしまう。
【0004】
本発明者らは、これまでに上記の問題を解決するための動作制御手法(Computer Graphics Forum(EUROGRAPHICS 2001)20,3,192−202)を提案した。本手法では、あらかじめ作成しておいた動作データを単純に再生するのではなく、与えられた動作データを目標動作として、目標動作に追従するようにキャラクタの関節角加速度を制御し、動力学シミュレーションによって実際の動作を計算する。本動作制御手法では、関節に加わる負荷や全身のバランスを考慮してキャラクタの関節角加速度を制御する。その結果、基本的には既存のシステムと同様にあらかじめ作成された動作データを実現しつつ、衝突や外力などの環境からの力学的な変化が加えられた場合には、それらの力学的な変化に応じた自然な動作を生成できる。
【0005】
【発明が解決しようとする課題】
ところが、この動作制御手法を上記キャラクタの動作にそのまま単純に使用しただけでは、次のような2つの問題が生じる。
【0006】
(1)非常に大きな衝撃・外力がキャラクタに与えられたときに自然な動作を生成できない。
上記の動作制御手法では、あくまで入力された動作データを目標動作として追従しながら、自然な動作を実現するように制御を行う。したがって、入力された動作データを実現することが困難になるほどの非常に大きな衝撃等が加えられた場合には、不自然な動作が生成されてしまう。例えば、本手法では、衝撃等によってキャラクタがバランスを崩した場合、そのバランスの大きさに応じて、腕を振ったり腰を動かしたりすることによってバランスを保つような制御を行う。そのため、非常に大きな衝撃等が加わると、それらを強引に打ち消そうとして腕を激しく振り回すといった制御が行われてしまう。実際の人間の動作では、このような場合には、無理に目標動作を実現しようとするのではなく、例えばバランスを保つように足の位置を移動するなどして一旦姿勢を安定させてから、改めて目標動作を開始するといった柔軟な制御が行われる。しかしながら、本手法の角加速度空間での制御だけでは、このような動作を実現することは困難である。
【0007】
(2)衝撃・外力によって動作が変化したときにうまく次の動作に移ることができない。
本動作制御手法では、一つの動作データをもとに制御を行う。しかし、実際のアプリケーションでは、複数の動作を連続して実現できることが必要となる。現在のコンピュータゲームなどの一般的なアプリケーションでは、キャラクタの連続的な動作を生成するため、あらかじめ多くの短い動作データを用意しておき、状況に応じて適切な動作データを順番に再生することによって一連の動作を実現するというアプローチがとられている。この場合、それぞれの動作データは、基本的には前後の動作同士の間がうまくつながるようにあらかじめ作成されている。例えば、動作Aの終了時の姿勢と動作Bの開始時の姿勢を同一にしておくことで、動作Aの直後に動作Bを実行する場合に、これら二つの動作間を滑らかにつなげることができる。従来のアプリケーションでは、基本的にはあらかじめ作成された動作データを再生するだけであったため、動作データ間の接続には問題は生じなかった。しかし、本動作制御手法を用いてキャラクタを動作させる場合、必ずしも元の動作データがそのまま実行されるとは限らない。そのため、動作制御の結果、衝突や外力などの影響で前の動作の終了姿勢が変化してしまった場合、そのままでは次の動作にうまくつなげることができないという問題が生じる。
【0008】
そこで、本発明においては、非常に大きな衝撃や外力等がキャラクタに与えられた場合であっても、そのキャラクタの自然な動作をリアルタイムに生成可能なシミュレーション方法、シミュレーション装置およびシミュレーションプログラムを提供する。
【0009】
【課題を解決するための手段】
本発明のシミュレーション方法は、動作開始時のキャラクタの基準となる部分および全関節の状態を表すデータと複数の動作データとを滑らかに接続して連続した一つの動作データを生成する動作合成ステップと、この動作合成ステップにおいて生成された動作データを目標動作として自然な動作を実現するようにキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度を算出する動作制御ステップと、キャラクタの基準となる部分および全関節の現在状態を表すデータと動作制御ステップにおいて算出されたキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度とから、動作合成ステップにおいて生成された動作データを目標動作として動作制御ステップにより自然な動作を実現できるか否かを判定する動作判定ステップと、動作判定ステップにおける判定の結果、動作合成ステップにおいて生成された動作データを目標動作とした自然な動作を実現できない場合に、この動作データに代わる適切なリアクション動作の動作データを生成するリアクション動作生成ステップと、キャラクタの基準となる部分および全関節の現在状態を表すデータと動作制御ステップにおいて算出されたキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度とに基づいて、キャラクタの基準となる部分および全関節の動作状態を表すデータを算出する動作演算ステップとを含むものである。
【0010】
本発明によれば、動作開始時のキャラクタの基準となる部分および全関節の状態を表すデータと複数の動作データとから生成した動作データを目標動作としてキャラクタを動作させるに際して、非常に大きな衝撃や外力等がキャラクタに与えられた結果、この動作データを目標動作として動作制御手法を適用しただけでは自然な動作を実現できない場合に、この動作データに代わる適切なリアクション動作の動作データを生成し、このリアクション動作の動作データを目標動作とすることで、そのキャラクタの自然な動作をリアルタイムに生成することが可能となる。
【0011】
上記本発明のシミュレーション方法は、動作開始時のキャラクタの基準となる部分および全関節の状態を表すデータと複数の動作データとを滑らかに接続して連続した一つの動作データを生成する動作合成手段と、この動作合成手段により生成された動作データを目標動作として自然な動作を実現するようにキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度を算出する動作制御手段と、キャラクタの基準となる部分および全関節の現在状態を表すデータと動作制御手段により算出されたキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度とから、動作合成手段により生成された動作データを目標動作として動作制御手段により自然な動作を実現できるか否かを判定する動作判定手段と、動作判定手段による判定の結果、動作合成手段により生成された動作データを目標動作とした自然な動作を実現できない場合に、この動作データに代わる適切なリアクション動作の動作データを生成するリアクション動作生成手段と、キャラクタの基準となる部分および全関節の現在状態を表すデータと動作制御手段により算出されたキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度とに基づいて、キャラクタの基準となる部分および全関節の動作状態を表すデータを算出する動作演算手段とを備えたシミュレーション装置により実施できる。
【0012】
また、このシミュレーション装置は、動作開始時のキャラクタの基準となる部分および全関節の状態を表すデータと複数の動作データとを滑らかに接続して連続した一つの動作データを生成する動作合成手段と、この動作合成手段により生成された動作データを目標動作として自然な動作を実現するようにキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度を算出する動作制御手段と、キャラクタの基準となる部分および全関節の現在状態を表すデータと動作制御手段により算出されたキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度とから、動作合成手段により生成された動作データを目標動作として動作制御手段により自然な動作を実現できるか否かを判定する動作判定手段と、動作判定手段による判定の結果、動作合成手段により生成された動作データを目標動作とした自然な動作を実現できない場合に、この動作データに代わる適切なリアクション動作の動作データを生成するリアクション動作生成手段と、キャラクタの基準となる部分および全関節の現在状態を表すデータと動作制御手段により算出されたキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度とに基づいて、キャラクタの基準となる部分および全関節の動作状態を表すデータを算出する動作演算手段としてコンピュータを機能させるシミュレーションプログラムを実行することにより実現可能である。
【0013】
【発明の実施の形態】
図1は本発明の実施の形態におけるシミュレーション装置の構成を示すブロック図である。
図1において、本実施形態におけるシミュレーション装置は、あらかじめ作成したキャラクタの複数の動作状態を表す動作データを記録した動作データベース(以下「動作DB」と称す)11と、動作開始時のキャラクタの状態を表すデータとキャラクタが順番に実行する複数の動作データとを滑らかに接続して連続した一つの動作データを生成する動作合成手段12と、動作合成手段12により生成された動作データに基づいてキャラクタの基準となる部分の並進、回転加速度および各関節の角加速度を算出する動作制御手段13と、動作合成手段12によって生成された動作データを目標動作として動作制御手段13により自然な動作を実現できるか判定する動作判定手段14と、動作データに代わる適切なリアクション動作のデータを生成するリアクション動作生成手段15と、動作制御手段13により算出されたキャラクタの基準となる部分の並進、回転加速度および各関節の角加速度に基づいてキャラクタの動作状態を表すデータを算出する動作演算手段16と、動作演算手段16により算出されたデータに基づいてキャラクタを描画する描画手段17とを備える。
【0014】
ここで、キャラクタの状態を表すデータとは、キャラクタの基準となる部分、本実施形態においては腰の部分(以下「ルート」と称す)の位置p(3自由度)および向きq(3自由度)と、そのキャラクタの全関節の関節角度θである。ここで、θはn次元のベクトルであり、各要素θ(i=1,…,n)は各関節の関節角度を表す。nはキャラクタを多関節体として表現した時の全関節数である。一般的に、人間を多関節体としてモデル化する場合には、最低40個程度の関節が必要になる。
【0015】
動作合成手段12は、動作開始時のキャラクタの状態を表すデータ(ルートの位置・向きおよび全関節の状態のデータ)と、キャラクタが順番に実行する複数の動作データ(動作DB11に登録された動作データまたは後述するリアクション動作生成手段15により生成されたリアクション動作の動作データ)と、それぞれの動作を開始するときの接続方法(「合成モード」または「連結モード」のいずれか)とを入力として受け取り、これらの動作データを滑らかに接続して連続した一つの動作データを生成する。
【0016】
ここで、動作データとは、キャラクタの全関節の関節角度の時間関数θ(t)、ルートの位置および向きの時間関数p(t),q(t)、両手両足のそれぞれの拘束条件(角度拘束、末端の位置・向き拘束、支点拘束の3種類の拘束条件うち一つを取る)の時間変化c(t)(l={右足、左足、右手、左手})、およびメタ情報(動作全体の時間、開始範囲の時間、終了範囲の時間、キー時刻の配列等)である。
【0017】
動作制御手段13は、動作合成手段12により生成された動作データを目標動作として自然な動作を実現するようにキャラクタのルートの並進、回転加速度および各関節の角加速度を算出する。動作判定手段14は、この動作制御手段13により算出されたキャラクタのルートの並進、回転加速度および各関節の角加速度と、キャラクタのルートおよび全関節の現在の状態を表すデータとから、動作合成手段12により生成された動作データを目標動作とした自然な動作を実現できるか否か、すなわち動作制御手段13で対応できないほど大きくバランスを崩したり、大きな関節負荷がかかったりしていないかどうかを判定する。動作制御手段13により算出されたキャラクタのルートの並進、回転加速度および各関節の角加速度は、動作演算手段16にも入力される。
【0018】
リアクション動作生成手段15は、動作判定手段14による判定の結果、動作合成手段12により生成された動作データを目標動作とした自然な動作を実現できない場合に、この動作データに代わる適切なリアクション動作の動作データを動的に生成する。リアクション動作生成手段15により生成されたリアクション動作の動作データは、動作合成手段12へ入力される。
【0019】
動作演算手段16は、キャラクタのルートおよび全関節の現在状態を表すデータと動作制御手段13において算出されたキャラクタのルートの並進、回転加速度および各関節の角加速度とに基づいて、キャラクタのルートおよび全関節の動作状態を表すデータを算出する。同時に、動作演算手段16は、キャラクタ同士の衝突、外力などを算出する。動作演算手段16により算出したデータは、動作合成手段12へと入力され、次の動作データの演算に用いられるとともに、描画手段17へと入力される。
【0020】
描画手段17は、キャラクタが登場するシーンを描画し、このシーン中に、動作演算手段16により算出されたデータに基づいてキャラクタを連続的に描画する。
【0021】
次に、動作制御手段13における処理の詳細について説明する。
動作制御手段13は、前述のように、キャラクタの各関節の角加速度を算出する。すなわち、角加速度空間で動作制御を行う。
【0022】
一般に、コンピュータゲームなどのアニメーションでは、人間のような多関節体の姿勢や動きを表現する方法として、関節角度による姿勢表現が用いられる。例えば、キャラクタがn個の関節を持つとすると、そのキャラクタのある時点での姿勢xは、ルートの位置と向きp,qと全関節の関節角度θの組み合わせによって次式で表すことができる。
x={p,q,θ} p∈R,q∈R,θ∈R …式(1)
ここで、関節角度θはn次元のベクトルで、θはi番目の関節の関節角度を表す。同様に、キャラクタの動作データは、姿勢の時間変化x(t)によって表すことができる。
【0023】
キャラクタの骨格モデルの例を図2に示す。なお、本実施形態においては、複数の自由度を持つ関節は、内部的に複数の1自由度の回転関節によって表現する(例えば、肩は3自由度(3DOF)を持つので、内部的には3つの関節としてモデル化する)。したがって、各関節の回転加速度については、それぞれ1自由度の回転関節の軸を中心とした角加速度によって制御する。
【0024】
ここで、関節角度・関節角速度・関節角加速度・関節トルクの関係を図3に示す。一般に、人間やロボットが運動を行うときには、まず、筋力やモータの働きによって、関節トルク(関節を回転させようとする力)を発生させる。この関節トルクによって関節角加速度が生じ、関節角加速度の積分によって関節速度・関節角度が変化する、という流れとなる。
【0025】
一般に、コンピュータ・アニメーションにおいて、単純に動作データを記録・編集・再生するだけの場合には、関節角度空間でのみ動作データは扱われる。このような場合、関節角加速度や関節トルクなどを考慮する必要はない。しかし、衝突や外力などの力学的な影響を考慮して自然な動作を生成しようとすると、関節角加速度や関節トルクを考慮する必要がある。
【0026】
なお、本手法では、手足の拘束条件を考慮した動作制御を行うため、式(1)の情報に加えて、動作データに手足の拘束条件の情報を持たせている。
x’={p,q,θ,c} p∈R,q∈R,θ∈R,c∈D …式(2)
【0027】
ここで、cはその状態における手足の拘束条件を示す。cは、右足・左足・右手・左手のそれぞれについて、{角度拘束、末端位置・向き拘束、支点拘束}のうちのいずれかの値を取る。手足の拘束条件として角度拘束が設定されている場合は、動作データの関節角度データに従って制御を行う。手足の拘束条件として位置・向き拘束が設定されている場合は、関節角度よりも手先や足先の位置・向きを優先して制御を行う。手先や足先の位置・向きの時間変化は、もとの動作データから計算される。位置・向き拘束は、例えば落ちている物体を拾い上げる動作など、手足の姿勢よりも手先や足先の位置・向きの方が重要な場合に指定される。また、支点拘束は、位置・向き拘束の特殊な場合で、手足が支点として地面に接触して荷重がかかっている状態を表す。支点拘束が設定されている場合には、手先や足先の位置・向きを固定して動かさないように制御を行う。
【0028】
本手法では、関節角加速度を2段階の手順によって計算する。
まず、追従制御によって、目標動作に追従するための初期角加速度を計算する。追従制御では、それぞれの関節は独立に制御され、力学的な影響や関節相互の影響は全く考慮しない。単純に目標動作の軌道に滑らかに収束するような関節角加速度を計算する。
【0029】
次に、ダイナミック制御によって、追従制御で計算した初期角加速度を元に、動作が自然になるように出力角加速度を修正する。具体的には、初期角加速度により動作を行ったときに、キャラクタが全身のバランスを崩したり、ある関節に筋力の範囲を超えた大きな負荷がかかったりしてしまう場合に、それらの影響に応じて角加速度を制御する。これらの問題が発生しない場合には、初期角加速度がそのまま出力角加速度として用いられる。つまり、基本的には目標動作を単純に追従するような動作が行われ、バランスを崩したり大きな関節負荷が加わったりした場合のみ、それらに応じた動作が生成される。
【0030】
これを数式で表すと、出力角加速度θ’’outputは次の式によって計算される。ここで、θ’’initは追従制御による初期角加速度、Δθ’’dynamicはダイナミック制御による修正角加速度である。
θ’’output=θ’’init+Δθ’’dynamic …式(3)
【0031】
(1)追従制御
〔関節角加速度の制御〕
追従制御では、それぞれの関節を独立に制御する。関節の目標軌道をp(t)、現在の関節角度・角速度をθ,θ’としたとき、目標軌道に追従するような初期角加速度θ’’initを計算する。追従制御では、目標軌道に近い場合と遠い場合とで2種類の計算方法を用いる。
【0032】
まず、現在の状態が目標軌道に近い場合(普通に動作を実行している状態)は、単純に目標軌道から得られる目標関節角度・角速度を実現するように出力角加速度を計算する。目標軌道における時刻2dt後(dtはシミュレーションの刻み幅)の関節角度・角速度をθ,θ’とすると、θ,θ’を満たすための角加速度は次式によって計算される。
θ’’init=1/dt・(θ−θ)−1/dt・(0.5θ’−1.5θ’)…式(4)
【0033】
一方、現在の状態が目標軌道から遠い場合(衝突による速度変化などで一時的に目標軌道に追従できていない状態)は、上の方法で出力角加速度を求めると非常に大きな角加速度が計算され、関節に異常に大きな負荷がかかってしまう。そこで、目標軌道に滑らかに収束するような、適当な関節角加速度を計算する。考え方としては、現在状態から目標軌道の次の極大・極小点に収束する滑らかな軌道を仮定し(図4参照)、この軌道から出力角加速度を計算する。
【0034】
ここでは、目標動作に収束するための軌道として、2次のFerguson関数を用いる。Ferguson関数は、2点の位置・速度から求められ、両者の間で2次で連続となるような(角加速度が線形で変化するような)関数である。現在の関節角度・角速度を(θ,θ’)、目標軌道の次の極での関節角度・角速度を(θ,θ’)、2点間の時間をT、現在時刻をcurrent_timeとすると、Ferguson曲線q(s)は次式で表される。
q(s)=(2s−3s+1)θ+(−2s+3s)θ+(s−2s+s)θ’+(s−2s+s)θ’ …式(5)
s=(t−current_time)/T …式(6)
【0035】
ここで、上式を2階微分して、t=current_timeを代入することで、初期角加速度θ’’initが計算される。
θ’’init={6θ−6θ−2θ’−4θ’}/T …式(7)
追従制御では、まず式(4)によって初期角加速度を計算し、その大きさがあらかじめ決められた一定の範囲を超えた場合には、式(7)を用いて初期角加速度を計算する。
【0036】
〔ルートの並進・回転加速度の制御〕
ルートの位置(並進加速度)p’’rootについても同様に、xyz軸それぞれについて独立に初期加速度を計算する。ルートの向き(回転加速度)q’’rootについては、常に式(4)により初期角加速度を計算する。
【0037】
〔拘束条件のある手足の関節角加速度の制御〕
それぞれの手足(右手、左手、右足、左足)についても、目標動作で位置拘束・支点拘束が設定されている場合は、手足の末端部分(手首・足首)の並進・回転角加速度p’’end,q’’endを計算する。
【0038】
目標動作の動作データに設定されている各手足の拘束条件に応じて、手足の関節角加速度の計算方法は異なる。ある手足に角度拘束が設定されている場合は、その手足の関節は自由に制御可能であるため、上記の計算方法によりそれぞれの関節の角加速度を独立に計算する。一方、末端の位置・向き拘束やその特殊なケースである支点拘束のある手足の関節については、それぞれの関節を独立に制御するのではなく、全体で統一して制御する必要がある。例えば、キャラクタが両足で立っている場合(両足に支点拘束が設定されている場合)には、両足が地面から離れないように両足の全ての関節を協調して制御しなければならない。そこで、これらの関節はルート(腰)と手足の末端部の並進・回転角加速度から、逆運動学計算と呼ばれる手法を用いて計算する。
【0039】
逆運動学計算は、アニメーションツールなどで一般的に用いられている技術であり、手足の末端の位置・向きから関節角度を計算する手法である。ここでは、逆運動学計算を角加速度空間に応用した計算方法を用いる。運動学計算手法による関節角加速度の計算は次式で表される。
p’’root,q’’root,p’’end,q’’end→θ’’0...k …式(8)
p’’root,q’’rootはルートの並進・回転加速度、p’’end,q’’endはその手足の末端の並進回転加速度、θ’’0...kはその手足の全関節の角加速度を表している。逆運動学計算の方法としては、一般に、数値的な解法と解析的な解法の2種類の方法が存在する。本実施形態では、それぞれの手足の関節数を7個に固定することでより高速に関節角加速度を計算できる、解析的な逆運動学計算の手法を用いている。
【0040】
(2)ダイナミック制御
ダイナミック制御は、受動制御・拘束条件のある手足の制御・能動制御・動作速度の制御の複数のステップに分けられる。以下、まずダイナミック制御の基準となる関節負荷とバランスの評価基準について説明し、次にそれぞれの制御ステップについて順番に説明していく。
【0041】
〔バランス制御と負荷減少制御〕
ダイナミック制御では、制御を行う基準として関節負荷と全身のバランスの2つの要素を考慮する。つまり、追従制御で計算された初期角加速度のままでは関節負荷が大きすぎたり、バランスを崩したりするような場合に、それらを減少するように角加速度を修正する。以下に両者の評価基準について説明する。
【0042】
関節負荷を行う基準としてキャラクタの筋力モデルを考慮する。ある角加速度θ’’を実現するために必要な関節トルクτ∈Rは、逆動力学計算と呼ばれる手法により計算することができる。
τ=H(θ)θ’’+C(θ,θ’)+F(θ)+G(θ) …式(9)
θ,θ’は現在の関節角度・角速度、H(θ)は関節角加速度と関節トルクの間の関係を表す慣性モーメント行列、C(θ,θ’),F(θ),G(θ)はそれぞれコリオリ力・外力・重力による関節トルクへの影響を表すベクトルである。
【0043】
ここで、筋力モデルとして、それぞれのキャラクタごとに各関節で出力可能なトルクの有効範囲を定めておく。
τ min<τ<τ max …式(10)
τ min,τ maxは筋力モデルにより決まる、関節iにおいて出力可能な関節トルクの最小値・最大値である。負荷減少制御では、出力トルクτが有効範囲内におさまるように角加速度を制御する。現在、筋力モデルとしては、比較的単純なモデルとして、モーションキャプチャデータから得られたデータをもとにそれぞれの関節のトルクの最小値・最大値をその関節の角度・角速度の2次関数によって表現したものを使用している。
τ min=f min(θ,θ’), τ max=f max(θ,θ’) …式(11)
【0044】
次にバランス制御について述べる。バランス制御のための基準として、ロボット工学などで用いられる零モーメント点と呼ばれる概念を使用する。零モーメント点とは、体の全身から地面に対して加わるモーメントが0となる点のことである。図5は零モーメント点を示す図であって、(a)はバランスが保たれている状態を示す図、(b)はバランスが保たれていない状態を示す図である。
【0045】
図5(a)に示すように零モーメント点(ZMP)が、支点面の内部に存在するときには、キャラクタはバランスが取れている。支点面とは、キャラクタと地面の接触面全体を含む最小の凸包面である。一方、図5(b)に示すように零モーメント点が支点面の外部にある場合は、キャラクタのバランスがとれておらず、支点面の内部で零モーメント点に最も近い点(最小モーメント点MMP)を中心としてキャラクタが転倒してしまう。このような場合、零モーメント点が支点面の内部に移動するように関節角加速度を制御する。零モーメント点の位置は、全関節の角加速度から計算できる。実際には、全関節の角加速度θ’’∈Rから、順運動学計算という方法で全体節の並進加速度s’’∈R3*m(mは全体節の数)を計算し、零モーメント点の位置を計算する。
【0046】
ここで、s’’={s’’ ,s’’ ,s’’ }を体節iの並進加速度とし、地面が水平(y=0)であると仮定すると、零モーメント点の位置は次式によって計算される。
ZMP={Σm (s’’ −g)−Σm s’’ }/{Σm(s’’ −g)},
ZMP={Σm (s’’ −g)−Σm s’’ }/{Σm(s’’ −g)} …式(12)
は体節iの質量、s={s ,s ,s }は体節iの位置である。
【0047】
〔受動制御〕
受動制御では、それぞれの関節の関節負荷に応じてその関節の関節角加速度を制御する。例えば、背骨に後ろ向きの負荷が加わっている場合には、背骨の角加速度を、負荷に応じて後ろ向きに加速することでその負荷を減少する。腕や腰の角加速度によって背骨の負荷を減少するといった、他の関節の負荷を考慮した制御は、後述する能動制御で行われる。なお、受動制御では、末端の位置・向き拘束・支点拘束のある手足の関節は制御しない。これらの関節の制御方法については後述する。
【0048】
受動制御では、2段階の手順で修正角加速度を計算する。一度の手順でそれぞれの関節の角加速度を計算すると、ある関節の初期角加速度が非常に大きい場合に、その影響で全関節の角加速度が必要以上に修正されてしまう。そこで、最初のステップとして、非常に大きな関節角加速度のみを減少する。そして、次のステップで、他の関節からの影響も考慮して、それぞれの関節の角加速度を制御する。
【0049】
第1ステップでは、それぞれの関節ごとに他の関節からの影響を無視したとき、関節の有効トルク範囲を超えた関節負荷がかかる場合には、関節負荷が有効トルク範囲におさまるように角加速度を修正する。
▲1▼θ’’=θ’’initとする。θ’’initは追従制御によって計算された初期角加速度である。
▲2▼それぞれの関節iごとに以下の処理を繰り返す。
▲3▼他の関節の角加速度による影響を無視したときの関節iの関節トルクを計算する。
τ=Hiiθ’’+C+F+G …式(13)
▲4▼関節トルクτが筋力の範囲を超えていれば、範囲内におさまるように角加速度を修正する。
τ<τminのとき、
θ’’=θ’’−(τ−τmin)/Hii …式(14)
τ>τminのとき、
θ’’=θ’’−(τ−τmax)/Hii …式(15)
【0050】
第2ステップでは、他の関節からの影響も考慮して、関節負荷が有効トルク範囲におさまるように角加速度を制御する。第2ステップでは、以下の手順で制御を行う。
▲1▼他の関節からの影響も考慮して関節トルクを計算する。
τ=Σj=1 ijθ’’+C+F+G …式(16)
▲2▼有効範囲からの関節トルクの超過量が最も大きい関節iから順番に処理する。
▲3▼第1ステップの手順▲4▼と同様に関節iの角加速度を修正する。
▲4▼まだ処理していない関節で、関節トルクが有効範囲を超えている他の関節が残っていれば、手順▲1▼に戻り作業を繰り返す。
最終的に、θ’’が受動制御後の出力角加速度となる。なお、この受動制御による角加速度の修正量は、θ’’passive=θ’’−θ’’initである。
【0051】
〔拘束条件のある手足の制御〕
〔拘束条件のある手足の関節角加速度の制御〕で述べたように、末端の位置・向き拘束や支点拘束の設定されている手足については、その手足の関節は協調して制御する必要がある。そこで、これらの手足の制御では、基準となる腰の並進加速度のみを制御し、各関節の角加速度は腰の並進・回転加速度と手足の末端の並進・回転加速度から逆運動学計算によって計算する。つまり、これらの手足の関節の角加速度は腰の並進加速度によって間接的に制御され、直接的には制御されない。
【0052】
腰の並進加速度p’’root∈Rは、支点拘束のある手足の関節負荷や全身のバランスに応じて制御を行う。しかし、腰の並進加速度の自由度は3であるため、例えば、バランスを崩して、なおかつ複数の関節に大きな負荷がかかっているような場合には、その全てに対応することはできない。そこで、最も大きな条件にのみ注目して腰の並進加速度を制御する。腰の制御だけで全ての制約条件を解決できない場合は、次の能動制御によって対応する。
【0053】
キャラクタがバランスを崩している場合は、バランス制御を優先的に行う。これは、安定した制御を実現するためには、負荷減少制御に比べてバランス制御の方がより重要なためである。バランスが保たれており、いくつかの関節に有効トルク範囲を超える負荷がかかっている場合には、最大の負荷を受けている関節に対して負荷減少制御を行う。その結果、他のいくつかの関節のトルクを有効範囲内に収めることができなくても無視する。なお、現在の角加速度でバランスも保たれており、どの関節の必要トルクも有効範囲を超えていない場合は、腰の並進加速度は制御せず、追従制御で計算された値をそのまま使用する。
【0054】
まずは、バランス制御のための腰の並進加速度の修正量Δp’’rootの計算方法について説明する。
▲1▼バランス制御のためにどれだけ零モーメント点を移動させる必要があるかという必要移動量ΔZMP∈Rを計算する。まず、現在の角加速度θ’’におけるZMPの位置を計算し、ZMPが支点面の内部にあるかどうかを判定する。ZMPが支点面の内部にあればバランス制御は不要である。ZMPが支点面の外部にあれば、支点面までの最短移動距離ΔZMP(=ZMP−MMP)を計算する。
▲2▼Δp’’root∈RとΔZMP∈Rの関係を表すヤコビ行列J=∂ZMP/∂p’’root∈R2*3を計算する。∂ZMP/∂p’’rootは、腰の並進加速度に応じた上半身全体の重心の移動量から計算できる。
ΔZMP=JΔp’’root 式(17)
▲3▼ΔZMPを実現するための、Δp’’rootを計算する。ここで、Δp’’rootはΔZMPより自由度が高いため、Δp’’rootの解は無限に存在する。そこで、擬似逆行列という手法を用いて、|Δp’’root|が最小となるような解Δp’’rootを求める。
Δp’’root=JΔZMP, J=J(JJ)−1 …式(18)
ここで、行列Jは行列Jの擬似逆行列である。
【0055】
次に、負荷減少制御のための腰の並進加速度の修正量Δp’’rootの計算方法について説明する。
▲1▼末端の位置・向き拘束・支点拘束のある手足に含まれるそれぞれの関節(両足で立っている場合には両足の全ての関節)の負荷を計算し、最も負荷の大きい関節(複合関節)のトルクを有効範囲まで減少するように制御を行う。ここでは、それぞれ単一の関節ではなく、複合関節を対象とする。骨格モデルでは、実際の関節は内部的に複数の関節(最大3つ)に分けられて表現される(図2参照)。例えば、足首の関節は、実際にはxyzを中心とする3つの関節の角度によって表される。負荷減少制御では、それぞれの複合関節(例えば右足首の場合であればτr_ankle={τr_ankle_x,τr_ankle_y,τr_ankle_z}∈Rのように3次元となる)を対象に制御を行う。対象となる全ての複合関節において、最もトルクの超過量|Δτ|,Δτ∈R が大きい関節のトルクを減少するように制御を行う。
【0056】
▲2▼バランス制御の場合と同様に、Δp’’root∈RとΔτ∈R の関係H=∂τ/∂p’’rootを計算する。Hは、逆運動学計算と式(9)の慣性モーメント行列から計算できる。ここで、Δp’’rootの次元数は必ずΔτより大きいか同じであるため、バランス制御の場合と同様に擬似逆行列Hを用いてΔp’’rootを計算する。
Δp’’root=HΔτ, H=H(HH)−1 …式(19)
バランスを大きく崩していたり、関節に大きな負荷がかかったりしている場合には、それに応じてΔp’’rootも大きくなる。しかし、腰の並進加速度があまりに大きくなると不自然になってしまう。そこで、あらかじめ腰の並進加速度の最大値p’’root_maxを定めておき、修正後の加速度|p’’root+Δp’’root|がp’’root_maxよりも大きくなった場合は、p’’root_maxの範囲におさまるようにスケーリングを行う。
【0057】
〔能動制御〕
能動制御では、それぞれの関節を単独で制御するのではなく、関節相互の影響を考慮して他の関節や全身の動作を助けるような制御を行う。例えば、腕を振ることによって下肢に加わる負荷を軽減したり、上体を動かすことによって全身のバランスを保ったりといった、能動的な制御を実現する。しかし、人間の全ての関節同士の影響を計算して能動的な制御を行おうとすると膨大な計算量がかかり、また関節同士の間にはそれほど影響のないものもあるので無駄も多い。そこで、本手法では、特に全身の運動に影響に与える重要な関節を選び、体のそれぞれの部位ごとに能動制御を行う。具体的には、図6に示すように、全身を手足、背中、腰の3つの部位に分けてそれぞれ制御する。腰の並進加速度については、前述した方法で制御される。ここでは、残りの手足と背中の制御について述べる。これらの制御方法も、腰の並進加速度の制御方法とほぼ同様である。能動制御では、まず手足、次に背中の順番で制御を行う。
【0058】
手足の制御では、拘束条件のない自由に動かせる手足のみを使って制御を行う。例えば、両足に支点拘束が指定されて両足で立っているような場合、両足の全関節は〔支点拘束のある手足の制御〕で述べた方法で制御され、両手のみが能動制御に用いられる。
【0059】
それぞれの手足については、全部の関節を制御するのではなく、全身に対して影響力の多い3つの自由度のみを選んで制御する。図6に示すように、腕の場合は肩のx軸方向(前後方向)の回転、肩のz軸方向(左右方向)の回転、ひじのx軸方向(前後方向)の回転の3自由度を使用する。例えば、肩のy軸方向(腕を軸として左右にねじる方向)の回転は、肩の他の軸の回転と比べて全身の関節に与える影響が小さいため、能動的な制御には使用しない。両手両足は協調して制御を行う必要があるため、全手足の制御加速度Δθlimbは一度に計算する。Δθlimbの次元は、制御可能な手足の数によって変化する。例えば、キャラクタが両足で立っており、両手のみを制御する場合であれば、次元数は3×2=6、すなわちΔθlimb∈Rとなる。実際の制御加速度Δθlimbの計算方法は、〔支点拘束のある手足の制御〕で述べた腰の並進加速度の制御方法とほぼ同じである。▲1▼現在の角加速度θ’’をもとにバランスと関節負荷を計算する。バランスが保たれていない場合は、バランス制御を行う。バランスが保たれていれば、全身で最も負荷の大きい関節(複合関節)に対して負荷減少制御を行う。
Δθ’’limb=JΔZMP もしくは Δθ’’limb=HΔτ …式(20)
▲2▼制御結果を角加速度θ’’に反映する。Slimbはθ’’limbをそれぞれの関節にマップする選択行列である。
θ’’=θ’’+ Slimbθ’’limb …式(21)
【0060】
前述のようにそれぞれの部位の自由度は限定されているため、腰・腕の制御だけでは、必ずしも全身のバランスと全関節の関節負荷の条件を全て満たすように制御できるとは限らない。腕の制御後にまだ制御すべき条件が残っている場合は、次に背中を使って制御を行う。背中では、背骨のxyz軸方向の3自由度の回転を使って、上半身全体を動かすことによって制御を行う。このとき、Δθback∈Rとなる。Δθbackの計算方法は手足の場合と全く同じである。
Δθ’’back=JΔZMP もしくは Δθ’’back=HΔτ …式(22)
θ’’=θ’’+Sbackθ’’back …式(23)
【0061】
〔動作速度の制御〕
関節に加わる負荷が大きい場合は、受動制御によって関節加速度が制限される。例えば、腕に大きな負荷がかかっている場合は、その負荷によって腕を持ち上げるための加速度が小さくなる。このように目標動作を十分に追従できていない場合、目標動作を進める速度を遅らせることによって、目標動作と現在の状態の差が大きくなり過ぎることを防ぐ。例えば、10秒間の長さを持つ動作データは、普通は10秒間のシミュレーション内部時間を使用して実行される。しかし、目標動作に追従できていない場合、動作データの再生速度を遅らせることによってなるべく目標動作を実現するように制御を行う。つまり、10秒間の動作データが15秒間のシミュレーション内部時間で実行されることがありうる。全体の制御の結果、初期角加速度方向の出力角加速度が実現できない関節が一つでもあれば(θ’’init ・θ’’output <0となる関節iが一つでもある場合)、次式によって動作速度を計算する。それ以外の場合は、speed=1.0とする。
speed=(tnext−t)/(tnext−tprev) …式(24)
ここで、tは現在の時刻、tnext,tprevは目標動作の動作データから得られる一つ前のキーフレームと次のキーフレームである。動作においてキーフレームにおける姿勢は特に重要であるため、キーフレームに近づくほど動作速度を遅くして目標動作になるべく追従できるようにする。
【0062】
〔全体の制御手順〕
全体の制御手順は次のようになる。関節負荷については、能動制御により関節負荷を軽減するような制御を行い、それでも関節負荷を完全に取り除くことができなかった場合に受動制御を行う。バランス制御については、まず受動制御・拘束手足の制御によるバランス制御を計算し、それでもバランスを制御できなかった場合に、能動制御によりバランス制御を行う。これは、バランス制御については、腕や背中の動きよりも、腰の動きが特に重要になるためである。
▲1▼追従制御による初期角加速度θ’’initを計算する。
▲2▼初期角加速度θ’’initをもとに受動制御・拘束手足の制御によるバランス制御を仮に計算する。次式で、Jは逆運動学計算により求まる腰の並進加速度の変化に応じた全身の角加速度の変化を表す行列である。θ’’=θ’’init+θ’’passive+Jθ’’root
▲3▼能動制御を計算する(バランス制御はθ’’を基準、負荷減少制御はθ’’initを基準)。θ’’=θ’’init+Slimbθ’’limb+Sbackθ’’back
▲4▼初期角加速度に能動制御の影響を加えて、受動制御・拘束手足の制御を計算する。θ’’output=θ’’+θ’’passive+Jθ’’root
▲5▼動作速度speedを計算する。
【0063】
以上のように、動作制御手段13は、角加速度空間で制御を行うというアプローチによって、これまでの手法のようにロボット制御の手法をそのまま応用してキャラクタの関節をトルク空間で制御する場合に生じていたさまざまな問題を解決する。その結果、基本的には目標動作をほぼ正確に実現しつつ、必要に応じてバランスや関節負荷に応じた制御を実現できる。なお、本実施形態においては、全身のバランスを保ちつつ、関節にかかる大きな負荷を減らすような動作制御を行っているが、必ずしもこれだけに限る必要はない。
【0064】
次に、動作合成手段12における処理の詳細について説明する。
動作合成手段12は、前述のように、複数の動作データを滑らかに接続し、全体として一つ動作データとして出力する機能を有する。特に、単純な動作補間手法を用いたときに発生してしまう、荷重が掛かっているはずの足が不自然に地面の上をすべるような現象を、動作合成手段12では回避することが可能である。
【0065】
複数の動作データを合成して新しい動作データを生成するための手法はこれまでに多く提案されている。しかし、従来のシステムでは基本的に動作データはそのまま再生されるだけであったため、衝突や外力によってキャラクタの姿勢が動作データから外れるといったことは想定されていない。そのため、既存の手法の多くは、基本的に動作データ同士はあらかじめうまくつながるように作成されていると仮定されており、動作間で足の位置が異なるというような状況は考慮していないものが多い。これら既存の手法は、例えば上半身の動作と下半身の動作を組み合わせたり、早く走る動作とゆっくり走る動作を混合して中間の速度で走る動作を生成したりといった、動作のバリエーションを増やすことを目的としたものである。既存の手法の中にも、いくつか支点となる足の問題について扱ったものがある。例えば、1995年のRoseらの論文(In Proceedings of SIGGRAPH95, ACM Press / ACM SIGGRAPH, Computer Graphics Proceedings, Annual Conference Series, ACM, 147−154)では、二つの動作の間を補間するときに、軸足を固定するような方法が提案されている。しかし、この手法では、軸足以外の足の位置は単純に補間していたため、両足で立っているときには、やはり片方の足が地面の上をすべるような動作が生成される。このように、両足で立っているような場合であっても、支点となるべき足が不自然にすべるのを防げるような動作合成手法は存在していない。
【0066】
動作合成手段12は、上記目的を満たす動作接続手法として、「合成モード」と「連結モード」の2種類の方法を用いる。図7は動作接続手法の説明図であって、(a)は合成モードを示す図、(b)は連結モードを示す図である。本実施形態におけるシミュレーション装置では、動作合成手段12に動作データを入力するときにどちらかの方法を指定することで、状況に応じて適切な接続手法を使い分けることができるようになっている。なお、本実施形態においては、「合成モード」と「連結モード」の2種類の方法を用いるが、必ずしもこれだけに限る必要はない。
【0067】
ただし、これらの接続方法を用いてもあらゆる種類の動作同士を接続できるというわけではない。例えば、寝ている状態で終わる動作の後に、立った状態で始まる動作を実行しようとすると、二つの動作の間には立ち上がる動作を行う必要がある。このような高度な動作プランニングを含む処理は本手法の適用範囲を超えている。あくまで、元々はうまくつながるように作成されている動作が、外部からの影響によって変化してしまった場合に、うまくそれらをつなぐことが本手法の目的である。
【0068】
本手法では、二つの動作状態のデータを接続する実際の処理に加えて、二つの動作同士がそもそも接続可能であるかどうか判定する。実際に動作接続を提供する前に、あらかじめ接続可能かどうかを判定することで、別の接続方法や別の動作を選択することができる。
【0069】
本手法では、特に実際のアプリケーションで多く必要になる、キャラクタが地面の上に立っている状態(特に両足で立っている)で始まる・終わる動作を主に対象としている。しかし、本手法のアルゴリズムは、基本的には座っている状態や寝ている状態にも適用可能なものとなっている。
【0070】
(1)「合成モード」による接続
「合成モード」では、前の動作の終わりの部分と次の動作の始まりの部分を滑らかに混合することで、二つの動作間を接続する(図8参照)。二つの動作の間で足の位置が異なる場合には、次の動作が始まってからも前の動作の終了時の位置を保存し、次に足を動かすときに滑らかに次の動作と混合する。本接続方法は、二つの動作の姿勢の差が小さい場合や、二つの動作を高速に接続したい場合に適している。なお、本接続方法は、接続前と接続後でルート、両手、両足の制約条件が全て同じ場合(例えば、前の動作で両足が地面に着いている場合には、次の動作の開始時にも必ず両足が着いている必要がある)にのみに適用可能とする。
【0071】
〔通常の関節の関節角度の計算〕
まず、現在の時刻tと、二つの動作A・動作Bの開始(予定)時刻tinit ,tinit から、それぞれの動作データ内部でのローカル時刻t,tを計算する。
=t−tinit , t=t−tinit  …式(25)
【0072】
次に、時刻tにおけるそれぞれの動作のウェイトを計算する。
(t)=(t−Ttotal +Tterm )/Tterm , (t>TtotalA−Tterm のとき) …式(26)
(t)=t/Tinit , (t<Tinit のとき) …式(27)
ここで、Ttotal、Tinit、Tterm、はそれぞれ動作全体の時間、開始範囲の時間、終了範囲の時間である。これらの時間は動作データのメタ情報として、動作データの作成時に付与されている。
【0073】
最後に、ウェイトに応じて二つの動作の関節角度の関数を混合する。
θ(t)={θ (t)・w(t)+θ (t)・w(t)}/{w(t)+w(t)} …式(28)
ルート体節の位置・向きも、同様にウェイトに応じてブレンドする。
root(t)={proot (t)・w(t)+proot (t)}/{w(t)/w(t)+w(t)} …式(29)
root(t)={qroot (t)・w(t)+qroot (t)}/{w(t)/w(t)+w(t)} …式(30)
【0074】
〔位置制約のある手足の関節角度〕
関節角度の場合と同様に、手足の末端の位置・向き関数を混合する。
(t)={p (t)・w(t)+p (t)}/{w(t)/w(t)+w(t)} …式(31)
(t)={q (t)・w(t)+q (t)}/{w(t)/w(t)+w(t)} …式(32)
ルートの位置・向きと手足の末端の位置・向きから逆運動学計算により手足の全ての関節角度を計算する。
root,qroot,p,q→θ0...k …式(33)
【0075】
〔支点制約のある手足の関節角度〕
この演算が本手法の主要部である。支点制約のある手足については、動作Bが始まってからも動作Aの終了時の末端位置・向きをそのまま保つようにする。動作Bの途中でその手足を移動させることがあれば、そのときに動作Bのもとの末端位置・向きの関数と滑らかに混合する。動作Aの終了時の末端位置をp term 、動作Bにおいて次に足が離れる時刻をTleave 、Tleave 以降に足が地面に着く時刻(または動作Bの終了時刻)をTtouch とする。
<Tleave のとき
(t)=p (Tterm ) …式(34)
leave <t<Ttouch のとき
(t)={(Ttouch −t)p (Tterm )+(t−Tleave )p (t)}/(Ttouch −Tleave ) …式(35)
touch <tのとき
(t)=p (t) …式(36)
【0076】
〔ルート体節の位置・向きの関数〕
上記の方法に従って支点制約のある足の位置をもとの動作での位置から変化させたとき、ルート体節の位置がもとの動作のままでは最終的に生成される動作が不自然になってしまう場合がある。例えば、片足の位置が大きく動いたにも関らず、腰の位置がもとのままであれば、重心が支点面の外側にはみ出してそのままではキャラクタが転倒してしまうような動作が生成されるようなことがありうる。そこで、両足の位置変化に合わせて各キー時刻におけるルート体節の位置を計算する。
【0077】
まず、もとの動作データにおけるルート体節の水平位置を両足の位置を基準とした(u,v)座標系に変換する(図9参照)。ここで、基準ベクトルuは左足から右足へのベクトル、基準ベクトルvは体の正面方向である。この、(u,v)を足の位置修正後の基準ベクトルuに合わせて移動後のルート体節の水平位置p を計算する。
→(u,v), p →u+vv …式(37)
【0078】
(2)「連結モード」による接続
「連結モード」では、二つの動作の間に両者をつなぐ中間動作を挿入することによって、二つの動作の間をなめらかに接続する。二つの動作の間で足の位置が異なる場合には、中間動作中に足を移動させる。本接続方法は、二つの姿勢の差が大きい場合や、それぞれの動作をなるべく正確に実行したい場合に適している。なお、本接続方法は、以下の条件を全て満たす場合のみ適用可能である。
▲1▼接続前と接続後でルート・右手・左手が地面に着いていない(片足か両足で立っている状態)。
▲2▼少なくとも片方の足が接続前と接続後で共に地面に着いている。
【0079】
〔中間動作の作成〕
前の動作の終了時の姿勢、次の動作の開始時の姿勢からいくつかのキーフレームを作成して、それらの間を滑らかに補間することで中間動作を生成する。二つの姿勢の間で複数の支点の位置が異なっている場合は、中間動作の途中で、より重心に近い方の支点を基準として、他の支点を移動させる。。また、中間動作が速すぎたり遅すぎたりすると不自然になるため、二つの姿勢の間の差、および二つの動作の速度を基準に中間動作の速度(動作時間)を決定する。
【0080】
〔中間姿勢の計算〕
図10に示すように、動作Aと動作Bとの間に四つのキーフレーム(中間姿勢)を作成し、それらの間を滑らかに補間する。
中間姿勢1…前の動作の終了時の姿勢をそのまま使用する。
中間姿勢4…次の動作の開始時の姿勢をそのまま使用する。
【0081】
中間姿勢2…支点以外の足を移動できるように、重心を支点の上に移動する。中間姿勢1におけるルートの位置pを地面に投影した点をp としたとき、中間姿勢2における支点面の内部で最もp に近い点をルート体節の水平位置p とする。ただし、p が支点面の内部に含まれる場合はp =p 。ここで、支点面とはキャラクタと地面の接触面全体を含む最小の凸包面をいう。ルート体節の垂直位置p は、中間姿勢1における高さp をそのまま使用する。
=p +p  …式(38)
【0082】
中間姿勢3…支点以外の足を持ち上げて、移動先に向けての中間地点に移動する。
移動させる足の位置をf、支点となる足の位置をbとする。このとき、中間姿勢4における両者の距離|f−b|と中間姿勢3における両者の距離|f−b|が同じになる位置まで、足の位置をルート方向に移動する。
=a(p−f)+f, |f−b|=|f−b| …式(39)
式(39)から係数aを消去することで、fが求まる。
【0083】
〔動作時間の計算〕
二つの動作の間の姿勢の差および動作速度に応じて動作全体の速度を計算する。全ての関節において、中間動作の速度がある基準速度を超えないように中間速度の動作時間を計算する。
【0084】
まず、それぞれの関節iについて、基準となる速度を取得する。
・前の動作の終了時の速度θ’ (Tterm
・次の動作全体での最大速度θ’i_max=max{θ’ (t)}
・全体での最小速度を表す定数θ’min(上の二つの値が共に小さいときに中間動作の速度が遅くなり過ぎるのを防ぐため)
【0085】
それぞれの関節ごとに、中間動作の動作時間がTの時の最大の関節速度θ’i_maxを取得し、上記の速度のうち最大の速度より速くならないように動作時間T を計算する。
θ’i_max =max{θ’ (Tterm ),θ’i_max ,θ’min} …式(40)
θ’i_max>θ’i_max のときT =θ’i_max /θ’i_max …式(41)
最後に、全ての関節において最大の動作時間を中間動作の動作時間として採用する。
=max{T ,…,T } …式(42)
【0086】
次に、リアクション動作生成手段15における処理の詳細について説明する。リアクション動作生成手段15は、与えられた動作データに従って、動作制御手段13によりキャラクタの関節角加速度を制御するとき、そのまま動作データに従って制御を続けると不自然な動作が生成されてしまうような場合に、現在の動作データに代わる適切な動作データ(リアクション)を動的に生成して実行する。なお、リアクション動作生成手段15によるリアクションの生成が必要かどうかの判定は、動作判定手段14によって行われる。
【0087】
本実施形態においては、リアクション動作生成手段15により生成するリアクションの種類として、次の3種類を用意している。
・バランスを保つために足を踏み出す動作
・バランスを崩して着地する動作
・関節負荷が大きいときに安定した姿勢に戻る動作
以下、順番にこれらの開始条件・動作の生成方法について説明する。
【0088】
(1)バランスを保つために足を踏み出す動作
〔開始条件〕
キャラクタがバランスを崩したときに実行する。キャラクタがバランスを崩したかどうかの判定は、ルート(腰)の瞬間的な水平方向の速度p’・加速度p’’の大きさによって判定する。この判定は、動作判定手段14で行われる。
0.5<|p’|<1.0(m/sec)かつ|p’’|>10.0(m/sec) …式(43)
これらのパラメータは既存の手法や実際の動作データを参考に設定している。
〔リアクションの生成方法〕
バランスを崩したときに足に加わる荷重が小さい足を、倒れそうな方向に踏み出す。まず、足を踏み出して着地したときの姿勢を計算し、動作接続手法で用いた中間動作の計算方法を利用して現在の姿勢から足を踏み出して着地するまでの動作データを生成する。
足を着地するときの腰の位置は、バランスを崩したときの腰の速度の方向に応じて決定する(図11参照)。
root_term=krootp’+proot_init …式(44)
また、足を着地する位置は、支点となる足の位置と腰の位置によって決定する。
flying_term=kfoot(proot_term−pbase)+proot_term …式(45)
ここで、kroot,kfootは実験的に調整されたパラメータである。足を着地したときの足以外の関節の関節角度については、実行中のもとの動作データの終了時の姿勢の関節角度を使用する。
【0089】
(2)バランスを崩して着地する動作
〔開始条件〕
キャラクタが大きくバランスを崩したときに実行する。(1)と同じく、動作判定手段14によって、ルート(腰)の水平方向の速度・加速度の大きさに基づいて判定される。
|p’|>1.0(m/sec)かつ|p’’|>10.0(m/sec) …式(46)
〔リアクションの生成方法〕
足を踏み出す動作とは異なり、大きくバランスを崩して倒れてしまうような場合はそれほど着地位置に変化がないため、腰の水平方向の速度に応じて、あらかじめ作成しておいたいくつかの転倒動作データの中から適切なものを選択して使用する。本実施形態においては、前に倒れる動作と後ろに倒れる動作の2種類を用意している。選択した動作データをリアクションを合成モードで実行することで、動作合成手段12によって、現在の姿勢からバランスを崩した方向へ滑らかに倒れる動作を実現する。
【0090】
(3)関節負荷が大きいときに安定した姿勢に戻る動作
〔開始条件〕
動作制御手段13において、関節にかかる負荷が大きく、そのままでは目標の動作データを追従できない場合に実行する。動作制御手段13では、キャラクタの筋力モデルを考慮して、関節にかかる負荷が筋力の範囲におさまるように制御を行う。そのため、例えば重い荷物を持っている場合などは、その荷重によって与えられた動作データが実現できない場合がある。動作制御手段13において、ある関節で一定時間の間、もとの動作軌道に追従するための関節角加速度を出力できなかった場合(追従するための関節角加速度と出力された関節角加速度の符号が異なる場合)を動作判定手段14が判定し、このリアクションを実行する。〔リアクションの生成方法〕
現在の動作の開始時の姿勢を安定姿勢として、現在の状態から安定姿勢に戻る動作を生成する(二つのキーフレームの間を補間して動作データを作成する)。合成モードでリアクションを実行することで、リアクション動作の開始時に足が地面に着いている場合は、リアクション動作の間もその足は支点として地面に固定される。
【0091】
上記のように、本実施形態においては、リアクションの種類として、バランスを保つために足を踏み出す動作、バランスを崩して着地する動作、関節負荷が大きいときに安定した姿勢に戻る動作、の3種類を用意しているが、必ずしもこれだけに限る必要はない。
【0092】
【発明の効果】
本発明によれば、動作開始時のキャラクタの基準となる部分および全関節の状態を表すデータと複数の動作データとから生成した一つの動作データを目標動作としてキャラクタの関節角加速度を制御することによりキャラクタを動作させるに際して、動作データを目標動作として動作制御手法を適用しただけでは自然な動作を実現できない場合に、この動作データに代わる適切なリアクション動作の動作データを生成し、このリアクション動作の動作データを合成して目標動作とする構成により、非常に大きな衝撃や外力等がキャラクタに与えられた場合であっても、そのキャラクタの自然な動作をリアルタイムに生成してシミュレーションを行うことができる。
【図面の簡単な説明】
【図1】本発明の実施の形態におけるシミュレーション装置の構成を示すブロック図である。
【図2】キャラクタの骨格モデルの例を示す図である。
【図3】各制御空間の関係を示す図である。
【図4】追従制御に用いる近似関数の例を示す図である。
【図5】零モーメント点を示す図であって、(a)はバランスが保たれている状態を示す図、(b)はバランスが保たれていない状態を示す図である。
【図6】能動制御における各部位の制御の例を示す図である。
【図7】動作接続手法の説明図であって、(a)は合成モードを示す図、(b)は連結モードを示す図である。
【図8】支点制約を伴う動作合成の例を示す図である。
【図9】ルート体節の位置修正の例を示す図である。
【図10】支点制約を伴う動作連結の例を示す図である。
【図11】足を踏み出す動作の生成の例を示す図である。
【符号の説明】
11 動作データベース(DB)
12 動作合成手段
13 動作制御手段
14 動作判定手段
15 リアクション動作生成手段
16 動作演算手段
17 描画手段
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a simulation method, a simulation apparatus, and a simulation program for generating a motion of a virtual character such as a person or an animal appearing in a computer game or the like in real time.
[0002]
[Prior art]
The motion of a character such as a person appearing in a computer game is generated by continuously reproducing motion data created in advance. For this reason, the conventional computer game has a limitation that it can reproduce only a certain number of repeated operations. This restriction is not a problem when the character is operating alone. However, when dynamic changes from the environment such as characters colliding with each other or external force being applied are applied, there arises a big problem that a natural action cannot be generated.
[0003]
For example, when a character collides or is pressed, it is expected to reproduce an action such as swaying and swaying or falling. Such an operation needs to be changed according to the place and size to which an external impact or force is applied. However, since the current main approach can only reproduce a certain motion, an unnatural motion such that the character falls in the same way every time is reproduced.
[0004]
The present inventors have proposed an operation control method (Computer Graphics Forum (EUROGRAPHICS 2001) 20, 3, 192-202) for solving the above-described problems. In this method, instead of simply replaying the motion data created in advance, the joint motion acceleration of the character is controlled to follow the target motion using the given motion data as the target motion, and a dynamic simulation is performed. To calculate the actual behavior. In this motion control method, the joint angular acceleration of the character is controlled in consideration of the load applied to the joint and the balance of the whole body. As a result, it is basically possible to realize motion data created in advance in the same way as with existing systems, and when dynamic changes from the environment such as collision and external force are applied, those dynamic changes A natural motion can be generated according to the
[0005]
[Problems to be solved by the invention]
However, if this motion control method is simply used for the motion of the character as it is, the following two problems arise.
[0006]
(1) Natural motion cannot be generated when a very large impact / external force is applied to the character.
In the above motion control method, control is performed so as to realize a natural motion while following the input motion data as a target motion. Therefore, when a very large impact or the like that makes it difficult to realize the input operation data is applied, an unnatural operation is generated. For example, in this method, when a character loses balance due to an impact or the like, control is performed so as to maintain the balance by waving an arm or moving the waist according to the magnitude of the balance. For this reason, when a very large impact or the like is applied, control is performed such as swinging the arm violently in order to forcefully cancel them. In actual human motion, in such a case, instead of trying to achieve the target motion forcibly, for example, by moving the position of the foot so as to maintain balance, once the posture is stabilized, Flexible control is performed such that the target action is started again. However, it is difficult to realize such an operation only by the control in the angular acceleration space of this method.
[0007]
(2) When the operation changes due to an impact or external force, the next operation cannot be performed successfully.
In this operation control method, control is performed based on one operation data. However, in an actual application, it is necessary to be able to realize a plurality of operations in succession. In general applications such as current computer games, in order to generate a continuous motion of a character, a lot of short motion data is prepared in advance, and appropriate motion data is reproduced in order according to the situation. The approach of realizing a series of operations is taken. In this case, each motion data is basically created in advance so that the previous and subsequent motions are well connected. For example, by setting the posture at the end of the motion A and the posture at the start of the motion B, when the motion B is executed immediately after the motion A, the two motions can be smoothly connected. . Since the conventional application basically only reproduces the operation data created in advance, there is no problem in the connection between the operation data. However, when the character is moved using this movement control method, the original movement data is not always executed as it is. Therefore, as a result of the motion control, when the end posture of the previous motion is changed due to the influence of a collision or an external force, there is a problem that it cannot be connected to the next motion as it is.
[0008]
Therefore, the present invention provides a simulation method, a simulation apparatus, and a simulation program that can generate a natural motion of a character in real time even when a very large impact or external force is applied to the character.
[0009]
[Means for Solving the Problems]
The simulation method of the present invention includes a motion synthesis step for generating a single continuous motion data by smoothly connecting a plurality of motion data and data representing a character reference portion and all joint states at the start of motion. A motion control step for calculating the translation, rotational acceleration, and rotational acceleration of each joint as a reference of the character so as to realize a natural motion using the motion data generated in the motion synthesis step as a target motion; Motion data generated in the motion synthesis step from the data representing the current state of the reference portion and all the joints and the translation, rotational acceleration, and rotational acceleration of each joint calculated in the motion control step. Whether or not a natural motion can be realized by the motion control step. If the natural motion with the motion data generated in the motion synthesis step as a target motion cannot be realized as a result of the determination in the motion determination step and the motion determination step, the motion data of appropriate reaction motion instead of this motion data is obtained. The reaction motion generation step to be generated, the character reference portion and the data indicating the current state of all joints, the character reference portion translation, rotational acceleration, and rotational acceleration of each joint calculated in the motion control step And a motion calculation step for calculating data representing the motion states of the character reference portion and all joints.
[0010]
According to the present invention, when a character is moved with movement data generated from a plurality of movement data and data representing the character reference portion and the state of all joints at the start of movement, As a result of external force etc. being given to the character, when natural motion cannot be realized simply by applying the motion control method with this motion data as the target motion, motion data for appropriate reaction motion is generated instead of this motion data, By using the action data of the reaction action as a target action, it is possible to generate a natural action of the character in real time.
[0011]
In the simulation method of the present invention, the motion synthesis means for generating a single continuous motion data by smoothly connecting a plurality of motion data and data representing a character reference portion and all joint states at the start of motion. A motion control means for calculating the translation, rotational acceleration, and rotational acceleration of each joint so as to realize a natural motion using the motion data generated by the motion synthesis means as a target motion, and the character The motion generated by the motion synthesis means from the data representing the current state of all the joints and the current state of all the joints, and the translation, rotational acceleration, and rotational acceleration of each joint calculated by the motion control means A motion determination means for determining whether or not a natural motion can be realized by the motion control means with the data as a target motion, and a motion A reaction action generating means for generating action data of an appropriate reaction action instead of the action data when a natural action using the action data generated by the action synthesizing means as a target action cannot be realized as a result of the determination by the determining means; Based on the character reference part and the data representing the current state of all the joints and the character reference part translation, rotational acceleration and rotational acceleration of each joint calculated by the motion control means And a motion calculation means for calculating data representing the motion states of the joints and all the joints.
[0012]
Further, the simulation apparatus includes a motion synthesis unit that smoothly connects a plurality of motion data and data representing a character reference portion and the state of all joints at the start of motion and a plurality of motion data. The motion control means for calculating the translation, rotational acceleration and rotational acceleration of each joint as a reference of the character so as to realize a natural motion using the motion data generated by the motion synthesis means as a target motion, Motion data generated by the motion synthesizer from the data representing the current state of the reference part and all joints and the translation, rotational acceleration, and rotational acceleration of each joint calculated by the motion control means. Motion determining means for determining whether a natural motion can be realized by the motion control means with the target motion as a target motion, As a result of the determination by the means, when a natural action with the action data generated by the action synthesizing means as a target action cannot be realized, a reaction action generating means for generating action data of an appropriate reaction action instead of the action data; Based on the character's reference part and the data representing the current state of all joints and the character's reference translation, rotational acceleration and rotational acceleration of each joint calculated by the motion control means This can be realized by executing a simulation program that causes a computer to function as motion calculation means for calculating data representing the motion states of the parts and all joints.
[0013]
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 is a block diagram showing a configuration of a simulation apparatus according to an embodiment of the present invention.
In FIG. 1, the simulation apparatus according to the present embodiment includes a motion database (hereinafter referred to as “motion DB”) 11 in which motion data representing a plurality of motion states of a character created in advance and a character state at the time of motion start. The motion synthesis means 12 for smoothly connecting the data to be represented and a plurality of motion data executed in order by the character to generate one continuous motion data, and based on the motion data generated by the motion synthesis means 12 Whether the motion control means 13 for calculating the translation of the reference portion, the rotational acceleration, and the angular acceleration of each joint and the motion control means 13 can realize natural motion by using the motion data generated by the motion synthesis means 12 as a target motion. The action judging means 14 for judging, and the data of the appropriate reaction action instead of the action data Reaction motion generating means 15 to be formed, and motion calculating means for calculating data representing the motion state of the character on the basis of the translation, rotational acceleration and angular acceleration of each joint as a reference of the character calculated by the motion control means 13 16 and drawing means 17 for drawing a character based on the data calculated by the motion calculation means 16.
[0014]
Here, the data representing the character state is the position p (3 degrees of freedom) and the direction q (3 degrees of freedom) of a portion serving as a reference for the character, in this embodiment, the waist portion (hereinafter referred to as “root”). ) And the joint angle θ of all the joints of the character. Here, θ is an n-dimensional vector, and each element θi(I = 1,..., N) represents the joint angle of each joint. n is the total number of joints when the character is expressed as a multi-joint body. Generally, when a human is modeled as a multi-joint body, at least about 40 joints are required.
[0015]
The behavioral synthesis means 12 includes data representing the state of the character at the start of the motion (data on the position / orientation of the route and the state of all joints) and a plurality of motion data executed in order by the character (motion registered in the motion DB 11). Data or reaction operation data generated by the reaction operation generation means 15 (to be described later) and a connection method (either “synthesis mode” or “concatenation mode”) for starting each operation are received as inputs. These motion data are smoothly connected to generate one continuous motion data.
[0016]
Here, the motion data is the time function θ of the joint angles of all the joints of the character.i(T), time function p (t), q (t) of the route position and orientation, and restraint conditions of both hands and feet (one of three kinds of restraint conditions: angular constraint, end position / orientation constraint, and fulcrum constraint) Time change c)l(T) (l = {right foot, left foot, right hand, left hand}) and meta information (time of the entire operation, time of the start range, time of the end range, arrangement of key times, etc.).
[0017]
The motion control unit 13 calculates the translation of the character's route, the rotational acceleration, and the angular acceleration of each joint so as to realize a natural motion using the motion data generated by the motion synthesis unit 12 as a target motion. The motion determining means 14 is based on the character route translation, rotational acceleration and angular acceleration of each joint calculated by the motion control means 13 and data representing the current state of the character root and all joints. 12 determines whether or not a natural motion with the motion data generated by the target motion as a target motion can be realized, that is, whether the balance is so large that the motion control means 13 cannot cope with it, or whether a large joint load is applied. To do. The translation, rotational acceleration, and angular acceleration of each joint calculated by the motion control means 13 are also input to the motion calculation means 16.
[0018]
As a result of the determination by the operation determination unit 14, the reaction operation generation unit 15 performs an appropriate reaction operation in place of the operation data when a natural operation using the operation data generated by the operation synthesis unit 12 as a target operation cannot be realized. Dynamically generate motion data. The action data of the reaction action generated by the reaction action generator 15 is input to the action synthesizer 12.
[0019]
Based on the data representing the current state of the character's route and all joints and the translation, rotational acceleration, and angular acceleration of each joint calculated by the motion control means 13, the motion calculation means 16 Data representing the motion state of all joints is calculated. At the same time, the motion calculation means 16 calculates a collision between characters, an external force, and the like. The data calculated by the motion calculation means 16 is input to the motion synthesis means 12, used for calculation of the next motion data, and input to the drawing means 17.
[0020]
The drawing unit 17 draws a scene where the character appears, and continuously draws the character in the scene based on the data calculated by the motion calculation unit 16.
[0021]
Next, details of processing in the operation control means 13 will be described.
As described above, the motion control means 13 calculates the angular acceleration of each joint of the character. That is, motion control is performed in an angular acceleration space.
[0022]
In general, in an animation such as a computer game, posture expression based on a joint angle is used as a method of expressing the posture and movement of a multi-joint body such as a human. For example, if the character has n joints, the posture x of the character at a certain point in time can be expressed by the following expression by a combination of the position of the route, the orientations p and q, and the joint angle θ of all the joints.
x = {p, q, θ} p∈R3, Q∈R3, Θ∈Rn... Formula (1)
Here, the joint angle θ is an n-dimensional vector, and θiRepresents the joint angle of the i-th joint. Similarly, the motion data of the character can be expressed by the time change x (t) of the posture.
[0023]
An example of a character skeleton model is shown in FIG. In the present embodiment, a joint having a plurality of degrees of freedom is internally represented by a plurality of rotary joints having one degree of freedom (for example, the shoulder has three degrees of freedom (3 DOF). Model as 3 joints). Therefore, the rotational acceleration of each joint is controlled by angular acceleration about the axis of the rotational joint with one degree of freedom.
[0024]
Here, the relationship among the joint angle, the joint angular velocity, the joint angular acceleration, and the joint torque is shown in FIG. In general, when a human or a robot exercises, first, joint torque (force to rotate the joint) is generated by muscular strength or the action of a motor. This joint torque causes joint angular acceleration, and the joint velocity and joint angle change by integration of the joint angular acceleration.
[0025]
In general, in computer animation, when motion data is simply recorded / edited / reproduced, motion data is handled only in the joint angle space. In such a case, it is not necessary to consider joint angular acceleration or joint torque. However, if an attempt is made to generate a natural motion in consideration of mechanical influences such as collision and external force, it is necessary to consider joint angular acceleration and joint torque.
[0026]
In this method, in order to perform motion control in consideration of the restraint conditions of the limbs, in addition to the information of Expression (1), the motion data includes information on the restraint conditions of the limbs.
x ′ = {p, q, θ, c} p∈R3, Q∈R3, Θ∈Rn, C∈D4... Formula (2)
[0027]
Here, c represents the restraint condition of the limb in that state. c takes any value of {angle constraint, end position / orientation constraint, fulcrum constraint} for each of the right foot, left foot, right hand, and left hand. When the angle constraint is set as the constraint condition of the limb, the control is performed according to the joint angle data of the motion data. When the position / orientation constraint is set as the restraint condition for the limbs, the control is performed by giving priority to the position / orientation of the hand tip or the foot tip over the joint angle. The temporal changes in the position and orientation of the hand and foot are calculated from the original motion data. The position / orientation constraint is specified when the position / orientation of the hand or foot is more important than the posture of the limb, such as an action of picking up a falling object. Further, the fulcrum constraint is a special case of position / orientation constraint, and represents a state in which a load is applied with the limb contacting the ground as a fulcrum. When fulcrum restraint is set, control is performed so that the positions and orientations of the hands and toes are fixed and do not move.
[0028]
In this method, the joint angular acceleration is calculated by a two-step procedure.
First, the initial angular acceleration for following the target motion is calculated by following control. In follow-up control, each joint is controlled independently, and no mechanical influence or mutual influence is considered. Simply calculate the joint angular acceleration that smoothly converges to the trajectory of the target motion.
[0029]
Next, the output angular acceleration is corrected by dynamic control so that the operation becomes natural based on the initial angular acceleration calculated by the follow-up control. Specifically, when an action is performed with initial angular acceleration, if the character loses the balance of the whole body or a large load is applied to a certain joint that exceeds the range of muscle strength, depending on the effect To control the angular acceleration. When these problems do not occur, the initial angular acceleration is directly used as the output angular acceleration. That is, basically, an operation that simply follows the target operation is performed, and only when the balance is lost or a large joint load is applied, an operation corresponding to them is generated.
[0030]
This can be expressed in mathematical formulas as output angular acceleration θ ″.outputIs calculated by the following formula. Where θ ″initIs the initial angular acceleration by tracking control, Δθ ″dynamicIs the corrected angular acceleration by dynamic control.
θ ’output= Θ ’init+ Δθ ″dynamic... Formula (3)
[0031]
(1) Tracking control
[Control of joint angular acceleration]
In follow-up control, each joint is controlled independently. Initial angular acceleration θ ″ that follows the target trajectory when the target trajectory of the joint is p (t) and the current joint angle / angular velocity is θ, θ ′.initCalculate In follow-up control, two types of calculation methods are used depending on whether the target track is close or far.
[0032]
First, when the current state is close to the target trajectory (the state in which the motion is normally executed), the output angular acceleration is calculated so as to simply realize the target joint angle and angular velocity obtained from the target trajectory. The joint angle and angular velocity after time 2dt in the target trajectory (dt is the step size of the simulation)g, Θ ’gThen θg, Θ ’gThe angular acceleration to satisfy is calculated by the following equation.
θ ’init= 1 / dt2・ (Θg−θ) −1 / dt · (0.5θ ′g−1.5θ ′) Formula (4)
[0033]
On the other hand, if the current state is far from the target trajectory (a state in which the target trajectory cannot be temporarily followed due to a speed change due to a collision, etc.), the output angular acceleration is calculated using the above method, and a very large angular acceleration is calculated. The joint is overloaded. Therefore, an appropriate joint angular acceleration that smoothly converges to the target trajectory is calculated. The idea is to assume a smooth trajectory that converges from the current state to the next maximum / minimum point of the target trajectory (see FIG. 4), and the output angular acceleration is calculated from this trajectory.
[0034]
Here, a quadratic Ferguson function is used as the trajectory for convergence to the target motion. The Ferguson function is a function that is obtained from the position / velocity of two points and is continuous in the second order between them (angular acceleration changes linearly). The current joint angle / angular velocity is (θ, θ ′), and the joint angle / angular velocity at the next pole of the target trajectory is (θt, Θ ’t) If the time between two points is T and the current time is current_time, the Ferguson curve q (s) is expressed by the following equation.
q (s) = (2s3-3s2+1) θ + (− 2s3+ 3s2) Θt+ (S3-2s2+ S) θ ′ + (s3-2s2+ S) θ ′t... Formula (5)
s = (t-current_time) / T (formula 6)
[0035]
Here, the initial angular acceleration θ ″ is obtained by second-order differentiation of the above equation and substituting t = current_time.initIs calculated.
θ ’init= {6θt-6θ-2θ 't-4θ '} / T2... Formula (7)
In the follow-up control, first, the initial angular acceleration is calculated by the equation (4), and when the magnitude exceeds a predetermined range, the initial angular acceleration is calculated by using the equation (7).
[0036]
[Control of route translation and rotational acceleration]
Route position (translational acceleration) p "rootSimilarly, the initial acceleration is calculated independently for each of the xyz axes. Route direction (rotational acceleration) q ″rootFor, always calculate the initial angular acceleration according to equation (4).
[0037]
[Control of joint angular acceleration of restrained limbs]
For each limb (right hand, left hand, right foot, left foot), when position constraint / fulcrum constraint is set in the target motion, translation / rotational angular acceleration p ″ of the end portion of the limb (wrist / ankle)end, Q ″endCalculate
[0038]
The calculation method of joint angular acceleration of limbs differs depending on the constraint condition of each limb set in the motion data of the target motion. When an angle constraint is set for a certain limb, the joint of the limb can be freely controlled. Therefore, the angular acceleration of each joint is calculated independently by the above calculation method. On the other hand, for joints of limbs with end position / orientation constraints and fulcrum constraints, which are special cases, it is necessary to control the joints as a whole instead of controlling them independently. For example, when the character is standing on both feet (when fulcrum constraint is set on both feet), all joints of both feet must be controlled in a coordinated manner so that both feet do not leave the ground. Therefore, these joints are calculated using a method called inverse kinematics calculation from the translation (rotational angular acceleration) of the root (waist) and the end of the limb.
[0039]
Inverse kinematics calculation is a technique that is commonly used in animation tools and the like, and is a technique for calculating joint angles from the positions and orientations of the ends of limbs. Here, a calculation method in which inverse kinematic calculation is applied to an angular acceleration space is used. The calculation of the joint angular acceleration by the kinematic calculation method is expressed by the following equation.
p ″root, Q ″root, P "end, Q ″end→ θ ”0. . . k... Formula (8)
p ″root, Q ″rootIs the translational / rotational acceleration of the route, p "end, Q ″endIs the translational rotational acceleration at the end of the limb, θ ″0. . . kRepresents the angular acceleration of all joints of the limb. In general, there are two types of inverse kinematic calculation methods: a numerical solution method and an analytical solution method. In the present embodiment, an analytical inverse kinematic calculation method is used in which joint angular acceleration can be calculated at a higher speed by fixing the number of joints of each limb to seven.
[0040]
(2) Dynamic control
The dynamic control is divided into a plurality of steps of passive control, restraint-controlled limb control, active control, and motion speed control. In the following, first, the joint load and balance evaluation criteria, which are dynamic control criteria, will be described, and then each control step will be described in turn.
[0041]
[Balance control and load reduction control]
In dynamic control, two factors, joint load and whole body balance, are considered as a reference for performing control. That is, if the joint load is too large or the balance is lost if the initial angular acceleration calculated by the follow-up control is maintained, the angular acceleration is corrected so as to decrease them. Below, both evaluation criteria are demonstrated.
[0042]
Consider the character's muscular strength model as a reference for joint loading. Joint torque τ∈R required to realize a certain angular acceleration θ ″nCan be calculated by a method called inverse dynamics calculation.
τ = H (θ) θ ″ + C (θ, θ ′) + F (θ) + G (θ) (9)
θ and θ ′ are current joint angles and angular velocities, H (θ) is an inertia moment matrix representing the relationship between joint angular acceleration and joint torque, and C (θ, θ ′), F (θ), and G (θ). Are vectors representing the effects of Coriolis force, external force, and gravity on joint torque.
[0043]
Here, an effective range of torque that can be output at each joint is determined for each character as a muscle strength model.
τi minii max... Formula (10)
τi min, Τi maxAre the minimum and maximum values of joint torque that can be output at joint i, determined by the muscle force model. In load reduction control, output torque τiThe angular acceleration is controlled so that is within the effective range. Currently, the muscle strength model is a relatively simple model. Based on the data obtained from the motion capture data, the minimum and maximum values of the torque of each joint are expressed by a quadratic function of the angle and angular velocity of the joint. I use what I did.
τi min= Fi mini, Θ ’i), Τi max= Fi maxi, Θ ’i) ... Formula (11)
[0044]
Next, balance control will be described. As a reference for balance control, a concept called zero moment point used in robotics or the like is used. The zero moment point is a point where the moment applied to the ground from the whole body becomes zero. 5A and 5B are diagrams showing zero moment points, where FIG. 5A is a diagram showing a state in which the balance is maintained, and FIG. 5B is a diagram showing a state in which the balance is not maintained.
[0045]
As shown in FIG. 5A, when the zero moment point (ZMP) exists inside the fulcrum plane, the character is balanced. The fulcrum surface is the smallest convex hull surface including the entire contact surface between the character and the ground. On the other hand, as shown in FIG. 5B, when the zero moment point is outside the fulcrum plane, the character is not balanced and the point closest to the zero moment point inside the fulcrum plane (minimum moment point MMP). ) Around the character. In such a case, the joint angular acceleration is controlled so that the zero moment point moves inside the fulcrum surface. The position of the zero moment point can be calculated from the angular acceleration of all joints. Actually, the angular acceleration θ ″ ″ ∈R of all jointsnFrom the above, the translation acceleration s ′ ″ ∈R3 * m(M is the total number of nodes) and the position of the zero moment point is calculated.
[0046]
Where s ’i= {S ’i x, S ’i y, S ’i z} Is the translational acceleration of the segment i, and the ground is horizontal (y = 0), the position of the zero moment point is calculated by the following equation.
ZMPx= {Σmisi x(S ’i y-G) -Σmisi ys ’i x} / {Σmi(S ’i y-G)},
ZMPz= {Σmisi z(S ’i y-G) -Σmisi ys ’i z} / {Σmi(S ’i y-G)} Expression (12)
miIs the mass of the body segment i, si= {Si x, Si y, Si z} Is the position of the body segment i.
[0047]
(Passive control)
In passive control, the joint angular acceleration of each joint is controlled according to the joint load of each joint. For example, when a backward load is applied to the spine, the load is reduced by accelerating the angular acceleration of the spine backward according to the load. Control considering the load on other joints, such as reducing the load on the spine by the angular acceleration of the arms and hips, is performed by active control described later. In passive control, joints of limbs with end position / orientation / fulcrum constraints are not controlled. A method for controlling these joints will be described later.
[0048]
In passive control, the corrected angular acceleration is calculated in a two-step procedure. When the angular acceleration of each joint is calculated in a single procedure, when the initial angular acceleration of a certain joint is very large, the angular acceleration of all joints is corrected more than necessary due to the influence. Therefore, as a first step, only a very large joint angular acceleration is reduced. In the next step, the angular acceleration of each joint is controlled in consideration of the influence from other joints.
[0049]
In the first step, when the joint load exceeding the effective torque range of the joint is applied when the influence from other joints is ignored for each joint, the angular acceleration is adjusted so that the joint load falls within the effective torque range. Correct it.
(1) θ ″ = θ ″initAnd θ ’initIs the initial angular acceleration calculated by tracking control.
(2) The following processing is repeated for each joint i.
(3) The joint torque of the joint i when the influence of the angular acceleration of other joints is ignored is calculated.
τi= Hiiθ ’i+ Ci+ Fi+ Gi... Formula (13)
(4) Joint torque τiIf is beyond the range of muscle strength, the angular acceleration is corrected to fall within the range.
τiminWhen,
θ ’i= Θ ’i− (Τi−τmin) / Hii... Formula (14)
τi> ΤminWhen,
θ ’i= Θ ’i− (Τi−τmax) / Hii... Formula (15)
[0050]
In the second step, the angular acceleration is controlled so that the joint load falls within the effective torque range in consideration of the influence from other joints. In the second step, control is performed according to the following procedure.
(1) The joint torque is calculated in consideration of the influence from other joints.
τi= Σj = 1 nHijθ ’j+ Ci+ Fi+ Gi... Formula (16)
(2) Processing is performed in order from the joint i having the largest excess amount of joint torque from the effective range.
(3) The angular acceleration of the joint i is corrected in the same manner as the procedure (4) in the first step.
(4) If there are other joints that have not yet been processed and the joint torque exceeds the effective range, return to step (1) and repeat the operation.
Finally, θ ″ becomes the output angular acceleration after passive control. The correction amount of angular acceleration by this passive control is θ ″.passive= Θ ″ −θ ″initIt is.
[0051]
[Control of limbs with restraints]
As described in [Control of joint angular acceleration of limbs with constraint conditions], joints of limbs must be controlled in a coordinated manner for limbs with end position / orientation constraints and fulcrum constraints. . Therefore, in the control of these limbs, only the translational acceleration of the reference waist is controlled, and the angular acceleration of each joint is calculated by inverse kinematic calculation from the translational / rotational acceleration of the hips and the translational / rotational acceleration of the end of the limb. . That is, the angular acceleration of the joints of these limbs is indirectly controlled by the translational acceleration of the hips, and not directly.
[0052]
Hip translational acceleration p "root∈R3Performs control according to the joint load of the limbs with fulcrum constraints and the balance of the whole body. However, since the degree of freedom of translational acceleration of the waist is 3, for example, when the balance is lost and a large load is applied to a plurality of joints, it is not possible to deal with all of them. Therefore, the translational acceleration of the waist is controlled by paying attention only to the largest condition. If all the constraints cannot be solved by waist control alone, the following active control is used.
[0053]
When the character is out of balance, priority is given to balance control. This is because balance control is more important than load reduction control in order to realize stable control. When the balance is maintained and a load exceeding the effective torque range is applied to some joints, load reduction control is performed on the joint receiving the maximum load. As a result, even if the torque of some other joints cannot be within the effective range, it is ignored. If the balance is maintained at the current angular acceleration and the required torque of any joint does not exceed the effective range, the translational acceleration of the hip is not controlled, and the value calculated in the follow-up control is used as it is.
[0054]
First, the hip translational acceleration correction amount Δp ″ for balance controlrootThe calculation method of will be described.
(1) Necessary amount of movement ΔZMP∈R for how much the zero moment point needs to be moved for balance control2Calculate First, the position of the ZMP at the current angular acceleration θ ″ is calculated to determine whether the ZMP is inside the fulcrum surface. If ZMP is inside the fulcrum surface, balance control is not necessary. If ZMP is outside the fulcrum surface, the shortest movement distance ΔZMP (= ZMP−MMP) to the fulcrum surface is calculated.
(2) Δp ″root∈R3And ΔZMP∈R2Jacobian matrix representing the relationship of J = ∂ZMP / ∂p ″root∈R2 * 3Calculate ∂ZMP / ∂p ″rootCan be calculated from the amount of movement of the center of gravity of the entire upper body according to the translational acceleration of the waist.
ΔZMP = JΔp ″rootFormula (17)
(3) Δp ″ for realizing ΔZMProotCalculate Where Δp ″rootHas a higher degree of freedom than ΔZMP, so Δp ″rootThere are infinite solutions. Therefore, using a technique called a pseudo inverse matrix, | Δp ″rootA solution Δp ″ that minimizes |rootAsk for.
Δp ″root= J+ΔZMP, J+= J (JtJ)-1... Formula (18)
Where matrix J+Is a pseudo-inverse of the matrix J.
[0055]
Next, hip translational acceleration correction amount Δp ″ for load reduction controlrootThe calculation method of will be described.
(1) Calculate the load of each joint (all joints of both feet when standing with both feet) included in the limb with the position, orientation constraint, and fulcrum constraint of the end, and the joint with the largest load (composite joint) ) Is controlled so as to reduce the torque to the effective range. Here, not a single joint, but a composite joint. In the skeletal model, the actual joint is internally divided into a plurality of joints (up to three) (see FIG. 2). For example, an ankle joint is actually represented by the angle of three joints centered on xyz. In the load reduction control, each composite joint (for example, τ in the case of the right ankle)r_ankle= {Τr_ankle_x, Τr_ankle_y, Τr_ankle_z} ∈R3The control is performed on the target. Excess amount of torque | Δτ for all target composite jointsj|, Δτj∈R1 ~ 3The control is performed so that the torque of the joint with a large is reduced.
[0056]
(2) Δp ″ as in the case of balance controlroot∈R3And Δτ∈R1 ~ 3The relationship H = ∂τ / ∂p ″rootCalculate H can be calculated from the inverse kinematic calculation and the moment of inertia matrix of equation (9). Where Δp ″rootIs equal to or greater than Δτ, the pseudo inverse matrix H is the same as in the balance control.+Δp ″ usingrootCalculate
Δp ″root= H+Δτ, H+= H (HtH)-1... Formula (19)
If the balance is greatly lost or the joint is heavily loaded, Δp ''rootAlso grows. However, if the translational acceleration of the waist becomes too large, it becomes unnatural. Therefore, the maximum value p ″ of the translational acceleration of the waist in advance.root_maxAnd the corrected acceleration | p ″root+ Δp ″root| Is p ″root_maxIf it ’s bigger than p ’root_maxScaling to fit within the range.
[0057]
(Active control)
In the active control, each joint is not controlled independently, but a control that assists the operation of other joints and the whole body is performed in consideration of the mutual effect of the joints. For example, active control such as reducing the load applied to the lower limbs by shaking the arm or maintaining the balance of the whole body by moving the upper body is realized. However, calculating the effects of all human joints to perform active control requires a huge amount of calculation, and there is a lot of waste because some joints do not have much influence. Therefore, in this method, particularly important joints that affect the movement of the whole body are selected, and active control is performed for each part of the body. Specifically, as shown in FIG. 6, the whole body is divided into three parts, ie, limbs, back, and waist, and controlled. The translational acceleration of the waist is controlled by the method described above. Here, we describe the control of the remaining limbs and back. These control methods are also almost the same as the control method of the translational acceleration of the waist. In active control, control is first performed in the order of limbs and then back.
[0058]
In the control of limbs, control is performed using only limbs that can move freely without constraint conditions. For example, when fulcrum restraint is specified for both feet and standing on both feet, all joints of both feet are controlled by the method described in [Control of limbs with fulcrum restraint], and only both hands are used for active control.
[0059]
For each limb, not all joints are controlled, but only three degrees of freedom that have a great influence on the whole body are selected and controlled. As shown in FIG. 6, in the case of an arm, three degrees of freedom of rotation of the shoulder in the x-axis direction (front-rear direction), rotation of the shoulder in the z-axis direction (left-right direction), and rotation of the elbow in the x-axis direction (front-rear direction). Is used. For example, the rotation of the shoulder in the y-axis direction (direction twisted to the left and right with the arm as an axis) has less influence on the joints of the whole body than the rotation of the other axes of the shoulder, and is not used for active control. Since both hands and feet need to be controlled in a coordinated manner, the control acceleration Δθ of all limbslimbCalculate at once. ΔθlimbThe dimension varies depending on the number of limbs that can be controlled. For example, if the character stands on both feet and controls only both hands, the number of dimensions is 3 × 2 = 6, that is, Δθ.limb∈R6It becomes. Actual control acceleration ΔθlimbThe calculation method is substantially the same as the method for controlling the translational acceleration of the waist described in [Control of limbs with fulcrum constraint]. (1) The balance and joint load are calculated based on the current angular acceleration θ ″. If balance is not maintained, balance control is performed. If the balance is maintained, load reduction control is performed on the joint (composite joint) with the largest load throughout the body.
Δθ ″limb= J+ΔZMP or Δθ ″limb= H+Δτ Equation (20)
(2) The control result is reflected in the angular acceleration θ ″. SlimbIs θ ’limbIs a selection matrix that maps to each joint.
θ ″ = θ ″ + Slimbθ ’limb... Formula (21)
[0060]
As described above, since the degree of freedom of each part is limited, it is not always possible to control to satisfy all the conditions of the balance of the whole body and the joint loads of all joints only by the control of the waist and arms. If the condition to be controlled still remains after the arm control, the control is performed using the back. On the back, control is performed by moving the entire upper body using a three-degree-of-freedom rotation of the spine in the xyz-axis direction. At this time, Δθback∈R3It becomes. ΔθbackThe calculation method of is exactly the same as that for limbs.
Δθ ″back= J+ΔZMP or Δθ ″back= H+Δτ Equation (22)
θ ″ = θ ″ + Sbackθ ’back... Formula (23)
[0061]
[Control of operation speed]
When the load applied to the joint is large, the joint acceleration is limited by passive control. For example, when a large load is applied to the arm, the acceleration for lifting the arm is reduced by the load. When the target motion is not sufficiently followed in this way, the difference between the target motion and the current state is prevented from becoming too large by delaying the speed at which the target motion is advanced. For example, motion data having a length of 10 seconds is usually executed using a simulation internal time of 10 seconds. However, when the target operation cannot be followed, control is performed so as to realize the target operation as much as possible by delaying the reproduction speed of the operation data. In other words, the operation data for 10 seconds may be executed in the simulation internal time of 15 seconds. As a result of the overall control, if there is even one joint that cannot realize the output angular acceleration in the initial angular acceleration direction (θ ″)init i・ Θ ''output i<If there is at least one joint i that is 0), the motion speed is calculated by the following equation. In other cases, speed = 1.0.
speed = (tnext-T) / (tnext-Tprev) ... Formula (24)
Where t is the current time and tnext, TprevAre the previous key frame and the next key frame obtained from the motion data of the target motion. Since the posture of the key frame is particularly important in the operation, the closer to the key frame, the slower the operation speed so that the target operation can be followed as much as possible.
[0062]
[Overall control procedure]
The overall control procedure is as follows. The joint load is controlled so as to reduce the joint load by active control, and passive control is performed when the joint load cannot be completely removed. As for balance control, first, balance control based on passive control / restraint limb control is calculated. If balance cannot be controlled, balance control is performed by active control. This is because the movement of the waist is more important than the movement of the arms and back for balance control.
(1) Initial angular acceleration θ ″ by tracking controlinitCalculate
(2) Initial angular acceleration θ ″initBased on the above, the balance control by passive control and restraint limb control is temporarily calculated. In the following equation, J is a matrix representing the change in the angular acceleration of the whole body in accordance with the change in the translational acceleration of the waist obtained by inverse kinematics calculation. θ ″ == θ ″init+ Θ ″passive+ Jθ ″root
(3) Calculate active control (Balance control is based on θ ″, Load reduction control is θ ″)initStandard). θ ″ == θ ″init+ Slimbθ ’limb+ Sbackθ ’back
(4) Add the influence of active control to the initial angular acceleration to calculate passive control and restraint limb control. θ ’output= Θ ″ + θ ″passive+ Jθ ″root
(5) Calculate the operation speed speed.
[0063]
As described above, the motion control means 13 is generated when the control of the character joint is controlled in the torque space by applying the robot control method as it is in the conventional method by the approach of performing the control in the angular acceleration space. Resolve various problems you had. As a result, basically, it is possible to realize the control according to the balance and the joint load as needed while realizing the target motion almost accurately. In the present embodiment, the motion control is performed so as to reduce the large load applied to the joint while maintaining the balance of the whole body, but it is not necessarily limited to this.
[0064]
Next, details of the processing in the behavioral synthesis means 12 will be described.
As described above, the behavioral synthesis means 12 has a function of smoothly connecting a plurality of motion data and outputting the motion data as a whole. In particular, the behavioral synthesis means 12 can avoid a phenomenon that occurs when a simple motion interpolation method is used and a foot that is supposed to be loaded slips unnaturally on the ground. is there.
[0065]
Many methods for synthesizing a plurality of motion data to generate new motion data have been proposed so far. However, since the motion data is basically reproduced as it is in the conventional system, it is not assumed that the posture of the character deviates from the motion data due to a collision or an external force. For this reason, it is assumed that most of the existing methods are basically created so that motion data are connected well in advance, and there are things that do not consider the situation where the position of the foot differs between motions. Many. These existing methods aim to increase movement variations, such as combining movements of the upper body and lower body, or generating movements that run at a medium speed by mixing fast and slow movements. It is a thing. Some of the existing methods deal with some fulcrum foot problems. For example, a paper by Rose et al. In 1995 (In Proceedings of SIGGRAPH95, ACM Press / ACM SIGGRAPH, Computer Graphics Proceedings, Annual Conferencing Series, ACM, 147-154) A method has been proposed to fix the above. However, in this method, since the positions of the feet other than the axial feet are simply interpolated, when one stands on both feet, an operation in which one foot slides on the ground is also generated. Thus, even when standing on both feet, there is no behavioral synthesis method that can prevent the foot to be a fulcrum from slipping unnaturally.
[0066]
The behavioral synthesis means 12 uses two types of methods, “synthesis mode” and “connection mode”, as behavioral connection methods that satisfy the above-mentioned purpose. FIGS. 7A and 7B are explanatory diagrams of the operation connection method, in which FIG. 7A is a diagram showing a synthesis mode, and FIG. 7B is a diagram showing a connection mode. In the simulation apparatus according to the present embodiment, an appropriate connection method can be properly used depending on the situation by specifying one of the methods when inputting the behavior data to the behavioral synthesis unit 12. In this embodiment, two types of methods, “synthesis mode” and “connection mode”, are used, but it is not necessarily limited to this.
[0067]
However, not all types of operations can be connected using these connection methods. For example, if an operation that starts in a standing state is performed after an operation that ends in a sleeping state, it is necessary to perform a rising operation between the two operations. Processing including such advanced operation planning is beyond the scope of this method. The purpose of this method is to connect the actions that were originally created so as to connect well, if they have changed due to external influences.
[0068]
In this method, in addition to the actual process of connecting the data in the two operation states, it is determined whether or not the two operations can be connected in the first place. It is possible to select another connection method or another operation by determining whether or not the connection is possible before actually providing the operation connection.
[0069]
This method mainly targets movements that start and end in a state where the character is standing on the ground (especially standing with both feet), which is often required in actual applications. However, the algorithm of this method is basically applicable to a sitting state or a sleeping state.
[0070]
(1) Connection by “Composite mode”
In the “synthesis mode”, the two operations are connected by smoothly mixing the end portion of the previous operation and the start portion of the next operation (see FIG. 8). If the position of the foot is different between the two movements, the position at the end of the previous movement is preserved even after the next movement starts, and then smoothly mixed with the next movement when the foot is moved . This connection method is suitable when the difference between the postures of the two actions is small or when it is desired to connect the two actions at high speed. In this connection method, the route, both hands, and both feet have the same constraints before and after connection (for example, if both feet are on the ground in the previous movement, It must be applicable only to those who need to wear both feet.
[0071]
[Calculation of normal joint angle]
First, the current time t and the start (scheduled) time t of the two actions A and Binit A, Tinit BTo local time t within each operation dataA, TBCalculate
tA= T-tinit A, TB= T-tinit B... Formula (25)
[0072]
Next, the weight of each operation at time t is calculated.
wA(TA) = (TA-Ttotal A+ Tterm A) / Tterm A, (TA> TtotalATterm A) ... Formula (26)
wB(TB) = TB/ Tinit B, (TB<Tinit B) ... Formula (27)
Where Ttotal, Tinit, TtermAre the time of the whole operation, the time of the start range, and the time of the end range, respectively. These times are given as meta data of the operation data when the operation data is created.
[0073]
Finally, the function of the joint angle of the two actions is mixed according to the weight.
θi(T) = {θi A(TA) ・ WA(TA) + Θi B(TB) ・ WB(TB)} / {WA(TA) + WB(TB)} ... Formula (28)
Similarly, the position and orientation of the root body segment are blended according to the weight.
proot(T) = {proot A(TA) ・ WA(TA) + Proot B(TB)} / {WB(TB) / WA(TA) + WB(TB)} ... Formula (29)
qroot(T) = {qroot A(TA) ・ WA(TA) + Qroot B(TB)} / {WB(TB) / WA(TA) + WB(TB)} ... Formula (30)
[0074]
[Joint angles of limbs with position restrictions]
As in the case of the joint angle, the position / orientation functions at the ends of the limbs are mixed.
pl(T) = {pl A(TA) ・ WA(TA) + Pl B(TB)} / {WB(TB) / WA(TA) + WB(TB)} ... Formula (31)
ql(T) = {ql A(TA) ・ WA(TA) + Ql B(TB)} / {WB(TB) / WA(TA) + WB(TB)} ... Formula (32)
All joint angles of limbs are calculated by inverse kinematics calculation from the position / orientation of the root and the position / orientation of the end of the limb.
proot, Qroot, Pl, Ql→ θ0. . . k... Formula (33)
[0075]
[Joint angles of limbs with fulcrum restrictions]
This calculation is the main part of this method. For a limb with a fulcrum constraint, the end position and orientation at the end of the operation A are maintained even after the operation B starts. If the limb is moved during the operation B, it is smoothly mixed with the function of the original end position and orientation of the operation B at that time. The end position at the end of action A is pl ATterm A, Tleave B, Tleave BTtouch BAnd
tB<Tleave BWhen
pl(T) = pl A(Tterm A) ... Formula (34)
Tleave B<TB<Ttouch BWhen
pl(T) = {(Ttouch B-TB) Pl A(Tterm A) + (TB-Tleave B) Pl B(TB)} / (Ttouch B-Tleave B) ... Formula (35)
Ttouch B<TBWhen
pl(T) = pl B(TB) ... Formula (36)
[0076]
[Root body position / orientation function]
When the position of a foot with a fulcrum constraint is changed from the position of the original movement according to the above method, the final generated movement becomes unnatural if the position of the root segment is the original movement. May end up. For example, if the position of one leg moves greatly, but the waist position remains the same, an action is generated that causes the center of gravity to protrude outside the fulcrum surface and the character to tip over if left as it is. It can happen. Therefore, the position of the root body segment at each key time is calculated according to the position change of both feet.
[0077]
First, the horizontal position of the root body segment in the original motion data is converted into a (u, v) coordinate system based on the positions of both feet (see FIG. 9). Here, the reference vector u is a vector from the left foot to the right foot, and the reference vector v is the front direction of the body. This (u, v) is the reference vector u after foot position correction.*The horizontal position p of the root body segment after moving tot *Calculate
pt→ (ut, Vt), Pt *→ utu*+ Vtv ... Formula (37)
[0078]
(2) Connection in “connected mode”
In the “coupled mode”, an intermediate operation that connects the two operations is inserted between the two operations, thereby smoothly connecting the two operations. If the foot position is different between the two motions, the foot is moved during the intermediate motion. This connection method is suitable when the difference between the two postures is large or when it is desired to execute each operation as accurately as possible. This connection method is applicable only when all of the following conditions are satisfied.
(1) The route, right hand, and left hand are not on the ground before and after connection (when standing on one or both feet).
(2) At least one of the feet is on the ground before and after connection.
[0079]
[Create intermediate motion]
Several key frames are created from the posture at the end of the previous motion and the posture at the start of the next motion, and an intermediate motion is generated by smoothly interpolating between them. If the positions of a plurality of fulcrums are different between the two postures, the other fulcrum is moved with reference to the fulcrum closer to the center of gravity in the middle of the intermediate operation. . Further, since it becomes unnatural if the intermediate motion is too fast or too slow, the speed (motion time) of the intermediate motion is determined based on the difference between the two postures and the speed of the two motions.
[0080]
[Calculation of intermediate posture]
As shown in FIG. 10, four key frames (intermediate postures) are created between the motion A and the motion B, and a smooth interpolation is performed between them.
Intermediate posture 1... The posture at the end of the previous operation is used as it is.
Intermediate posture 4... The posture at the start of the next operation is used as it is.
[0081]
Intermediate posture 2... The center of gravity is moved above the fulcrum so that the feet other than the fulcrum can be moved. Route position p in intermediate posture 11P is the point projected onto the ground1 *P is the most inside the fulcrum surface in the intermediate posture 21 *A point close to is the horizontal position p of the root segment2 hAnd However, p1 *P is included in the fulcrum plane2 h= P1 *. Here, the fulcrum surface is the smallest convex hull surface including the entire contact surface between the character and the ground. Vertical position p of root segment2 vIs the height p in the intermediate posture 11 vUse as is.
p2= P2 h+ P2 v... Formula (38)
[0082]
Intermediate posture 3. Lifts a foot other than the fulcrum and moves to an intermediate point toward the destination.
Assume that the position of the foot to be moved is f and the position of the foot serving as a fulcrum is b. At this time, the distance between the two in the intermediate posture 4 | f4-Bf| And the distance between them in intermediate posture 3 | f3-B3The position of the foot is moved in the root direction until the position where | is the same.
f3= A (p2-F2) + F2, | F3-B3| = | F4-B4| ... Formula (39)
By eliminating the coefficient a from equation (39), f3Is obtained.
[0083]
[Calculation of operating time]
The speed of the entire motion is calculated according to the difference in posture between the two motions and the motion speed. In all the joints, the operation speed of the intermediate speed is calculated so that the speed of the intermediate movement does not exceed a certain reference speed.
[0084]
First, a reference speed is acquired for each joint i.
-Speed θ 'at the end of the previous movementi A(Tterm A)
・ Maximum speed θ ′ for the next operation as a wholei_max= Max {θ 'i B(T)}
・ Constant θ ′ representing the overall minimum speedmin(To prevent the intermediate operation from becoming too slow when the above two values are both small)
[0085]
For each joint, the operation time of the intermediate operation is TiMaximum joint speed θ ’i_maxAnd the operation time T so as not to be faster than the maximum speed among the above speeds.i *Calculate
θ ’i_max *= Max {θ 'i A(Tterm A), Θ ’i_max B, Θ ’min} ... Formula (40)
θ ’i_max> Θ ’i_max *When Ti *= Θ ’i_max *Ti/ Θ ’i_max... Formula (41)
Finally, the maximum operation time is adopted as the operation time of the intermediate operation in all joints.
T*= Max {T1 *, ..., Tn *} ... Formula (42)
[0086]
Next, the details of the processing in the reaction action generating means 15 will be described. When the reaction control unit 13 controls the joint angular acceleration of the character according to the given motion data, the reaction motion generation unit 15 may generate an unnatural motion if the control is continued according to the motion data. Appropriate operation data (reaction) to replace the current operation data is dynamically generated and executed. Note that whether or not the reaction operation generating unit 15 needs to generate a reaction is determined by the operation determining unit 14.
[0087]
In the present embodiment, the following three types are prepared as the types of reaction generated by the reaction operation generating unit 15.
・ Stepping to keep balance
・ Move to balance and land
・ Operation to return to a stable posture when joint load is large
Hereinafter, a method for generating these start conditions and actions will be described in order.
[0088]
(1) Stepping to keep balance
〔Initiation condition〕
Executes when the character loses balance. Whether or not the character has lost the balance is determined by the instantaneous horizontal velocity p 'and acceleration p "of the root (waist). This determination is performed by the operation determination unit 14.
0.5 <| p ′ | <1.0 (m / sec) and | p ″ |> 10.0 (m / sec)2) ... Formula (43)
These parameters are set with reference to existing methods and actual operation data.
[Reaction generation method]
Stepping on a foot that has a small load on your foot when you lose balance, in a direction that would cause you to fall. First, the posture at the time of stepping on and landing is calculated, and motion data from the current posture to stepping on and landing using the intermediate motion calculation method used in the motion connection method is generated.
The position of the waist when landing the foot is determined according to the direction of the speed of the waist when the balance is lost (see FIG. 11).
proot_term= Krootp ’+ proot_init... Formula (44)
The position where the foot is landed is determined by the position of the foot serving as a fulcrum and the position of the waist.
pflying_term= Kfoot(Proot_term-Pbase) + Proot_term... Formula (45)
Where kroot, KfootAre experimentally adjusted parameters. For the joint angle of the joint other than the foot when the foot is landed, the joint angle of the posture at the end of the original motion data being executed is used.
[0089]
(2) Landing operation when the balance is lost
〔Initiation condition〕
Executed when the character is greatly out of balance. As in (1), the motion determination means 14 makes a determination based on the horizontal speed / acceleration of the route (waist).
| P ′ |> 1.0 (m / sec) and | p ″ |> 10.0 (m / sec)2) ... Formula (46)
[Reaction generation method]
Unlike a stepping on foot, if you fall greatly out of balance and fall down, the landing position does not change so much, so depending on the horizontal speed of the waist, several pre-made falling movements Select and use the appropriate data. In the present embodiment, two types of actions are prepared: an action that falls forward and an action that falls backward. By executing the reaction on the selected motion data in the synthesis mode, the motion synthesis means 12 realizes a motion that smoothly falls down from the current posture in the direction in which the balance is lost.
[0090]
(3) Operation to return to a stable posture when the joint load is large
〔Initiation condition〕
The operation control means 13 executes when the load on the joint is large and the target operation data cannot be tracked as it is. The motion control means 13 performs control so that the load applied to the joint falls within the range of muscle strength in consideration of the character's muscle strength model. For this reason, for example, when carrying a heavy load, the operation data given by the load may not be realized. When the motion control means 13 cannot output the joint angular acceleration for following the original motion trajectory for a certain time at a certain joint (the joint angular acceleration for following and the sign of the output joint angular acceleration) And the reaction determination unit 14 executes this reaction. [Reaction generation method]
The posture at the start of the current motion is set as a stable posture, and a motion that returns to the stable posture from the current state is generated (motion data is created by interpolating between two key frames). By executing the reaction in the composite mode, if the foot is on the ground at the start of the reaction operation, the foot is fixed to the ground as a fulcrum during the reaction operation.
[0091]
As described above, in this embodiment, there are three types of reaction: an operation of stepping out to maintain balance, an operation of landing with a loss of balance, and an operation of returning to a stable posture when the joint load is large However, this is not necessarily limited to this.
[0092]
【The invention's effect】
According to the present invention, the joint angular acceleration of a character is controlled using one piece of motion data generated from a plurality of pieces of motion data and data representing the character reference portion and all joints at the start of motion as a target motion. When the character is moved by the action data, if the action data is used as the target action and a natural action cannot be realized, the action data for the appropriate reaction action is generated instead of the action data. By configuring the motion data as the target motion, even if a very large impact or external force is applied to the character, the natural motion of the character can be generated and simulated in real time .
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of a simulation apparatus according to an embodiment of the present invention.
FIG. 2 is a diagram illustrating an example of a skeleton model of a character.
FIG. 3 is a diagram illustrating a relationship between control spaces.
FIG. 4 is a diagram illustrating an example of an approximation function used for follow-up control.
5A and 5B are diagrams showing zero moment points, where FIG. 5A is a diagram showing a state in which balance is maintained, and FIG. 5B is a diagram showing a state in which balance is not maintained.
FIG. 6 is a diagram illustrating an example of control of each part in active control.
7A and 7B are explanatory diagrams of an operation connection method, in which FIG. 7A is a diagram illustrating a synthesis mode, and FIG. 7B is a diagram illustrating a connection mode;
FIG. 8 is a diagram showing an example of behavioral synthesis with fulcrum constraints.
FIG. 9 is a diagram illustrating an example of position correction of a root body segment.
FIG. 10 is a diagram showing an example of motion connection with fulcrum constraints.
FIG. 11 is a diagram illustrating an example of generation of a stepping action.
[Explanation of symbols]
11 Operation database (DB)
12 Behavioral synthesis means
13 Operation control means
14 Operation judgment means
15 Reaction action generation means
16 Operation calculation means
17 Drawing means

Claims (6)

動作開始時のキャラクタの基準となる部分および全関節の状態を表すデータと複数の動作データとを滑らかに接続して連続した一つの動作データを生成する動作合成ステップと、
この動作合成ステップにおいて生成された動作データを目標動作として自然な動作を実現するように前記キャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度を算出する動作制御ステップと、
前記キャラクタの基準となる部分および全関節の現在状態を表すデータと前記動作制御ステップにおいて算出されたキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度とから、前記動作合成ステップにおいて生成された動作データを目標動作として前記動作制御ステップにより自然な動作を実現できるか否かを判定する動作判定ステップと、
前記動作判定ステップにおける判定の結果、前記動作合成ステップにおいて生成された動作データを目標動作とした自然な動作を実現できない場合に、この動作データに代わる適切なリアクション動作の動作データを生成するリアクション動作生成ステップと、
前記キャラクタの基準となる部分および全関節の現在状態を表すデータと前記動作制御ステップにおいて算出されたキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度とに基づいて、前記キャラクタの基準となる部分および全関節の動作状態を表すデータを算出する動作演算ステップと
を含むシミュレーション方法。
A motion synthesis step for smoothly connecting a plurality of motion data and data representing a reference portion of the character at the start of motion and the state of all joints and a plurality of motion data;
A motion control step for calculating the translation, rotational acceleration, and rotational acceleration of each joint so as to realize a natural motion using the motion data generated in this motion synthesis step as a target motion;
In the motion synthesis step, from the data representing the current state of the character reference portion and all the joints and the translation, rotational acceleration and rotational acceleration of each joint calculated as the character reference portion calculated in the motion control step. An operation determination step for determining whether a natural operation can be realized by the operation control step using the generated operation data as a target operation; and
As a result of the determination in the action determination step, when a natural action with the action data generated in the action synthesis step as a target action cannot be realized, a reaction action that generates action data of an appropriate reaction action instead of the action data Generation step;
Based on data representing the current state of the character's reference part and all joints and the translation, rotational acceleration, and rotational acceleration of each joint of the character's reference part calculated in the motion control step, A simulation method including a motion calculation step of calculating data representing motion states of a reference portion and all joints.
動作開始時のキャラクタの基準となる部分および全関節の状態を表すデータと複数の動作データとを滑らかに接続して連続した一つの動作データを生成する動作合成手段と、
この動作合成手段により生成された動作データを目標動作として自然な動作を実現するように前記キャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度を算出する動作制御手段と、
前記キャラクタの基準となる部分および全関節の現在状態を表すデータと前記動作制御手段により算出されたキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度とから、前記動作合成手段により生成された動作データを目標動作として前記動作制御手段により自然な動作を実現できるか否かを判定する動作判定手段と、
前記動作判定手段による判定の結果、前記動作合成手段により生成された動作データを目標動作とした自然な動作を実現できない場合に、この動作データに代わる適切なリアクション動作の動作データを生成するリアクション動作生成手段と、
前記キャラクタの基準となる部分および全関節の現在状態を表すデータと前記動作制御手段により算出されたキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度とに基づいて、前記キャラクタの基準となる部分および全関節の動作状態を表すデータを算出する動作演算手段と
を備えたシミュレーション装置。
A motion synthesis means for smoothly connecting a plurality of motion data and data representing a character reference portion and all joint states at the start of motion to generate one motion data;
Motion control means for calculating the translation, rotational acceleration and rotational acceleration of each joint as a reference of the character so as to realize a natural motion using the motion data generated by the motion synthesis means as a target motion;
From the data representing the current state of the reference part of the character and all the joints and the translation, rotational acceleration, and rotational acceleration of each joint calculated by the motion control means, the motion synthesis means An operation determination unit that determines whether or not a natural operation can be realized by the operation control unit using the generated operation data as a target operation;
A reaction action that generates action data of an appropriate reaction action instead of the action data when a natural action using the action data generated by the action synthesizing means as a target action cannot be realized as a result of the judgment by the action judging means. Generating means;
Based on data representing the current state of the character's reference part and all joints, and the translation, rotational acceleration, and rotational acceleration of each joint calculated by the motion control means. A simulation apparatus comprising a motion calculation means for calculating data representing motion states of a reference portion and all joints.
動作開始時のキャラクタの基準となる部分および全関節の状態を表すデータと複数の動作データとを滑らかに接続して連続した一つの動作データを生成する動作合成手段と、
この動作合成手段により生成された動作データを目標動作として自然な動作を実現するように前記キャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度を算出する動作制御手段と、
前記キャラクタの基準となる部分および全関節の現在状態を表すデータと前記動作制御手段により算出されたキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度とから、前記動作合成手段により生成された動作データを目標動作として前記動作制御手段により自然な動作を実現できるか否かを判定する動作判定手段と、
前記動作判定手段による判定の結果、前記動作合成手段により生成された動作データを目標動作とした自然な動作を実現できない場合に、この動作データに代わる適切なリアクション動作の動作データを生成するリアクション動作生成手段と、
前記キャラクタの基準となる部分および全関節の現在状態を表すデータと前記動作制御手段により算出されたキャラクタの基準となる部分の並進、回転加速度および各関節の回転加速度とに基づいて、前記キャラクタの基準となる部分および全関節の動作状態を表すデータを算出する動作演算手段と
してコンピュータを機能させるシミュレーションプログラム。
A motion synthesis means for smoothly connecting a plurality of motion data and data representing a character reference portion and all joint states at the start of motion to generate one motion data;
Motion control means for calculating the translation, rotational acceleration and rotational acceleration of each joint as a reference of the character so as to realize a natural motion using the motion data generated by the motion synthesis means as a target motion;
From the data representing the current state of the reference part of the character and all the joints and the translation, rotational acceleration, and rotational acceleration of each joint calculated by the motion control means, the motion synthesis means An operation determination unit that determines whether or not a natural operation can be realized by the operation control unit using the generated operation data as a target operation;
A reaction action that generates action data of an appropriate reaction action instead of the action data when a natural action using the action data generated by the action synthesizing means as a target action cannot be realized as a result of the judgment by the action judging means. Generating means;
Based on data representing the current state of the character's reference part and all joints and the translation, rotational acceleration, and rotational acceleration of each joint calculated by the motion control means. A simulation program for causing a computer to function as motion calculation means for calculating data representing motion states of a reference portion and all joints.
前記動作合成手段は、互いに接続するデータの前の動作の終わりの部分と次の動作の始まりの部分を混合するものである請求項3記載のシミュレーションプログラム。4. The simulation program according to claim 3, wherein said behavioral synthesis means mixes the end portion of the previous operation and the start portion of the next operation of data connected to each other. 前記動作合成手段は、互いに接続するデータの間に接続のための中間の動作データを挿入し、各データ間を補間するものである請求項3記載のシミュレーションプログラム。4. The simulation program according to claim 3, wherein said behavioral synthesis means inserts intermediate motion data for connection between data connected to each other, and interpolates between each data. 前記リアクション動作生成手段により生成するリアクション動作は、バランスを保つために足を踏み出す動作、バランスを崩して着地する動作、関節負荷が大きいときに安定した姿勢に戻る動作のいずれかを含むものである請求項3から5のいずれかに記載のシミュレーションプログラム。The reaction motion generated by the reaction motion generation means includes any of an operation of stepping on a foot to maintain balance, an operation of landing with a loss of balance, and an operation of returning to a stable posture when the joint load is large. The simulation program according to any one of 3 to 5.
JP2002189163A 2002-06-28 2002-06-28 Simulation method, simulation apparatus, and simulation program Pending JP2004030502A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002189163A JP2004030502A (en) 2002-06-28 2002-06-28 Simulation method, simulation apparatus, and simulation program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002189163A JP2004030502A (en) 2002-06-28 2002-06-28 Simulation method, simulation apparatus, and simulation program

Publications (1)

Publication Number Publication Date
JP2004030502A true JP2004030502A (en) 2004-01-29

Family

ID=31183656

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002189163A Pending JP2004030502A (en) 2002-06-28 2002-06-28 Simulation method, simulation apparatus, and simulation program

Country Status (1)

Country Link
JP (1) JP2004030502A (en)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006149767A (en) * 2004-11-30 2006-06-15 Nintendo Co Ltd Game program and game device
JP2007528797A (en) * 2004-03-12 2007-10-18 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Electronic device and method enabling to animate objects
JP2007334446A (en) * 2006-06-12 2007-12-27 Matsushita Electric Works Ltd Muscle load evaluation system and product design support system
JP2007334443A (en) * 2006-06-12 2007-12-27 Kyushu Institute Of Technology Avatar operation control system, its program, and method
JP2008512750A (en) * 2004-09-03 2008-04-24 ユージーエス、コープ System and method for predicting human posture using a rule-based sequential approach
JP2010267241A (en) * 2008-10-17 2010-11-25 Square Enix Co Ltd Three-dimensional model display system
JP2011028713A (en) * 2009-06-24 2011-02-10 Nintendo Co Ltd Information processing program, information processing apparatus and object displaying method
JP2012008862A (en) * 2010-06-25 2012-01-12 Kyushu Institute Of Technology Motion controlling device, method for the same, and program
JP2012133536A (en) * 2010-12-21 2012-07-12 Mitsubishi Precision Co Ltd Method of correcting action of object of three-dimensional computer graphics, apparatus employing such method and program for computer to execute such method
WO2012111621A1 (en) * 2011-02-16 2012-08-23 株式会社スクウェア・エニックス Object movement device, method, and program
US8941642B2 (en) 2008-10-17 2015-01-27 Kabushiki Kaisha Square Enix System for the creation and editing of three dimensional models
KR20150089980A (en) * 2015-07-09 2015-08-05 중앙대학교 산학협력단 Method of generating gesture of an avatar and computing device for performing the same
JP2017213319A (en) * 2016-06-02 2017-12-07 株式会社ブリヂストン Joint torque measurement method, inverse dynamics calculation system, and joint torque measurement program
JP2018028808A (en) * 2016-08-18 2018-02-22 株式会社カプコン Game program and game system
KR101837294B1 (en) * 2016-09-09 2018-03-12 한국과학기술원 A method for providing locomotive motion in real time based on biomechanical observations
JP2022553167A (en) * 2020-01-15 2022-12-22 テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド MOVIE PROCESSING METHOD, MOVIE PROCESSING APPARATUS, COMPUTER PROGRAM AND ELECTRONIC DEVICE
KR102638853B1 (en) * 2023-04-12 2024-02-21 블래스트 주식회사 Method for avoiding interference between body parts of animated character and device thereof
KR102638847B1 (en) * 2023-05-12 2024-02-21 블래스트 주식회사 Vector determination method for avoiding interference between body parts of animated character and device thereof

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007528797A (en) * 2004-03-12 2007-10-18 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Electronic device and method enabling to animate objects
JP2008512750A (en) * 2004-09-03 2008-04-24 ユージーエス、コープ System and method for predicting human posture using a rule-based sequential approach
JP2006149767A (en) * 2004-11-30 2006-06-15 Nintendo Co Ltd Game program and game device
JP4580742B2 (en) * 2004-11-30 2010-11-17 任天堂株式会社 GAME PROGRAM AND GAME DEVICE
JP2007334446A (en) * 2006-06-12 2007-12-27 Matsushita Electric Works Ltd Muscle load evaluation system and product design support system
JP2007334443A (en) * 2006-06-12 2007-12-27 Kyushu Institute Of Technology Avatar operation control system, its program, and method
JP2010267241A (en) * 2008-10-17 2010-11-25 Square Enix Co Ltd Three-dimensional model display system
US8941642B2 (en) 2008-10-17 2015-01-27 Kabushiki Kaisha Square Enix System for the creation and editing of three dimensional models
JP2011028713A (en) * 2009-06-24 2011-02-10 Nintendo Co Ltd Information processing program, information processing apparatus and object displaying method
US8771072B2 (en) 2009-06-24 2014-07-08 Nintendo Co., Ltd. Computer readable storage medium and information processing apparatus
JP2012008862A (en) * 2010-06-25 2012-01-12 Kyushu Institute Of Technology Motion controlling device, method for the same, and program
JP2012133536A (en) * 2010-12-21 2012-07-12 Mitsubishi Precision Co Ltd Method of correcting action of object of three-dimensional computer graphics, apparatus employing such method and program for computer to execute such method
US20130293538A1 (en) * 2011-02-16 2013-11-07 Kabushiki Kaisha Square Enix (Also Trading As Square Enix Co., Ltd.) Object operating device and method, and program
JP2012165968A (en) * 2011-02-16 2012-09-06 Square Enix Co Ltd Object operating system, method, and program
WO2012111621A1 (en) * 2011-02-16 2012-08-23 株式会社スクウェア・エニックス Object movement device, method, and program
US8970602B2 (en) 2011-02-16 2015-03-03 Kabushiki Kaisha Square Enix Object operating device and method, and program
KR20150089980A (en) * 2015-07-09 2015-08-05 중앙대학교 산학협력단 Method of generating gesture of an avatar and computing device for performing the same
KR101597940B1 (en) * 2015-07-09 2016-02-26 중앙대학교 산학협력단 Method of generating gesture of an avatar and computing device for performing the same
JP2017213319A (en) * 2016-06-02 2017-12-07 株式会社ブリヂストン Joint torque measurement method, inverse dynamics calculation system, and joint torque measurement program
JP2018028808A (en) * 2016-08-18 2018-02-22 株式会社カプコン Game program and game system
KR101837294B1 (en) * 2016-09-09 2018-03-12 한국과학기술원 A method for providing locomotive motion in real time based on biomechanical observations
JP2022553167A (en) * 2020-01-15 2022-12-22 テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド MOVIE PROCESSING METHOD, MOVIE PROCESSING APPARATUS, COMPUTER PROGRAM AND ELECTRONIC DEVICE
US11790587B2 (en) 2020-01-15 2023-10-17 Tencent Technology (Shenzhen) Company Limited Animation processing method and apparatus, computer storage medium, and electronic device
JP7407919B2 (en) 2020-01-15 2024-01-04 テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド Video processing method, video processing device, computer program and electronic equipment
KR102638853B1 (en) * 2023-04-12 2024-02-21 블래스트 주식회사 Method for avoiding interference between body parts of animated character and device thereof
KR102638847B1 (en) * 2023-05-12 2024-02-21 블래스트 주식회사 Vector determination method for avoiding interference between body parts of animated character and device thereof

Similar Documents

Publication Publication Date Title
US6191798B1 (en) Limb coordination system for interactive computer animation of articulated characters
JP2004030502A (en) Simulation method, simulation apparatus, and simulation program
JP3790816B2 (en) Motion generation method for humanoid link system
Bouyarmane et al. Using a multi-objective controller to synthesize simulated humanoid robot motion with changing contact configurations
Pollard et al. Adapting human motion for the control of a humanoid robot
KR101098834B1 (en) Apparatus and method for generating motion based on dynamics
Yamane et al. Natural motion animation through constraining and deconstraining at will
Zordan et al. Mapping optical motion capture data to skeletal motion using a physical model
US5877778A (en) Method and system to generate a complicated computer animation by using a combination of basic motion units
Tak et al. Motion balance filtering
Yamane et al. Simultaneous tracking and balancing of humanoid robots for imitating human motion capture data
Oshita et al. A dynamic motion control technique for human‐like articulated figures
Shum et al. Real-time physical modelling of character movements with microsoft kinect
JP2007108955A (en) Operation space physical quantity calculation device and operation space physical quantity calculation method
Yin et al. Motion perturbation based on simple neuromotor control models
Kenwright Responsive biped character stepping: When push comes to shove
EP1012791A4 (en) Limb coordination system for interactive computer animation of articulated characters with blended motion data
Kenwright Real-Time Reactive Biped Characters: Staying Upright and Balanced
Komura et al. Animating reactive motions for biped locomotion
Komura et al. Animating reactive motion using momentum‐based inverse kinematics
Alvarado et al. Generating Upper‐Body Motion for Real‐Time Characters Making their Way through Dynamic Environments
Hodgins Simulation of human running
KR102317949B1 (en) Method and apparatus for generating motion of an object
Marsland et al. Physics-based animation of a trotting horse in a virtual environment
KR100478721B1 (en) On-line locomotion generation based on motion blending