IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 国立大学法人東京工業大学の特許一覧 ▶ 旭硝子株式会社の特許一覧

特許7529220仮想的なキャラクターの動作を画面上に表現する方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-29
(45)【発行日】2024-08-06
(54)【発明の名称】仮想的なキャラクターの動作を画面上に表現する方法
(51)【国際特許分類】
   G06T 13/40 20110101AFI20240730BHJP
   G06F 3/01 20060101ALI20240730BHJP
   G06F 3/048 20130101ALI20240730BHJP
【FI】
G06T13/40
G06F3/01 510
G06F3/048
【請求項の数】 20
(21)【出願番号】P 2021543799
(86)(22)【出願日】2020-09-02
(86)【国際出願番号】 JP2020033221
(87)【国際公開番号】W WO2021045082
(87)【国際公開日】2021-03-11
【審査請求日】2023-07-03
(31)【優先権主張番号】P 2019161990
(32)【優先日】2019-09-05
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】304021417
【氏名又は名称】国立大学法人東京工業大学
(73)【特許権者】
【識別番号】000000044
【氏名又は名称】AGC株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】三武 裕玄
(72)【発明者】
【氏名】佐藤 裕仁
(72)【発明者】
【氏名】杉森 健
(72)【発明者】
【氏名】長谷川 晶一
(72)【発明者】
【氏名】新山 聡
【審査官】豊田 好一
(56)【参考文献】
【文献】特開2018-129005(JP,A)
【文献】特開平9-190549(JP,A)
【文献】インタラクティブキャラクタにおける手先の追いかけ動作の再現,清水 ありさ 他,エンタテインメントコンピューティングシンポジウム2015論文集,2015,日本,2015年09月18日,pp. 551 - 556
【文献】佐藤 裕仁 他,視線と身体を用いたインタラクティブキャラクタシステムとその編集インタフェースの構築,インタラクション2019論文集 [online],日本,情報処理学会,2019年03月14日,pp. 632 - 634
(58)【調査した分野】(Int.Cl.,DB名)
G06T 13/40
G06F 3/01
G06F 3/048
(57)【特許請求の範囲】
【請求項1】
仮想的なキャラクターの動作を画面上に表現する方法であって、コンピューターが:
前記キャラクターの身体部位の目標位置が時間順に指定された状態遷移機械をメモリーから呼び出し;
ある目標位置から次に続く目標位置に至る間の前記身体部位の位置の中間状態を補間し、ここで前記中間状態における前記身体部位の位置の時間変化を、その躍度を低減する数理モデルに基づいて算出し;
前記身体部位に対して直接又は間接に接続する関節の運動を、前記中間状態を元に逆運動学(IK)によって算出し;
前記関節の前記運動を元にキャラクターアニメーションをレンダリングで生成し、
前記画面が前記キャラクターアニメーションを表示する、
方法。
【請求項2】
前記状態遷移機械では、前記キャラクターの身体部位の目標位置に加えて、前記身体部位の目標回転がこれと組になって時間順に指定されており、以下、この組を目標位置回転という、
前記身体部位の位置の前記中間状態を補間するにあたり、ある目標位置回転から次に続く目標位置回転に至る間の前記身体部位の位置及び前記身体部位の回転の組の中間状態を補間し、
前記関節の前記運動を算出するにあたり、前記組の前記中間状態を元にする、
請求項1に記載の方法。
【請求項3】
前記逆運動学(IK)によって算出した前記関節の前記運動に対してPD(Proportional-Differential)制御による修正をさらに施し、
前記修正が施された前記関節の前記運動を元にキャラクターアニメーションを前記レンダリングで生成する、
請求項2に記載の方法。
【請求項4】
前記身体部位は前記キャラクターの前腕の先端又はその先に位置し、
前記数理モデルは躍度最小軌道である、
請求項2に記載の方法。
【請求項5】
前記状態遷移機械はある1つの目標位置回転から次に続く2つ以上の目標位置回転を有しており、前記コンピューターは、前記2つ以上の目標位置回転のうちの一つを選択した後に、さらに前記ある1つの目標位置回転から選択された目標位置回転に至る間の前記中間状態を補間する、
請求項2に記載の方法。
【請求項6】
前記状態遷移機械は第1の目標位置回転と、これに続く第2の目標位置回転と、その次に続く第3の目標位置回転とを有しており、
前記コンピューターは、前記第1の目標位置回転と、前記第2の目標位置回転との間の中間状態を補間し、さらに前記中間状態中の前記身体部位の任意の位置及び回転と前記第3の目標位置回転との間の中間状態を補間する、
請求項2に記載の方法。
【請求項7】
前記コンピューターは、前記第3の目標位置回転に向かう前記中間状態中の前記身体部位の任意の位置及び回転と、第4の目標位置回転との間の中間状態をさらに補間する、
請求項6に記載の方法。
【請求項8】
前記コンピューターは、前記中間状態を補間するにあたり予め設定された一又は二以上の誘導点をさらに使用することで、前記身体部位が前記誘導点に接近した後に前記誘導点から遠ざかるような大回りをするよう、前記身体部位の位置の時間変化を算出する、
請求項2に記載の方法。
【請求項9】
前記コンピューターが事前に、前記時間順に指定された目標位置回転を受け取り、前記状態遷移機械を生成して、前記メモリーに記録する、又はすでに生成された前記状態遷移機械を前記メモリーに記録する、
請求項2に記載の方法。
【請求項10】
前記コンピューターはさらに、前記キャラクターの仮想空間における座標と仮想空間内の仮想のターゲットの仮想空間における座標との組に基づき、前記呼び出した状態遷移機械中の前記次に続く目標位置回転に調整を施した後、前記中間状態を補間する、
請求項2に記載の方法。
【請求項11】
前記コンピューターはさらに、前記キャラクターの仮想空間における座標と前記キャラクターがインタラクションすべき実存のターゲットの仮想空間における座標との組に基づき、前記呼び出した状態遷移機械中の前記次に続く目標位置回転に調整を施した後、前記中間状態を補間する、
請求項2に記載の方法。
【請求項12】
前記コンピューターは、座標変換の種類と適用順序を定義したノードグラフをさらにメモリーから呼び出し、
さらにコンピューターは、前記ノードグラフに従って座標変換の計算を行うことで、前記実存のターゲットの位置及び回転に基づき、前記キャラクターの前記身体部位の前記目標位置回転の調整を自動で施し、
前記調整された前記目標位置回転に基づき前記中間状態を補間する、
請求項11に記載の方法。
【請求項13】
前記画面はヴァーチャルリアリティ用のヘッドマウントディスプレイであり、
前記ターゲットの前記座標は、前記仮想空間中に設定されるべき、前記ヘッドマウントディスプレイの装着者の視点の座標である、
請求項11に記載の方法。
【請求項14】
前記コンピューターは、前記装着者の入力に基づき、前記仮想空間中の仮想のターゲットの前記仮想空間における座標を変化させ、
前記コンピューターはさらに、前記キャラクターの前記仮想空間における座標と前記仮想のターゲットの前記仮想空間における前記変化した座標との組に基づき、前記呼び出した状態遷移機械中の前記次に続く目標位置回転に調整を施した後、前記中間状態を補間する、
請求項13に記載の方法。
【請求項15】
前記画面はサイネージであり、
前記ターゲットの前記座標は、前記サイネージの周囲の実存の人物と前記サイネージとの位置関係を反映した前記仮想空間中の前記人物の座標であり、
前記人物の位置は前記サイネージの周囲に設置されたセンサーが検知したものである、
請求項11に記載の方法。
【請求項16】
前記コンピューターはさらに、前記センサーから前記人物の位置の信号を受け取り、前記信号から前記ターゲットの前記座標を算出する、
請求項15に記載の方法。
【請求項17】
前記センサーはカメラを含み、前記信号は前記人物の画像を含み、
前記コンピューターは、前記人物の画像から前記人物の身長を算出するとともに、前記目標位置回転の調整結果にこれを反映させる。
請求項16に記載の方法。
【請求項18】
仮想的なキャラクターの動作を画面上に表現するためのコンピュータープログラムを記録している非一時的なコンピューター可読媒体であって、前記コンピュータープログラムは、
前記キャラクターの身体部位の目標位置が時間順に指定された状態遷移機械をメモリーから呼び出し;
ある目標位置から次に続く目標位置に至る間の前記身体部位の位置の中間状態を補間し、ここで前記中間状態における前記身体部位の位置の時間変化を、その躍度を低減する数理モデルに基づいて算出し;
前記身体部位に対して直接又は間接に接続する関節の運動を、前記中間状態を元に逆運動学(IK)によって算出し、
前記関節の前記運動を元にキャラクターアニメーションをレンダリングで生成する、
非一時的なコンピューター可読媒体。
【請求項19】
仮想的なキャラクターの動作を表現する画面と、前記動作を演算するコンピューターとを備えるシステムであって、前記コンピューターは、
前記キャラクターの身体部位の目標位置が時間順に指定された状態遷移機械をメモリーから呼び出し;
ある目標位置から次に続く目標位置に至る間の前記身体部位の位置の中間状態を補間し、ここで前記中間状態における前記身体部位の位置の時間変化を、その躍度を低減する数理モデルに基づいて算出し;
前記身体部位に対して直接又は間接に接続する関節の運動を、前記中間状態を元に逆運動学(IK)によって算出し;
前記関節の前記運動を元にキャラクターアニメーションをレンダリングで生成し、
前記画面は前記キャラクターアニメーションを表示する、
システム。
【請求項20】
仮想的なキャラクターの動作を画面上に表現する方法であって、コンピューターが:
前記キャラクターの身体部位の目標回転が時間順に指定された状態遷移機械をメモリーから呼び出し;
ある目標位置から次に続く目標回転に至る間の前記身体部位の回転の中間状態を補間し、ここで前記中間状態における前記身体部位の回転の時間変化を、その躍度を低減する数理モデルに基づいて算出し;
前記身体部位に対して直接又は間接に接続する関節の運動を、前記中間状態を元に逆運動学(IK)によって算出し;
前記関節の前記運動を元にキャラクターアニメーションをレンダリングで生成し、
前記画面が前記キャラクターアニメーションを表示する、
方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は仮想的なキャラクターの動作を画面上に表現する方法に関する。
【背景技術】
【0002】
特許文献1の段落[0002]は、キャラクターの動作を、あらかじめ作成しておいた動作データを連続的に再生することによって生成することを開示している。段落[0004]は、与えられた動作データを目標動作として、目標動作に追従するようにキャラクターの関節角加速度を制御し、動力学シミュレーションによって実際の動作を計算することを開示している。段落[0007]は以下のアプローチを開示している。すなわちキャラクターの連続的な動作を生成するため、あらかじめ多くの短い動作データを用意しておく。状況に応じて適切な動作データを順番に再生することによって一連の動作を実現する。それぞれの動作データは、基本的には前後の動作同士の間がうまく繋がるように予め作成されている。
【0003】
特許文献1の段落[0009]及び[0010]は以下のシミュレーション方法を開示している。すなわち動作合成ステップでは、動作開始時のキャラクターの基準となる部分及び全関節の状態を表すデータと複数の動作データ、いわゆる関節角アニメーションとを滑らかに接続して「連続した一つの動作データ」を生成する。動作制御ステップでは、キャラクターの基準となる部分の並進、回転加速度及び各関節の回転加速度を算出する。動作判定ステップでは、「連続した一つの動作データ」を「目標動作」として動作制御ステップにより自然な動作を実現できるか否かを判定する。自然な動作を実現できない場合に、リアクション動作生成ステップでは、この動作データに代わる適切なリアクション動作の動作データを生成する。動作演算ステップでは、キャラクターの基準となる部分及び全関節の現在状態を表すデータと動作制御ステップにおいて算出されたキャラクターの基準となる部分の並進、回転加速度及び各関節の回転加速度とに基づいて、キャラクターの基準となる部分及び全関節の動作状態を表すデータを算出する。このリアクション動作の動作データを「連続した一つの動作データ」に代えて「目標動作」とする。
【0004】
特許文献2の段落[0009]は以下を開示している。人間の動作を取り込んだモーションキャプチャデータに基づき、標準とするスケルトン動作を取得する。さらに標準とするスケルトン動作に対して、「運動に関する指標」を設定し、この指標について「軸パラメータ」を設定する。「運動に関する指標」は複数のスケルトンの動きに基づき、あるいは、モーションキャプチャデータを取得する際に併せて測定された動作のパラメータに基づき設定される。「軸パラメータ」は、複数のスケルトン動作における指標値の分布に基づき設定される動きの度合いを示す値である。ユーザが運動に関する指標値の変更を入力すると、「軸パラメータ」に従って、標準のスケルトン動作が変更される。変更後のスケルトン動作は、標準のスケルトン動作からの変更部分が識別して表示される。これにより、動作を測定して得られたスケルトンのアニメーション、すなわち関節角アニメーションを所望の動きに変更する。標準のスケルトンの動きの変化が、人間の動きに基づくものとなり、より適切な動きの変化を実現できる。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2004-030502号公報
【文献】特開2015-011480号公報
【非特許文献】
【0006】
【文献】清水ありさ,三武裕玄,長谷川晶一,“インタラクティブキャラクタにおける手先の追いかけ動作の再現”,[online],2015年9月18日,情報処理学会,エンタテインメントコンピューティングシンポジウム2015論文集,インターネット<URL:http://id.nii.ac.jp/1001/00145300/>
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1では、複数の動作データを滑らかに接続して「連続した一つの動作データ」を作成する。複数の動作データはアーティストが予め作成する。いわゆる関節角アニメーションでは、アーティストがキャラクターの全身の関節角の変化を定義することではじめてキャラクターの各身体部位の位置及び回転が決まる。したがって特許文献1はアーティストの提供する動作データのパターン数に依存している。
【0008】
特許文献2では、人間の動作を測定して得られたスケルトンのアニメーションを所望の動きに変更する。したがってアーティストはキャラクターの全身の関節角の変化を定義する必要はない。しかしながら所望の動きを有するアニメーションを得る際には、アーティストによる動作データ作成に依存している。
【0009】
本発明は、仮想的なキャラクターを演じる状態遷移機械を提供する。この状態遷移機械は、インタラクティブなキャラクターを演じつつ、関節角アニメーションにありがちな動作のぎこちなさを回避する。この状態遷移機械は、アーティストによる動作データ作成への依存が少ないものであることが望まれる。
【課題を解決するための手段】
【0010】
<1> 仮想的なキャラクターの動作を画面上に表現する方法であって、コンピューターが:
前記キャラクターの身体部位の目標位置が時間順に指定された状態遷移機械をメモリーから呼び出し;
ある目標位置から次に続く目標位置に至る間の前記身体部位の位置の中間状態を補間し、ここで前記中間状態における前記身体部位の位置の時間変化を、その躍度を低減する数理モデルに基づいて算出し;
前記身体部位に対して直接又は間接に接続する関節の運動を、前記中間状態を元に逆運動学(IK)によって算出し;
前記関節の前記運動を元にキャラクターアニメーションをレンダリングで生成し、
前記画面が前記キャラクターアニメーションを表示する、
方法。
<2> 前記状態遷移機械では、前記キャラクターの身体部位の目標位置に加えて、前記身体部位の目標回転がこれと組になって時間順に指定されており、以下、この組を目標位置回転という、
前記身体部位の位置の前記中間状態を補間するにあたり、ある目標位置回転から次に続く目標位置回転に至る間の前記身体部位の位置及び前記身体部位の回転の組の中間状態を補間し、
前記関節の前記運動を算出するにあたり、前記組の前記中間状態を元にする、
<1>に記載の方法。
<3> 前記逆運動学(IK)によって算出した前記関節の前記運動に対してPD(Proportional-Differential)制御による修正をさらに施し、
前記修正が施された前記関節の前記運動を元にキャラクターアニメーションを前記レンダリングで生成する、
<2>に記載の方法。
<4> 前記身体部位は前記キャラクターの前腕の先端又はその先に位置し、
前記数理モデルは躍度最小軌道である、
<2>に記載の方法。
<5> 前記状態遷移機械はある1つの目標位置回転から次に続く2つ以上の目標位置回転を有しており、前記コンピューターは、前記2つ以上の目標位置回転のうちの一つを選択した後に、さらに前記ある1つの目標位置回転から選択された目標位置回転に至る間の前記中間状態を補間する。
<2>に記載の方法。
<6> 前記状態遷移機械は第1の目標位置回転と、これに続く第2の目標位置回転と、その次に続く第3の目標位置回転とを有しており、
前記コンピューターは、前記第1の目標位置回転と、前記第2の目標位置回転との間の中間状態を補間し、さらに前記中間状態中の前記身体部位の任意の位置及び回転と前記第3の目標位置回転との間の中間状態を補間する、
<2>に記載の方法。
<7> 状態遷移と同時に遷移先の状態が持つ目標位置回転へ身体部位を誘導する要素動作が開始し、
要素動作の完了を待たずに次の状態遷移が可能であることから、未完了の要素動作の和によって中間状態が導かれる、
<6>に記載の方法。
<8> 前記コンピューターは、前記中間状態を補間するにあたり予め設定された誘導点をさらに使用することで、前記身体部位が前記誘導点に接近した後に前記誘導点から遠ざかるような大回りをするよう、前記身体部位の位置の時間変化を算出する、
<2>に記載の方法。
<9> 前記コンピューターが事前に、前記時間順に指定された目標位置回転を受け取り、前記状態遷移機械を生成して、前記メモリーに記録する、又はすでに生成された前記状態遷移機械を前記メモリーに記録する、
<2>に記載の方法。
<10> 前記コンピューターはさらに、前記キャラクターの仮想空間における座標と仮想空間内の仮想のターゲットの仮想空間における座標との組に基づき、前記呼び出した状態遷移機械中の前記次に続く目標位置回転に調整を施した後、前記中間状態を補間する、
<2>に記載の方法。
<11> 前記コンピューターはさらに、前記キャラクターの仮想空間における座標と前記キャラクターがインタラクションすべき実存のターゲットの仮想空間における座標との組に基づき、前記呼び出した状態遷移機械中の前記次に続く目標位置回転に調整を施した後、前記中間状態を補間する、
<2>に記載の方法。
<12> 前記コンピューターは、座標変換の種類と適用順序を定義したノードグラフをさらにメモリーから呼び出し、
さらにコンピューターは、前記ノードグラフに従って座標変換の計算を行うことで、前記実存のターゲットの位置及び回転に基づき、前記キャラクターの前記身体部位の前記目標位置回転の調整を自動で施し、
前記調整された前記目標位置回転に基づき前記中間状態を補間する、
<11>に記載の方法。
<13> 前記画面はヴァーチャルリアリティ用のヘッドマウントディスプレイであり、
前記ターゲットの前記座標は、前記仮想空間中に設定されるべき、前記ヘッドマウントディスプレイの装着者の視点の座標である、
<11>に記載の方法。
<14> 前記画面はサイネージであり、
前記ターゲットの前記座標は、前記サイネージの周囲の実存の人物と前記サイネージとの位置関係を反映した前記仮想空間中の前記人物の座標であり、
前記人物の位置は前記サイネージの周囲に設置されたセンサーが検知したものである、
<9>に記載の方法。
<15> 前記コンピューターはさらに、前記センサーから前記人物の位置の信号を受け取り、前記信号から前記ターゲットの前記座標を算出する、
<14>に記載の方法。
<16> 前記センサーはカメラを含み、前記信号は前記人物の画像を含み、
前記コンピューターは、前記人物の画像から前記人物の身長を算出するとともに、前記目標位置回転の調整結果にこれを反映させる。
<15>に記載の方法。
<17> 仮想的なキャラクターの動作を画面上に表現するためのコンピュータープログラムであって、
前記キャラクターの身体部位の目標位置が時間順に指定された状態遷移機械をメモリーから呼び出し;
ある目標位置から次に続く目標位置に至る間の前記身体部位の位置の中間状態を補間し、ここで前記中間状態における前記身体部位の位置の時間変化を、その躍度を低減する数理モデルに基づいて算出し;
前記身体部位に対して直接又は間接に接続する関節の運動を、前記中間状態を元に逆運動学(IK)によって算出し、
前記関節の前記運動を元にキャラクターアニメーションをレンダリングで生成する、
コンピュータープログラム。
<18> 仮想的なキャラクターの動作を表現する画面と、前記動作を演算するコンピューターとを備えるシステムであって、前記コンピューターは、
前記キャラクターの身体部位の目標位置が時間順に指定された状態遷移機械をメモリーから呼び出し;
ある目標位置から次に続く目標位置に至る間の前記身体部位の位置の中間状態を補間し、ここで前記中間状態における前記身体部位の位置の時間変化を、その躍度を低減する数理モデルに基づいて算出し;
前記身体部位に対して直接又は間接に接続する関節の運動を、前記中間状態を元に逆運動学(IK)によって算出し;
前記関節の前記運動を元にキャラクターアニメーションをレンダリングで生成し、
前記画面は前記キャラクターアニメーションを表示する、
システム。
<19> 仮想的なキャラクターの動作を画面上に表現する方法であって、コンピューターが:
前記キャラクターの身体部位の目標回転が時間順に指定された状態遷移機械をメモリーから呼び出し;
ある目標位置から次に続く目標回転に至る間の前記身体部位の回転の中間状態を補間し、ここで前記中間状態における前記身体部位の回転の時間変化を、その躍度を低減する数理モデルに基づいて算出し;
前記身体部位に対して直接又は間接に接続する関節の運動を、前記中間状態を元に逆運動学(IK)によって算出し;
前記関節の前記運動を元にキャラクターアニメーションをレンダリングで生成し、
前記画面が前記キャラクターアニメーションを表示する、
方法。
【発明の効果】
【0011】
本発明によりは、仮想的なキャラクターを演じる状態遷移機械を提供できる。この状態遷移機械は、インタラクティブなキャラクターを演じつつ、関節角アニメーションにありがちな動作のぎこちなさを回避する。この状態遷移機械は、アーティストによる動作データ作成への依存が少ない。
【図面の簡単な説明】
【0012】
図1】画面とコンピューターのブロック図。
図2】スケルトンとハンドルの配置図。
図3】状態遷移機械のブロック図。
図4】アニメーション生成の流れ図。
図5】補間の数理モデルのグラフ。
図6】目標位置の切り替わりの模式図。
図7】躍度最小軌道のグラフ。
図8】PD制御を受けるスケルトンの右側面図。
図9】動作の集合からなる状態遷移機械の使用図。
図10】ポーズの集合からなる状態遷移機械の使用図。
図11】インターフェースの使用図。
図12】画面とコンピューターの使用図。
図13】「手を振る」動作の調整の流れ図。
図14】「手を振る」動作の調整の流れ図。
図15】状態遷移機械のブロック図。
図16】仮想空間の平面図。
図17】右手の目標位置回転の調整のグラフ。
図18】状態遷移機械の使用図。
図19】状態遷移機械の使用図。
図20】状態遷移機械の使用図。
図21】キャラクターAIと状態遷移機械のブロック図。
図22】仮想現実の提供図。
図23】仮想現実の提供図。
【発明を実施するための形態】
【0013】
<1.キャラクターと状態遷移機械>
【0014】
図1は画面21とコンピューター22のブロック図である。本実施形態では画面21上に仮想的なキャラクター20の動作を表現する。コンピューター22が状態遷移機械と、逆運動学計算と、運動制御を用いてキャラクターアニメーションを生成する。この状態遷移機械はコンピュータープログラムの一種である。コンピューター22はキャラクターアニメーションを生成する。
【0015】
図2はキャラクター20のスケルトン24を表す。図中には右腕と左腕のスケルトンが表されている。右腕のスケルトンは上腕28R、前腕29R及び肘の関節23Rを有する。左腕のスケルトンも同様に上腕、前腕及び肘の関節を有する。スケルトン24は胴や両足や頭も有するが、これらは図中での表現が省略されている。
【0016】
図2はさらにキャラクター20の右手のハンドル25R及び左手のハンドル25Lを表す。これらのハンドルはキャラクター20の身体部位の目標位置回転(target-position-and-rotation)を特定するための仮想的なインターフェースである。本実施形態において「身体部位」とはキャラクター20の身体を構成するいずれかのパーツ、例えば右手や左手や頭である。本実施形態において身体部位の「目標位置回転」は、身体部位の目標位置と身体部位の目標回転との組を表す。身体部位の回転は身体部位の姿勢又は向きと解釈してもよい。身体部位の目標回転は身体部位の目標姿勢と解釈してもよい。
【0017】
図2においてハンドル25Rは右手の位置26Rと右手の回転27Rを特定する。ハンドル25Rは前腕29Rの先端に位置する。ハンドル25Rはその先に位置していてもよい。同様にハンドル25Lは左手の位置26Lと左手の回転27Lを特定する。ハンドル25Lは左腕の前腕の先端又はその先に位置する。
【0018】
図3は状態遷移機械30を表す。状態遷移機械30中ではキャラクター20の身体部位の目標位置回転(target-position-and-rotation)が時間順に指定されている。図中ではハンドル25Rがキャラクター20の右手の目標位置回転を特定している。状態遷移機械30はハンドル25Rで特定されるキャラクター20の右手の目標位置回転の遷移の情報を有する。
【0019】
図3において状態遷移機械30は目標回転を用いなくともよい。状態遷移機械30は右手の位置26Rだけを指定して、右手の回転27Rは指定せず自由なままとしてもよく、固定したままとしてもよい。状態遷移機械30は頭の回転だけ指定して、頭の位置は自由なままとしてもよく、固定したままとしてもよい。図3に示す態様とは異なる態様において、頭の目標位置回転の指定を有する状態遷移機械において、頭の回転だけ指定して、頭の位置は自由なままとしてもよく、固定したままとしてもよい。
【0020】
また、どの身体部位の目標位置回転を指定するかは状態ごとに異なっていてよい。さらに、一つの状態が複数の身体部位の目標位置回転の指定を含んでいてもよい。
【0021】
図3において、ポーズP31は開始の状態である。ポーズP31ではキャラクター20が右手を下に向けて下ろしている。ポーズP31からポーズP32又はポーズP33に状態が遷移する。ポーズP32ではキャラクター20が右手をやや右方向に向けている。ポーズP32からポーズP33に状態が遷移する。ポーズP33ではキャラクター20が右手を上に向けて上げている。ポーズP33からポーズP34に状態が遷移する。ポーズP34ではキャラクター20が右手を右方向に向けている。ポーズP34からポーズP35又はポーズP36に状態が遷移する。ポーズP35ではキャラクター20が右手を頭や胴に近づけている。ポーズP35からポーズP34又はポーズP36に状態が遷移する。ポーズP36ではポーズP31と同様にキャラクター20が右手を下に向けて下ろしている。ポーズP36は終了の状態である。
【0022】
図3において状態遷移機械はある1つの目標位置回転から次に続く2つ以上の目標位置回転を有している。すなわちポーズP31に対してポーズP32が続くこともあるし、ポーズP33が続くこともある。コンピューターはこれらの2つ以上の目標位置回転のうちの一つを選択する。すなわちポーズP32とポーズP33とのうちのいずれかを選択する。コンピューターはさらに、ある1つの目標位置回転から、選択された目標位置回転に至る間の中間状態を補間する。すなわちポーズP32とポーズP34との中間状態か、ポーズP33とポーズP34との中間状態かいずれか補間する。状態遷移機械は分岐を持たなくてもよい。キャラクターは各ポーズにおいて一時停止してもよくしなくてもよい。すなわちポーズは単なる通過点としてすぐに次の動作を開始してもよい。後に図18から図20を用いて説明するようにキャラクターがあるポーズから次のポーズに移る間の中間状態を有しているときに、さらにキャラクターが他の次のポーズを有するように中間状態とそのポーズと間の中間状態を補間してもよい。
【0023】
なお図3において状態遷移機械30はスケルトンの全身関節角のアニメーションの情報を実質的に有していないことに留意する。図中に細い線で表されているキャラクター20の頭、胴、及び四肢は、説明の便宜に過ぎない。ここでいう「情報を実質的に有していない」とは、後にレンダリングを受ける関節の運動のデータの生成に、全身関節角のアニメーションのストックを必須としていないことをいう。
【0024】
また図3において状態遷移機械30は右手を含む身体部位の位置及び身体部位の回転の組の中間状態の情報を実質的に有していない。ここでいう中間状態とは、ポーズに対応する目標位置回転から次に続くポーズに対応する目標位置回転に至る間の状態をいう。また、ここでいう「情報を実質的に有していない」とは、後にレンダリングを受ける関節の運動のデータをコンピューターが生成する際に、全身関節角のアニメーションのストックを必須としないことをいう。コンピューターは後に述べるプロセスで中間状態を補間する。
【0025】
<2.状態遷移機械からのアニメーションの生成>
【0026】
図4はキャラクターアニメーションを生成する工程を示す。ステップS40にて工程を開始すると、まずステップS41にてコンピューターが上述の状態遷移機械をメモリーから呼び出す。メモリーは予め1種又は2種以上の状態遷移機械を記憶している。メモリーは揮発性メモリーでもよく、非揮発性メモリーでもよい。非揮発性メモリーはフラッシュメモリーでもよく磁気ディスクでもよい。メモリーはネットワークを介してコンピューターと接続されていてもよく、コンピューター内に組み込まれていてもよい。
【0027】
図4において、ステップS41にてコンピューターがメモリーから状態遷移機械を呼び出した後、状態遷移機械が終了するまで、コンピューターは状態遷移機械を継続的に実行する。すなわち、S42からS48の工程を繰り返し実行し、S47において状態の遷移を行う。ここでコンピューターはキャラクターAI(character artificial intelligence)をさらに実行してもよく、キャラクターAIの指示によって状態遷移の判断を行ってもよい。キャラクターAIの詳細は後述する。
【0028】
図4に示すステップS42にて身体部位の位置及び身体部位の回転の組の中間状態を補間する。ここでいう中間状態とは状態遷移機械中のある目標位置回転から次に続く目標位置回転に至る間の状態をいう。
【0029】
図4に示すステップS43では図2に示すスケルトン24の全身又は右腕の関節の運動を逆運動学(IK, inverse kinematics)を用いて算出する。ここでいう関節は、中間状態を算出した身体部位に対して直接又は間接に接続する関節である。関節の運動は中間状態における身体部位の位置の時間変化、又は位置及び回転の時間変化から算出する。一態様において、関節に接続する一方の身体部位、例えば「胴体」にはその位置及び回転の時間変化が生じない。これに対して関節を挟んで反対側にある他方の身体部位、例えば「手」にはその位置及び回転の時間変化が生じる。他の態様において互いに関節を介して接続する一方及び他方の身体部位のいずれにも、その位置及び回転の時間変化が生じる。一態様において、中間状態の時間内において、これらの関節に対してはその運動が定義されていない。すなわちIKを適用する前において関節の運動は特定されておらず、IKを適用した後に関節の運動が特定される。
【0030】
以上により一種の関節角アニメーションが生成される。各中間状態における関節角アニメーションと上述の状態遷移機械を組み合わせれば一連の関節角アニメーションが生成される。さらにステップS44では関節の運動に対してPD(Proportional-Differential)制御による修正を施してもよい。ステップS44は省略してもよい。
【0031】
図4に示すステップS45では、修正が施された関節の運動、すなわちスケルトンの全身関節角のアニメーションを元にキャラクターアニメーションをレンダリングで生成する。ステップS46では映像信号を出力することで、画面にキャラクターアニメーションを表示する。
【0032】
ステップS47では状態遷移機械の状態遷移を行うかどうか、および遷移先が複数に分岐する場合はどの状態に遷移するかを判断する。ステップS48で状態遷移機械が終了状態に達したかどうかを判断し、終了状態でなければステップS42に戻って処理を繰り返す。終了状態に到達すると、ステップS49で工程を終了する。
【0033】
<3.中間状態の補間>
【0034】
図5は位置の中間状態をグラフで表す。縦軸xは変位量である。横軸tは時間である。一点鎖線に示す曲線50は最も簡単な身体部位の位置の時間変化である等速運動を表す。曲線50では、ある目標位置回転から次に続く目標位置回転まで身体部位の位置がそれぞれ等速で変化する。動き出しから停止まで偏りなく等速で位置が変化することは、現実の人間の身体部位の運動には見られない。そこでさらに次のように工夫する。
【0035】
図5の曲線51に示すように中間状態における身体部位の位置の時間変化を、その躍度を低減する数理モデルに基づいて算出する。かかる数理モデルの例は躍度最小軌道である。三次元位置(Px,Py,Pz)に対して経過時間Tで到達するような躍度最小軌道を数式に表すと例えば以下の通り表される。
【0036】
【数1】
【数2】
【数3】
【0037】
躍度最小軌道を適用可能な位置変化は直線経路に限定されない。位置変化は曲線経路でもよい。図6は目標位置の切り替わりの利用を表す。右手が位置55aから位置55bに向かって直線経路56b上を移動する。位置55bで停止した右手は次に位置55cに向かって直線経路56b上を移動する。
【0038】
図6に示す手法では、動作の経過時間とは関係なく、動作中の任意の時刻で状態遷移機械中の目標位置回転を切り替える。すなわち右手が直線経路56aで表される中間状態にあるときに、右手は、位置55cと所定の目標回転で表される次の目標位置回転に向かう。言い換えれば直線経路56aを進行する動作の持続中に、曲線経路57を進行する動作が開始する。この切り替わり後、しばらくの間、右手は両者の混ざった動作をする。
【0039】
図6に示す躍度最小軌道の利用法では、上記のような「混ざった動作」においても右手の動作は滑らかである。すなわち右手の経由する曲線経路57はとても滑らかであり、これを進行する右手の動作も滑らかである。すなわち中間状態において任意のタイミングで、目標位置回転を切り替えても右手が滑らかに動作する。このような任意のタイミングでの滑らかな切り変わりは例えば図9に表されるような、動作自体を連結した状態遷移機械では実現しにくい。
【0040】
図6に示すように右手が位置55bに到達する前に、目標位置を位置55bから位置55cに変更する。すでに右手の速度は上昇しているので、右手の進路は少しずつ変化する。右手は曲線経路57を経由して位置55aから位置55cに移動する。すなわち直線経路56a及び直線経路56bの組は曲線経路57に変更される。
【0041】
図7図6に示す曲線経路上での速度dx/dtの時間変化を表すグラフである。破線は直線経路上での時間変化を参考として重ね合わせたものである。
【0042】
図6において、位置55a及び55cは曲線経路57に重なる。位置55bは曲線経路57と重ならない。見方を変えれば位置55bは、位置55a及び55cの中間状態を補間するにあたり誘導点として働く。このような誘導点を設定することで、身体部位すなわち右手が誘導点に接近したのち、誘導点から遠ざかるように大回りする。
【0043】
中間状態における身体部位の位置の時間変化とは別に、中間状態における身体部位の回転の時間変化も同様に算出する。中間状態における身体部位の目標回転の時間変化は躍度最小軌道を身体部位の回転すなわち身体部位の回転角に適用したものによって算出する。回転角を例えばクォータニオンで表現する。この時、回転角Aと回転角Bとの中間の回転角は例えば球面線形補間法によって算出できる。球面線形補間では補間比率を0~1まで設定できる。補間比率が0のとき球面線形補間の出力は回転角Aに一致する。補間比率が1のとき球面線形補間の出力は回転角Bに一致する。中間の回転角の算出のために、球面線形補間をそのまま用いると角速度が一定となる。このように身体部位が角速度一定で回転運動することは、身体部位の位置に関する、身体部位の等速の運動と同じく現実の人間には見られない。そこで本実施形態では、球面線形補間における補間比率を、例えば躍度最小軌道の式に従って変化させる。ここでクォータニオンq1からクォータニオンq2への補間比率rの球面線形補間をSLERP(q1, q2, r)と表す。この時、経過時間Tでq1からq2へ変化するようなq(t)は以下の通り表される。
【0044】
【数4】
【0045】
本実施形態では、誘導点の目標位置回転をアーティストにより作成された状態遷移機械の状態と対応させる。この点は非特許文献1に開示されていない。
【0046】
<4.PD制御による関節の運動の修正>
【0047】
図8はPD制御の模式図である、右腕の上腕28Rと前腕29Rとがヴァーチャルなバネkとダンパーcで接続されている。バネkとダンパーcは上腕二頭筋を模しているが、必ずしもその設置位置は限定されない。スケルトンの種類ごとに適切なバネkとダンパーcを設定できる。
【0048】
バネkとダンパーcの値を状態遷移機械の状態と対応させ、状態遷移に伴ってバネとダンパーの値が変化するようにしてもよい。PD制御によって運動の修正を行う場合、目標位置回転が同じであっても、バネとダンパーの値が小さいと脱力したような動作に、バネとダンパーの値が大きいと力を込めた動作に修正される。人間が一連の動作を行う際に力の込め具合が常に一定ということはなく、動作の状態に応じて力の込め具合を変化させている。アーティストは、状態遷移機械の状態ごとにバネとダンパーの値を対応付けることにより、力の込め具合が状態ごとに変化するような動作を作成できる。
【0049】
図8に示すように、上腕28Rの末端と前腕29Rの末端とが肘の関節23Rで接続されている。前腕29Rは関節23Rを軸にして回転する。バネkはP(Proportional)制御を抽象化している。ダンパーcはD(Differential)制御を抽象化している。なおPD制御にさらにI(Integral)制御を付加してもよい。図中では、肘の関節23RのPD制御を説明した。PD制御はスケルトン24の全身の関節に対して実施してもよい。
【実施例
【0050】
<5.状態遷移機械の対比>
【0051】
図9は参考例としてキャラクターのスケルトンの動作の集合からなる状態遷移機械90の使用を示す。状態遷移機械90は動作M91から動作M95を有する。これらの動作を滑らかに接続することで連続した一つの動作データをコンピューターが作成する。ただし、動作M91から動作M95の各動作はアーティストが予め作成する。アーティストの仕事の量は必要な個別の動作の数に応じて増える。ここでアーティストとは、何人かの求めに応じてキャラクターのスケルトンの動作の集合を作成する人物である。
【0052】
図9に示す状態遷移機械90は分岐を含む。例えば動作M91の次の動作は動作M92か動作M93とすることができる。動作M92の次の動作は動作M94か動作M95とすることができる。動作M91から動作M95において、動作が継続している間は、キャラクターの動作を切り替えることができない。ある動作の持続時間が終わり、次の動作を開始する時にキャラクターの動作を切り替えることができる。コンピューターはディレクター又はその他の人若しくは物がコンピューターに入力した内容に応じて切り替えを行う。ここでディレクターとは、アーティストの作成した動作を利用する人物である。ディレクターとアーティストが同一人物であってもよい。
【0053】
図9ではアーティスト以外のディレクター又はコンピューターが動作M92を経由して動作M94に至る経路を選択している。コンピューターは動作M93や動作M95を記憶しているが、コンピューターはこれらを使用しない。また動作M91、動作M92及び動作M94のいずれも継続時間は固定である。
【0054】
図10はキャラクター20の身体部位とその目標位置回転の組を時間順に指定するためのインターフェース59を表している。アーティストがインターフェース59を使用して状態遷移機械60を作る。図の表すものはインターフェース59を備えるエディターとも言える。インターフェース59はグラフィカルユーザーインターフェース(GUI)でもよい。状態遷移機械60は、図3に示した状態遷移機械30と同様にハンドル25Rの付された身体部位すなわち右手の位置及び回転の情報しか有していない。
【0055】
図10においてアーティストはインターフェース59において状態遷移機械の状態すなわちポーズ28を選択し、ハンドル25Rを動かして身体部位ここでは右手の目標位置回転をポーズごとに設定する。また、ポーズ間の遷移29を設定する。ポーズは時間順序の情報を含む。アーティストの作成した状態遷移機械60に基づきコンピューターが仮想空間上でキャラクター20を動かす。すなわちコンピューターが動作M61からM68までを自動生成することでこれらの中間状態を補間する。
【0056】
図10においてインターフェース59で状態遷移機械60の入力を受け付けるコンピューターと状態遷移機械60の中間状態を補間するコンピューターとは別個のものでもよい。この場合前者のコンピューターから後者のコンピューターに状態遷移機械60を送る。また一つのコンピューターがインターフェース59で状態遷移機械60の入力を受け付け、さらに状態遷移機械60の中間状態を補間してもよい。この場合、コンピューターが状態遷移機械60を自身のメモリーに保存する。
【0057】
図10に示す状態遷移機械60を用いる際、アーティストに求められる役割は、キャラクター20のスケルトンとレンダリング用のデータとを作成することに加えて、スケルトンを動かすための状態遷移機械60それ自体を作成することである。アーティストはさらに、状態遷移機械60中の各状態に割り当てられる目標位置回転と、各目標位置回転に割り当てられる到達目標時刻とを指定しなければならない。さらにアーティストは必要に応じてキャラクターAI及びノードグラフを作成しなければならない。
【0058】
図10に示す方法では、実質的な意味においてアーティストは、キャラクターのスケルトンと、キャラクターのレンダリング用のデータと、キャラクターの状態遷移機械との全てを作成し、さらに目標位置回転と到達目標時間とを指定しなければならない。アーティストの作成した状態遷移機械を利用して、アーティストではない別の主体、例えばディレクターが、状態遷移機械に対して目標位置回転と到達目標時刻とを追加的に指定する方法は実施できない。ただし上記作業に関わるアーティストは複数人いてもよい。アーティストが上記の全て提供することによって、図9に示す方法における動作データを代替できる。
【0059】
図9に示す従来のキーフレームでは全身の各関節の角度を指定していたところ、図10に示す方法では手先や頭など動作を直接指定したい身体部位の目標位置回転のみを指定すればよい点で優れる。また対象の位置に依存して変化する動作を定義する際、図9に示す方法では異なる対象の位置を想定した多数の動作を作成してブレンドする必要があったところ、図10に示す方法では一種類のノードグラフと状態遷移機械を作成するだけで対象の位置に追従した異なる動作が生成される点で優れる。
【0060】
図10に示す状態遷移機械60は分岐を含む。例えば最初のポーズにおいて次の動作は動作M61か動作M63とすることができる。すなわち動作M62と動作M63とは切り替え可能である。動作M63の後のポーズにおいて次の動作は動作M64か動作M68とすることができる。動作M64の後のポーズにおいて次の動作は動作M65が動作M67とすることができる。また、先に図6及び図7を用いて説明したように、本実施例では前の動作が完了する前に次の動作に遷移できる。すなわち、動作の切り替え時刻は任意である。例えば、動作M64か動作M68かの切り替えは、動作M63が終了する前に実行してもよいし、動作M63の終了と同時に実行してもよいし、動作M63が終了してから時間が経過したのちに実行してもよい。この時の動作の補間の方法は後に図18図20を用いて詳述する。
【0061】
コンピューターはアーティストやディレクターがコンピューターに入力した内容に応じて切り替えを行う。コンピューターはキャラクターAIを実行することでこの切り替えを行ってもよい。
【0062】
図10ではアーティストが動作M64を経由して動作M67に至る経路を選択している。コンピューターはこれらの経路上の動作を中間状態の補間によって生成する。コンピューターは動作M61、動作M62及び動作M68を経由する経路を使用しない。コンピューターが、中間状態の補間によってこれらの動作を生成することはない。
【0063】
<6.インターフェースの使用>
【0064】
図11はインターフェース59の使用図である。インターフェース59の表す仮想空間内には、キャラクター20に加えて、キャラクター20の前方にあるテーブルと、テーブルに置かれたコーヒーカップ70とが存在する。コーヒーカップ70の取っ手はキャラクター20よりも遠い側を向いている。
【0065】
図11において、アーティストはキャラクター20がコーヒーカップ70の取っ手に手を差し伸べる動作を作成する。アーティストはキャラクター20の右手の目標位置回転をハンドル25Rで直接に指定する。
【0066】
図11においてアーティストはコーヒーカップ70の取っ手にある目標点71上に最終の目標位置回転を設定する。状態遷移機械が開始点及び目標点71の目標位置回転しか有しない。この場合は、キャラクター20がコーヒーカップ70に向かって真っすぐ右手を差し出すアニメーションが生じる。キャラクター20の右手はコーヒーカップ70の胴部に当たる。このようなキャラクター20の動作は現実感に乏しい。
【0067】
そこで図11において、アーティストはさらに経由点72上の目標位置回転を追加的に設定する。状態遷移機械が経由点72上の目標位置回転をさらに有する。この場合は、キャラクター20がコーヒーカップ70の胴体を迂回して右手を差し出すアニメーションが生じる。キャラクター20の右手はコーヒーカップ70の胴部に当たらない。このようなキャラクター20の動作は現実感がある。
【0068】
先に述べた通り、本実施形態ではアーティストによる動作データ作成への依存が軽減されている。
【0069】
図11においてインターフェース59は、キャラクター20の動作の全体像を把握しやすくする。アーティストは制作作業を行いやすい。アーティストは必要最小限のキーフレームすなわち身体部位の目標位置回転を作成するだけで、対象すなわちコーヒーカップ70の取っ手の位置に応じた、キャラクター20の動作を作成できる。
【0070】
<7.他の入力に基づく目標位置回転の自動的な修正>
【0071】
先に述べた通り、図11では、アーティストが右手の目標位置回転をハンドル25Rで直接指定することで状態遷移機械を作成する。作成された状態遷移機械を実行するコンピューターは、ある目標位置回転から次の目標位置回転の間の身体部位の中間状態を補間する。コンピューターはアーティストが指定した目標位置回転は変化させない。
【0072】
図12及び他の図面を用いて本実施例を説明する。本実施例ではコンピューターが目標位置回転を他の入力に基づき自動的に調整する。他の入力は、何人かがコンピューターに対して事前に入力したものではない。他の入力は、コンピューターが状態遷移機械を実行している最中にコンピューターに入力されるものを含む。本実施例ではコンピューターは調整された目標位置回転に基づき中間状態を補間する。目標位置回転を調整するコンピューターと中間状態を補間するコンピューターとは別個のものでもよい。同じコンピューターがこれらの処理を担ってもよい。
【0073】
本実施例は図14以降の図面を用いて説明する。まずは図12及び図13を参照しながら、スケルトンの動作すなわち関節角アニメーションの集合からなる状態遷移機械を例に用いて、本実施例でどのような調整結果を得たいのかを説明する。
【0074】
図12は画面21とコンピューター22の使用図である。コンピューター22はセンサー75と接続する。センサー75は画面21の周囲に設置される。画面21はサイネージとして用いられる。
【0075】
図12において、センサー75は画面21の正面方向の右側の遠くにいる子供79の位置を検知する。ここで右側とはキャラクター20から見て右側である。以下同様とする。子供79は実存のターゲットである。コンピューター22はセンサー75から子供79の位置の信号を受け取る。
【0076】
図12においてコンピューター22は、キャラクター20が触れ合いをもとめるべきターゲット、すなわちインタラクションすべきターゲットとして右側の遠くにいる子供79を選択する。以下このようなターゲットを「相手」という場合がある。コンピューター22はセンサー75のもたらす情報に基づき子供79の方位と距離を記録する。
【0077】
図12においてコンピューター22はキャラクター20のスケルトンの動作の集合からなるモーショングラフ80を記憶している。スケルトンの動作は大きく分けて「見回す」、「手を振る」及び「おじぎをする」の3種が含まれる。モーショングラフ80もまた一種の状態遷移機械であり、またコンピュータープログラムである。コンピューター22はモーショングラフ80にしたがいキャラクター20のアニメーションを画面21に送る。画面21はサイネージ型のインタラクティブロボットとしてキャラクター20を表示する。
【0078】
図12においてコンピューター22は、モーショングラフ80中の「手を振る」動作を調整することで、これを「右側の遠くにいる子供に」対して「手を振る」動作に変更する。
【0079】
(A)関節角アニメーションをベースとした方法
【0080】
図13は参考例として関節角アニメーションを土台に「手を振る」動作を自動的に調整する方法を示している。インタラクティブな動作のパターンが多種多様であることに備えて、アーティストが予め数多くの「手を振る」動作の群を作成する必要がある。コンピューターが予めこれらの関節角アニメーションを記憶する。
【0081】
図13においてコンピューターはモーショングラフ80にしたがいキャラクターの行動を決定する。キャラクターの動作を「見回す」動作から「手を振る」動作に切り替えるには、まずコンピューターが「手を振る」動作及び「おじぎをする」動作からいずれかを選択する。コンピューターは選択にしたがい関節角アニメーションを呼び出す。
【0082】
図13においてコンピューターは先に述べた通りターゲットとして「右側の遠くにいる子供」を選択する。このため複数の動作の中から「右、遠く、低」の動作を選択する。この動作は、右方向に向けて手を振るスケルトンの動作であり、また遠くにいる背の低い人物に向かって手を振るスケルトンの動作である。この動作はアーティストが予め作成した関節角アニメーションで表されている。
【0083】
図13においてコンピューターはモーションブレンドを行う。ここではコンピューターは「右、遠く、低」の動作において想定されている画面とターゲットとの距離は、センサーで検知した画面と子供との距離より遠すぎると判断している。そこでコンピューターはさらに「右、近く、低」の動作を選択する。コンピューターは「右、遠く、低」の動作に「右、遠く、低」の動作をブレンドする。コンピューターは検知した距離に基づきブレンドの割合を特定する。ブレンドにより新しい関節角アニメーションが生じる。
【0084】
図13においてコンピューターはIKによって関節角アニメーションに対して動作の補正を行う。コンピューターは関節角アニメーションをレンダリングしてキャラクターのアニメーションを作成するとともに、キャラクターの映像を画面に出力する。
【0085】
図13においてコンピューターが上述の通りモーションブレンドを行うと、出力されたアニメーションが望まない動作を含むことがある。ここでいう「望まない動作」の中にはキャラクターの一部の身体部位が本来向くべき方向を向いていない、キャラクターの身体部位の動作の反復が不自然に減衰したり、逆に増幅したりしてしまう、キャラクターの身体部位のうち動くべきでない身体部位が動いてしまう、が含まれる。キャラクターが手を振る動作における「望まない動作」の具体例は、キャラクターの手のひらがインタラクションすべき相手の方を向いていない、キャラクターの手の振れ幅が小さくなったり大きくなったりする、である。
【0086】
図13において「望まない動作」の発生を避けるためには、インタラクションすべきターゲットの距離や方位が少しずつ異なる動作をアーティストがさらに数多く用意する必要がある。
【0087】
(B)ポーズからなる状態遷移機械をベースとした方法
【0088】
図12に示した通り、コンピューター22はセンサー75を通じて子供79の座標を取得する。コンピューター22はさらに、子供79の座標の情報に基づき、モーショングラフの中の「手を振る」動作の調整を行う。コンピューター22はさらに、目標位置回転の間の中間状態を補間する。本実施例では動作の調整を、ポーズからなる状態遷移機械の中の目標位置回転の調整によって行う。
【0089】
図14はポーズからなる状態遷移機械を土台に「手を振る」動作を自動的に調整する方法を示している。モーショングラフ81は、図13に示したモーショングラフ80と同じ機能を有する状態遷移機械である。モーショングラフ81はモーショングラフ80と以下の点で異なる。モーショングラフ81は「手を振る」動作を生成するために、図15に示す、ポーズからなる状態遷移機械を呼び出す。
【0090】
図15は状態遷移機械39を示す。状態遷移機械39は図3に示す状態遷移機械30より簡単な状態遷移機械であって、上述したポーズのいくつかを有する。1番目のポーズP31は開始の状態であるとともに待機の状態である。P31は終了の状態としても用いる。2番目のポーズP33ではキャラクター20が右手を持ち上げている。3番目のポーズP34ではキャラクター20が右手を右方向に向けている。キャラクター20を正面視した場合右手は左側へ移動している。4番目のポーズP35ではキャラクター20が右手を頭や胴に近づけている。キャラクター20を正面視した場合右手は右側へ移動している。
【0091】
図14においてモーショングラフ81は「見回す」動作及び「手を振る」動作を生成するためにポーズからなる状態遷移機械を呼び出してもよい。他の態様においてコンピューターは「見回す」動作及び「手を振る」動作の関節角アニメーション群を記憶していてもよい。モーショングラフ81はこれらの群から動作を選択して、必要な動作の関節角アニメーションを呼び出してもよい。
【0092】
図14においてコンピューターは「手を振る」動作の調整を行うために、ノードグラフ38を利用する。ノードグラフ38はコンピュータープログラムである。コンピューターはノードグラフ38を実行するにあたり、キャラクターが「手を振る」ターゲットを選択する。本実施例においてターゲットは図12に示す右側の遠くにいる子供79である。
【0093】
図14においてコンピューターが行う調整とは、一態様においてアーティストが指定した目標位置回転の範囲内でコンピューターが自動的に新たな目標位置回転を指定することである。他の一態様において、アーティストが指定した目標位置回転の基準を参照して、コンピューターが自動的に新たな目標位置回転を指定することである。
【0094】
図14において、状態遷移機械39から見たノードグラフ38は、目標位置回転を状態遷移機械39の外部から規定するメタの存在である。これらは、状態遷移機械39をメインルーチン、ノードグラフ38をサブルーチンとする、ひとまとまりのプログラムに置き換えてもよい。
【0095】
図16は仮想空間を表す。図16では、図12を用いて説明したキャラクター20や子供79を平面視している。キャラクター20は画面21の背後に仮想的に位置する。キャラクター20から見て右側に子供79が位置する。コンピューター22はセンサー75から子供79の位置の信号を受け取る。コンピューター22は受け取った信号から、仮想空間におけるターゲットとなる子供79の座標を算出する。コンピューター22は算出した座標を記録する。
【0096】
図16においてコンピューター22はノードグラフ38を実行する。子供79の座標及びキャラクター20の座標に基づき、キャラクター20が子供79に向かって相対座標83が回転する。回転した相対座標83に基づき身体部位の目標座標位置の調整を行う。
【0097】
図16においてセンサー75はカメラを備えてもよい。一態様においてセンサー75がコンピューター22に送る信号は子供79の画像を含む。コンピューター22は、子供79の画像から子供79の身長を算出する。コンピューター22は、ノードグラフ38の実行において子供79の身長の情報を調整結果に反映させる。
【0098】
図14に戻る。呼び出した「手を振る」状態遷移機械中の、いわゆる次に続く身体部位の目標位置回転に調整を施す。図16に示すようにコンピューター22は身体部位の目標位置回転を、他の入力ここではセンサー75からの入力に基づき調整する。
【0099】
図17は右手の目標位置回転の調整の様子を表す。図は右手をハンドル25Rでシンボル化して表している。
【0100】
図17において、ハンドル25Rで表される右手の1番目の目標位置回転は、コンピューターの呼び出した状態遷移機械の基本の目標位置回転のままである。この目標位置回転は手を振る前の状態に相当する。この目標位置回転は右手が腰の横にある、キャラクターの姿勢を表現している。コンピューターはキャラクター自身の位置を原点とし、キャラクターの正面方向をz軸、右方向をx軸、上方向をy軸とするような基準座標系の入力を受ける。コンピューターはコンピューターに入力された基準座標系を相対座標ノードによって変換して出力する。相対座標ノードは、コンピューターに入力された基準座標系に対して所定の相対位置及び相対回転を持つ座標系を出力するためのノードグラフである。以上の処理によりコンピューターは、キャラクターを移動させたり回転させたりする場合でも、キャラクターの腰の横に右手の目標位置を生成できる。
【0101】
図17において、ハンドル25Rで表される右手の2番目の目標位置回転の調整は次のように行われる。2番目の目標位置回転はキャラクターが手を振るためにキャラクターが右手を持ち上げつつあるときの目標位置を含む。この目標位置ではキャラクターの手がキャラクターの胸の前あたりを通過する。
【0102】
図17において、1番目の目標位置回転はキャラクターがインタラクションすべき相手の位置に依存しない。これに対して、3番目や4番目の目標位置回転は、実際に手を振る動作における目標位置を含んでいるので、手を振ってインタラクションすべき相手の存在する方向に強く依存する。本実施例ではアーティスト等が座標変換の種類と適用順序をノードグラフの形で定義する。コンピューターはノードグラフをメモリーに記録する。コンピューターはノードグラフをメモリーから呼び出す。コンピューターはノードグラフに従って座標変換の計算を行うことで、ターゲットの位置及びターゲットの回転に基づき、状態遷移機械中の目標位置回転の調整を自動的に施す。
【0103】
一方、図17において、2番目の目標位置回転はその途中の過程における目標位置回転である。したがって、2番目の目標位置回転はインタラクションすべき相手の存在する方向への依存を半分有している。2番目の目標位置回転では、コンピューターはキャラクター自身の位置を原点とする基準座標系の入力を受ける。
【0104】
図17において、コンピューターはコンピューターに入力された基準座標系を回転ノードによって変換することでキャラクター自身の位置を原点とする新たな座標系、すなわち回転座標系を出力する。回転ノードは、コンピューターに入力された基準座標系をインタラクションすべき相手の方向に応じて所定の割合で回転させるノードグラフである。本実施例において所定の割合、すなわち回転割合は50%である。この回転座標系では、座標系の前方を示す軸の向きが基準座標系から変更されている。本実施例の回転座標系では、Z軸が、キャラクターの前方方向とインタラクションすべき相手の方向との間で角度が50:50で分割される方向を向いている。
【0105】
図17において、コンピューターは回転座標系をさらに上述の相対座標ノードによって変換する。コンピューターは、回転座標系を相対座標ノードに入力することで、回転座標系を基準とした目標位置を記述できる。この目標位置は、概ねキャラクターの胸の高さに、キャラクターの右手を移動するのに適する。コンピューターが相対座標ノードに入力する回転座標系は、インタラクションすべき相手の方向に依拠して、基準座標系を回転させたものである。コンピューターは、インタラクションすべき相手が異なる位置に立つとき、その相手に対して自動的に異なる右手の目標位置を生成する。2番目の目標位置回転はこの目標位置を含む。以上の通り、コンピューターは基準座標系を2回にわたって変換することで2番目の目標位置回転を作成する。
【0106】
図17において、ハンドル25Rで表される右手の3番目の目標位置回転と4番目の目標位置回転の調整は次のように行われる。コンピューターは、キャラクターが手を左右に振る動作を表現するためにこれらの目標位置回転を組み合わせて使用する。コンピューターは、これらの目標位置回転を、2番目の目標位置回転と同様に生成する。2番目の目標位置回転は、キャラクターが右手を持ち上げようとする途中を表現している。これに対して3番目の目標位置回転と4番目の目標位置回転との組は、キャラクターが実際に、インタラクションすべき相手の位置に向かって手を振る動作を表す。コンピューターは目標位置を回転する必要がある。この回転はインタラクションすべき相手の存在する方向に完全に依存したものでなければならない。右手の3番目の目標位置回転と4番目の目標位置回転の調整では、回転ノード中の回転割合を100%としている。
【0107】
コンピューターが相対座標ノードや回転ノードを利用するのは、目標位置回転の調整方法の一例である。コンピューターはキャラクター自身や、インタラクションすべき相手の位置の入力を受けて、目標位置回転を出力する。技術者が、この過程における位置回転を変換するための要素を、この他にも多数定義する。アーティストは、すでに定義されている変換要素の中から目的に適うものを選択し組み合わせて利用する。汎用性の高い変換要素についてはキャラクターや状態遷移機械とは独立して共有され、複数のアーティストによって利用される。
【0108】
図14に戻る。その後、コンピューターは調整された目標位置回転、ここでは2番から4番に基づき、目標位置回転同士の間の中間状態を躍度最小軌道で補間する。コンピューターはさらにIK及びPD制御を用いた後、関節角アニメーションをレンダリングして画面にキャラクターアニメーションを出力する。
【0109】
図12に戻る。コンピューター22はインタラクティブなキャラクターアニメーションを画面21に表示する。例えば子供79やその他の人が画面21に対して遠くにいればキャラクター20が手を高く上げて振る。子供79やその他の人が画面21に対して近くにいればキャラクター20が自身の体のそばで小さく手を振る。
【0110】
図12において画面21の表示するキャラクターアニメーションは多様である。しかしながら、図14から図17を用いて説明したように「手を振る」状態遷移機械39は少なくとも1種類あればよい。これに対して図13に示した関節角アニメーションをベースとした方法では多数のスケルトン動作を予め用意する必要がある。
【0111】
図12に示すようにインタラクティブなキャラクター20を、画面21を有するサイネージに表示することで、これを物理的な社会空間で利用できる。キャラクター20の動作は、キャラクター20と子供79との位置関係に応じて変化する。コンピューター22は、キャラクターの動作を、キャラクターから見た子供79の位置に応じて変化させる。
【0112】
本実施例では図16に示すように、キャラクター20の動作をキャラクター20の身体部位とキャラクター20が子供79との位置関係によって特徴付ける。子供79の位置は何ら限定されない。子供79の位置は場面によって変化する。例えば子供79が画面に近づいているときは、キャラクター20が自らの手を子供79に近づけてもよい。
【0113】
図16において子供79は大人に置き換えてもよい。子供79は動物に置き換えてもよい。子供79はその他の物体に置き換えてもよい。例えば人の置いた物体に対してキャラクター20が動作をおこなってもよい。その物体を媒介としてキャラクターと人とが互いにインタラクションする。このように多様なインタラクションのパターンを実現するには上述したようにポーズからなる状態遷移機械をベースとした方法が適する。
【0114】
<8.状態遷移中に次の状態遷移を起こすこと>
【0115】
図10では、コンピューターは、あるポーズから次のポーズに至るまでの状態遷移を完了してから、さらに次のポーズに至る動作を開始する。すなわちコンピューターは、さらにキャラクターに次の新たなポーズを与えるために、キャラクターの身体部位の動作を開始する。これに対して以下においては、キャラクターのスケルトンの状態遷移中に次の状態遷移を起こす実施例を説明する。
【0116】
図6に示すように、キャラクターの状態は、身体部位ここでは右手に目標位置回転Paの割り当てられた状態、ここでは状態aという、から目標位置回転Pbの割り当てられた状態、ここでは状態bという、に遷移する。コンピューターはこの状態遷移の中で、右手を、目標位置回転Paから目標位置回転Pbに向けて動かす。このためコンピューターは要素動作Pa to Pbを開始する。
【0117】
図6において、キャラクターの状態は、状態aから開始して状態bに至る。ここでコンピューターは例えばキャラクターの状態bから状態cへの遷移を、要素動作Pa to Pbの完了を待たずに実行できる。この時、コンピューターは新たに要素動作Pb to Pcを開始する。コンピューターが実際に右手の目標位置回転として出力するのは、要素動作Pa to Pbと要素動作Pb to Pcの和である。このことを一般化すれば、コンピューターは右手の目標位置回転を、開始してからまだ終了していない要素動作全ての和とする。
【0118】
図9で示すように、動作データからなる状態遷移機械を用いる手法では、コンピューターは個々の動作の実行中に、状態の切り替えをできない(unswitchable)。コンピューターはある動作の実行が完了して次の動作を選択するタイミングでのみ、状態の切り替えを実行できる(switchable)。一方、以下図18から図20に示すように本実施例では、コンピューターは、前の動作を実行中であっても、任意のタイミングで状態の切り替えを実行できる(switchable)。
【0119】
図18は状態遷移機械の使用図である。期間AはキャラクターがPose 0を有している期間である。コンピューターは期間Aの終了時にキャラクターに与えられるポーズをPose 0からPose 1に切り替える。期間BはキャラクターがPose 0からPose 1に向かう動作M63を有している期間である。コンピューターは期間Bの途中で、すなわちキャラクターがPose 1を獲得する前に、キャラクターに与えられるポーズをPose 1からPose 2に切り替える。アーティストは、動作M63の継続時間の長さとは無関係に、動作M64の開始時刻を指定する。期間Bにおいてコンピューターは動作M63の継続中の任意の時刻で状態遷移機械の状態を切り替える(switchable)。期間Bにおいてキャラクターは動作M63の継続中の任意の時刻でPose 1の次のポーズすなわちPose 2に向かう動作M64を開始する。キャラクターの身体部位の位置及び回転はPose 1の目標位置回転に到達しない場合がある。Pose 1の目標位置回転はいわば誘導点である。
【0120】
図18において動作M63の持続中に次の動作M64が開始する。期間Cの間、動作M63と動作M64とが混ざる。キャラクターはこれらの動作の混じりあってなる動作をする。躍度最小軌道法を用いることで、このような動作の混合が起きても、キャラクターは滑らかに動作する。また期間Bと期間Cのつなぎ目においても、さらには期間Cと期間Dのつなぎ目においても動作は滑らかに接続する。期間Bにおける任意のタイミングで動作M63を動作M64に切り替えてもキャラクターは滑らかに動作する。
【0121】
図19は状態遷移機械の使用図である。本図は、動作M63と動作M64との重なりの時間の長さを様々に表している。左側の例では、動作M63と動作M64との重なりが大きい。真ん中の例では動作M63と動作M64との重なりが小さくなっている。これらの例では、身体部位の位置及び回転はPose 1の目標位置回転に到達しない。Pose 1の目標位置回転はいわば誘導点である。
【0122】
図19の右側の例では、動作M63と動作M64との重なりがない。キャラクターは期間CにおいてPose 1を有する。この例ではキャラクターの身体部位の位置及び回転はPose 1の目標位置回転に到達する。この例では身体部位の位置及び回転の中間状態の全ての部分、すなわち動作M63と動作M64の全ての部分が用いられる。
【0123】
図19ではアーティストが動作M63から動作M64への切り替えのタイミングを調整することで、コンピューターは期間Cにおける目標位置回転の軌道を変化させる。かかる軌道は、期間Bにおける動作と期間Dにおける動作とを接続する動作を表す。
【0124】
図20は状態遷移機械の使用図である。本図が示すように、コンピューターは動作の混合を、連続する2つの動作、ここでは動作M63及び動作M64の間でのみで行うとは限らない。コンピューターが3つ以上の動作を混合するように、アーティストは、各動作の開始時刻を指定する。身体部位の位置及び回転はPose 1及びPose 2の目標位置回転に到達しない場合がある。Pose 1及びPose 2の目標位置回転はいわば誘導点である。
【0125】
図18から図20を用いて説明したように、アーティストは状態遷移機械中の各状態に目標位置回転を割り当てる。コンピューターは状態遷移を、その前の状態遷移の継続中のアーティストの指定した任意の時刻に起こすことができる。コンピューターはアーティストの指定に代えて、キャラクターAIを実行することでこの状態遷移を実行してもよい。
【0126】
<9.キャラクターAI>
【0127】
図21はキャラクターAIの利用の一形態を表す。キャラクターAIは、コンピューター外からもたらされる情報を元に、生成すべきキャラクターアニメーションの決定に関わるプログラムである。本実施形態においてプログラムの様式は問わない。コンピューター外からもたらされる情報の例は、コンピューターと接続するセンサーが取得した、画面の周囲の状況である。
【0128】
図21においてコンピューターはキャラクターAIを状態遷移機械の外部で実行する。一態様においてキャラクターAIはセンサーから情報を受け取る。キャラクターAIはセンサーのもたらす情報をもとに、メモリーに記録された状態遷移機械群から状態遷移機械を選択して呼び出す。キャラクターAIはセンサーのもたらす情報をもとに、状態遷移機械を実行する。キャラクターAIはセンサーのもたらす情報をもとに、状態遷移機械を中断する。
【0129】
図21においてコンピューターはキャラクターAIを実行することで、状態遷移機械中の状態遷移を実行する否かを判断する。コンピューターはさらにキャラクターAIを実行することで、状態遷移機械中のどの状態に遷移するかを判断する。コンピューターは一態様において、これらの判断をフレームごとに、すなわち目標位置回転に遷移するごとに行う。コンピューターは一態様において、これらの判断を目標位置回転に到達前に行う。
【0130】
図21において、コンピューターはセンサーとキャラクターAIとを利用することで、状態遷移機械の各状態に割り当てられる目標位置回転及び到達目標時刻を自動的にかつリアルタイムで指定できる。一態様において、コンピューターが状態遷移機械の実行を開始した後に、コンピューターに接続された画面の周囲の状況が変化する。この場合、コンピューターはその変化に応じて状態遷移機械中の目標位置回転及び到達目標時刻をリアルタイムで変化させることができる。
【0131】
<10.仮想現実における応用>
【0132】
図22はインタラクティブなキャラクターを仮想現実空間で利用する一例を表す。体験者89aはハンドトラッカー88aとVR(virtual reality)ゴーグル87aとを装着する。ハンドトラッカー88aは光学式及びジャイロ式のいずれかでもよい。ハンドトラッカー88aは体験者89aの全身のポーズをコンピューター87aに入力できるデバイス、例えばKinect(商標)に置き換えてもよい。
【0133】
図22においてセンサー85aはコンピューター87aと接続する。センサー85aはVRゴーグル86aとハンドトラッカー88aとの位置及び回転を検出する。VRゴーグル86aはキャラクターを映し出す。センサー85aは体験者89aの位置をコンピューター87aに与える。コンピューター87aは体験者89aの位置に基づきキャラクターAIを実行する。コンピューター87aは体験者89aの位置に基づき状態遷移機械、ノードグラフ、IK及びその他のプログラムを実行する。コンピューター87aはキャラクターAIの判断に基づき状態遷移機械、ノードグラフ、IK及びその他のプログラムを実行する。コンピューター87aは映像をVRゴーグル86aに出力する。
【0134】
図23に示すように、ネットワーク77を経由することで複数の体験者がキャラクターとインタラクションしてもよい。図中には体験者89a及び体験者89bが表されている。ネットワーク77はLAN(local area network)でもよく、インターネットでもよい。コンピューター87a及びコンピューター87bは一連の計算処理をネットワーク77でつながったサーバーにさせてもよい。
【0135】
図23において、コンピューター87bは仮想空間中の仮想のターゲットの仮想空間における座標を変化させてもよい。体験者89bはハンドトラッカー88bを通じてコンピューター87bに対して入力を行う。コンピューター87bは、入力に基づきコーヒーカップ70を仮想空間中で移動させる。
【0136】
図23においてコンピューター87bはさらに状態遷移機械中の目標位置回転に調整を施す。コンピューター87bは、キャラクターの仮想空間における座標と、コーヒーカップ70の仮想空間における変化した座標との組に基づき、この処理を行う。コンピューター87bはその後、上述の中間状態を補間する。コンピューター87bは一連の計算処理をネットワーク77でつながったサーバーにさせてもよい。
【0137】
図23において、コーヒーカップ70の仮想空間における変化した座標はコンピューター87bの有するプログラム内に事前に入力はされていない。したがってコンピューター87bは、図11に示すようにコーヒーカップ70の位置をノードグラフに入力することで大回りの経由点を含む中間状態をさらに生成してもよい。キャラクターはコーヒーカップ70を通じて実存のターゲットである体験者89bとインタラクションする。一連の処理は図22に示すようなスタンドアローンのコンピューター87aでも実施できる。
【0138】
本発明の具体的な構成は上記実施形態に限られない。上記実施形態の要旨を逸脱しない範囲内における様々な設計変更が本発明に含まれる。一態様においてプログラムを実行するコンピューターの動作を、ネットワークで接続された複数の装置で実行する。
【0139】
一態様においてプログラムを実行するコンピューターの一部又は全部の処理を、CPU(Central Processing Unit)が実行する。その一態様においてプログラムを実行するコンピューターの一部の処理を、GPU(graphics processing unit)及びその他のプロセッサが実行する。他の一態様においてプログラムを実行するコンピューターの一部の処理を、FPGA(Field-programmable Gate Array)及びその他のPLD(Programmable Logic Device)並びにASIC(Application Specific Integrated Circuit)の少なくともいずれかが代替的に実行する。
【0140】
一態様において非一時的なコンピューター可読媒体(non-transitory computer readable medium)がプログラムを格納するとともに、コンピューターに対してプログラムを供給する。一態様において非一時的なコンピューター可読媒体はネットワークを介してプログラムを供給する。一態様において非一時的なコンピューター可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピューター可読媒体は、ハードディスクドライブ及びフラッシュメモリー並びにその他の非揮発性記憶媒体並びにRAM(Random Access Memory)及びその他の揮発性記憶媒体を含む。他の一態様において一時的なコンピューター可読媒体(transitory computer readable medium)がコンピューターにプログラムを供給する。一態様において、一時的なコンピューター可読媒体は、電気信号、光信号、及び電磁波を含む。一態様において一時的なコンピューター可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を通って、プログラムをコンピューターに供給する。
【0141】
この出願は、2019年9月5日に出願された日本出願特願2019-161990を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【0142】
20 キャラクター、 21 画面、 22 コンピューター、 23 肘の関節、 24 スケルトン、 25L ハンドル、 25R ハンドル、 26L 左手の位置、 26R 右手の位置、 27L 左手の回転、 27R 右手の回転、 28R 右腕の上腕、 29R 右腕の前腕、 30 状態遷移機械、 P31-36 ポーズ、 38 ノードグラフ、 39 状態遷移機械、 S40 ステップ、 S41 ステップ、 S42 示すステップ、 S43 ステップ、 S44 示すステップ、 S45 ステップ、 S49 ステップ、 50 曲線、 51 曲線、 55a-c 位置、 56a-b 直線経路、 57 曲線経路、 59 インターフェース、 60 状態遷移機械、 M61-68 動作、 70 コーヒーカップ、 71 目標点、 72 経由点、 75 センサー、 79 子供、 80 モーショングラフ、 81 モーショングラフ、 83 相対座標、 90 状態遷移機械、 M91-96 動作、 c ダンパー、 k バネ、 t 横軸、 x 縦軸
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23