(57)【要約】【課題】物理シミュレーション処理が実行されたラグドールに対応するオブジェクトをリアリティ高く表現できるプログラム、オブジェクト配置システム及びオブジェクト配置方法を提供する。【解決手段】フィードバック部５２は、物理シミュレーション処理の実行後の複数のラグドールパーツの配置に基づいて、オブジェクトに対応付けられる複数のスケルトンジョイントの基準配置を決定する。フィードバック部５２は、ターゲットジョイントの基準配置と当該ターゲットジョイントの目標となる配置とに基づいて、複数のスケルトンジョイントの基準配置を最終配置に修正する。オブジェクト配置決定部５４は、複数のスケルトンジョイントの最終配置に基づいて、オブジェクトの仮想空間内における配置を決定する。【選択図】図８
2018128851.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間内に配置されたオブジェクトの現在の配置と、当該オブジェクトの目標となる配置と、に基づいて、当該オブジェクトに対応付けられる複数のラグドールパーツについての物理パラメータの値を設定する物理パラメータ設定手順、
前記複数のラグドールパーツに対して前記物理パラメータに応じた物理シミュレーション処理を実行する物理シミュレーション処理実行手順、
前記物理シミュレーション処理の実行後の前記複数のラグドールパーツの配置に基づいて、前記オブジェクトに対応付けられる複数のスケルトンジョイントの基準配置を決定する基準配置決定手順、
前記複数のスケルトンジョイントのうちの１つであるターゲットジョイントの前記基準配置と当該ターゲットジョイントの目標となる配置とに基づいて、前記複数のスケルトンジョイントの前記基準配置を最終配置に修正する配置修正手順、
前記複数のスケルトンジョイントの前記最終配置に基づいて、前記オブジェクトの前記仮想空間内における配置を決定するオブジェクト配置決定手順、
をコンピュータに実行させることを特徴とするプログラム。
【請求項２】
前記配置修正手順では、前記ターゲットジョイントの前記基準配置が当該ターゲットジョイントの目標となる配置と一致するよう、前記複数のスケルトンジョイントの前記基準配置を前記最終配置に修正する、
ことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記配置修正手順では、前記ターゲットジョイントの前記最終配置が、当該ターゲットジョイントの前記基準配置と当該ターゲットジョイントの目標となる配置とを補間した配置となるよう、前記複数のスケルトンジョイントの前記基準配置を前記最終配置に修正する、
ことを特徴とする請求項１に記載のプログラム。
【請求項４】
前記配置修正手順では、前記ターゲットジョイントの前記最終配置が、補間の開始タイミングから現在までの時間と、現在から補間の終了タイミングまでの時間と、に基づいて算出される重みで、当該ターゲットジョイントの前記基準配置と当該ターゲットジョイントの目標となる配置とを補間した配置となるよう、前記複数のスケルトンジョイントの前記基準配置を前記最終配置に修正する、
ことを特徴とする請求項３に記載のプログラム。
【請求項５】
前記配置修正手順では、
前記ターゲットジョイントの前記基準配置と当該ターゲットジョイントの目標となる配置とに基づいて、前記複数のスケルトンジョイントの第１の配置を決定し、
前記複数のスケルトンジョイントのうちの前記ターゲットジョイントとは異なるスケルトンジョイントの前記基準配置と当該スケルトンジョイントの目標となる配置とに基づいて、前記複数のスケルトンジョイントの第２の配置を決定し、
第１の配置と前記第２の配置とを補間した配置が前記複数のスケルトンジョイントの前記最終配置となるよう、前記複数のスケルトンジョイントの前記基準配置を前記最終配置に修正する、
ことを特徴とする請求項１から４のいずれか一項に記載のプログラム。
【請求項６】
前記配置修正手順では、補間の開始タイミングから現在までの時間と、現在から補間の終了タイミングまでの時間と、に基づいて算出される重みで、前記第１の配置と前記第２の配置とを補間した配置が前記複数のスケルトンジョイントの前記最終配置となるよう、前記複数のスケルトンジョイントの前記基準配置を前記最終配置に修正する、
ことを特徴とする請求項５に記載のプログラム。
【請求項７】
仮想空間内に配置されたオブジェクトの現在の配置と、当該オブジェクトの目標となる配置と、に基づいて、当該オブジェクトに対応付けられる複数のラグドールパーツについての物理パラメータの値を設定する物理パラメータ設定部と、
前記複数のラグドールパーツに対して前記物理パラメータに応じた物理シミュレーション処理を実行する物理シミュレーション処理実行部と、
前記物理シミュレーション処理の実行後の前記複数のラグドールパーツの配置に基づいて、前記オブジェクトに対応付けられる複数のスケルトンジョイントの基準配置を決定する基準配置決定部と、
前記複数のスケルトンジョイントのうちの１つであるターゲットジョイントの前記基準配置と当該ターゲットジョイントの目標となる配置とに基づいて、前記複数のスケルトンジョイントの前記基準配置を最終配置に修正する配置修正部と、
前記複数のスケルトンジョイントの前記最終配置に基づいて、前記オブジェクトの前記仮想空間内における配置を決定するオブジェクト配置決定部と、
を含むことを特徴とするオブジェクト配置システム。
【請求項８】
仮想空間内に配置されたオブジェクトの現在の配置と、当該オブジェクトの目標となる配置と、に基づいて、当該オブジェクトに対応付けられる複数のラグドールパーツについての物理パラメータの値を設定するステップと、
前記複数のラグドールパーツに対して前記物理パラメータに応じた物理シミュレーション処理を実行するステップと、
前記物理シミュレーション処理の実行後の前記複数のラグドールパーツの配置に基づいて、前記オブジェクトに対応付けられる複数のスケルトンジョイントの基準配置を決定するステップと、
前記複数のスケルトンジョイントのうちの１つであるターゲットジョイントの前記基準配置と当該ターゲットジョイントの目標となる配置とに基づいて、前記複数のスケルトンジョイントの前記基準配置を最終配置に修正するステップと、
前記複数のスケルトンジョイントの前記最終配置に基づいて、前記オブジェクトの前記仮想空間内における配置を決定するステップと、
を含むことを特徴とするオブジェクト配置方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、オブジェクト配置システム及びオブジェクト配置方法に関する。
【背景技術】
【０００２】
古典力学の法則等の物理法則をシミュレートするソフトウェアである物理エンジンを活用したプログラムによって、仮想空間内に配置されたゲームキャラクタ等のオブジェクトの動きのリアリティを高めることが行われている。
【０００３】
また物理エンジンを活用したプログラムにおいて、互いにコンストレイント（拘束条件）で関連付けられた複数のラグドールパーツから構成されるラグドールとゲームキャラクタ等のオブジェクトとを対応付けることがある。
【０００４】
この場合、例えば、位置、向き、質量、慣性モーメント、速度、角速度、などの物理量や速度上限、角速度上限などの物理的な条件を表す物理パラメータの値が各ラグドールパーツに設定される。そしてあるタイミングにおける物理パラメータの値や上述のコンストレイントに基づいて、各ラグドールパーツに対して物理エンジンによる物理シミュレーション処理が実行され、その後のタイミングにおける各ラグドールパーツの配置が決定される。そしてこのようにして決定される複数のラグドールパーツの配置に応じて当該複数のラグドールパーツから構成されるラグドールに対応するオブジェクトの新たな配置が決定される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のようにしてオブジェクトの配置を決定する場合、決定されるオブジェクトの配置が不自然なものとなることがある。例えばゲームキャラクタが手で物体を掴み続けている状況であるにも関わらず、決定されるオブジェクトの配置においてはゲームキャラクタの手が物体から離れてしまうことがある。このような状況になると、仮想空間内に配置されたゲームキャラクタなどといったオブジェクトの表現におけるリアリティが損なわれる。
【０００６】
本発明は上記課題に鑑みてなされたものであって、その目的の１つは、物理シミュレーション処理が実行されたラグドールに対応するオブジェクトをリアリティ高く表現できるプログラム、オブジェクト配置システム及びオブジェクト配置方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明に係るプログラムは、仮想空間内に配置されたオブジェクトの現在の配置と、当該オブジェクトの目標となる配置と、に基づいて、当該オブジェクトに対応付けられる複数のラグドールパーツについての物理パラメータの値を設定する物理パラメータ設定手順、前記複数のラグドールパーツに対して前記物理パラメータに応じた物理シミュレーション処理を実行する物理シミュレーション処理実行手順、前記物理シミュレーション処理の実行後の前記複数のラグドールパーツの配置に基づいて、前記オブジェクトに対応付けられる複数のスケルトンジョイントの基準配置を決定する基準配置決定手順、前記複数のスケルトンジョイントのうちの１つであるターゲットジョイントの前記基準配置と当該ターゲットジョイントの目標となる配置とに基づいて、前記複数のスケルトンジョイントの前記基準配置を最終配置に修正する配置修正手順、前記複数のスケルトンジョイントの前記最終配置に基づいて、前記オブジェクトの前記仮想空間内における配置を決定するオブジェクト配置決定手順、をコンピュータに実行させる。
【０００８】
本発明の一態様では、前記配置修正手順では、前記ターゲットジョイントの前記基準配置が当該ターゲットジョイントの目標となる配置と一致するよう、前記複数のスケルトンジョイントの前記基準配置を前記最終配置に修正する。
【０００９】
あるいは、前記配置修正手順では、前記ターゲットジョイントの前記最終配置が、当該ターゲットジョイントの前記基準配置と当該ターゲットジョイントの目標となる配置とを補間した配置となるよう、前記複数のスケルトンジョイントの前記基準配置を前記最終配置に修正する。
【００１０】
この態様では、前記配置修正手順では、前記ターゲットジョイントの前記最終配置が、補間の開始タイミングから現在までの時間と、現在から補間の終了タイミングまでの時間と、に基づいて算出される重みで、当該ターゲットジョイントの前記基準配置と当該ターゲットジョイントの目標となる配置とを補間した配置となるよう、前記複数のスケルトンジョイントの前記基準配置を前記最終配置に修正してもよい。
【００１１】
また、本発明の一態様では、前記配置修正手順では、前記ターゲットジョイントの前記基準配置と当該ターゲットジョイントの目標となる配置とに基づいて、前記複数のスケルトンジョイントの第１の配置を決定し、前記複数のスケルトンジョイントのうちの前記ターゲットジョイントとは異なるスケルトンジョイントの前記基準配置と当該スケルトンジョイントの目標となる配置とに基づいて、前記複数のスケルトンジョイントの第２の配置を決定し、第１の配置と前記第２の配置とを補間した配置が前記複数のスケルトンジョイントの前記最終配置となるよう、前記複数のスケルトンジョイントの前記基準配置を前記最終配置に修正する。
【００１２】
この態様では、前記配置修正手順では、補間の開始タイミングから現在までの時間と、現在から補間の終了タイミングまでの時間と、に基づいて算出される重みで、前記第１の配置と前記第２の配置とを補間した配置が前記複数のスケルトンジョイントの前記最終配置となるよう、前記複数のスケルトンジョイントの前記基準配置を前記最終配置に修正してもよい。
【００１３】
また、本発明に係るオブジェクト配置システムは、仮想空間内に配置されたオブジェクトの現在の配置と、当該オブジェクトの目標となる配置と、に基づいて、当該オブジェクトに対応付けられる複数のラグドールパーツについての物理パラメータの値を設定する物理パラメータ設定部と、前記複数のラグドールパーツに対して前記物理パラメータに応じた物理シミュレーション処理を実行する物理シミュレーション処理実行部と、前記物理シミュレーション処理の実行後の前記複数のラグドールパーツの配置に基づいて、前記オブジェクトに対応付けられる複数のスケルトンジョイントの基準配置を決定する基準配置決定部と、前記複数のスケルトンジョイントのうちの１つであるターゲットジョイントの前記基準配置と当該ターゲットジョイントの目標となる配置とに基づいて、前記複数のスケルトンジョイントの前記基準配置を最終配置に修正する配置修正部と、前記複数のスケルトンジョイントの前記最終配置に基づいて、前記オブジェクトの前記仮想空間内における配置を決定するオブジェクト配置決定部と、を含む。
【００１４】
また、本発明に係るオブジェクト配置方法は、仮想空間内に配置されたオブジェクトの現在の配置と、当該オブジェクトの目標となる配置と、に基づいて、当該オブジェクトに対応付けられる複数のラグドールパーツについての物理パラメータの値を設定するステップと、前記複数のラグドールパーツに対して前記物理パラメータに応じた物理シミュレーション処理を実行するステップと、前記物理シミュレーション処理の実行後の前記複数のラグドールパーツの配置に基づいて、前記オブジェクトに対応付けられる複数のスケルトンジョイントの基準配置を決定するステップと、前記複数のスケルトンジョイントのうちの１つであるターゲットジョイントの前記基準配置と当該ターゲットジョイントの目標となる配置とに基づいて、前記複数のスケルトンジョイントの前記基準配置を最終配置に修正するステップと、前記複数のスケルトンジョイントの前記最終配置に基づいて、前記オブジェクトの前記仮想空間内における配置を決定するステップと、を含む。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態に係るエンタテインメント装置の構成図である。
【図２】仮想空間の一例を示す図である。
【図３】スケルトンの一例を示す図である。
【図４】ラグドールの一例を示す図である。
【図５Ａ】第１表現例を説明する説明図である。
【図５Ｂ】第１表現例を説明する説明図である。
【図５Ｃ】第１表現例を説明する説明図である。
【図５Ｄ】第１表現例を説明する説明図である。
【図５Ｅ】第１表現例を説明する説明図である。
【図６Ａ】第２表現例を説明する説明図である。
【図６Ｂ】第２表現例を説明する説明図である。
【図６Ｃ】第２表現例を説明する説明図である。
【図６Ｄ】第２表現例を説明する説明図である。
【図６Ｅ】第２表現例を説明する説明図である。
【図６Ｆ】第２表現例を説明する説明図である。
【図７Ａ】第３表現例を説明する説明図である。
【図７Ｂ】第３表現例を説明する説明図である。
【図８】本発明の一実施形態に係るエンタテインメント装置で実装される機能の一例を示す機能ブロック図である。
【図９】本発明の一実施形態に係るエンタテインメント装置で行われる処理の流れの一例を示すフロー図である。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態について図面に基づき詳細に説明する。
【００１７】
図１は、本発明の一実施形態に係るエンタテインメント装置１０の構成図である。本実施形態に係るエンタテインメント装置１０は、例えば、ゲームコンソール、携帯型ゲーム端末、パーソナルコンピュータ等である。図１に示すように、本実施形態に係るエンタテインメント装置１０は、プロセッサ１２、記憶部１４、操作部１６、表示部１８、を含んでいる。
【００１８】
プロセッサ１２は、エンタテインメント装置１０にインストールされるプログラムに従って動作するＣＰＵ等のプログラム制御デバイスである。記憶部１４は、ＲＯＭやＲＡＭ等の記憶素子やハードディスクドライブなどである。操作部１６は、キーボードやマウス、あるいはゲームコンソールのコントローラ等であって、ユーザの操作入力を受け付けて、その内容を示す信号をプロセッサ１２に出力する。表示部１８は、液晶ディスプレイ等の表示デバイスであって、プロセッサ１２の指示に従って各種の画像を表示する。
【００１９】
なお、エンタテインメント装置１０は、ネットワークボードなどの通信インタフェース、ＤＶＤ−ＲＯＭやＢｌｕ−ｒａｙ（登録商標）ディスクなどの光ディスクを読み取る光ディスクドライブ、ＵＳＢ（Universal Serial Bus）ポートなどを含んでいてもよい。
【００２０】
本実施形態に係るエンタテインメント装置１０は、本実施形態に係るプログラムを実行することにより、メモリ上に、図２に例示する仮想空間２０を構築するようになっている。同図に示すように、本実施形態に係る仮想空間２０は、仮想３次元空間であり、プレイヤオブジェクト２２、床オブジェクト２４、壁オブジェクト２６、などの仮想オブジェクトが視点２８とともに配置されている。そして本実施形態では、視点２８から視線方向をみた様子を表す画像が表示部１８に表示される。また本実施形態では、プレイヤオブジェクト２２等の仮想オブジェクトの配置の更新及び視点２８から視線方向をみた様子を表す画像の表示が所定のフレームレートで実行される。
【００２１】
本実施形態に係る仮想オブジェクトは、それぞれテクスチャがマッピングされている複数のポリゴンにより構成されている。また本実施形態では、エンタテインメント装置１０のユーザは、操作部１６を操作することによって、仮想空間２０内においてプレイヤオブジェクト２２を移動させることができるようになっている。
【００２２】
また、本実施形態に係るエンタテインメント装置１０で実行されるプログラムには、古典力学の法則等の物理法則をシミュレートする物理シミュレーション処理を実行する物理エンジンの機能が実装されている。
【００２３】
本実施形態に係るプレイヤオブジェクト２２のレンダリングには、スケルトンアニメーションの技術が用いられる。図３は、プレイヤオブジェクト２２に対応付けられる仮想的なスケルトン３０の一例を示す図である。図３には、プレイヤオブジェクト２２が手前側正面を向いて立っている状況におけるスケルトン３０が示されている。本実施形態に係るスケルトン３０は不可視の仮想オブジェクトである。図３に示すように、スケルトン３０には、例えば、親子関係が設定された複数のスケルトンジョイント３２（３２ａ〜３２ｓ）が含まれる。これら複数のスケルトンジョイント３２のうち、プレイヤオブジェクト２２の胴体に対応付けられるルートスケルトンジョイント３２ａが最上位の親として設定される。図３の例では、スケルトンジョイント３２は丸印で、スケルトンジョイント３２間の親子関係は線で表現されている。そしてそれぞれのスケルトンジョイント３２には、位置及び向きが設定される。
【００２４】
本実施形態では、ルートスケルトンジョイント３２ａの配置を基準とした各スケルトンジョイント３２の配置によって、スケルトン３０のポーズが一意に決定されるようになっている。例えばルートスケルトンジョイント３２ａの位置及び向きを基準とした、各スケルトンジョイント３２の位置及び向きの組合せによって、スケルトン３０のポーズが一意に決定される。そして本実施形態では、ルートスケルトンジョイント３２ａの仮想空間２０内における位置及び向きに従って、決定されるポーズのスケルトン３０が仮想空間２０内に配置される。そして本実施形態ではこのようにして配置されるスケルトン３０に応じたプレイヤオブジェクト２２のポリゴンモデルが生成されて仮想空間２０内に配置される。以上のように本実施形態では、プレイヤオブジェクト２２のポーズは、スケルトン３０のポーズによって一意に決定される。またプレイヤオブジェクト２２の位置及び向きは、ルートスケルトンジョイント３２ａの位置及び向きに基づいて一意に決定される。
【００２５】
図４は、図３に例示するスケルトン３０に対応付けられるラグドール３４の一例を示す図である。本実施形態に係るラグドール３４は不可視の仮想オブジェクトである。本実施形態では、図４に例示するラグドール３４に対して物理エンジンによる物理シミュレーション処理が実行される。なお図４には、参考のため、ラグドール３４に対応付けられるスケルトン３０が二点鎖線で示されている。ラグドール３４には、複数のラグドールパーツ３６（３６ａ〜３６ｍ）と、ラグドールパーツ３６間の物理的な制約を示すコンストレイント３８（３８ａ〜３８ｌ）と、が含まれる。個々のラグドールパーツ３６は、例えば、柱形状、カプセル形状、球形状、あるいは、これらを組み合わせた形状のいずれかをしている。図４に示すように、スケルトンジョイント３２とラグドールパーツ３６とは１対１で対応付けられている必要はない。また図４の例では、親子関係にあるスケルトンジョイント３２の組合せに対応付けられるラグドールパーツ３６の組合せの間にはコンストレイント３８が設定されている。
【００２６】
ラグドールパーツ３６には、当該ラグドールパーツ３６の物理量（例えば、位置、向き、質量、慣性モーメント、速度、角速度）や物理的な条件（例えば速度上限や角速度上限）を示す物理パラメータの値が設定されている。また複数のラグドールパーツ３６を関連付けるコンストレイント３８には、当該複数のラグドールパーツ３６の間の距離の上限や下限、角度の上限や下限などといった拘束条件を示すパラメータの値が設定されている。本実施形態では例えば、物理エンジンに含まれるコンストレイントソルバーによって、コンストレイント３８のパラメータの値が示す拘束条件をなるべく満足するような各ラグドールパーツ３６の配置が決定されることとなる。ラグドールパーツ３６に設定されている物理パラメータの値やコンストレイント３８に設定されているパラメータの値には、状況に応じて可変なものもあれば、所与の固定値が設定された不変なものもある。
【００２７】
また本実施形態では、プレイヤオブジェクト２２が、キーフレームモード又はダイナミックモードのいずれかの動作モードで動作する。プレイヤオブジェクト２２の動作モードは、エンタテインメント装置１０で実行されるプログラムによって適宜変更可能になっている。
【００２８】
本実施形態では例えば、プレイヤによる操作入力や、直前のフレームにおけるスケルトン３０の配置などに基づいて、当該フレームにおけるスケルトン３０の目標となる配置が決定される。以下このようにして決定される配置を目標配置と呼ぶこととする。なお目標配置は、仮想空間２０や他の仮想オブジェクトの状況を表すパラメータの値の影響を受けてもよい。
【００２９】
そして例えば、プレイヤオブジェクト２２の動作モードがダイナミックモードである場合は、直前のフレームにおけるスケルトン３０の配置とスケルトン３０の目標配置とに基づいて、各ラグドールパーツ３６の物理パラメータの値が設定される。そしてこのようにして物理パラメータの値が設定された各ラグドールパーツ３６に対して物理シミュレーション処理が実行される。そして物理シミュレーション処理の実行後のラグドール３４の配置に基づいて、スケルトン３０の配置が決定される。そしてこのようにして決定されるスケルトン３０の配置に基づいて一意に決定される配置が、プレイヤオブジェクト２２の配置として決定される。
【００３０】
一方、例えばプレイヤオブジェクト２２の動作モードがキーフレームモードである場合は、スケルトン３０の目標配置そのものに基づいて一意に決定される配置が、プレイヤオブジェクト２２の配置として決定される。そのためこの場合は、プレイヤオブジェクト２２の配置はラグドール３４に対する物理シミュレーション処理の実行結果の影響は受けない。ただしこの場合でもラグドール３４に対する物理シミュレーション処理は実行されて、その実行結果は仮想空間２０内の他の仮想オブジェクトの配置に影響を与える。
【００３１】
本実施形態に係るエンタテインメント装置１０では、以下の第１表現例〜第３表現例に示すようなアニメーション表現を採用することで、プレイヤオブジェクト２２がリアリティ高く表現される。また本実施形態によれば、プレイヤオブジェクト２２のアニメーションをリアリティ高く表現するアニメータのタスクの一部が自動化される。
【００３２】
以下、本実施形態におけるアニメーション表現の第１表現例を、図５Ａ〜図５Ｅを参照しながら説明する。
【００３３】
第１表現例では、プレイヤオブジェクト２２は、図２に示すように、壁オブジェクト２６を手で掴んでおり、壁オブジェクト２６にぶらさがっている状態であることとする。図５Ａには、図２に示す状態のプレイヤオブジェクト２２に対応付けられるスケルトン３０及びラグドール３４の一例が示されている。ここでは例えば左手の先に対応付けられるスケルトンジョイント３２ｋが、壁オブジェクト２６上の点Ｐ１に配置されており、右手の先に対応付けられるスケルトンジョイント３２ｈが、壁オブジェクト２６上の点Ｐ２に配置されていることとする。なお図５Ａにおいては、ラグドールパーツ３６間に設定されているコンストレイント３８の図示は省略されている。
【００３４】
また第１表現例では、ラグドールパーツ３６ｇと点Ｐ１の位置との接続を示すコンストレイント３８ｍが生成されていることとする。ここで例えばラグドールパーツ３６ｇと点Ｐ１の位置に配置されるラグドールパーツ３６との接続を示すコンストレイント３８ｍが生成されてもよい。このコンストレイント３８ｍによって、物理エンジンのコンストレイントソルバーは、ラグドールパーツ３６ｇの位置と点Ｐ１の位置との間の距離ができるだけ短くなるよう各ラグドールパーツ３６の配置を決定することとなる。またラグドールパーツ３６ｅと点Ｐ２の位置との接続を示すコンストレイント３８ｎが生成されていることとする。ここで例えばラグドールパーツ３６ｅと点Ｐ２の位置に配置されるラグドールパーツ３６との接続を示すコンストレイント３８ｎが生成されてもよい。このコンストレイント３８ｎによって、物理エンジンのコンストレイントソルバーは、ラグドールパーツ３６ｅの位置と点Ｐ２の位置との間の距離ができるだけ短くなるよう各ラグドールパーツ３６の配置を決定することとなる。
【００３５】
ここで図５Ａに示す状況で壁オブジェクト２６が右側に向かって高速で移動した際における、ラグドールパーツ３６に対する物理シミュレーション結果を図５Ｂに例示する。なおここでは例えば図５Ａに示す状況の次のフレームにおいて壁オブジェクト２６が図５Ｂに例示する位置まで移動することとする。なお図５Ｂにおいても、ラグドールパーツ３６間に設定されているコンストレイント３８の図示は省略されている。
【００３６】
本実施形態では各ラグドールパーツ３６に対して独立して物理シミュレーション処理が実行される。そのため図５Ｂに示すように、物理シミュレーション処理の結果、ラグドール３４が全体として縦に伸びてしまうことがある。
【００３７】
図５Ｃに、図５Ｂに示すラグドール３４に基づいて一意に決定されるスケルトン３０の配置の一例を示す。図５Ｂに示すラグドール３４が全体として縦に伸びていることによって、図５Ｃに示すスケルトン３０も全体として縦に伸びる。そのため図５Ｃに示すスケルトン３０に基づいて生成されるプレイヤオブジェクト２２をレンダリングすると、表示されるプレイヤオブジェクト２２が全体として縦に伸びてしまう。またプレイヤオブジェクト２２の手の位置が掴んでいた位置からずれてしまう。
【００３８】
図５Ｄに、ルートスケルトンジョイント３２ａの位置及び向きを維持したまま、図５Ｃに示すスケルトンジョイント３２の配置を補正した状態の一例を示す。以下、第１表現例においては、図５Ｄに示すスケルトンジョイント３２の配置を基準配置と呼ぶこととする。ここではあるスケルトンジョイント３２から当該スケルトンジョイント３２の子であるスケルトンジョイント３２への向きは、補正前後で維持されている。一方、親子関係にある２つのスケルトンジョイント３２間の長さは、物理シミュレーション処理の実行前である図５Ａに示す状態における長さとなっている。図５Ｄに示す、基準配置のスケルトンジョイント３２に基づいて生成されるプレイヤオブジェクト２２をレンダリングした場合は、表示されるプレイヤオブジェクト２２が全体として縦に伸びてしまうことは防げる。しかしこの場合も、表示されるプレイヤオブジェクト２２の手の位置が掴んでいた位置からずれてしまうこととなる。
【００３９】
以上の点を踏まえ、第１表現例では、図５Ｅに例示するようにスケルトン３０が配置されるようにした。図５Ｅでは、スケルトンジョイント３２ｋの位置が、壁オブジェクト２６上の点Ｐ１に配置されるよう、図５Ｄに示す、スケルトンジョイント３２の基準配置が補正されている。以下、第１表現例においては、図５Ｅに示すスケルトンジョイント３２の配置を最終配置と呼ぶこととする。図５Ｅの例では、複数のスケルトンジョイント３２の相対的な配置は図５Ｄに示す状態で維持されたまま、これら複数のスケルトンジョイント３２が全体として平行移動されている。図５Ｅに示す最終配置のスケルトンジョイント３２に基づいて生成されるプレイヤオブジェクト２２をレンダリングした場合は、表示されるプレイヤオブジェクト２２の左手は壁オブジェクト２６上の点Ｐ１に配置される。そのため表示されるプレイヤオブジェクト２２はリアリティ高く表現されることとなる。
【００４０】
なお第１表現例におけるスケルトンジョイント３２の最終配置において、スケルトンジョイント３２ｈの位置が、壁オブジェクト２６上の点Ｐ２に配置されるようにしてもよい。この場合は、表示されるプレイヤオブジェクト２２の右手が壁オブジェクト２６上の点Ｐ２に配置されることとなる。
【００４１】
以上のようにして第１表現例では、プレイヤオブジェクト２２が壁オブジェクト２６を掴んだままの状態で、その体が揺さぶられる様子がリアリティ高く表現されることとなる。
【００４２】
次に、本実施形態におけるアニメーション表現の第２表現例を、図６Ａ〜図６Ｆを参照しながら説明する。なお図６Ａ〜図６Ｆでは、一部のスケルトンジョイント３２、一部のラグドールパーツ３６、及び、ラグドールパーツ３６間に設定されているコンストレイント３８の図示は省略されている。
【００４３】
第２表現例では、壁オブジェクト２６を背にして床オブジェクト２４に立っているプレイヤオブジェクト２２が体をひねりながらジャンプして壁オブジェクト２６上の点Ｐ３を右手で掴む様子が表現される。
【００４４】
第２表現例では、プレイヤオブジェクト２２は、まずはキーフレームモードで動作した状態で真上にジャンプした様子が表示され、その後動作モードがダイナミックモードに移行する。
【００４５】
図６Ａには、プレイヤオブジェクト２２の動作モードがダイナミックモードに移行したタイミングにおける、スケルトン３０及びラグドール３４の一例が示されている。このスケルトン３０の配置は、ラグドール３４の配置に基づいて一意に決定される配置である。第２表現例では、図６Ａに示すスケルトン３０の配置が基準配置に相当する。
【００４６】
ここで例えば、ラグドールパーツ３６ｅと点Ｐ３の位置との接続を示すコンストレイント３８ｏが生成されることとする。ここで例えばラグドールパーツ３６ｅと点Ｐ３の位置に配置されるラグドールパーツ３６との接続を示すコンストレイント３８ｏが生成されてもよい。このコンストレイント３８ｏによって、物理エンジンのコンストレイントソルバーは、ラグドールパーツ３６ｅの位置と点Ｐ３の位置との間の距離ができるだけ短くなるよう各ラグドールパーツ３６の配置を決定することとする。
【００４７】
この場合、図６Ｂに例示するように、ラグドールパーツ３６ｅが点Ｐ３の位置に近づいていく。しかしこのようにすると、プレイヤオブジェクト２２のアニメーション表現が不自然なものとなる。具体的にはこの場合には、プレイヤオブジェクト２２が自らの意思で体をひねりながらジャンプした様子がリアリティ高く表現されない。
【００４８】
ここで例えば、図６Ｃに示すように、スケルトンジョイント３２ｈが、壁オブジェクト２６上の点Ｐ３に配置されるよう、図６Ａに示すスケルトンジョイント３２の配置を補正したとする。ここでは複数のスケルトンジョイント３２の相対的な配置は図６Ａに示す状態が維持されたまま、これら複数のスケルトンジョイント３２が全体として平行移動されている。しかしこのようにすると、プレイヤオブジェクト２２が壁オブジェクト２６にめりこんでしまい、やはりプレイヤオブジェクト２２のアニメーション表現は不自然なものとなる。
【００４９】
以上の点を踏まえ、第２表現例では、以下のようにして所与の補間時間Ｔにわたって徐々にスケルトン３０全体を回転させることで、プレイヤオブジェクト２２が自らの意思で体をひねりながらジャンプした様子がリアリティ高く表現されるようにした。
【００５０】
図６Ｄには、図６Ａに示すスケルトン３０が二点鎖線で示されており、当該スケルトン３０全体をルートスケルトンジョイント３２ａの位置を変えずに回転させたスケルトン３０が実線で示されている。図６Ｄに示すように第２表現例では、まず、ルートスケルトンジョイント３２ａからスケルトンジョイント３２ｈに向かうベクトルＶ１と、ルートスケルトンジョイント３２ａから点Ｐ３に向かうベクトルＶ２とが特定される。そして、複数のスケルトンジョイント３２の相対的な配置及びルートスケルトンジョイント３２ａの位置は図６Ａに示す状態で維持されたまま、これら複数のスケルトンジョイント３２を全体として回転させた配置が特定される。ここではベクトルＶ１がベクトルＶ２に重なるよう回転させた配置が特定される。
【００５１】
ここで例えば、ルートスケルトンジョイント３２ａの回転軸は、ベクトルＶ１を正規化したベクトルとベクトルＶ２を正規化したベクトルとの外積の方向に相当する。またルートスケルトンジョイント３２ａの回転角度は、ベクトルＶ１を正規化したベクトルとベクトルＶ２を正規化したベクトルとの内積のアークコサインの値に相当する。ここで上述のようにして算出される回転軸及び回転角度に対応付けられるクォータニオンを基準配置の複数のスケルトンジョイント３２に適用することで、複数のスケルトンジョイント３２を全体として回転させた配置が特定されるようにしてもよい。
【００５２】
そして図６Ｅに示すように、スケルトンジョイント３２ｈの位置が点Ｐ３の位置と重なるよう複数のスケルトンジョイント３２を全体として平行移動させた配置が特定される。図６Ｅでは、平行移動前のスケルトン３０が二点鎖線で示されており、平行移動後のスケルトン３０が実線で示されている。ここでは複数のスケルトンジョイント３２を全体としてベクトルＶ２に沿って平行移動させた配置が特定されることとなる。以下、図６Ｅにおいて実線で示されているスケルトン３０の配置を調整配置と呼ぶこととする。
【００５３】
そして第２表現例では、図６Ｆに示すように、スケルトン３０の基準配置とスケルトン３０の調整配置とを公知の補間技術により補間した配置が、スケルトン３０の最終配置として決定される。図６Ｆでは、スケルトン３０の基準配置が破線で示されておりスケルトン３０の調整配置が二点鎖線で示されている。そして補間後のスケルトン３０の最終配置が実線で示されている。
【００５４】
ここで、第２表現例における補間の開始タイミングから現在までの時間をｔとする。この場合、補間処理における、基準配置のスケルトン３０の重みは（Ｔ−ｔ）／Ｔとなり、調整配置のスケルトン３０の重みはｔ／Ｔとなる。このようにすることで徐々に回転するプレイヤオブジェクト２２がリアリティ高く表現されることとなる。なお第２表現例で用いられる補間技術の例として、線形補間や球面線形補間などが挙げられるが、これらの技術以外の、非線形補間等の補間技術が用いられても構わない。
【００５５】
なお第２表現例では、補間処理が行われている間においても毎フレーム、当該フレームのラグドール３４に対して物理シミュレーション処理が実行される。そして当該フレームにおける物理シミュレーション処理の実行後のラグドールパーツ３６の配置に基づいてスケルトンジョイント３２の相対的な配置（スケルトン３０のポーズ）が一意に決定される。そしてこのようにしてポーズが決定されるスケルトン３０が、仮想空間２０内に配置されることとなる。
【００５６】
次に、本実施形態におけるアニメーション表現の第３表現例を、図７Ａ、及び、図７Ｂを参照しながら説明する。
【００５７】
第３表現例では、プレイヤオブジェクト２２の左手が図７Ａに示す壁オブジェクト２６上の点Ｐ４を掴んだ状態から、壁オブジェクト２６上の図７Ａに示す点Ｐ５に配置されている右手を点Ｐ６の位置まで移動させる様子が表現される。ここでプレイヤオブジェクト２２の左手はスケルトンジョイント３２ｋに相当し、プレイヤオブジェクト２２の右手はスケルトンジョイント３２ｈに相当する。また第３表現例では、プレイヤオブジェクト２２の左手が壁オブジェクト２６上の点Ｐ４を掴んだタイミングから右手が点Ｐ６を掴んだタイミングまでの時間が、補間時間Ｔに相当することとなる。
【００５８】
図７Ａには、プレイヤオブジェクト２２に対応付けられるスケルトン３０及びラグドール３４の一例が示されている。なお図７Ａにおいては、ラグドールパーツ３６間に設定されているコンストレイント３８の図示は省略されている。
【００５９】
第３表現例は、上述の第１表現例又は第２表現例と同様の方法により決定される基準配置のスケルトンジョイント３２を補正することで、スケルトンジョイント３２ｋが壁オブジェクト２６上の点Ｐ４に配置されたスケルトンジョイント３２の配置が特定される。この配置を第１の調整配置と呼ぶこととする。また上述の第１表現例又は第２表現例と同様の方法により決定される基準配置のスケルトンジョイント３２を補正することで、スケルトンジョイント３２ｈが壁オブジェクト２６上の点Ｐ６に配置されたスケルトンジョイント３２の配置も特定される。この配置を第２の調整配置と呼ぶこととする。図７Ｂでは、第１の調整配置のスケルトン３０が破線で示されており、第２の調整配置のスケルトンが二点鎖線で示されている。
【００６０】
そして、第３表現例では、第１の調整配置のスケルトン３０と第２の調整配置のスケルトン３０とを公知の補間技術により補間した配置が、スケルトン３０の最終配置として決定される。図７Ｂでは、補間されたスケルトン３０の最終配置が実線で示されている。
【００６１】
ここで、第３表現例における補間の開始タイミングから現在までの時間をｔとする。この場合、補間処理における、第１の調整配置の重みは（Ｔ−ｔ）／Ｔとなり、第２の調整配置の重みはｔ／Ｔとなる。このようにすることで壁オブジェクト２６にぶら下がった状態で右手を移動させるプレイヤオブジェクト２２がリアリティ高く表現されることとなる。なお第３表現例で用いられる補間技術の例として、線形補間や球面線形補間などが挙げられるが、これらの技術以外の、非線形補間等の補間技術が用いられても構わない。
【００６２】
第３表現例での表現は、プレイヤオブジェクト２２の右手が図７Ａに示す壁オブジェクト２６を掴んだ状態から、左手を移動させる様子の表現にも用いることができる。そして右手を移動させる表現と左手を移動させる表現を交互に繰り返し行うことで、プレイヤオブジェクト２２が壁オブジェクト２６にぶら下がっている状態から左右の手を交互に移動させる様子がリアリティ高く表現されることとなる。
【００６３】
以下、本実施形態に係るエンタテインメント装置１０の機能、及び、エンタテインメント装置１０で実行される処理についてさらに説明する。
【００６４】
図８は、本実施形態に係るエンタテインメント装置１０の機能ブロック図である。図８に示すように、エンタテインメント装置１０は、機能的に、アニメーションデータ記憶部４０、スケルトンデータ記憶部４２、ラグドールデータ記憶部４４、目標配置決定部４６、物理パラメータ設定部４８、物理シミュレーション処理実行部５０、フィードバック部５２、オブジェクト配置決定部５４、画像生成出力部５６を含んでいる。アニメーションデータ記憶部４０、スケルトンデータ記憶部４２、ラグドールデータ記憶部４４は、記憶部１４を主として実装される。目標配置決定部４６、物理パラメータ設定部４８、物理シミュレーション処理実行部５０、フィードバック部５２、オブジェクト配置決定部５４は、プロセッサ１２を主として実装される。画像生成出力部５６は、プロセッサ１２及び表示部１８を主として実装される。
【００６５】
以上の機能は、コンピュータであるエンタテインメント装置１０にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ１２で実行することにより実装されてもよい。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介してエンタテインメント装置１０に供給されてもよい。
【００６６】
アニメーションデータ記憶部４０には、本実施形態では例えば、仮想オブジェクトが配置されている仮想空間２０を表すデータが記憶されている。またアニメーションデータ記憶部４０には、仮想空間２０に配置されている仮想オブジェクトに関するポリゴンデータやテクスチャデータなども記憶されている。またアニメーションデータ記憶部４０には、例えば、走る、歩く、ジャンプする、などといったプレイヤオブジェクト２２のアクションを表現するためのキーフレームアニメーションのデータも記憶されている。またアニメーションデータ記憶部４０には、スケルトンジョイント３２の配置とプレイヤオブジェクト２２のポーズとを対応付ける規則を示すデータも記憶されている。
【００６７】
スケルトンデータ記憶部４２には、本実施形態では例えば、上述のスケルトン３０を表すスケルトンデータが記憶されている。スケルトンデータには、例えばルートスケルトンジョイント３２ａの位置及び向きを示すデータや、ルートスケルトンジョイント３２ａを基準としたスケルトンジョイント３２の相対的な位置及び相対的な向きを示すデータが含まれる。また、スケルトンデータには、各スケルトンジョイント３２について、当該スケルトンジョイント３２の親のスケルトンジョイント３２の識別情報が含まれる。またスケルトンデータ記憶部４２には、ラグドールパーツ３６の配置とスケルトンジョイント３２の配置とを対応付ける規則を示すデータも記憶されている。
【００６８】
ラグドールデータ記憶部４４には、本実施形態では例えば、上述のラグドール３４を表すラグドールデータが記憶されている。ラグドールデータには、例えば、各ラグドールパーツ３６に設定されている物理パラメータの値が設定されたデータや、コンストレイント３８のパラメータの値が設定されたデータなどが含まれる。またラグドールデータ記憶部４４には、スケルトン３０の現在の配置とスケルトン３０の目標配置とに基づいて、ラグドールパーツ３６に設定される物理パラメータの値を決定する規則を示すデータも記憶されている。
【００６９】
目標配置決定部４６は、本実施形態では例えば、プレイヤによる操作入力や、仮想空間２０内に配置されたオブジェクトの現在の配置などに基づいて、当該オブジェクトの目標となる配置を決定する。ここで例えばプレイヤによる操作入力や、直前のフレームにおけるスケルトン３０の配置などに基づいて、当該フレームにおけるスケルトン３０の目標配置が決定されてもよい。また上述のように目標配置は、仮想空間２０や他の仮想オブジェクトの状況を表すパラメータの値の影響を受けてもよい。
【００７０】
物理パラメータ設定部４８は、本実施形態では例えば、仮想空間２０内に配置されたオブジェクトの現在の配置と、当該オブジェクトの目標となる配置と、に基づいて、物理パラメータの値を設定する。ここで例えば、複数のスケルトンジョイント３２の現在の配置と、プレイヤオブジェクト２２の目標配置と、に基づいて、プレイヤオブジェクト２２に対応付けられる複数のラグドールパーツ３６についての物理パラメータの値が設定されてもよい。また例えば、複数のラグドールパーツ３６の現在の配置と、プレイヤオブジェクト２２の目標配置と、に基づいて、プレイヤオブジェクト２２に対応付けられる複数のラグドールパーツ３６についての物理パラメータの値が設定されてもよい。また例えば、スケルトン３０の現在の配置、スケルトン３０の目標配置、及び、ラグドールデータ記憶部４４に記憶されている規則を示すデータに基づいて、複数のラグドールパーツ３６についての物理パラメータの値が設定されてもよい。また例えば、ラグロールデータに設定されている、各ラグドールパーツ３６についての物理パラメータの値が変更されてもよい。
【００７１】
物理シミュレーション処理実行部５０は、本実施形態では例えば、複数のラグドールパーツ３６に対して、設定される物理パラメータに応じた物理シミュレーション処理を実行する。ここでは例えば、各ラグドールパーツに設定されている物理パラメータの値や、コンストレイント３８に設定されているパラメータの値に基づいて、各ラグドールパーツ３６に対する物理シミュレーション処理が実行される。そして、ラグドールデータに設定されている、各ラグドールパーツ３６についての位置や向き等の物理パラメータの値が変更される。
【００７２】
フィードバック部５２は、本実施形態では例えば、複数のラグドールパーツ３６に対する物理シミュレーション処理の実行結果をスケルトンジョイント３２の配置にフィードバックする。例えば、フィードバック部５２は、物理シミュレーション処理の実行後の複数のラグドールパーツ３６の配置に基づいて、プレイヤオブジェクト２２に対応付けられる複数のスケルトンジョイント３２の基準配置を決定する。ここでスケルトンデータに含まれる、スケルトンジョイント３２の位置や向きを示すデータが決定されてもよい。
【００７３】
そして本実施形態では、フィードバック部５２は、スケルトンジョイント３２の最終配置の決定基準となるターゲットジョイントを決定する。例えば、上述の第１表現例ではスケルトンジョイント３２ｋが、第２表現例ではスケルトンジョイント３２ｈが、ターゲットジョイントに相当する。
【００７４】
またターゲットジョイントが複数決定されてもよい。第３表現例では、スケルトンジョイント３２ｋが第１の調整配置に対応する第１のターゲットジョイントに相当し、スケルトンジョイント３２ｈが第２の調整配置に対応する第２のターゲットジョイントに相当する。
【００７５】
そして本実施形態では、フィードバック部５２は、複数のスケルトンジョイント３２の基準配置を最終配置に修正する。ここでフィードバック部５２は、ターゲットジョイントの基準配置とターゲットジョイントの目標となる配置とに基づいて、複数のスケルトンジョイント３２の基準配置を最終配置に修正してもよい。この場合、スケルトン３０全体について、回転移動及び平行移動の両方が行われても構わないし、いずれか一方だけが行われても構わない。またこの場合、スケルトンデータに含まれる、スケルトンジョイント３２の位置や向きを示すデータが変更されてもよい。また、最終配置における複数のスケルトンジョイント３２の相対的な配置は、基準配置における複数のスケルトンジョイント３２の相対的な配置と同じであってもよい。
【００７６】
なお第１表現例のように、ターゲットジョイントの基準配置がターゲットジョイントの目標となる配置と一致するよう、複数のスケルトンジョイント３２の基準配置が最終配置に修正されてもよい。
【００７７】
また第２表現例のように、ターゲットジョイントの最終配置が、ターゲットジョイントの基準配置とターゲットジョイントの目標となる配置とを補間した配置となるよう、複数のスケルトンジョイント３２の基準配置が最終配置に修正されてもよい。ここでターゲットジョイントの目標となる配置は、調整配置におけるターゲットジョイントの配置に相当することとなる。またこの場合、例えば、補間の開始タイミングから現在までの時間ｔと、現在から補間の終了タイミングまでの時間（Ｔ−ｔ）と、に基づいて算出される重みで、ターゲットジョイントの基準配置と調整配置とが補間されてもよい。ここで例えば基準配置の重みが（Ｔ−ｔ）／Ｔであり調整配置の重みがｔ／Ｔであってもよい。
【００７８】
また第３表現例のように、スケルトン３０の調整配置が複数決定されてもよい。例えば第１のターゲットジョイントの目標となる配置に基づいて、第１の調整配置が決定され、第２のターゲットジョイントの目標となる配置に基づいて、第２の調整配置が決定されてもよい。そしてこれら複数の調整配置を補間した配置が、複数のスケルトンジョイント３２の最終配置として決定されてもよい。例えば第１の調整配置と第２の調整配置とを補間した配置が、複数のスケルトンジョイント３２の最終配置として決定されてもよい。ここで例えば、補間の開始タイミングから現在までの時間ｔと、現在から補間の終了タイミングまでの時間（Ｔ−ｔ）と、に基づいて算出される重みで、第１の調整配置と第２の調整配置とが補間されてもよい。ここで例えば第１の調整配置の重みが（Ｔ−ｔ）／Ｔであり第２の調整配置の重みがｔ／Ｔであってもよい。そして複数のスケルトンジョイント３２の基準配置がこのようにして決定される最終配置に修正されてもよい。
【００７９】
オブジェクト配置決定部５４は、本実施形態では例えば、複数のスケルトンジョイントの３２の最終配置に基づいて、プレイヤオブジェクト２２の仮想空間２０内における配置を決定する。ここで例えば、アニメーションデータ記憶部４０に記憶されているデータに基づいて、プレイヤオブジェクト２２の位置、向き、及び、ポーズが決定されてもよい。そしてオブジェクト配置決定部５４は、このようにして決定された配置に従ってプレイヤオブジェクト２２を仮想空間２０内に配置する。ここで例えばアニメーションデータ記憶部４０に記憶されている、仮想空間２０を表すデータが更新されてもよい。
【００８０】
画像生成出力部５６は、本実施形態では例えば、仮想空間２０内の視点２８から視線方向を見た様子を表す画像を表示させる。
【００８１】
ここで、本実施形態に係るエンタテインメント装置１０で行われる、上述の第２表現例での表現における処理の流れの一例を、図９に例示するフロー図を参照しながら説明する。本処理例では、以下のＳ１０１〜Ｓ１１２に示す処理のループが所定のフレームレートで繰り返し実行される。
【００８２】
まず目標配置決定部４６が、各スケルトンジョイント３２の目標配置を決定する（Ｓ１０１）。なおＳ１０１に示す処理で例えばブレンド処理や逆運動学処理などが併せて実行されてもよい。
【００８３】
そして物理パラメータ設定部４８が、各スケルトンジョイント３２の現在の位置、及び、Ｓ１０１に示す処理で決定された目標配置に基づいて、各ラグドールパーツ３６の物理パラメータの値を設定する（Ｓ１０２）。
【００８４】
そして物理シミュレーション処理実行部５０が、各ラグドールパーツ３６に対して物理シミュレーション処理を実行する（Ｓ１０３）。上述のように本処理例では、プレイヤオブジェクト２２の動作モードがダイナミックモードであってもキーフレームモードであっても物理シミュレーション処理は実行される。
【００８５】
そしてフィードバック部５２は、プレイヤオブジェクト２２の動作モードを確認する（Ｓ１０４）。
【００８６】
ここでダイナミックモードであることが確認されたとする。この場合は、フィードバック部５２は、Ｓ１０３に示す処理での物理シミュレーション処理の実行結果に基づいて、スケルトンジョイント３２の基準配置を決定する（Ｓ１０５）。
【００８７】
そしてフィードバック部５２は、上述のベクトルＶ１及びベクトルＶ２に基づいて、ターゲットジョイントの移動量及び回転量を決定する（Ｓ１０６）。
【００８８】
そしてフィードバック部５２は、スケルトンジョイント３２の調整配置を決定する（Ｓ１０７）。ここでは例えば、ルートスケルトンジョイント３２ａの位置が維持された状態で、Ｓ１０６に示す処理で決定された移動量及び回転量に従って、Ｓ１０５に示す処理で決定された基準配置のスケルトンジョイント３２を移動させた際の配置が調整配置として決定される。
【００８９】
そしてフィードバック部５２は、Ｓ１０５に示す処理で決定された基準配置と、Ｓ１０７に示す処理で決定された調整配置と、を補間することで、スケルトン３０の最終配置を決定する（Ｓ１０８）。
【００９０】
そしてフィードバック部５２は、所定の後処理を実行する（Ｓ１０９）。後処理としては、例えば、ブレンド処理や逆運動学処理などが挙げられる。
【００９１】
そしてオブジェクト配置決定部５４が、Ｓ１０９に示す処理で後処理が実行された最終配置のスケルトン３０に基づいて、プレイヤオブジェクト２２を仮想空間２０内に配置する（Ｓ１１０）。
【００９２】
一方、Ｓ１０４に示す処理でキーフレームモードであることが確認されたとする。この場合は、オブジェクト配置決定部５４が、Ｓ１０１に示す処理で決定されたスケルトン３０の目標配置に基づいて、プレイヤオブジェクト２２を仮想空間２０内に配置する（Ｓ１１１）。なおＳ１１０又はＳ１１１に示す処理では、プレイヤオブジェクト２２以外の仮想オブジェクトも仮想空間２０内に配置されることとなる。
【００９３】
そして、Ｓ１１０又はＳ１１１に示す処理が終了すると、画像生成出力部５６が、仮想空間２０内の視点２８から視線方向を見た様子を表す画像を表示させて（Ｓ１１２）、Ｓ１０１に示す処理に戻る。
【００９４】
なお上述の処理例のＳ１０６に示す処理において移動量のみが決定されてもよい。またＳ１０７に示す処理は実行されず、Ｓ１０８に示す処理においてターゲットジョイントが目標位置に配置されたスケルトン３０の配置が最終配置として決定されてもよい。上述の第１表現例での表現における処理の流れはこの場合に相当する。
【００９５】
また上述の処理例のＳ１０６に示す処理で移動量と回転量の組み合わせが複数決定されてもよい。そしてＳ１０７に示す処理でスケルトン３０についての複数の調整配置が決定されてもよい。そしてＳ１０８に示す処理で、Ｓ１０７に示す処理で決定された複数の調整配置を補間することでスケルトン３０の最終配置が決定されてもよい。上述の第３表現例での表現における処理の流れはこの場合に相当する。
【００９６】
なお、本発明は上述の実施形態に限定されるものではない。
【００９７】
例えば本発明の適用範囲は、プレイヤオブジェクト２２などといったゲームキャラクタには限定されない。例えば見た目の整合性を優先したい、高速で動く物体に取り付けられている仮想オブジェクトなどに、本発明を適用してもよい。
【００９８】
また、本実施形態をエンタテインメント装置１０以外の情報処理システム（例えば、シミュレーションシステムや画像処理システムなど）に応用してもよい。
【００９９】
また、上記の具体的な文字列や数値及び図面中の具体的な文字列や数値は例示であり、これらの文字列や数値には限定されない。
【符号の説明】
【０１００】
１０  エンタテインメント装置、１２  プロセッサ、１４  記憶部、１６  操作部、１８  表示部、２０  仮想空間、２２  プレイヤオブジェクト、２４  床オブジェクト、２６  壁オブジェクト、２８  視点、３０  スケルトン、３２  スケルトンジョイント、３２ａ  ルートスケルトンジョイント、３４  ラグドール、３６  ラグドールパーツ、３８  コンストレイント、４０  アニメーションデータ記憶部、４２  スケルトンデータ記憶部、４４  ラグドールデータ記憶部、４６  目標配置決定部、４８  物理パラメータ設定部、５０  物理シミュレーション処理実行部、５２  フィードバック部、５４  オブジェクト配置決定部、５６  画像生成出力部。
【図１】
2018128851.tif 000003
【図２】
2018128851.tif 000004
【図３】
2018128851.tif 000005
【図４】
2018128851.tif 000006
【図５Ａ】
2018128851.tif 000007
【図５Ｂ】
2018128851.tif 000008
【図５Ｃ】
2018128851.tif 000009
【図５Ｄ】
2018128851.tif 000010
【図５Ｅ】
2018128851.tif 000011
【図６Ａ】
2018128851.tif 000012
【図６Ｂ】
2018128851.tif 000013
【図６Ｃ】
2018128851.tif 000014
【図６Ｄ】
2018128851.tif 000015
【図６Ｅ】
2018128851.tif 000016
【図６Ｆ】
2018128851.tif 000017
【図７Ａ】
2018128851.tif 000018
【図７Ｂ】
2018128851.tif 000019
【図８】
2018128851.tif 000020
【図９】
2018128851.tif 000021