(57)【特許請求の範囲】
【請求項１】
仮想空間内に配置されているオブジェクトの動きを制御する情報処理システムとしてコンピュータを機能させるプログラムであって、
仮想空間内に配置されている複数のオブジェクトのそれぞれについての、動きが制御されるオブジェクトであるか否かを示す制御要否情報を記憶する制御要否情報記憶手段から、前記制御要否情報を取得する制御要否情報取得手段、
前記制御要否情報により動きが制御されることが示されているオブジェクトのそれぞれについて、当該オブジェクトの属性である物理量を表す少なくとも１つのパラメータの値に基づいて算出される量だけ当該オブジェクトの位置又は向きを変化させるオブジェクト変化手段、
前記各オブジェクトについて設定されているパラメータの値が所定の条件を満足している場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新する制御要否情報更新手段、
他のオブジェクトと衝突するオブジェクトである衝突オブジェクトの前記他のオブジェクトに対する相対速度を表す値の絶対値が、相対速度を表す値についての所定の閾値以下である場合に、当該衝突オブジェクトの物理量を表すパラメータの値を、パラメータの値を更新しない場合よりも、前記オブジェクト変化手段による当該衝突オブジェクトの位置又は向きの変化量が小さくなるよう更新する値更新手段、
として前記コンピュータを機能させることを特徴とするプログラム。
【請求項２】
前記制御要否情報更新手段は、設定されているパラメータの値が所定の条件を満足しているオブジェクトの数が所定数以上である場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新する、
ことを特徴とする請求項１に記載のプログラム。
【請求項３】
所定のタイミングで、前記各オブジェクトについて、設定されているパラメータの値が所定の条件を満足しているか否かを繰り返し判定する判定手段、として前記コンピュータをさらに機能させ、
前記制御要否情報更新手段は、前記判定手段により所定の回数以上連続して、所定の条件を満足しているオブジェクトの数が所定数以上であると判定された場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新する、
ことを特徴とする請求項２に記載のプログラム。
【請求項４】
前記制御要否情報更新手段は、所定の条件を満足しているオブジェクトの数が所定数以上である状況が、所定期間継続した際に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新する、
ことを特徴とする請求項２に記載のプログラム。
【請求項５】
前記制御要否情報更新手段は、前記各オブジェクトについて設定されている速度又は角速度を表すパラメータの値の絶対値が、所定の閾値以下であるオブジェクトの数が所定数以上である場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新する、
ことを特徴とする請求項２から４のいずれか一項に記載のプログラム。
【請求項６】
前記値更新手段は、前記衝突オブジェクトと前記他のオブジェクトとの間の反発係数を表すパラメータの値を小さくする、
ことを特徴とする請求項１から５のいずれか一項に記載のプログラム。
【請求項７】
所定のイベントの発生に応じて、前記制御要否情報により動きが制御されないことが示されている前記複数のオブジェクトについて、動きが制御されることを示すよう前記制御要否情報を更新する第３の制御要否情報更新手段、として前記コンピュータをさらに機能させる、
ことを特徴とする請求項１から６のいずれか一項に記載のプログラム。
【請求項８】
前記オブジェクトが配置されている仮想空間を、前記仮想空間内に設定された視点から見た様子を表す画像を生成する画像生成手段、をさらに含む、
ことを特徴とする請求項１から７のいずれか一項に記載のプログラム。
【請求項９】
仮想空間内に配置されているオブジェクトの動きを制御する情報処理システムとしてコンピュータを機能させるプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体であって、
仮想空間内に配置されている複数のオブジェクトのそれぞれについての、動きが制御されるオブジェクトであるか否かを示す制御要否情報を記憶する制御要否情報記憶手段から、前記制御要否情報を取得する制御要否情報取得手段、
前記制御要否情報により動きが制御されることが示されているオブジェクトのそれぞれについて、当該オブジェクトの属性である物理量を表す少なくとも１つのパラメータの値に基づいて算出される量だけ当該オブジェクトの位置又は向きを変化させるオブジェクト変化手段、
前記各オブジェクトについて設定されているパラメータの値が所定の条件を満足している場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新する制御要否情報更新手段、
他のオブジェクトと衝突するオブジェクトである衝突オブジェクトの前記他のオブジェクトに対する相対速度を表す値の絶対値が、相対速度を表す値についての所定の閾値以下である場合に、当該衝突オブジェクトの物理量を表すパラメータの値を、パラメータの値を更新しない場合よりも、前記オブジェクト変化手段による当該衝突オブジェクトの位置又は向きの変化量が小さくなるよう更新する値更新手段、
として前記コンピュータを機能させることを特徴とするプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体。
【請求項１０】
仮想空間内に配置されているオブジェクトの動きを制御する情報処理システムであって、
仮想空間内に配置されている複数のオブジェクトのそれぞれについての、動きが制御されるオブジェクトであるか否かを示す制御要否情報を記憶する制御要否情報記憶手段から、前記制御要否情報を取得する制御要否情報取得手段と、
前記制御要否情報により動きが制御されることが示されているオブジェクトのそれぞれについて、当該オブジェクトの属性である物理量を表す少なくとも１つのパラメータの値に基づいて算出される量だけ当該オブジェクトの位置又は向きを変化させるオブジェクト変化手段と、
前記各オブジェクトについて設定されているパラメータの値が所定の条件を満足している場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新する制御要否情報更新手段と、
他のオブジェクトと衝突するオブジェクトである衝突オブジェクトの前記他のオブジェクトに対する相対速度を表す値の絶対値が、相対速度を表す値についての所定の閾値以下である場合に、当該衝突オブジェクトの物理量を表すパラメータの値を、パラメータの値を更新しない場合よりも、前記オブジェクト変化手段による当該衝突オブジェクトの位置又は向きの変化量が小さくなるよう更新する値更新手段と、
を含むことを特徴とする情報処理システム。
【請求項１１】
仮想空間内に配置されているオブジェクトの動きを制御する情報処理方法であって、
情報処理システムに含まれる制御要否情報取得手段が、仮想空間内に配置されている複数のオブジェクトのそれぞれについての、動きが制御されるオブジェクトであるか否かを示す制御要否情報を記憶する制御要否情報記憶手段から、前記制御要否情報を取得する制御要否情報取得ステップと、
前記情報処理システムに含まれるオブジェクト変化手段が、前記制御要否情報により動きが制御されることが示されているオブジェクトのそれぞれについて、当該オブジェクトの属性である物理量を表す少なくとも１つのパラメータの値に基づいて算出される量だけ当該オブジェクトの位置又は向きを変化させるオブジェクト変化ステップと、
前記情報処理システムに含まれる制御要否情報更新手段が、前記各オブジェクトについて設定されているパラメータの値が所定の条件を満足している場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新する制御要否情報更新ステップと、
前記情報処理システムに含まれる値更新手段が、他のオブジェクトと衝突するオブジェクトである衝突オブジェクトの前記他のオブジェクトに対する相対速度を表す値の絶対値が、相対速度を表す値についての所定の閾値以下である場合に、当該衝突オブジェクトの物理量を表すパラメータの値を、パラメータの値を更新しない場合よりも、前記オブジェクト変化ステップでの当該衝突オブジェクトの位置又は向きの変化量が小さくなるよう更新する値更新ステップと、
を含むことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体、情報処理システム及び情報処理方法に関する。
【背景技術】
【０００２】
仮想空間内に配置されたオブジェクトを、仮想空間内に配置された視点位置及び視線方向から見た様子を表すフレーム画像を順次生成し、表示装置に表示させる情報処理システムがある。また、古典力学の法則等の物理法則をシミュレートするソフトウェアである物理エンジンを活用することで、仮想空間内に配置されたオブジェクトの動きのリアリティを高めた情報処理システムもある。
【０００３】
物理エンジンは、一般的に、ある時点における各オブジェクトに設定された物理量（例えば、位置、向き、質量、慣性モーメント、速度、角速度、など）を表すパラメータの値、仮想空間全体に関わる物理量（例えば、風速）を表すパラメータの値、などに基づいて、所定時間が経過した後における各オブジェクトの位置や向きを決定している。
【０００４】
また、仮想空間内に配置されたオブジェクトを、ユーザによるコントローラ等の操作入力の入力量に応じて移動させることができる情報処理システムも知られている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
仮想空間内に配置されているすべてのオブジェクトについて、物理エンジンによる物理シミュレーション処理を実行すると、情報処理システムの負荷が高くなってしまう。ここで、所定の条件を満足するオブジェクト（例えば、移動速度が所定速度以下であるオブジェクト）について、物理シミュレーション処理の対象から外すようにすれば、情報処理システムの処理負荷が低減するものと思われる。
【０００６】
しかし、鎖を表すオブジェクトなどのように、連結された複数の要素から構成されるオブジェクトについては、オブジェクト全体の動きのリアリティを高めるために、各要素に対して個別に物理シミュレーション処理を実行することが望ましいが、例えば、一部の要素が物理シミュレーション処理の対象から外れているにも関わらず、残りの要素だけが物理シミュレーション処理の対象となっている、などというような状況が発生すると、オブジェクトの動きの表現が不自然なものとなってしまうおそれがある。
【０００７】
本発明は上記課題に鑑みてなされたものであって、その目的の１つは、情報処理システムの処理負荷が高くなってしまうことを防ぎつつ、仮想空間内に配置されているオブジェクトの動きの表現が不自然なものとなるおそれを低減することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明に係るプログラムは、仮想空間内に配置されているオブジェクトの動きを制御する情報処理システムとしてコンピュータを機能させるプログラムであって、仮想空間内に配置されている複数のオブジェクトのそれぞれについての、動きが制御されるオブジェクトであるか否かを示す制御要否情報を記憶する制御要否情報記憶手段から、前記制御要否情報を取得する制御要否情報取得手段、前記制御要否情報により動きが制御されることが示されているオブジェクトのそれぞれについて、当該オブジェクトの属性である物理量を表す少なくとも１つのパラメータの値に基づいて算出される量だけ当該オブジェクトの位置又は向きを変化させるオブジェクト変化手段、前記各オブジェクトについて設定されているパラメータの値が所定の条件を満足している場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新する制御要否情報更新手段、として前記コンピュータを機能させることを特徴とする。
【０００９】
また、本発明に係る情報記憶媒体は、仮想空間内に配置されているオブジェクトの動きを制御する情報処理システムとしてコンピュータを機能させるプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体であって、仮想空間内に配置されている複数のオブジェクトのそれぞれについての、動きが制御されるオブジェクトであるか否かを示す制御要否情報を記憶する制御要否情報記憶手段から、前記制御要否情報を取得する制御要否情報取得手段、前記制御要否情報により動きが制御されることが示されているオブジェクトのそれぞれについて、当該オブジェクトの属性である物理量を表す少なくとも１つのパラメータの値に基づいて算出される量だけ当該オブジェクトの位置又は向きを変化させるオブジェクト変化手段、前記各オブジェクトについて設定されているパラメータの値が所定の条件を満足している場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新する制御要否情報更新手段、として前記コンピュータを機能させることを特徴とするプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体である。
【００１０】
また、本発明に係る情報処理システムは、仮想空間内に配置されているオブジェクトの動きを制御する情報処理システムであって、仮想空間内に配置されている複数のオブジェクトのそれぞれについての、動きが制御されるオブジェクトであるか否かを示す制御要否情報を記憶する制御要否情報記憶手段から、前記制御要否情報を取得する制御要否情報取得手段と、前記制御要否情報により動きが制御されることが示されているオブジェクトのそれぞれについて、当該オブジェクトの属性である物理量を表す少なくとも１つのパラメータの値に基づいて算出される量だけ当該オブジェクトの位置又は向きを変化させるオブジェクト変化手段と、前記各オブジェクトについて設定されているパラメータの値が所定の条件を満足している場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新する制御要否情報更新手段と、を含むことを特徴とする。
【００１１】
また、本発明に係る情報処理方法は、仮想空間内に配置されているオブジェクトの動きを制御する情報処理方法であって、仮想空間内に配置されている複数のオブジェクトのそれぞれについての、動きが制御されるオブジェクトであるか否かを示す制御要否情報を記憶する制御要否情報記憶手段から、前記制御要否情報を取得する制御要否情報取得ステップと、前記制御要否情報により動きが制御されることが示されているオブジェクトのそれぞれについて、当該オブジェクトの属性である物理量を表す少なくとも１つのパラメータの値に基づいて算出される量だけ当該オブジェクトの位置又は向きを変化させるオブジェクト変化ステップと、前記各オブジェクトについて設定されているパラメータの値が所定の条件を満足している場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新する制御要否情報更新ステップと、を含むことを特徴とする。
【００１２】
本発明では、複数のオブジェクトそれぞれについて設定されているパラメータの値が所定の条件を満足している場合に、複数のオブジェクトすべてについて動きが制御されないことを示すよう制御要否情報が更新されるので、情報処理システムの処理負荷が高くなってしまうことを防ぐことができるとともに、一部のオブジェクトが物理シミュレーション処理の対象から外れているにも関わらず、残りのオブジェクトが物理シミュレーション処理の対象となっている、などという状況が発生することを防ぐことができる。このようにして、本発明によれば、情報処理システムの処理負荷が高くなってしまうことを防ぎつつ、仮想空間内に配置されているオブジェクトの動きの表現が不自然なものとなるおそれを低減させることができる。
【００１３】
本発明の一態様では、前記制御要否情報更新手段は、設定されているパラメータの値が所定の条件を満足しているオブジェクトの数が所定数以上である場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新することを特徴とする。
【００１４】
また、本発明の一態様では、所定のタイミングで、前記各オブジェクトについて、設定されているパラメータの値が所定の条件を満足しているか否かを繰り返し判定する判定手段、として前記コンピュータをさらに機能させ、前記制御要否情報更新手段は、前記判定手段により所定の回数以上連続して、所定の条件を満足しているオブジェクトの数が所定数以上であると判定された場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新することを特徴とする。
【００１５】
また、本発明の一態様では、前記制御要否情報更新手段は、所定の条件を満足しているオブジェクトの数が所定数以上である状況が、所定期間継続した際に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新することを特徴とする。
【００１６】
また、本発明の一態様では、前記制御要否情報更新手段は、前記各オブジェクトについて設定されている速度又は角速度を表すパラメータの値の絶対値が、所定の閾値以下であるオブジェクトの数が所定数以上である場合に、前記複数のオブジェクトすべてについて動きが制御されないことを示すよう前記制御要否情報を更新することを特徴とする。
【００１７】
また、本発明の一態様では、他のオブジェクトと衝突するオブジェクトである衝突オブジェクトの前記他のオブジェクトに対する相対速度を表す値の絶対値が、相対速度を表す値についての所定の閾値以下である場合に、当該衝突オブジェクトの物理量を表すパラメータの値を、パラメータの値を更新しない場合よりも、前記オブジェクト変化手段による当該衝突オブジェクトの位置又は向きの変化量が小さくなるよう更新する値更新手段、として前記コンピュータをさらに機能させることを特徴とする。
【００１８】
また、本発明の一態様では、前記値更新手段は、前記衝突オブジェクトと前記他のオブジェクトとの間の反発係数を表すパラメータの値を小さくすることを特徴とする。
【００１９】
また、本発明の一態様では、所定のイベントの発生に応じて、前記制御要否情報により動きが制御されないことが示されている前記複数のオブジェクトについて、動きが制御されることを示すよう前記制御要否情報を更新する第３の制御要否情報更新手段、として前記コンピュータをさらに機能させることを特徴とする。
【００２０】
また、本発明の一態様では、前記オブジェクトが配置されている仮想空間を、前記仮想空間内に設定された視点から見た様子を表す画像を生成する画像生成手段、をさらに含むことを特徴とする。
【図面の簡単な説明】
【００２１】
【図１】本発明の一実施形態に係るゲーム装置の構成図である。
【図２】本発明の一実施形態に係るゲーム装置により構築される仮想空間の一例を示す図である。
【図３】本発明の一実施形態に係るゲーム装置で実現される機能の一例を示す機能ブロック図である。
【図４】本発明の一実施形態に係るゲーム装置で毎フレーム行われる処理の流れの一例を示すフロー図である。
【図５】プレイヤオブジェクトが剛体オブジェクトにつかまった様子の一例を示す図である。
【図６】横になった鎖オブジェクトが床オブジェクトの上で跳ねる様子の一例を示す図である。
【発明を実施するための形態】
【００２２】
以下、本発明の一実施形態について図面に基づき詳細に説明する。
【００２３】
図１は、本発明の一実施形態に係る情報処理システムとして機能するゲーム装置１０の構成図である。本実施形態に係るゲーム装置１０は、例えば、ゲームコンソール、携帯型ゲーム端末、パーソナルコンピュータ等である。図１に示すように、本実施形態に係るゲーム装置１０は、制御部１２、記憶部１４、操作部１６、表示部１８、を含んでいる。
【００２４】
制御部１２は、ゲーム装置１０にインストールされるプログラムに従って動作するＣＰＵ等のプログラム制御デバイスである。記憶部１４は、ＲＯＭやＲＡＭ等の記憶素子やハードディスクドライブなどである。操作部１６は、キーボードやマウス、あるいは家庭用ゲーム機のコントローラ等であって、ユーザの操作入力を受け付けて、その内容を示す信号を制御部１２に出力する。表示部１８は、液晶ディスプレイ等の表示デバイスであって、制御部１２の指示に従って各種の画像を表示する。
【００２５】
なお、ゲーム装置１０は、ネットワークボードなどの通信インタフェース、ＤＶＤ−ＲＯＭやＢｌｕ−ｒａｙ（登録商標）ディスクなどの光ディスクを読み取る光ディスクドライブ、ＵＳＢ（Universal Serial Bus）ポートなどを含んでいてもよい。
【００２６】
本実施形態に係るゲーム装置１０は、本発明を適用したプログラムを実行することにより、メモリ上に、図２に例示する仮想空間２０を構築するようになっている。同図に示すように、本実施形態に係る仮想空間２０は、仮想３次元空間であり、プレイヤオブジェクト２２、鎖オブジェクト２４、天井オブジェクト２６、床オブジェクト２８、などの仮想オブジェクトが視点３０とともに配置されている。
【００２７】
本実施形態では、仮想オブジェクトは複数のポリゴンにより構成されている。各ポリゴンにはテクスチャがマッピングされている。本実施形態では、ゲーム装置１０のユーザは、操作部１６を操作することによって、仮想空間２０内においてプレイヤオブジェクト２２を移動させることができるようになっている。
【００２８】
また、本実施形態に係るゲーム装置１０で実行されるプログラムでは、古典力学の法則等の物理法則をシミュレートする物理エンジンの機能が実現されている。
【００２９】
本実施形態では、例えば、ユーザが操作部１６を操作して、プレイヤオブジェクト２２が鎖オブジェクト２４につかまる、プレイヤオブジェクト２２が鎖オブジェクト２４から離れる、プレイヤオブジェクト２２が鎖オブジェクト２４を揺らす、プレイヤオブジェクト２２が鎖オブジェクト２４を回転させる、などといったアクションを実現させることができるようになっている。
【００３０】
図３は、本実施形態に係るゲーム装置１０の機能ブロック図である。図３に示すように、ゲーム装置１０は、機能的に、データ記憶部４０、操作状態取得部４２、オブジェクト配置管理部４４、空間画像生成出力部４６を含んでいる。データ記憶部４０は、記憶部１４を主として実現され、その他の要素は制御部１２を主として実現される。
【００３１】
これらの機能は、情報処理システムであるゲーム装置１０で、本実施形態に係るプログラムが実行されることにより実現される。このプログラムは、コンピュータ通信ネットワーク経由で通信インタフェースを介して他のコンピュータからダウンロードされてもよいし、光ディスク（例えば、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなど）、ＵＳＢメモリ等のコンピュータ読み取り可能な情報記憶媒体に格納され、そこから光ディスクドライブやＵＳＢ（Universal Serial Bus）ポートなどを介してゲーム装置１０にインストールされてもよい。
【００３２】
本実施形態では、予め、データ記憶部４０に、仮想空間２０の構築に必要な各種データが記憶されている。データ記憶部４０には、例えば、仮想空間２０に配置されている仮想オブジェクトに関するポリゴンデータやテクスチャデータなどが記憶されている。例えば、鎖オブジェクト２４は、図２に示すように、複数の剛体オブジェクト２４ａ、及び、剛体オブジェクト２４ａ同士や剛体オブジェクト２４ａと天井オブジェクト２６とを連結するジョイント２４ｂを含んで構成されている。なお、本実施形態では、剛体オブジェクト２４ａは、円柱形状であることとする。また、本実施形態では、鎖オブジェクト２４の一端は、天井オブジェクト２６とつながれた固定端となっており、他端は自由端となっている。
【００３３】
また、本実施形態では、データ記憶部４０に、各剛体オブジェクト２４ａについての物理量（例えば、大きさ、質量、慣性モーメント（本実施形態では、慣性テンソル）、速度、角速度、最大速度、最大角速度、インパルス値（力積を表す値）など）を表すパラメータの値が記憶されている。また、本実施形態では、予め、各剛体オブジェクト２４ａの質量パラメータには同じ値が設定されている。また、各剛体オブジェクト２４ａの慣性モーメントパラメータには同じ値が設定されている。そして、これらの値はゲームの進行状況に応じて変更することが可能になっている。
【００３４】
また、本実施形態では、データ記憶部４０に、各ジョイント２４ｂについて、そのジョイント２４ｂに接続されている剛体オブジェクト２４ａ同士の位置関係や、そのジョイント２４ｂに接続されている剛体オブジェクト２４ａと天井オブジェクト２６との位置関係が物理シミュレーション処理において満足すべき拘束条件（例えば、軸を中心とした回転の最大角、剛体オブジェクト２４ａの軸同士がなす最大角、など）も記憶されている。本実施形態では、この拘束条件が満足されるよう物理シミュレーション処理が実行されるようになっている。
【００３５】
また、本実施形態では、データ記憶部４０に、各剛体オブジェクト２４ａについての物理シミュレーション処理の対象であるか否かを示すフラグである制御要否情報も記憶されている。また、本実施形態では、データ記憶部４０に、仮想オブジェクトについての第１の物理量と、第１の物理量が変化した際にその変化に応じて変化させる第２の物理量と、の対応規則を示す対応規則データも記憶されている。また、本実施形態では、対応規則データに、後述する前処理において第２の物理量を変化させるのか、後述する後処理において第２の物理量を変化させるのかを示すデータも含まれている。制御要否情報や対応規則データが処理においてどのように用いられるのかについては後述する。
【００３６】
そして、本実施形態では、空間画像生成出力部４６が、仮想空間２０内に配置された視点３０から視線方向を見た様子を表す画像（以下、空間フレーム画像と呼ぶ。）を所定時間（例えば、１／６０秒）間隔で生成し、表示部１８に表示出力する。
【００３７】
ここで、本実施形態に係るゲーム装置１０で毎フレーム行われる（例えば、１／６０秒間隔で行われる）処理の流れの一例を、図４に例示するフロー図を参照しながら説明する。
【００３８】
本処理例では、第１の物理量として、剛体オブジェクト２４ａに対する力の増加が設定されており、第２の物理量として、その剛体オブジェクト２４ａについての質量の増加、並びに、鎖オブジェクト２４に含まれるその他の剛体オブジェクト２４ａすべてについての質量の減少が設定されている対応規則データがデータ記憶部４０に記憶されていることとする。また、この対応規則データには、力の単位増加量に対する質量の変化量も設定されている。また、この対応規則データには、剛体オブジェクト２４ａの質量の変化を前処理において行うことも示されている。
【００３９】
また、本処理例では、例えば、第１の物理量として、鎖オブジェクト２４の特定方向についての速度の増加が設定されており、第２の物理量として、鎖オブジェクト２４の上述の特定方向以外の方向についての速度の減少が設定されている対応規則データもデータ記憶部４０に記憶されていることとする。この対応規則データには、上述の速度の減少の際のダンピング係数（０以上１未満の低減率）も設定されている。また、この対応規則データには、速度の減少を後処理において行うことも示されている。
【００４０】
まず、操作状態取得部４２が、操作部１６の操作状態（具体的には、例えば、押下されているボタンの種類、及び、ボタンの押下量）を取得する（Ｓ１０１）。そして、オブジェクト配置管理部４４が、取得した操作状態に基づいて、プレイヤオブジェクト２２の動作、及び、その動作に関するパラメータの値を決定する（Ｓ１０２）。ここでは、例えば、プレイヤオブジェクト２２がいずれかの剛体オブジェクト２４ａにつかまるという動作が決定されることとする。また、つかまる動作によって剛体オブジェクト２４ａに加えられる力を表す力パラメータの値も決定されることとする。
【００４１】
そして、オブジェクト配置管理部４４は、すべての剛体オブジェクト２４ａが物理シミュレーション処理の対象となっていない際に、所定の条件を満足する場合は、すべての剛体オブジェクト２４ａが物理シミュレーション処理の対象となるよう制御要否情報の値を更新する（Ｓ１０３）。オブジェクト配置管理部４４は、例えば、いずれかの剛体オブジェクト２４ａについてプレイヤオブジェクト２２からの距離が所定距離以下になった場合や、いずれかの剛体オブジェクト２４ａにプレイヤオブジェクト２２がつかまった場合は、すべての剛体オブジェクト２４ａが物理シミュレーション処理の対象となるよう制御要否情報の値を更新する。
【００４２】
そして、オブジェクト配置管理部４４が、データ記憶部４０に記憶されている制御要否情報を取得して、物理シミュレーション処理の対象となる剛体オブジェクト２４ａを特定し、物理シミュレーション処理の対象となる剛体オブジェクト２４ａに設定されている物理量を表すパラメータの値を取得する（Ｓ１０４）。ここでは、例えば、各剛体オブジェクト２４ａに設定されている速度パラメータの値（本実施形態では、速度パラメータの値は３次元ベクトルで表されている。）、角速度パラメータの値、並びに、各剛体オブジェクト２４ａの位置及び向きを示す値を取得する。そして、オブジェクト配置管理部４４が、Ｓ１０２に示す処理で決定された動作、動作に関するパラメータの値、及び、前処理において第２の物理量を変化させることが示されている対応規則データ、に基づいて、物理シミュレーション処理を行うにあたっての前処理を実行する（Ｓ１０５）。プレイヤオブジェクト２２がいずれかの剛体オブジェクト２４ａにつかまったという動作が発生したフレームでの処理では、オブジェクト配置管理部４４は、例えば、プレイヤオブジェクト２２がつかまった剛体オブジェクト２４ａに設定されている質量パラメータの値を増加させるとともに、鎖オブジェクト２４に含まれるその他の剛体オブジェクト２４ａすべてについて、設定されている質量パラメータの値を減少させる。ここで、質量パラメータの値の増加量や減少量は、対応規則データに基づいて、プレイヤオブジェクト２２がつかまった際に剛体オブジェクト２４ａに加えられた力を表す力パラメータの値に応じた値が決定される。
【００４３】
そして、オブジェクト配置管理部４４が、各剛体オブジェクト２４ａに設定されているパラメータの値、及び、上述のＳ１０２に示す処理で決定された力パラメータの値に基づいて、物理シミュレーション処理を実行して、各剛体オブジェクト２４ａの位置や向きの変更、及び、各剛体オブジェクト２４ａに設定されているパラメータの値の変更を行う（Ｓ１０６）。
【００４４】
本実施形態では、公知の物理エンジンの機能を用いて、Ｓ１０６に示す物理シミュレーション処理を実行する。公知の物理エンジンでは、例えば、各剛体オブジェクト２４ａに設定された質量パラメータの値、慣性モーメントパラメータの値、速度パラメータの値、角速度パラメータの値、各剛体オブジェクト２４ａの位置及び向き、上述のＳ１０２に示す処理で決定された力パラメータの値、ジョイント２４ｂによる拘束条件を入力することで、物理シミュレーション結果である、各剛体オブジェクト２４ａについての速度パラメータの値、角速度パラメータの値、並びに、各剛体オブジェクト２４ａの位置及び向きが出力されることとなる。
【００４５】
ここで、本実施形態に係る鎖オブジェクト２４のように、拘束条件が設定されたジョイント２４ｂによって剛体オブジェクト２４ａが連結されているような場合は、例えば、仮の位置、仮の向き、仮の速度パラメータの値、及び、仮の角速度パラメータの値を決定する処理をすべての剛体オブジェクト２４ａについて順次実行するという処理を繰り返すことによって、物理シミュレーションの精度を高めている。しかし、１フレームに相当する時間内に行える処理にも限界があるので、本実施形態では、上述のすべての剛体オブジェクト２４ａについての順次実行処理を所定回繰り返したら、そこで処理を打ち切り、その時点における仮の速度パラメータの値、仮の角速度パラメータ及び仮の向きを最終的な速度パラメータの値、角速度パラメータの値、及び向きとして決定するとともに、固定端にある剛体オブジェクト２４ａから順に、剛体オブジェクト２４ａ間の長さが所定の長さになるよう、各剛体オブジェクト２４ａの位置調整を行うようになっている。
【００４６】
そして、オブジェクト配置管理部４４が、Ｓ１０６に示す物理シミュレーション処理の結果に応じて、各剛体オブジェクト２４ａに設定されているパラメータの値の追加変更を行う後処理を実行する（Ｓ１０７）。具体的には、例えば、図５に示すように、プレイヤオブジェクト２２がＸ軸正方向に力を加え（すなわち、プレイヤオブジェクト２２がＸ軸正方向に進もうとして）、鎖オブジェクト２４のＸ軸方向の速度Ｖｘが増加した場合は、オブジェクト配置管理部４４が、Ｘ軸方向とは垂直であるＹ軸方向についての速度パラメータの値Ｖｙ、及び、同じくＸ軸方向とは垂直であるＺ軸方向についての速度パラメータの値Ｖｚに対応規則データに設定されているダンピング係数を乗じる。
【００４７】
そして、オブジェクト配置管理部４４は、設定された速度パラメータの値の絶対値が所定の閾値（除外閾値速度）以下であり、設定された角速度パラメータの値の絶対値が所定の閾値（除外閾値角速度）以下である剛体オブジェクト２４ａの数を特定する（Ｓ１０８）。以下、このようにして特定される剛体オブジェクト２４ａの数を特定オブジェクト数と呼ぶこととする。
【００４８】
そして、オブジェクト配置管理部４４は、所定のフレーム数（例えば、３フレーム）以上継続して、特定オブジェクト数が所定数（例えば、３つ）以上であるか否かを確認する（Ｓ１０９）。そうである場合は（Ｓ１０９：Ｙ）、鎖オブジェクト２４に含まれるすべての剛体オブジェクト２４ａについて物理シミュレーション処理の対象から外すよう制御要否情報の値を更新する（Ｓ１１０）。
【００４９】
そうでない場合（Ｓ１０９：Ｎ）、又は、Ｓ１１０に示す処理の終了後に、空間画像生成出力部４６は、視点３０から視線方向を見た様子を表す空間フレーム画像を生成し、表示部１８に表示出力して（Ｓ１１１）、本処理例に示す処理を終了する。
【００５０】
本実施形態では、プレイヤオブジェクト２２が鎖オブジェクト２４につかまって、鎖オブジェクト２４を揺らしている間、つかまっている剛体オブジェクト２４ａの質量パラメータの値が他の剛体オブジェクト２４ａの質量パラメータの値よりも大きい状態が継続する。そして、例えば、ユーザによりプレイヤオブジェクト２２が鎖オブジェクト２４を離す操作が実行された場合には、プレイヤオブジェクト２２が鎖オブジェクト２４から離れて、放り出されることとなる。このとき、オブジェクト配置管理部４４は、各剛体オブジェクト２４ａの質量パラメータの値を予め設定されていた初期値に戻す。すなわち、各剛体オブジェクト２４ａの質量パラメータには同じ値が設定されることとなる。
【００５１】
さらに、オブジェクト配置管理部４４は、プレイヤオブジェクト２２が鎖オブジェクト２４を離す操作が実行されてから、鎖オブジェクト２４全体が物理シミュレーション処理の対象から外れるまでの間、鎖オブジェクト２４に含まれるすべての剛体オブジェクト２４ａについて、プレイヤオブジェクト２２が鎖オブジェクト２４から離れた場面についてのダンピング係数（０以上１未満）を乗じる。本実施形態では、このダンピング係数の値は、予め設定されており、データ記憶部４０に記憶されている。なお、このダンピング係数は、プレイヤオブジェクト２２が進もうとしていた方向（例えば、Ｘ軸方向）と、それ以外の方向（例えば、Ｙ軸方向及びＺ軸方向）と、で異なる値が設定されていてもよい。例えば、Ｘ軸方向のダンピング係数の値が、Ｙ軸方向のダンピング係数の値よりも小さく設定されており、Ｚ軸方向のダンピング係数の値よりも小さく設定されていてもよい。このようにして、本実施形態では、プレイヤオブジェクト２２が鎖オブジェクト２４から離れてからの鎖オブジェクト２４の揺れの収束を早めることができる。
【００５２】
本実施形態では、例えば、Ｓ１０５に示す処理で、プレイヤオブジェクト２２がつかまった剛体オブジェクト２４ａに設定されている質量パラメータの値を増加させ、それ以外の剛体オブジェクト２４ａに設定されている質量パラメータの値を減少させることによって、各剛体オブジェクト２４ａの質量パラメータの値が同じである場合と比較して、鎖オブジェクト２４が揺れやすい状況となる。このように、Ｓ１０５に示す処理による、質量パラメータの値の変化によって、物理エンジンにより物理法則を忠実に再現する場合よりも、ゲームでは適した画像表現を実現することが可能となる。
【００５３】
また、本実施形態では、Ｓ１０７に示す処理で、例えば、オブジェクト配置管理部４４が、Ｙ軸方向及びＺ軸方向についての、速度パラメータの値に、対応規則データに設定されているダンピング係数を乗じることで、このようにしない場合よりも、プレイヤオブジェクト２２が進もうとしているＸ軸方向以外の方向については鎖オブジェクト２４の揺れが早く収束することとなる。また、プレイヤオブジェクト２２が鎖オブジェクト２４につかまっている途中で進行方向を変えた場合でも、鎖オブジェクト２４が円運動をしてしまうことを防ぐことができ、プレイヤオブジェクト２２が進行しようとする方向に沿った鎖オブジェクト２４の揺れの画像表現を実現することができる。
【００５４】
このように、本実施形態では、ユーザから受け付ける操作に応じた剛体オブジェクト２４ａの物理量の変化だけではなく、対応規則データにおいてその物理量の変化に対応付けられる剛体オブジェクト２４ａの物理量の変化も、剛体オブジェクト２４ａの位置や向きの変化に反映されることとなるため、単に、物理エンジンの機能を活かしつつ、物理エンジンにより物理法則を忠実に再現する場合と比較して、剛体オブジェクト２４ａが動く様子の表現のバリエーションの幅が広がることとなる。
【００５５】
また、本実施形態では、あるフレームにおいて、設定された速度パラメータの値の絶対値が所定の閾値（除外閾値速度）以下であり、設定された角速度パラメータの値の絶対値が所定の閾値（除外閾値角速度）以下である剛体オブジェクト２４ａを特定オブジェクト数として特定する。また、特定オブジェクト数が所定のフレーム数継続して所定数以上であると（本実施形態では、例えば特定オブジェクト数が所定数以上であると３回以上連続して判定されると）、鎖オブジェクト２４全体が物理シミュレーション処理の対象から外れることとなる。このことにより、本実施形態では、一部の剛体オブジェクト２４ａが物理シミュレーション処理の対象から外れているにも関わらず、残りの剛体オブジェクト２４ａが物理シミュレーション処理の対象となっている、などという状況を防ぐことができる。その結果、本実施形態では、鎖オブジェクト２４の動きの表現が不自然なものとなる（例えば、鎖オブジェクト２４が不自然に振動する）おそれを低減することができる。また、上述のようにしない場合よりも早く、物理シミュレーション処理の対象となる仮想オブジェクトの数を減らすことができるので、物理シミュレーション処理の負荷を低減することができる。その結果、ゲーム装置１０の情報処理の負荷が高くなってしまうことを防げることとなる。
【００５６】
なお、本発明は上述の実施形態に限定されるものではない。
【００５７】
例えば、上述の処理例と同様の処理により、図６に示すような、横になった鎖オブジェクト２４が床オブジェクト２８の上で跳ねる様子が表現されるようにしてもよい。なお、ここでは、床オブジェクト２８は静止しており、鎖オブジェクト２４が衝突しても、その位置及び向きが変化しないように設定されていることとする。また、剛体オブジェクト２４ａには、床オブジェクト２８との関係における反発係数を表す反発係数パラメータの値が設定されており、反発係数パラメータの値が物理シミュレーション処理において物理エンジンに入力されることとする。
【００５８】
ここで、例えば、図６における左から２番目の剛体オブジェクト２４ａが床オブジェクト２８と衝突した際の、床オブジェクト２８に対する剛体オブジェクト２４ａの相対速度Ｖｒ（本実施形態では、床オブジェクト２８が静止しているため剛体オブジェクト２４ａの速度パラメータの値と一致する。）の絶対値が所定の第２閾値（この閾値は、上述のＳ１０８に示す処理における閾値（以下、第１閾値と呼ぶ。）より大きい。）以下である場合には、オブジェクト配置管理部４４は、反発係数パラメータの値に、反発係数に関して予め設定された、データ記憶部４０に記憶されているダンピング係数（０以上１未満）を乗じるようにしてもよい。こうすれば、この剛体オブジェクト２４ａについては、反発係数パラメータの値を更新しない場合よりも、剛体オブジェクト２４ａが床オブジェクト２８から離れる際の速度パラメータの絶対値や、単位時間あたりの位置や向きの変化量が小さくなる。こうすれば、丸め誤差の影響により、いつまでたっても、剛体オブジェクト２４ａが床オブジェクト２８の上に停止しないという事態が発生することを防ぐことができる。また、反発係数パラメータの値を更新しない場合よりも早く、床オブジェクト２８に対する相対速度の絶対値が第１閾値以下になり、物理シミュレーション処理の対象から外れることとなる。こうすれば、反発係数パラメータの値を更新しない場合よりも早く、物理シミュレーション処理の対象となる仮想オブジェクトの数を減らすことができ、その結果、物理シミュレーション処理の負荷を低減することができる。
【００５９】
また、この場合においても、オブジェクト配置管理部４４は、所定のフレーム数（例えば、３フレーム）以上にわたって連続して特定オブジェクト数が所定数（例えば、３つ）以上である場合に、鎖オブジェクト２４に含まれるすべての剛体オブジェクト２４ａについて物理シミュレーション処理の対象から外すようにしてもよい。
【００６０】
なお、本発明は上述の実施形態にも限定されるものではない。
【００６１】
例えば、Ｓ１０７に示す処理において、オブジェクト配置管理部４４は、Ｓ１０７に示す処理において、Ｓ１０６に示す処理で値が変更されたパラメータ（例えば、Ｘ軸方向の速度Ｖｘ）についてさらに値を変更するようにしてもよい。
【００６２】
また、例えば、Ｓ１０８に示す処理において、オブジェクト配置管理部４４は、所定のフレーム数（例えば、２フレーム）以上継続して設定された速度パラメータの値の絶対値が除外閾値速度以下であり、設定された角速度パラメータの値の絶対値が除外閾値角速度以下である剛体オブジェクト２４ａの数を特定オブジェクト数として特定するようにしてもよい。
【００６３】
また、例えば、Ｓ１０８に示す処理において、オブジェクト配置管理部４４は、設定された速度パラメータの値の絶対値が除外閾値速度以下であり、設定された角速度パラメータの値の絶対値が除外閾値角速度以下である剛体オブジェクト２４ａの数を特定オブジェクト数として特定するのではなく、例えば、設定された速度パラメータの値の絶対値が除外閾値速度以下である剛体オブジェクト２４ａの数を特定オブジェクト数として特定するようにしたり、設定された角速度パラメータの値の絶対値が除外閾値角速度以下である剛体オブジェクト２４ａの数を特定オブジェクト数として特定するようにしても構わない。また、ゲーム装置１０が、特定オブジェクト数と所定値との比較結果に応じて、すべての剛体オブジェクト２４ａを物理シミュレーションの対象から外すか否かを制御する必要はない。例えば、ゲーム装置１０が、各剛体オブジェクト２４ａについて設定されているパラメータの値の最大値と最小値の差が所定値以下であるか否かに応じて、すべての剛体オブジェクト２４ａを物理シミュレーションの対象から外すか否かを制御するようにしてもよい。
【００６４】
また、例えば、Ｓ１０９及びＳ１１０に示す処理において、鎖オブジェクト２４に含まれるすべての剛体オブジェクト２４ａについて物理シミュレーション処理の対象から外すよう制御要否情報の値を更新するか否かの制御に、所定のフレーム数以上連続して上述のようにして特定される剛体オブジェクト２４ａの数の代わりに、鎖オブジェクト２４に含まれる剛体オブジェクト２４ａの数に対する、所定のフレーム数以上連続して上述のようにして特定される剛体オブジェクト２４ａの数の割合（例えば、５０％）を用いるようにしてもよい。
【００６５】
また、例えば、第１の物理量として、鎖オブジェクト２４の特定の回転方向についての角速度の増加が設定されており、第２の物理量として、鎖オブジェクト２４のその他の回転方向についての角速度の減少が設定されている対応規則データがデータ記憶部４０に記憶されていてもよい。この対応規則データには、例えば、上述の角速度の減少の際のダンピング係数（０以上１未満）も設定されており、また、剛体オブジェクト２４ａの角速度の減少を後処理において行うことも示されている。そして、例えば、Ｓ１０７に示す処理で、オブジェクト配置管理部４４が、プレイヤオブジェクト２２の進行方向、あるいは、プレイヤオブジェクト２２が鎖オブジェクト２４を回転させている回転方向とは異なる回転方向についての、角速度パラメータの値に対応規則データに設定されているダンピング係数を乗じるようにしてもよい。こうすれば、プレイヤオブジェクト２２が回転させようとしている回転方向とは異なる回転方向については、鎖オブジェクト２４の回転が早く収束するようになる。
【００６６】
また、例えば、対応規則データには、第１の物理量として、速度の増加又は減少と、角速度の増加又は減少の両方が示されていてもよい。また、例えば、第２の物理量として、速度の増加又は減少と、角速度の増加又は減少の両方が示されていてもよい。そして、Ｓ１０７に示す処理で、速度の変更と角速度の変更の両方を実行するようにしてもよい。
【００６７】
また、例えば、対応規則データが、その剛体オブジェクト２４ａについての質量の増加、並びに、鎖オブジェクト２４に含まれるその剛体オブジェクト２４ａとは異なる一部（例えば、前後２つ）の剛体オブジェクト２４ａについての質量の減少が設定されていてもよい。そして、オブジェクト配置管理部４４が、Ｓ１０５に示す処理でプレイヤオブジェクト２２がつかまった剛体オブジェクト２４ａの前後２つの剛体オブジェクト２４ａの質量パラメータの値を減少させるようにしてもよい。
【００６８】
また、例えば、第１の物理量として、剛体オブジェクト２４ａに対するトルクの増加が設定されており、第２の物理量として、その剛体オブジェクト２４ａについての慣性モーメントの増加、並びに、それ以外の剛体オブジェクト２４ａについての慣性モーメントの減少が設定されている対応規則データがデータ記憶部４０に記憶されていてもよい。そして、オブジェクト配置管理部４４が、各剛体オブジェクト２４ａに設定されている慣性モーメントパラメータを、決定されたトルクパラメータの値と、トルクの増加量と慣性モーメントの変化量の関係が示されている対応規則データと、に基づいて変更するようにしてもよい。そして、オブジェクト配置管理部４４が、トルクパラメータの値を物理エンジンに入力することにより、各剛体オブジェクト２４ａの位置や向きの変更、及び、各剛体オブジェクト２４ａに設定されている各種パラメータの値の変更を行うようにしてもよい。
【００６９】
また、例えば、上述の実施形態において前処理で実行された処理が後処理で実行されるようにしても、後処理で実行された処理が前処理で実行されても構わない。具体的には、例えば、プレイヤオブジェクト２２がいずれかの剛体オブジェクト２４ａにつかまったという動作が発生したフレームでの後処理において、質量パラメータの増減が行われ、次フレーム以降における物理シミュレーション処理において、質量パラメータの増減が反映されるようにしてもよい。
【００７０】
また、例えば、剛体オブジェクト２４ａの速度変化に応じて、質量パラメータの値を変更するようにしてもよい。また、例えば、対応規則データが示す第２の物理量として、例えば、仮想空間２０全体に関わる物理量（例えば、風速）の変化が設定されていてもよい。
【００７１】
また、本実施形態をゲーム装置１０以外の情報処理システム（例えば、シミュレーションシステムや画像処理システムなど）に応用してもよい。また、上記の具体的な数値や文字列や図面中の具体的な数値や文字列は例示であり、これらの数値や文字列には限定されない。
【符号の説明】
【００７２】
１０  ゲーム装置、１２  制御部、１４  記憶部、１６  操作部、１８  表示部、２０  仮想空間、２２  プレイヤオブジェクト、２４  鎖オブジェクト、２４ａ  剛体オブジェクト、２４ｂ  ジョイント、２６  天井オブジェクト、２８  床オブジェクト、３０  視点、４０  データ記憶部、４２  操作状態取得部、４４  オブジェクト配置管理部、４６  空間画像生成出力部。
【図１】
0005328841.tif 000002
【図２】
0005328841.tif 000003
【図３】
0005328841.tif 000004
【図４】
0005328841.tif 000005
【図５】
0005328841.tif 000006
【図６】
0005328841.tif 000007