(57)【要約】【課題】多様なオブジェクトの動作を実現しつつ、モーションデータのデータ量及びその作成コストを削減することが可能なゲーム装置及びゲームプログラムを提供する。【解決手段】ゲーム装置は、プレイヤキャラクタの腰Ｗが移動する軌道ＷＰと、足首Ｐａｒが移動する楕円軌道ＡｒＰとを設定する。プレイヤキャラクタがゲーム空間を移動すると、その移動量に応じて、腰が軌道ＷＰ上を移動し、足首が楕円軌道ＡｒＰ上を移動する。この場合において、足首が楕円軌道ＡｒＰ上を１周する間、腰は軌道ＷＰ上を２往復する。これにより、足の動きに応じたモーション画像を予め用意する必要がなく、プレイヤキャラクタの多様な足の動きを実現することができる。【選択図】図５
2010263944.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間内でオブジェクトを動かすゲーム装置であって、
前記オブジェクトの前記仮想空間内での位置を設定するオブジェクト位置設定手段と、
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第１の部位の位置を設定する第１部位設定手段と、
前記第１部位設定手段によって設定された前記第１の部位を含む画像を画面に表示する表示制御手段とを備え、
前記第１部位設定手段は、前記オブジェクトの位置に応じて設定された第１の軌道上を、前記オブジェクトの移動量に応じた量で前記第１の部位を移動させることで、前記第１の部位の位置を設定する、ゲーム装置。
【請求項２】
前記第１の軌道は、閉曲線であり、
前記第１部位設定手段は、前記第１の部位の位置を前記閉曲線上に設定する、請求項１に記載のゲーム装置。
【請求項３】
前記第１の軌道は短径が０以上の楕円又は円軌道であって、
前記第１部位設定手段は、前記楕円又は円の中心角を前記オブジェクトの移動量に応じて設定し、当該中心角によって定められる前記楕円又は円上の点を前記第１の部位の位置として設定する、請求項１に記載のゲーム装置。
【請求項４】
前記第１部位設定手段は、前記楕円又は円の中心の位置を前記オブジェクトの位置に基づいて設定する中心位置設定手段を含む、請求項３に記載のゲーム装置。
【請求項５】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第２の部位の位置を設定する第２部位設定手段をさらに備え、
前記第２部位設定手段は、前記オブジェクトの位置に応じて設定された第２の軌道上を、前記オブジェクトの移動量に応じた量で前記第２の部位を移動させることで前記第２の部位の位置を設定し、
前記第１部位設定手段は、前記第２の部位の位置に対する相対位置として、前記第１の部位の位置を設定し、
前記表示制御手段は、前記第１の部位及び前記第２の部位を含む画像を前記画面に表示する、請求項１に記載のゲーム装置。
【請求項６】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第２の部位の位置を設定する第２部位設定手段をさらに備え、
前記第２部位設定手段は、前記オブジェクトの位置に応じて設定された第２の軌道上を、前記オブジェクトの移動量に応じた量で前記第２の部位を移動させることで前記第２の部位の位置を設定し、
前記表示制御手段は、前記第１の部位及び前記第２の部位を含む画像を前記画面に表示し、
前記オブジェクトが前記仮想空間内を移動している場合、前記第１の部位及び前記第２の部位は、前記第１の軌道上及び前記第２の軌道上をそれぞれ周期的に移動するとともに、前記第１の部位の周期は前記第２の部位の周期の２倍である、請求項１に記載のゲーム装置。
【請求項７】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第３の部位の位置を設定する第３部位設定手段をさらに備え、
前記第３部位設定手段は、前記オブジェクトの位置に応じて設定された第３の軌道上を、前記オブジェクトの移動量に応じた量で前記第３の部位を移動させることで前記第３の部位の位置を設定するとともに、前記第２の部位の位置に対する相対位置として、前記第３の部位の位置を設定し、
前記表示制御手段は、前記第１の部位、前記第２の部位、及び前記第３の部位を含む画像を前記画面に表示し、
前記オブジェクトが前記仮想空間内を移動している場合、前記第３の部位は、前記第３の軌道上を前記第１の部位の周期と同じ周期で移動し、かつ、前記第１の部位と前記第３の部位とは、所定の位相差を有する、請求項６に記載のゲーム装置。
【請求項８】
前記第２の軌道は短径が０以上の楕円又は円軌道であって、
前記第２部位設定手段は、前記楕円又は円の中心角を前記オブジェクトの移動量に応じて設定し、当該中心角によって定められる前記楕円又は円上の点を前記第２の部位の位置として設定する、請求項５に記載のゲーム装置。
【請求項９】
前記オブジェクトは前記仮想空間内に存在する所定の地形オブジェクト上を移動し、
前記第１部位設定手段は、
前記第１の部位が前記地形オブジェクトの内部に存在するか否かを判定する判定手段と、
前記判定手段によって前記第１の部位が前記地形オブジェクトの内部に存在すると判定された場合に、前記第１の部位の位置を前記地形オブジェクトの表面に補正する位置補正手段とを含む、請求項１又は５に記載のゲーム装置。
【請求項１０】
前記オブジェクトは前記仮想空間内に存在する所定の地形オブジェクト上を移動し、
前記第１部位設定手段は、単位時間あたりの前記オブジェクトの移動量が所定の閾値より少ない場合、前記第１の部位の位置を前記地形オブジェクトに近づけるようにして、前記第１の部位の位置をさらに設定する、請求項１に記載のゲーム装置。
【請求項１１】
前記オブジェクトは、人オブジェクトであって、前記第１の部位及び前記第３の部位は足首であり、前記第２の部位は腰である、請求項７に記載のゲーム装置。
【請求項１２】
前記第１部位設定手段によって設定された足首の位置と、前記第２部位設定手段によって設定された腰の位置とに基づいて、膝の状態を設定する膝状態設定手段をさらに備える、請求項１１に記載のゲーム装置。
【請求項１３】
前記オブジェクト位置設定手段は、所定の操作入力に基づいて前記オブジェクトの前記仮想空間内での位置を設定する、請求項１に記載のゲーム装置。
【請求項１４】
仮想空間内のオブジェクトを動作させるゲーム装置であって、
前記オブジェクトの前記仮想空間内での位置を設定するオブジェクト位置設定手段と、
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対動作として、前記オブジェクトの第１の部位を動作させる第１部位動作手段と、
前記第１部位動作手段によって動作させた前記第１の部位を含む画像を画面に表示する表示制御手段とを備え、
前記第１部位動作手段は、前記オブジェクトの位置に応じて設定された第１の軌道上を、所定期間内に前記第１の部位を移動させることで、前記第１の部位を動作させる、ゲーム装置。
【請求項１５】
仮想空間内でオブジェクトを動かすゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
前記オブジェクトの前記仮想空間内での位置を設定するオブジェクト位置設定手段と、
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第１の部位の位置を設定する第１部位設定手段と、
前記第１部位設定手段によって設定された前記第１の部位を含む画像を画面に表示する表示制御手段として、前記コンピュータを機能させ、
前記第１部位設定手段は、前記オブジェクトの位置に応じて設定された第１の軌道上を、前記オブジェクトの移動量に応じた量で前記第１の部位を移動させることで、前記第１の部位の位置を設定する、ゲームプログラム。
【請求項１６】
前記第１の軌道は、閉曲線であり、
前記第１部位設定手段は、前記第１の部位の位置を前記閉曲線上に設定する、請求項１５に記載のゲームプログラム。
【請求項１７】
前記第１の軌道は短径が０以上の楕円又は円軌道であって、
前記第１部位設定手段は、前記楕円又は円の中心角を前記オブジェクトの移動量に応じて設定し、当該中心角によって定められる前記楕円又は円上の点を前記第１の部位の位置として設定する、請求項１５に記載のゲームプログラム。
【請求項１８】
前記第１部位設定手段は、前記楕円又は円の中心の位置を前記オブジェクトの位置に基づいて設定する中心位置設定手段を含む、請求項１７に記載のゲームプログラム。
【請求項１９】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第２の部位の位置を設定する第２部位設定手段として、前記コンピュータをさらに機能させ、
前記第２部位設定手段は、前記オブジェクトの位置に応じて設定された第２の軌道上を、前記オブジェクトの移動量に応じた量で前記第２の部位を移動させることで前記第２の部位の位置を設定し、
前記第１部位設定手段は、前記第２の部位の位置に対する相対位置として、前記第１の部位の位置を設定し、
前記表示制御手段は、前記第１の部位及び前記第２の部位を含む画像を前記画面に表示する、請求項１５に記載のゲームプログラム。
【請求項２０】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第２の部位の位置を設定する第２部位設定手段として、前記コンピュータをさらに機能させ、
前記第２部位設定手段は、前記オブジェクトの位置に応じて設定された第２の軌道上を、前記オブジェクトの移動量に応じた量で前記第２の部位を移動させることで前記第２の部位の位置を設定し、
前記表示制御手段は、前記第１の部位及び前記第２の部位を含む画像を前記画面に表示し、
前記オブジェクトが前記仮想空間内を移動している場合、前記第１の部位及び前記第２の部位は、前記第１の軌道上及び前記第２の軌道上をそれぞれ周期的に移動するとともに、前記第１の部位の周期は前記第２の部位の周期の２倍である、請求項１５に記載のゲームプログラム。
【請求項２１】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第３の部位の位置を設定する第３部位設定手段として、前記コンピュータをさらに機能させ、
前記第３部位設定手段は、前記オブジェクトの位置に応じて設定された第３の軌道上を、前記オブジェクトの移動量に応じた量で前記第３の部位を移動させることで前記第３の部位の位置を設定するとともに、前記第２の部位の位置に対する相対位置として、前記第３の部位の位置を設定し、
前記表示制御手段は、前記第１の部位、前記第２の部位、及び前記第３の部位を含む画像を前記画面に表示し、
前記オブジェクトが前記仮想空間内を移動している場合、前記第３の部位は、前記第３の軌道上を前記第１の部位の周期と同じ周期で移動し、かつ、前記第１の部位と前記第３の部位とは、所定の位相差を有する、請求項２０に記載のゲームプログラム。
【請求項２２】
前記第２の軌道は短径が０以上の楕円又は円軌道であって、
前記第２部位設定手段は、前記楕円又は円の中心角を前記オブジェクトの移動量に応じて設定し、当該中心角によって定められる前記楕円又は円上の点を前記第２の部位の位置として設定する、請求項１９に記載のゲームプログラム。
【請求項２３】
前記オブジェクトは前記仮想空間内に存在する所定の地形オブジェクト上を移動し、
前記第１部位設定手段は、
前記第１の部位が前記地形オブジェクトの内部に存在するか否かを判定する判定手段と、
前記判定手段によって前記第１の部位が前記地形オブジェクトの内部に存在すると判定された場合に、前記第１の部位の位置を前記地形オブジェクトの表面に補正する位置補正手段とを含む、請求項１５又は１９に記載のゲームプログラム。
【請求項２４】
前記オブジェクトは前記仮想空間内に存在する所定の地形オブジェクト上を移動し、
前記第１部位設定手段は、単位時間あたりの前記オブジェクトの移動量が所定の閾値より少ない場合、前記第１の部位の位置を前記地形オブジェクトに近づけるようにして、前記第１の部位の位置をさらに設定する、請求項１５に記載のゲームプログラム。
【請求項２５】
前記オブジェクトは、人オブジェクトであって、前記第１の部位及び前記第３の部位は足首であり、前記第２の部位は腰である、請求項２１に記載のゲームプログラム。
【請求項２６】
前記第１部位設定手段によって設定された足首の位置と、前記第２部位設定手段によって設定された腰の位置とに基づいて、膝の状態を設定する膝状態設定手段をとして、前記コンピュータをさらに機能させる、請求項２５に記載のゲームプログラム。
【請求項２７】
前記オブジェクト位置設定手段は、所定の操作入力に基づいて前記オブジェクトの前記仮想空間内での位置を設定する、請求項１５に記載のゲームプログラム。
【請求項２８】
仮想空間内のオブジェクトを動作させるゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
前記オブジェクトの前記仮想空間内での位置を設定するオブジェクト位置設定手段と、
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対動作として、前記オブジェクトの第１の部位を動作させる第１部位動作手段と、
前記第１部位動作手段によって動作させた前記第１の部位を含む画像を画面に表示する表示制御手段として、前記コンピュータを機能させ、
前記第１部位動作手段は、前記オブジェクトの位置に応じて設定された第１の軌道上を、所定期間内に前記第１の部位を移動させることで、前記第１の部位を動作させる、ゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム装置及びゲームプログラムに関し、より特定的には、予め記憶されたモーションデータを用いてオブジェクトを動作させるゲーム装置及びゲームプログラムに関する。
【背景技術】
【０００２】
従来より、予め記憶されているモーションデータを用いて、仮想３次元空間等に存在するゲームキャラクタ等のオブジェクトを動作させるゲーム装置が存在する。例えば、特許文献１では、モーションデータを用いて多様なオブジェクトの動作を実現しつつ、モーションデータのデータ量を削減する方法が開示されている。具体的には、特許文献１に記載の技術では、プレイヤキャラクタに関する予め記憶された複数のモーションデータをタッチパネルのタッチ位置に応じてブレンドすることにより、プレイヤキャラクタがボールをドリブルする様子を画面上に表示している。これにより、モーションデータのデータ量が少ない場合でも、プレイヤキャラクタの多様な動作を表示可能としている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１０２５０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１に記載の技術では、ブレンドするための複数のモーションデータを予め記憶しておく必要がある。従って、より複雑なオブジェクトの動作を表現するためには、予め記憶しておくモーションデータのデータ量が多くなり、モーションデータのデータ量やその作成に要するコストを削減するという点では不十分な場合があった。
【０００５】
それ故、本発明の目的は、多様なオブジェクトの動作を実現しつつ、モーションデータのデータ量及びその作成コストを削減することが可能なゲーム装置及びゲームプログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号及び補足説明等は、本発明の理解を助けるために後述する実施例との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【０００７】
本発明は、仮想空間内でオブジェクト（プレイヤキャラクタ）を動かすゲーム装置であって、オブジェクト位置設定手段（Ｓ１、Ｓ９を実行するＣＰＵ１０。以下、単にステップ番号のみを記載する。）と、第１部位設定手段（Ｓ５、Ｓ６）と、表示制御手段（Ｓ１０）とを備える。オブジェクト位置設定手段は、上記オブジェクトの上記仮想空間内での位置を設定する。第１部位設定手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対位置として、上記オブジェクトの第１の部位（右足首Ａｒ等）の位置（位置Ｐａｒ等）を設定する。表示制御手段は、第１部位設定手段によって設定された上記第１の部位を含む画像を画面に表示する。そして、第１部位設定手段は、上記オブジェクトの位置に応じて設定された第１の軌道（軌道ＡｒＰ等）上を、上記オブジェクトの移動量に応じた量で上記第１の部位を移動させることで、上記第１の部位の位置を設定する。
【０００８】
なお、上記第１の部位とは、上記オブジェクトと一体となって動作可能な上記オブジェクトの一部位を含むものであり、例えば、上記オブジェクトの身体の一部位であってもよいし、上記オブジェクトと付随して動作する別のオブジェクトであってもよい。
【０００９】
上記によれば、オブジェクトの一部位である第１の部位が移動する第１の軌道を設定することができ、第１の部位の位置を、第１の軌道上に設定し、表示することができる。これにより、オブジェクトの多様な表示を行うことができるとともに、第１の部位の位置に応じたモーション画像を予め用意する必要がなく、画像データのデータ量を削減することができる。
【００１０】
本発明では、上記第１の軌道は、閉曲線であってもよい。そして、第１部位設定手段は、上記第１の部位の位置を上記閉曲線上に設定する。
【００１１】
ここで、閉曲線とは、始点と終点との位置が一致する曲線であり、多角形を含む広い概念の曲線である。
【００１２】
この構成によれば、第１の部位を、閉曲線上を移動させることができる。
【００１３】
本発明では、上記第１の軌道は短径が０以上の楕円又は円軌道であってもよい。そして、第１部位設定手段は、上記楕円又は円の中心角（θａｒ等）を上記オブジェクトの移動量に応じて設定し、当該中心角によって定められる上記楕円又は円上の点を上記第１の部位の位置として設定する。
【００１４】
ここで、短径が０の楕円とは、所定の長さを有する線分である。また、楕円又は円の中心角とは、楕円又は円の中心と当該楕円又は円上の点とを結ぶ線分が、予め定められた直線（当該中心と当該楕円又は円上の定点とを結ぶ線分）となす角である。また、楕円の中心とは、当該楕円の長軸と短軸との交点である。
【００１５】
この構成によれば、第１の部位を、中心角に基づいて楕円又は円上を移動させることができる。また、オブジェクトの移動量に応じて上記中心角が設定されることにより、オブジェクトの移動量に応じた量で第１の部位を移動させることができる。
【００１６】
本発明では、上記第１部位設定手段は、中心位置設定手段（Ｓ２０）を含んでもよい。中心位置設定手段は、上記楕円又は円の中心（中心Ｏａｒ等）の位置を上記オブジェクトの位置に基づいて設定する。
【００１７】
この構成によれば、仮想空間における第１の部位の位置を上記オブジェクトの位置に応じて設定することができる。これにより、上記オブジェクトが仮想空間を移動することに伴って、上記第１の部位の位置を移動させることができる。
【００１８】
本発明では、第２部位設定手段（Ｓ５）をさらに備えてもよい。第２部位設定手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対位置として、上記オブジェクトの第２の部位（腰Ｗ）の位置（位置Ｐｗ）を設定する。そして、第２部位設定手段は、上記オブジェクトの位置に応じて設定された第２の軌道（軌道ＷＰ）上を、上記オブジェクトの移動量に応じた量で上記第２の部位を移動させることで上記第２の部位の位置を設定する。さらに、第１部位設定手段は、上記第２の部位の位置に対する相対位置として、上記第１の部位の位置を設定する。そして、表示制御手段は、上記第１の部位及び上記第２の部位を含む画像を上記画面に表示する。
【００１９】
この構成によれば、上記オブジェクトの一部位である第２の部位が移動する第２の軌道を設定することができ、第２の部位の位置を、第２の軌道上に設定することができる。そして、第１の部位の位置を第２の部位に対する相対位置として設定することができる。これにより、オブジェクトの移動に応じて、第２の部位の移動させることができ、さらに第２の部位の移動に伴って第１の部位を移動させることができる。
【００２０】
本発明では、第２部位設定手段（Ｓ５）をさらに備えてもよい。第２部位設定手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対位置として、上記オブジェクトの第２の部位（腰Ｗ）の位置（位置Ｐｗ）を設定する。また、第２部位設定手段は、上記オブジェクトの位置に応じて設定された第２の軌道（軌道ＷＰ）上を、上記オブジェクトの移動量に応じた量で上記第２の部位を移動させることで上記第２の部位の位置を設定する。表示制御手段は、上記第１の部位及び上記第２の部位を含む画像を上記画面に表示する。そして、上記オブジェクトが上記仮想空間内を移動している場合、上記第１の部位及び上記第２の部位は、上記第１の軌道上及び上記第２の軌道上をそれぞれ周期的に移動する。この場合において、上記第１の部位の周期は上記第２の部位の周期の２倍である。
【００２１】
この構成によれば、第１の部位は第１の軌道上を、第２の部位は第２の軌道上をそれぞれ周期的に移動する。そして、第１の部位の周期を第２の部位の周期の２倍に設定することにより、第１の部位を第２の部位と連動して動作させることができる。
【００２２】
本発明では、第３部位設定手段（Ｓ６）をさらに備えてもよい。第３部位設定手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対位置として、上記オブジェクトの第３の部位（左足首Ａｌ）の位置を設定する。また、第３部位設定手段は、上記オブジェクトの位置に応じて設定された第３の軌道上（軌道ＡｌＰ）を、上記オブジェクトの移動量に応じた量で上記第３の部位を移動させることで上記第３の部位の位置を設定する。さらに、第３部位設定手段は、上記第２の部位の位置に対する相対位置として、上記第３の部位の位置を設定する。表示制御手段は、上記第１の部位、上記第２の部位、及び上記第３の部位を含む画像を上記画面に表示する。そして、上記オブジェクトが上記仮想空間内を移動している場合、上記第３の部位は、上記第３の軌道上を上記第１の部位の周期と同じ周期で移動し、かつ、上記第１の部位と上記第３の部位とは、所定の位相差を有する。
【００２３】
この構成によれば、第１の部位及び第２の部位に加えて、第３の部位の位置を設定することができる。これにより、第１の部位、第２の部位、及び第３の部位を画面上に表示することができる。また、第１の部位と第３の部位を所定の位相差で移動させることにより、第１の部位と第３の部位とが連動して動作する様子を画面に表示することができ、例えば、人が歩いたり走ったりする様子を表示することができる。
【００２４】
本発明では、上記第２の軌道は短径が０以上の楕円又は円軌道であってもよい。この場合において、第２部位設定手段は、上記楕円又は円の中心角を上記オブジェクトの移動量に応じて設定し、当該中心角によって定められる上記楕円又は円上の点を上記第２の部位の位置として設定する。
【００２５】
この構成によれば、第２の部位を、中心角に基づいて楕円又は円上を移動させることができる。また、上記オブジェクトの移動量に応じて上記中心角が設定されることにより、オブジェクトの移動量に応じた量で第２の部位を移動させることができる。
【００２６】
本発明では、上記オブジェクトは上記仮想空間内に存在する所定の地形オブジェクト上を移動してもよい。この場合において、第１部位設定手段は、判定手段（Ｓ３６）と、位置補正手段（Ｓ３９）とを含む。判定手段は、上記第１の部位が上記地形オブジェクトの内部に存在するか否かを判定する。位置補正手段は、判定手段によって上記第１の部位が上記地形オブジェクトの内部に存在すると判定された場合に、上記第１の部位の位置を上記地形オブジェクトの表面に補正する位置補正手段を含む。
【００２７】
この構成によれば、第１の部位が地形オブジェクトの内部に存在する場合、第１の部位の位置を補正することができる。これにより、第１の部位が地面の下に表示されることを防止することができる。
【００２８】
本発明では、上記オブジェクトは上記仮想空間内に存在する所定の地形オブジェクト上を移動してもよい。この場合において、第１部位設定手段は、単位時間あたりの上記オブジェクトの移動量が所定の閾値より少ない場合、上記第１の部位の位置を上記地形オブジェクトに近づけるようにして、上記第１の部位の位置をさらに設定する（Ｓ５２）。
【００２９】
この構成によれば、上記オブジェクトが地形オブジェクト上を移動している場合において、その移動する速さが所定の速さより遅い場合、第１の部位の位置を地形オブジェクトに近づけることができる。これにより、上記オブジェクトが低速で移動している場合においても、第１の部位に関する表示を自然な表示にすることができる。
【００３０】
本発明では、上記オブジェクトは、人オブジェクトであって、上記第１の部位及び上記第３の部位は足首であり、上記第２の部位は腰であってもよい。
【００３１】
この構成によれば、人オブジェクトの足の動きを表現することができる。
【００３２】
本発明では、第１部位設定手段によって設定された足首の位置と、第２部位設定手段によって設定された腰の位置とに基づいて、膝の状態（膝の角度及び膝の向き）を設定する膝状態設定手段（Ｓ７）をさらに備えてもよい。
【００３３】
この構成によれば、膝の角度や向きを設定することができ、足の自然な動きを実現することができる。
【００３４】
本発明では、オブジェクト位置設定手段は、所定の操作入力に基づいて上記オブジェクトの上記仮想空間内での位置を設定してもよい。
【００３５】
この構成によれば、プレイヤからの操作入力に基づいて、上記オブジェクトの位置を設定することができる。
【００３６】
本発明では、仮想空間内のオブジェクトを動作させるゲーム装置であって、オブジェクト位置設定手段と、第１部位動作手段と、表示制御手段とを備える。オブジェクト位置設定手段は、上記オブジェクトの上記仮想空間内での位置を設定する。第１部位動作手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対動作として、上記オブジェクトの第１の部位を動作させる。表示制御手段は、上記第１部位動作手段によって動作させた上記第１の部位を含む画像を画面に表示する。そして、第１部位動作手段は、上記オブジェクトの位置に応じて設定された第１の軌道上を、所定期間内に上記第１の部位を移動させることで、上記第１の部位を動作させる。
【００３７】
この構成によれば、オブジェクトの一部位である第１の部位が移動する第１の軌道を設定することができ、第１の部位を、第１の軌道上で動作させることができる。これにより、オブジェクトの多様な表示を行うことができるとともに、第１の部位の動作に応じたモーション画像を予め用意する必要がなく、画像データのデータ量を削減することができる。
【００３８】
また、本発明は、ゲーム装置のコンピュータを上記各手段として機能させるゲームプログラムの形態で実施されてもよい。
【発明の効果】
【００３９】
本発明によれば、オブジェクトの一部位が移動する軌道を設定し、その軌道上を当該部位が移動することにより、オブジェクトの多様な表示を行うことができる。これにより、オブジェクトの部位の位置に応じたモーション画像を予め用意する必要がなく、画像データのデータ量や画像データを製作するためのコストを削減することができる。
【図面の簡単な説明】
【００４０】
【図１】ゲームシステム１の外観図
【図２】ゲーム装置３の構成を示すブロック図
【図３】コントローラ５を上側後方から見た斜視図
【図４】コントローラ５を下側前方から見た斜視図
【図５】ゲームキャラクタの足首及び腰が動く様子を横から見た図
【図６】腰Ｗの移動の仕方を示した図
【図７】右足首Ａｒの移動の仕方を示した図
【図８Ａ】人が歩く様子を横から見た場合において、右足又は左足が進行方向前後に位置している様子を示した図
【図８Ｂ】人が歩く様子を横から見た場合において、右足又は左足が地面について膝が伸びた状態を示した図
【図９】ゲーム装置３のメインメモリに記憶される主なデータを示す図
【図１０】ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャート
【図１１】図１０における腰の軌道及び位置設定処理（ステップＳ５）の詳細を示すフローチャート
【図１２】図１０における右足首の軌道及び位置設定処理（ステップＳ６）の詳細を示すフローチャート
【図１３】図１０における膝位置設定処理（ステップＳ７）の詳細を示すフローチャート
【図１４】図１０におけるモデルの設定処理（ステップＳ８）の詳細を示すフローチャート
【図１５】ステップＳ３７における足首の高さを地面の高さに設定する処理を示した図
【図１６】ステップＳ３９における足首の高さを地面の高さに近づける処理を示した図
【発明を実施するための形態】
【００４１】
（ゲームシステムの全体構成）
図１を参照して、本発明の一実施形態のゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置及びゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、コントローラ５、及びマーカ部６を含む。本システムは、コントローラ５を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００４２】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００４３】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部６が設置される。マーカ部６は、その両端に２つのマーカ６Ｒ及び６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部６はゲーム装置３に接続されており、ゲーム装置３はマーカ部６が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００４４】
コントローラ５は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与える入力装置である。コントローラ５とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは有線で接続されてもよい。
【００４５】
図３は、コントローラ５を上側後方から見た斜視図ある。図４は、コントローラ５を下側前方から見た斜視図である。コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ５に設けられたボタンを押下すること、及び、コントローラ５自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【００４６】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、及び電源ボタン３２ｈが設けられる。本明細書では、これらのボタン３２ａ〜３２ｈが設けられるハウジング３１の上面を「ボタン面」と呼ぶことがある。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆ及び電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、プレイヤがホームボタン３２ｆ又は電源ボタン３２ｈを誤って押下することを防止することができる。また、ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカからの音を外部に放出するための音抜き孔３１ａが形成されている。
【００４７】
ハウジング３１の後面にはコネクタ３３が設けられており、コントローラ５に他の機器を接続するために利用される。また、ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のメインコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ５の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００４８】
また、コントローラ５は撮像情報演算部３５を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒ及び６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００４９】
（ゲーム装置３の内部構成）
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、及びＡＶ−ＩＣ１５等を有する。
【００５０】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４及びＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩ１１の内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅ又は外部メインメモリ１２に読み出したデータを書き込む。
【００５１】
また、システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、及び内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００５２】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００５３】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００５４】
上述のように生成された画像データ及び音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００５５】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、及びメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００５６】
入出力プロセッサ１１ａは、無線通信モジュール１８及びアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８及びアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２及び無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データ又は途中データ）が記憶されてもよい。
【００５７】
また、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３及び無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅ又は外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００５８】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０及びメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００５９】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、及びイジェクトボタン２６が設けられる。電源ボタン２４及びリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００６０】
［ゲーム処理の概要］
次に、図５〜図８Ｂを参照して、本実施形態のゲーム処理の概要について説明する。本実施形態では、３次元ゲーム空間上に存在するプレイヤキャラクタ等のゲームキャラクタが、当該ゲーム空間内を移動する場合において、移動する際の当該ゲームキャラクタの足の動きを画面上にリアルに表示するものとする。具体的には、本実施形態のゲームは、プレイヤチームのキャラクタと相手チームのキャラクタとがバスケットボールの試合を行うゲームである。プレイヤによるコントローラ５に対する入力に応じて、ゲームキャラクタがバスケットコート上を歩いたり走ったりする。通常、ゲームキャラクタがゲーム空間を歩いたりする場合には、予め記憶された複数のモーションの画像を順次画面上に表示することによって、ゲームキャラクタがゲーム空間を歩いたりする様子が画面上に表示される。本実施形態では、ゲームキャラクタの足の動きを計算により求めることによって、予め記憶されるべきモーションデータの量を削減する。本実施形態では、ゲームキャラクタの足首が動く軌道及びゲームキャラクタの腰が動く軌道が定められる。そして、当該軌道に沿って足首及び腰を移動させることによって、足首及び腰の位置を動かし、ゲームキャラクタが歩行等する様子を画面上に表示する。
【００６１】
図５は、ゲームキャラクタの足首及び腰が動く様子を横から見た図である。図５では、ゲームキャラクタがゲーム空間上を歩行する様子を横から見た場合において、ゲームキャラクタの腰より下の部位のみが表示されている。図５に示されるように、ゲームキャラクタの体の一部位である腰Ｗとゲームキャラクタの右足首Ａｒとが、図示されている。また、腰Ｗの軌道ＷＰと、右足首Ａｒの軌道ＡｒＰが図示されている。身体の各部位は、それぞれに設定された軌道上を移動する。すなわち、腰Ｗは、軌道ＷＰ上を移動し、右足首Ａｒは軌道ＡｒＰ上を移動する。より具体的には、腰Ｗの位置を示す位置Ｐｗが軌道ＷＰ上を移動することにより、腰Ｗが動作し、右足首Ａｒの位置を示す位置Ｐａｒが軌道ＡｒＰ上を移動することにより、右足首Ａｒが動作する。また、図示されていないが、左足首Ａｌも右足首Ａｒと同様に、左足首Ａｌに設定された軌道ＡｌＰ上を移動する。このように、各部位（腰Ｗ、右足首Ａｒ及び左足首Ａｌ）に設定された軌道上を、各部位がそれぞれ移動することにより、全体として、ゲームキャラクタが動作する様子が画面上に表示される。
【００６２】
次に、各部位がそれぞれの軌道上を移動する移動の仕方について説明する。各部位は、それぞれに設定された楕円軌道の中心角をパラメータとして、当該中心角に対応する楕円軌道上の位置に移動する。上記各部位の中心角は、ゲームキャラクタがゲーム空間を移動する速度（実際には速度と時間の積である移動量）に応じて、変化する。図６は、腰Ｗの移動の仕方を示した図である。図６に示されるように、腰Ｗの軌道ＷＰは、実際には直線であるが、短径（楕円の短軸の長さ）が０の楕円とみなすことができる。図６では、説明を分かりやすくするために、楕円ＷＰ’が描かれている。腰Ｗの位置Ｐｗは、楕円ＷＰ’の中心角θｗ（楕円ＷＰ’上の点と楕円ＷＰ’の中心Ｏｗとを結ぶ線分が、楕円ＷＰ’の長軸となす角度）の大きさに応じて変化する。すなわち、腰Ｗの位置Ｐｗは、図６に示されるように、中心角θｗに対応する楕円ＷＰ’上の点Ｐから直線軌道ＷＰ（短径が０の楕円軌道ＷＰ）へ下ろした垂線の足である。従って、ゲームキャラクタがゲーム空間を一定の速度で移動する場合において、上記中心角θｗを一定の速度で変化させることにより、当該ゲームキャラクタの移動に応じて、腰Ｗの位置Ｐｗも変化し、結果として腰Ｗが動作する。
【００６３】
同様に、右足首Ａｒについても、軌道ＡｒＰの中心角を変化させることによって、軌道ＡｒＰ上を移動させることができる。図７は、右足首Ａｒの移動の仕方を示した図である。図７に示されるように、右足首Ａｒの位置Ｐａｒは、楕円軌道ＡｒＰの中心角θａｒの値に応じて定められる。当該中心角θａｒは、ゲーム空間におけるゲームキャラクタの移動量に応じて変化する。また、図示は省略するが、右足首Ａｒと同様、左足首Ａｌの位置Ｐａｌについても、左足首Ａｌに設定された楕円軌道ＡｌＰの中心角θａｌの値に応じて定められる。
【００６４】
上述したように、各部位は、それぞれに設定された楕円軌道（短径の長さが０の楕円を含む楕円軌道）上を移動する。そして、各部位の位置は、それぞれに定められる中心角をパラメータとして、変化する。ここで、ゲームキャラクタの移動に伴う腰Ｗの中心角θｗの変化量は、左右足首の中心角の変化量の倍に設定される。すなわち、左右足首が各楕円軌道上を移動する周期（左右足首の周期）は、腰Ｗが楕円軌道ＷＰ上を移動する周期（腰の周期）の倍に設定される（右足首の移動周期と左足首の移動周期は同じに設定される）。例えば、右足首Ａｒが軌道ＡｒＰ上を半回転する間（中心角θａｒが０からπまで変化する間）、腰Ｗは軌道ＷＰの最上点から最下点を通って最上点まで移動する（すなわち、腰Ｗは軌道ＷＰ上を１回転する）。同様に、左足首Ａｌが軌道ＡｌＰ上を半回転する間、腰Ｗは軌道ＷＰの最上点から最下点を通って最上点まで移動する。
【００６５】
図８Ａは、人が歩く様子を横から見た場合において、右足又は左足が進行方向前後に位置している様子を示した図である。図８Ｂは、人が歩く様子を横から見た場合において、右足又は左足が地面について膝が伸びた状態を示した図である。人が歩く場合や走る場合、例えば、右足又は左足が伸びた状態になった場合（図８Ｂに示されるように、右足又は左足が体に対して略垂直の状態になった場合）に、腰は最上点に位置し、右足又は左足が曲がった場合（図８Ａに示されるように、右足又は左足が進行方向前後に位置している場合）に、腰は最下点に位置すると考えられる。従って、例えば、右足が進行方向に対して前後に１往復する間、腰は上下方向に２往復することになる。このように、足首の移動周期を腰の移動周期の倍に設定することにより、実際に人が歩いたり走ったりする場合のように、足の動きと腰の動きが連動しているように表示することができる。
【００６６】
また、右足首Ａｒと左足首Ａｌとは、位相が逆に設定される。すなわち、中心角θａｒと中心角θａｌとは、位相がπだけずれている。このように、左右足首の位相をずらすことにより、左右の足が交互に前後する動作を表現することができる。
【００６７】
以上のように、足首の移動周期を腰の移動周期の倍に設定し、かつ、左右足首を逆位相とすることにより、ゲームキャラクタがゲーム空間を歩いたり走ったりする動作を、実際に人が歩いたり走ったりする場合のように、リアルに表現することができる。
【００６８】
［ゲーム処理の詳細］
次に、図９〜図１６を参照してゲーム装置３において実行される処理の詳細について説明する。まず、ゲーム装置３における処理において用いられる主なデータについて図９を用いて説明する。図９は、ゲーム装置３のメインメモリ（外部メインメモリ１２又は内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。図９に示されるように、ゲーム装置３のメインメモリには、ゲームプログラム６１、操作データ６２、及びゲーム処理用データ６４が記憶される。
【００６９】
ゲームプログラム６１は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部又は全部が読み込まれてメインメモリのプログラム領域に記憶される。
【００７０】
操作データ６２は、コントローラ５からゲーム装置３へ送信されてくる操作データである。コントローラ５からゲーム装置３へ、例えば、１／２００秒に１回の割合で操作データが送信されるので、メインメモリに記憶される操作データ６２はこの割合で更新される。操作データ６２には、各ボタン（例えば、十字ボタン３２ａ）が押されたか否かを示すボタン操作データ６３等が含まれる。
【００７１】
ゲーム処理用データ６４は、後述するゲーム処理（図１０）において用いられるデータである。ゲーム処理用データ６４は、キャラクタ状態データ６５、腰角度データ６６、足首角度データ６７、腰軌道データ６８、足首軌道データ６９、腰位置データ７０、足首位置データ７１、及び画像データ７２を含む。ゲーム処理用データ６４には、これらの他に相手キャラクタの位置やボールの位置を示すデータ、地面（コート）やゴール等ゲーム空間に関するデータやゲーム状況に関するデータ等、ゲーム処理に必要なデータが含まれる。
【００７２】
キャラクタ状態データ６５は、ゲーム空間におけるプレイヤキャラクタの位置、プレイヤキャラクタの身体の向き、及び、プレイヤキャラクタの速度を示すデータである。腰角度データ６６は、上述した腰の軌道ＷＰにおける腰の位置を示すデータであり、上記中心角θｗを示すデータである。足首角度データ６７は、上述した各足首の軌道（楕円軌道ＡｒＰ及び楕円軌道ＡｌＰ）における各足首の位置を示すデータであり、上記中心角θａｒ及び中心角θａｌを示すデータである。
【００７３】
腰軌道データ６８は、腰の軌道ＷＰに関するデータであり、腰の軌道ＷＰのゲーム空間における位置（軌道ＷＰの中心Ｏｗの位置）、軌道ＷＰの短軸及び長軸の長さ、短軸又は長軸の傾き（短軸又は長軸のゲーム空間固定座標軸に対する傾き）等を示すデータである。足首軌道データ６９は、各足首の軌道（楕円軌道ＡｒＰ及び楕円軌道ＡｌＰ）に関するデータであり、各足首の軌道のゲーム空間における位置（軌道の中心Ｏａｒ及び中心Ｏａｌの位置）、各軌道の短軸及び長軸の長さ、短軸又は長軸の傾き（短軸又は長軸のゲーム空間固定座標軸に対する傾き）等を示すデータである。
【００７４】
腰位置データ７０は、ゲーム空間における腰の位置Ｐｗを示すデータである。足首位置データ７１は、ゲーム空間における足首の位置（右足首の位置Ｐａｒ及び左足首の位置Ｐａｌ）を示すデータである。
【００７５】
画像データ７２は、プレイヤキャラクタや各種オブジェクトに関する画像データである。プレイヤキャラクタの画像データとして、例えば、基本的な姿勢（プレイヤキャラクタが直立状態である場合の姿勢）の画像がメインメモリに記憶される。プレイヤキャラクタの画像は、たとえば３次元のモデルとして記憶されるが、それ以外の形態によって記憶されてもよい。ここで、基本的な姿勢は、当該姿勢をしたキャラクタの３次元モデルそのものであってもよいし、別途記憶される当該３次元モデルに対してどのような姿勢にするかを示す制御データであってもよい。
【００７６】
図１０は、ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムや各種オブジェクト（ゲームキャラクタやボール、地面等）の画像（画像データ７２）等がメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１０に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、図１０では、本発明に直接関連しないゲーム処理については記載を省略し、上述したゲームキャラクタの足の動きに関する処理についてのみ主に説明する。
【００７７】
まず、ステップＳ１において、ＣＰＵ１０は、各種オブジェクトをゲーム空間上に配置する。具体的には、ＣＰＵ１０は、プレイヤによって操作されるプレイヤキャラクタや地形（地面）を表す地形オブジェクト等をゲーム空間上に配置し、プレイヤキャラクタ等の位置をキャラクタ状態データ６５等としてメインメモリに記憶する。次に、ＣＰＵ１０は、ステップＳ２の処理を実行する。
【００７８】
ステップＳ２において、ＣＰＵ１０は、プレイヤによって入力されたコントローラ５からの操作データを取得する。具体的には、ＣＰＵ１０は、メインメモリに記憶されたボタン操作データ６３をメインメモリから取得する。次に、ＣＰＵ１０は、ステップＳ３の処理を実行する。
【００７９】
ステップＳ３において、ＣＰＵ１０は、プレイヤキャラクタの身体の向き及び速度を決定する。具体的には、ＣＰＵ１０は、ステップＳ２において取得されたボタン操作データ６３に基づいて、プレイヤキャラクタの身体の向き、及び、プレイヤキャラクタが移動する速度（方向と速さ）を決定する。ここで、プレイヤキャラクタの身体の向きとプレイヤキャラクタが移動する方向とは、必ずしも一致させる必要はない。例えば、プレイヤキャラクタの身体の向きは、ゲーム空間上の所定の位置（例えば、ボールが存在する位置）を向くように設定される。また、例えば、プレイヤによってコントローラ５の十字ボタン３２ａが押されている場合、ＣＰＵ１０は、十字ボタン３２ａが示す方向（例えば、十字ボタン３２ａの右ボタンが押されている場合は右方向）をプレイヤキャラクタが移動する方向として決定する。さらに、例えば、プレイヤキャラクタが移動する速さは、予め定められた所定の速さに決定される。プレイヤキャラクタの身体の向きを決定する。そして、ＣＰＵ１０は、プレイヤキャラクタの身体の向き及び速度をキャラクタ状態データ６５として、メインメモリに記憶する。なお、プレイヤキャラクタが移動する速度やプレイヤキャラクタの身体の向きはどのようにして決定されてもよく、例えば、Ａボタン３２ｄやＢボタン３２ｉが押されているか否かに応じて、速度（方向及び速さ）が決定されてもよし、プレイヤによるコントローラ５の操作に応じて、身体の向きが設定されてもよい。また、コントローラ５のコネクタ３３にさらにスティック等を備えた拡張コントローラを接続し、当該スティックに対する操作に基づいて決定されてもよい。それ以外にも、ゲーム処理においてプレイヤキャラクタの移動速度や身体の向きをどのように設定してもよい。次に、ＣＰＵ１０は、ステップＳ４の処理を実行する。
【００８０】
ステップＳ４において、ＣＰＵ１０は、プレイヤキャラクタの身体の向きに対する相対速度が算出される。具体的には、ＣＰＵ１０は、ステップＳ３で決定されたプレイヤキャラクタの移動速度と身体の向きとに基づいて、身体の向きの相対速度（「身体の向き」方向の速度成分）を算出する。次に、ＣＰＵ１０は、ステップＳ５の処理を実行する。
【００８１】
ステップＳ５において、ＣＰＵ１０は、腰の軌道及び位置を設定する。ここでの処理は、上述した腰Ｗの軌道ＷＰのゲーム空間における位置、及びその軌道ＷＰ内での腰の位置Ｐｗを設定する処理である。ステップＳ５における処理の詳細を、図１１を用いて説明する。図１１は、図１０における腰の軌道及び位置設定処理（ステップＳ５）の詳細を示すフローチャートである。
【００８２】
まず、ＣＰＵ１０は、ステップＳ２０の処理を実行する。ステップＳ２０において、ＣＰＵ１０は、ゲーム空間における腰の楕円軌道ＷＰの位置を設定する。ここで、軌道ＷＰは、短径が０の楕円であり、実際には所定の長さ（楕円の長軸の長さ）を有する線分である。また、ゲーム空間における楕円軌道ＷＰの位置（軌道ＷＰの位置）とは、軌道ＷＰの中心Ｏｗのゲーム空間における位置である。ステップＳ２０において、ＣＰＵ１０は、ゲーム空間における現在の軌道ＷＰの位置と移動速度とに基づいて、軌道ＷＰの中心Ｏｗの位置を設定する。具体的には、ＣＰＵ１０は、プレイヤキャラクタが移動している場合、その移動速度に応じて現在の軌道ＷＰの位置（前回、ステップＳ２０が実行された際に設定された軌道ＷＰの中心Ｏｗの位置）を変更する。そして、ＣＰＵ１０は、軌道ＷＰの位置を腰軌道データ６８として、メインメモリに記憶する。なお、ステップＳ２０において、軌道ＷＰの位置に加えて、軌道ＷＰの向きも設定されてもよい。軌道ＷＰの向きとは、軌道ＷＰの短径が０でない場合において、短軸のゲーム空間における向きである。このように軌道ＷＰの向きが設定されることにより、プレイヤキャラクタの腰の向きが設定される。また、本実施形態では、軌道ＷＰの長軸の向きはゲーム空間における鉛直方向（上下方向）に設定されるが、長軸の向きもゲーム状況（プレイヤキャラクタの速度、周辺の環境や操作状況等）に応じて設定されてもよい（この場合、腰Ｗは上下方向に対して所定の傾きを有して動作する）。次に、ＣＰＵ１０は、ステップＳ２１の処理を実行する。
【００８３】
ステップＳ２１において、ＣＰＵ１０は、現在の腰の中心角θｗを取得する。具体的には、ＣＰＵ１０は、メインメモリを参照して、前回のステップＳ２３（後述する）で算出された腰の中心角θｗを取得する。次に、ＣＰＵ１０は、ステップＳ２２の処理を実行する。
【００８４】
ステップＳ２２において、ＣＰＵ１０は、プレイヤキャラクタの移動速度に基づいて、中心角θｗの変化量を算出する。具体的には、ＣＰＵ１０は、ステップＳ３で決定されたプレイヤキャラクタの移動速度に単位時間（１フレーム時間）を掛けて得られる移動量に応じて、中心角θｗの変化量を算出する。中心角θｗの角速度とプレイヤキャラクタの移動速度とは、対応付けされている。すなわち、プレイヤキャラクタの移動速度が大きいときには、プレイヤキャラクタの足や腰の動きも早くなるので、中心角θｗの変化量が大きくなる。次に、ＣＰＵ１０は、ステップＳ２３の処理を実行する。
【００８５】
ステップＳ２３において、ＣＰＵ１０は、中心角θｗに基づいて、腰の位置Ｐｗを決定する。具体的には、ＣＰＵ１０は、ステップＳ２１で取得した現在の腰の中心角θｗにステップＳ２２で算出した中心角θｗの変化量を加えることにより、新たな腰の中心角θｗを算出し、腰角度データ６６としてメインメモリに記憶する。そして、ＣＰＵ１０は、その算出した中心角θｗに基づいて、軌道ＷＰ（短径が０の楕円軌道）上の腰の位置Ｐｗを決定し（図６参照）、腰位置データ７０としてメインメモリに記憶する。ステップＳ２３の処理の後、ＣＰＵ１０は、図１１に示す腰の軌道及び位置設定処理を終了する。
【００８６】
図１０に戻り、ＣＰＵ１０は、次にステップＳ６の処理を実行する。ステップＳ６において、ＣＰＵ１０は、足首の軌道及び位置を設定する。ここでの処理は、上述した足首（右足首Ａｒ及び左足首Ａｌ）の楕円軌道（軌道ＡｒＰ及び軌道ＡｌＰ）のゲーム空間における位置、及びその楕円軌道内での足首の位置（右足首の位置Ｐａｒ及び左足首の位置Ｐａｌ）を設定する処理である。ステップＳ６における処理の詳細を、図１２を用いて説明する。図１２は、図１０における右足首の軌道及び位置設定処理（ステップＳ６）の詳細を示すフローチャートである。なお、図１２では、右足首の軌道及び位置を設定する場合について説明するが、左足首の軌道及び位置についても同じようにして設定される。
【００８７】
まず、ＣＰＵ１０は、ステップＳ３０の処理を実行する。ステップＳ３０において、ＣＰＵ１０は、ゲーム空間における楕円軌道ＡｒＰの向き、及び楕円軌道ＡｒＰの位置を設定する。具体的には、ＣＰＵ１０は、楕円軌道ＡｒＰの向きをステップＳ３で決定されたプレイヤキャラクタの身体の向きに一致させる。ここで、楕円軌道ＡｒＰの向きとは、楕円軌道ＡｒＰの中心Ｏａｒから、当該楕円の長軸と楕円軌道ＡｒＰとの交点（当該楕円の長軸と楕円軌道ＡｒＰとの２つの交点のうち、中心角θａｒ＝π／２となる場合の交点）に向かう方向である。また、ＣＰＵ１０は、楕円軌道ＡｒＰの位置（ゲーム空間における中心Ｏａｒの位置）をステップＳ２０と同様、プレイヤキャラクタの位置と移動速度に基づいて設定する。具体的には、ＣＰＵ１０は、前回ステップＳ３０で設定された楕円軌道ＡｒＰの位置を移動速度に応じた移動量で移動させることによって、楕円軌道ＡｒＰの中心Ｏａｒの位置を設定し、足首軌道データ６９としてメインメモリに記憶する。次に、ＣＰＵ１０は、ステップＳ３１の処理を実行する。
【００８８】
ステップＳ３１において、ＣＰＵ１０は、楕円軌道ＡｒＰの長軸の長さ（長径）、及び前傾角度を設定する。具体的には、ＣＰＵ１０は、まず、ステップＳ４で算出された相対速度（プレイヤキャラクタの速度のうち、身体の向きの速度成分）ベクトルを正規化する。正規化した相対速度ベクトルの値（すなわち、この値は移動速度の大きさにおける「身体の向き」方向の速さの割合を表す）が、例えば０．５以上の場合、ＣＰＵ１０は、プレイヤキャラクタの移動方向は身体の向きに対して「前方向」であると判定する。また、正規化した相対速度ベクトルの値が、例えば−０．５以下の場合、ＣＰＵ１０は、プレイヤキャラクタの移動方向は身体の向きに対して「後方向」であると判定する。一方、正規化した相対速度ベクトルの値が、上記以外の場合（すなわち、−０．５＜相対速度ベクトルの値＜０．５の場合）、ＣＰＵ１０は、プレイヤキャラクタの移動方向は身体の向きに対して「左右方向」であると判定する。そして、ＣＰＵ１０は、「前方向」又は「後方向」の場合、プレイヤキャラクタの移動速度に応じて、楕円軌道ＡｒＰの長軸の長さ（長径）を２．０から２．５の範囲内で設定し、足首軌道データ６９としてメインメモリに記憶する。一方、ＣＰＵ１０は、「左右方向」の場合、プレイヤキャラクタの移動速度に応じて、楕円軌道ＡｒＰの長径を１．２から１．８の範囲内で設定し、足首軌道データ６９としてメインメモリに記憶する。このように、身体の向きの速度（相対速度）に応じて、軌道ＡｒＰの長軸の長さの範囲を設定し、さらにプレイヤキャラクタの移動速度に応じて当該長軸の長さを設定することにより、プレイヤキャラクタの歩幅を速度に応じて設定することができる。すなわち、身体の向きの速度が大きい場合は、歩幅は大きく、身体の向きの速度が小さい場合は、歩幅を小さくすることができ、プレイヤキャラクタの自然な動きを実現することができる。
【００８９】
また、ＣＰＵ１０は、楕円軌道ＡｒＰの長軸の前傾角度（長軸と地面とがなす角度）を設定する。例えば、ＣＰＵ１０は、「前方向」の場合、プレイヤキャラクタの移動速度に応じて、上記前傾角度を５°から２０°の範囲内で設定する。また、ＣＰＵ１０は、「後方向」の場合、上記前傾角度を−１０°に設定し、「左右方向」の場合、上記前傾角度を０°に設定する。そして、ＣＰＵ１０は、設定した前傾角度を足首軌道データ６９としてメインメモリに記憶する。このように、プレイヤキャラクタの移動方向に応じて、上記前傾角度が設定されることにより、プレイヤキャラクタの移動方向に応じた足首の軌道を設定することができる。すなわち、例えば、プレイヤキャラクタの移動方向が「前方向」である場合、楕円軌道ＡｒＰは進行方向側が前傾角度分だけ下がるように傾くよう設定されるため、プレイヤキャラクタの足首の動きをより自然に表現することができる。次に、ＣＰＵ１０は、ステップＳ３２の処理を実行する。
【００９０】
ステップＳ３２において、ＣＰＵ１０は、腰の位置に応じて楕円軌道ＡｒＰの高さを設定する。具体的には、ＣＰＵ１０は、ステップＳ２３で決定された腰の位置Ｐｗに基づいて、腰の軌道ＷＰにおける最上点から位置Ｐｗまでの長さを算出し、算出された長さだけゲーム空間の下方向に楕円軌道ＡｒＰの位置を移動させる（足首軌道データ６９を更新する）。次に、ＣＰＵ１０は、ステップＳ３３の処理を実行する。
【００９１】
ステップＳ３３において、ＣＰＵ１０は、現在の右足首の中心角θａｒを取得する。具体的には、ＣＰＵ１０は、メインメモリを参照して、前回ステップＳ３５（後述する）で算出された中心角θａｒを取得する。次に、ＣＰＵ１０は、ステップＳ３４の処理を実行する。
【００９２】
ステップＳ３４において、ＣＰＵ１０は、プレイヤキャラクタの移動速度に基づいて、右足首の中心角θａｒの変化量を算出する。ステップＳ３４の処理は、上述したステップＳ２２の処理と同様の処理である。具体的には、ＣＰＵ１０は、ステップＳ３で決定されたプレイヤキャラクタの移動速度に単位時間（１フレーム時間）を掛けて得られる移動量に応じて、中心角θａｒの変化量を算出する。ここで、右足首の中心角θａｒの角速度は、腰の中心角θｗの角速度の１／２に設定されるため、右足首の中心角θａｒの変化量は、ステップＳ２２で算出された中心角θｗの変化量の半分となる。
【００９３】
なお、ここでは、プレイヤキャラクタの移動方向がプレイヤの身体の向きと反対方向の場合（すなわち、上記相対速度ベクトルの値が負の場合）においても、中心角θａｒの変化量は負の値ではなく、正の値とする。すなわち、プレイヤキャラクタが前進している状態から身体の向きを変えずに後進する場合、足首の動きを反転させず、軌道上を一定の方向で移動させる。この場合において、相対速度の変化に応じて中心角θａｒの変化量が補正される。具体的には、プレイヤキャラクタの移動方向が急激に変化した場合は、その変化の度合いに応じて中心角θａｒの変化量を大きくしたりする。なお、プレイヤキャラクタが前進している状態から身体の向きを変えずに後進する場合、足首の動きを反転させてもよい。
【００９４】
次に、ＣＰＵ１０は、ステップＳ３５の処理を実行する。
【００９５】
ステップＳ３５において、ＣＰＵ１０は、右足首の中心角θａｒに基づいて、右足首の軌道ＡｒＰ上の位置を算出する。具体的には、ＣＰＵ１０は、ステップＳ３３で取得した現在の右足首の中心角θａｒにステップＳ３４で算出した中心角θａｒの変化量を加えることにより、新たな右足首の中心角θａｒを算出し、足首角度データ６７としてメインメモリに記憶する。そして、ＣＰＵ１０は、その算出した中心角θａｒに基づいて、軌道ＡｒＰ上の右足首の位置Ｐａｒを算出し（図７参照）、足首位置データ７１としてメインメモリに記憶する。次に、ＣＰＵ１０は、ステップＳ３６の処理を実行する。
【００９６】
ステップＳ３６において、ＣＰＵ１０は、右足首の位置Ｐａｒが地面より下か否かを判定する。ここでの処理は、右足首の位置Ｐａｒに基づいて右足首を描画した場合、右足首（全部又は一部）が地形オブジェクトよりも下に位置するか否かを判定する処理である。具体的には、ＣＰＵ１０は、ステップＳ３５で算出された右足首の位置Ｐａｒのゲーム空間における高さと、地形オブジェクトのゲーム空間における高さとを比較する。判定結果が肯定の場合、ＣＰＵ１０は、次にステップＳ３７の処理を実行する。一方、判定結果が否定の場合、ＣＰＵ１０は、次にステップＳ３８の処理を実行する。
【００９７】
ステップＳ３７において、ＣＰＵ１０は、足首の高さを地面の高さに補正する。具体的には、ＣＰＵ１０は、メインメモリを参照して、地形オブジェクトの高さを取得し、取得した高さを右足首の高さに設定することにより、ステップＳ３５で算出された右足首の位置Ｐａｒを更新する（足首位置データ７１を更新する）。ステップＳ３７の処理の後、ＣＰＵ１０は、図１２に示す足首の軌道及び位置設定処理を終了する。
【００９８】
一方、ステップＳ３８において、ＣＰＵ１０は、プレイヤキャラクタの移動速度が所定の閾値以下か否かを判定する。具体的には、ＣＰＵ１０は、ステップＳ３で決定された移動速度の大きさが所定の閾値以下か否かを判定する。判定結果が肯定の場合、ＣＰＵ１０は、右足首の位置Ｐａｒを補正するため、次にステップＳ３９の処理を実行する。一方、判定結果が否定の場合、ＣＰＵ１０は、図１２に示す足首の軌道及び位置設定処理を終了する。
【００９９】
ステップＳ３９において、ＣＰＵ１０は、プレイヤキャラクタの移動速度の大きさに比例させて右足首の高さを地面に近づける処理を行う。例えば、移動速度の大きさがステップＳ３８の所定の閾値と等しい場合、ＣＰＵ１０は、右足首の高さを補正せず、移動速度の大きさが０の場合、右足首の高さを地形オブジェクトの高さに設定する。移動速度の大きさが上記閾値から０の間の場合、ＣＰＵ１０は、その移動速度の大きさに比例して、地面に近づけるようにして右足首の高さを設定する。すなわち、移動速度が小さいほど右足首が地面に近づくようにする。ステップＳ３９の処理の後、ＣＰＵ１０は、図１２に示す足首の軌道及び位置設定処理を終了する。
【０１００】
上述のように、ステップＳ３７又はステップＳ３９において、足首の高さを補正することにより、プレイヤキャラクタの不自然な表示や動きを防止することができる。具体的には、足があまり動いていないのに足が空中にあるというような不自然な状況を改善し、足が動いていないときは地面に近づけることができる。図１５は、ステップＳ３７における足首の高さを地面の高さに設定する処理を示した図である。図１６は、ステップＳ３９における足首の高さを地面の高さに近づける処理を示した図である。図１５に示されるように、右足首の位置Ｐａｒが地形オブジェクトより下に位置することによって、右足首が地形オブジェクトの内部に存在する場合、右足首の高さを地形オブジェクトの高さに設定する。これにより、右足首の位置は、補正後の位置Ｐａｒ’に変更され、右足首は地形オブジェクトの内部に存在しないようになり、足首の表示を自然にすることができる。
【０１０１】
また、図１６に示されるように、右足首が地形オブジェクトより上に位置している場合において、プレイヤキャラクタの移動速度の大きさが所定の閾値より小さい場合、軌道ＡｒＰ上の点Ｐａｒよりも下方の位置Ｐａｒ’に右足首の位置が補正される。例えば、プレイヤキャラクタが移動していない場合において、右足首が地面より上の位置にあることは不自然であるため、右足首の高さを補正する。一方、プレイヤキャラクタの移動速度が所定の閾値よりも速い場合、右足首が地面より上の位置にあることは不自然ではないため、補正は行われない。従って、プレイヤキャラクタの移動速度に応じて、ゲーム空間における足首の高さを補正することにより、プレイヤキャラクタの自然な動きを実現することができる。
【０１０２】
図１０に戻り、ＣＰＵ１０は、次にステップＳ７の処理を実行する。ステップＳ７において、ＣＰＵ１０は、膝位置設定処理を実行する。ステップＳ７における処理の詳細を、図１３を用いて説明する。図１３は、図１０における膝位置設定処理（ステップＳ７）の詳細を示すフローチャートである。
【０１０３】
まず、ＣＰＵ１０は、ステップＳ４０の処理を実行する。ステップＳ４０において、ＣＰＵ１０は、メインメモリを参照して、腰の位置（ステップＳ５で設定）、両足首の位置（ステップＳ６で設定）、及び、両足首の向きを取得する。ここで、両足首の向きは、プレイヤキャラクタの身体の向き（ステップＳ３で設定）に基づいて定められる。例えば、身体の向きと足首の向きが一致していてもよいし、身体の向きに対して両足首の向きが所定の角度だけ開いていてもよい。次に、ＣＰＵ１０は、ステップＳ４１の処理を実行する。
【０１０４】
ステップＳ４１において、ＣＰＵ１０は、膝の開き角度（腿と脛の角度）を算出する。具体的には、ＣＰＵ１０は、ステップＳ４０で取得した腰の位置、両足首の位置、及び、腿と脛の長さに基づいて、膝の開き角度を算出する。ここで、腿の長さと脛の長さとは、予め定められており、メインメモリに記憶されている。次に、ＣＰＵ１０は、ステップＳ４２の処理を実行する。
【０１０５】
ステップＳ４２において、ＣＰＵ１０は、膝の向きを調整する。具体的には、ＣＰＵ１０は、プレイヤキャラクタの身体の向き、及び両足首の向きに応じて、両膝の向き（身体の向きに対する開き度合い）を算出する。ステップＳ４２の処理の後、ＣＰＵ１０は、図１３に示す膝位置設定処理を終了する。
【０１０６】
図１０に戻り、ＣＰＵ１０は、次にステップＳ８の処理を実行する。ステップＳ８において、ＣＰＵ１０は、モデルの設定処理を実行する。ここでの処理は、上述の処理によって設定された各部位（腰や足首）の位置や向きに基づいて、描画のための各部位（腰、足首、かかとやつま先等）の詳細を設定する処理である。ステップＳ８における処理の詳細を、図１４を用いて説明する。図１４は、図１０におけるモデルの設定処理（ステップＳ８）の詳細を示すフローチャートである。なお、図１４では、つま先についてのモデル設定処理についてのみ主に説明する。
【０１０７】
まず、ＣＰＵ１０は、ステップＳ５０の処理を実行する。ステップＳ５０において、ＣＰＵ１０は、かかとが地面についているか否かを判定する。具体的には、ＣＰＵ１０は、ステップＳ６で設定された両足首の高さと地面の高さとに基づいて、かかとが地面についているか否かを判定する。例えば、ＣＰＵ１０は、足首の高さと地面の高さとの差が所定の閾値より小さい場合、かかとが地面についていると判定する。判定結果が肯定の場合、ＣＰＵ１０は、次にステップＳ５１の処理を実行する。一方、判定結果が否定の場合、ＣＰＵ１０は、次にステップＳ５２の処理を実行する。
【０１０８】
ステップＳ５１において、ＣＰＵ１０は、足裏を地面に沿わせる処理を実行する。ここでの処理は、かかとが地面についていると判定された場合において、かかと以外のつま先等を地面につかせる処理である。このように、かかとが地面についている場合において、足裏を地面に沿わせることにより、足の動き及び表示を自然にすることができる。ステップＳ５１の処理の後、ＣＰＵ１０は、次にステップＳ５３の処理を実行する。
【０１０９】
ステップＳ５２において、ＣＰＵ１０は、前回のつま先の向きを直立状態のつま先の向きに近づける処理を実行する。ここでの処理は、かかとが地面についていない場合において、つま先の上下方向の向き（地面に対する角度）を調整する処理である。具体的には、ＣＰＵ１０は、メインメモリを参照して前回のステップＳ５２で設定されたつま先の向きを取得し、当該つま先の向きを予め定められた直立状態のつま先の向きに所定の値だけ近づける。例えば、直立状態のつま先の向きは、地面と平行に設定されている。このように、つま先の向きを調整することにより、かかとが地面についていない場合において、つま先の向きが不自然に上に向いたりすることを防止することができる。次に、ＣＰＵ１０は、ステップＳ５３の処理を実行する。
【０１１０】
ステップＳ５３において、ＣＰＵ１０は、その他のモデル（手や身体、首等）の設定処理を実行する。ここでは、例えば、足の位置に応じて手の位置を設定したり、首（顔）の向きを設定したりする。また、上記のステップＳ６およびステップＳ７においては、右足についての処理のみの説明を行ったが、左足についても同様の処理が行われる。ただし、右足と左足とでは初期の中心角の位相がπだけずれたものになっており、すなわち、交互に足を上げる動作が行われることになる。ステップＳ５３の処理の後、ＣＰＵ１０は、ＣＰＵ１０は、図１４に示すモデル設定処理を終了する。
【０１１１】
図１０に戻り、ＣＰＵ１０は、次にステップＳ９の処理を実行する。ステップＳ９において、ＣＰＵ１０は、その他のゲーム処理を実行する。ＣＰＵ１０は、その他のゲーム処理として、プレイヤキャラクタの現在位置と移動速度とに基づいて、プレイヤキャラクタ自体の移動後の位置を設定したり、プレイヤキャラクタ以外のオブジェクト（プレイヤチームの他のキャラクタや相手チームのキャラクタ、ボール等）を動作させたり、表示領域を設定したりする。
【０１１２】
次に、ＣＰＵ１０は、ステップＳ１０において、描画処理を実行する。上述のようにして算出された腰及び各足首の位置と、モデル設定処理で設定された各モデルの設定と、膝位置設定処理で設定された膝の設定と、キャラクタの基本姿勢の画像データ（画像データ７２）とを用いて、プレイヤキャラクタの描画処理が実行される。また、ＣＰＵ１０は、その他のオブジェクトの描画処理を行う。ＣＰＵ１０は、ＧＰＵ１１ｂを用いて描画処理を行い、その結果、表示装置にゲーム画像が表示される。次に、ＣＰＵ１０は、ステップＳ１１において、ゲームを終了するか否かの判定を行う。ＣＰＵ１０は、例えば、プレイヤからのゲーム終了命令を受信した場合やゲームがクリアされた場合、ゲーム処理を終了する。判定結果が肯定の場合、ＣＰＵ１０は、図１０に示すゲーム処理を終了する。判定結果が否定の場合、ＣＰＵ１０は、ステップＳ２の処理を再度実行する。
【０１１３】
以上のように、本実施形態では、ゲームキャラクタの足の動きを計算により求め、描画することができる。これにより、予め多様なモーション画像を用意する必要なく、キャラクタの様々な足の動きを表現することができる。
【０１１４】
なお、本実施形態では、ゲームキャラクタの足や腰の動きを表示する場合について説明したが、他の実施形態では、キャラクタの他の部位、例えば、手や首等について上述した軌道を設定し、軌道上を動作させることによって、当該部位を表示してもよい。また、他の実施形態では、上述の方法により、人の動作のみならず、動物（４足動物）の動作を実現してもよい。
【０１１５】
また、他の実施形態では、キャラクタの身体の一部位ではないものについて当該キャラクタの部位とみなして、上述した軌道を設定し、当該部位を動作させてもよい。すなわち、あるオブジェクトに付随して動作する別のオブジェクトについて上述した軌道を設定し、動作させてもよい。例えば、キャラクタが所持するアイテム（武器等）について、当該アイテムが移動する軌道をキャラクタの位置に基づいて設定することにより、当該アイテムを動作させてもよい。
【０１１６】
また、本実施形態では、腰が動作する軌道は、線分（短径が０の楕円）であり、足首が動作する軌道は、楕円軌道であるとしたが、他の実施形態では、腰の軌道を楕円軌道とし、足首の軌道を線分としてもよい。また、別の実施形態では、各部位が動作する軌道は、どのような形状の軌道であってもよく、例えば、各部位が動作する軌道は、円であってもよいし、四角形や三角形等の多角形であってもよい。
【０１１７】
また、本実施形態では、足首の周期（右足首が楕円軌道ＡｒＰ上を往復するのに要する時間）は腰の周期（腰が軌道ＷＰ上を往復するのに要する時間）の２倍に設定され、両足首はπだけ位相がずれているものとしたが、他の実施形態では、各部位の周期及び位相差はどのようにして定められてもよい。例えば、足首の周期は腰の周期と独立するように設定されてもよい。また、例えば、両足首の位相差を０に設定することにより、両足でジャンプする動作等を実現することができる。
【０１１８】
また、本実施形態では、各部位の軌道に関する中心角に基づいて、各軌道上の位置が定められたが、他の実施形態では、各軌道上の位置はどのように定められてもよい。例えば、各部位は、それぞれに設定された軌道上をキャラクタの移動速度に応じた速度で移動されてもよい。
【０１１９】
また、上記中心角の角速度は、必ずしもキャラクタの移動速度に関連付けられる必要はなく、キャラクタが静止状態であっても上記中心角を変化させてもよい。例えば、キャラクタが移動せずにゲーム空間の所定の位置で、身体を上下運動（上下に身体を揺らす運動）をしている様子を実現してもよい。すなわち、キャラクタの移動速度が０の場合において、腰の位置を、上記軌道ＷＰ上を移動させることによって、キャラクタが上下運動する様子や屈伸運動する様子を実現することができる。
【０１２０】
また、本実施形態では、バスケットボールのゲームについて説明したが、上述した方法は、様々なゲームに利用されてもよい。例えば、野球ゲームや他のスポーツゲームにおける人が歩いたり走ったりする様子を、上述した方法により実現することができる。
【０１２１】
また、本発明のゲームプログラムは、光ディスク４等の外部記憶媒体を通じてゲーム装置３に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置３に供給されてもよい。また、ゲームプログラムは、ゲーム装置３内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体（コンピュータ読み取り可能な記憶媒体）としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状の記憶媒体の他に、不揮発性半導体メモリでもよい。
【０１２２】
また、本実施形態においては、ゲーム装置３のＣＰＵ１０がゲームプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置３が備える専用回路によって行われてもよい。
【符号の説明】
【０１２３】
１  ゲームシステム
２  テレビ
３  ゲーム装置
４  光ディスク
５  コントローラ
６  マーカ部
【図１】
2010263944.tif 000003
【図２】
2010263944.tif 000004
【図３】
2010263944.tif 000005
【図４】
2010263944.tif 000006
【図５】
2010263944.tif 000007
【図６】
2010263944.tif 000008
【図７】
2010263944.tif 000009
【図８Ａ】
2010263944.tif 000010
【図８Ｂ】
2010263944.tif 000011
【図９】
2010263944.tif 000012
【図１０】
2010263944.tif 000013
【図１１】
2010263944.tif 000014
【図１２】
2010263944.tif 000015
【図１３】
2010263944.tif 000016
【図１４】
2010263944.tif 000017
【図１５】
2010263944.tif 000018
【図１６】
2010263944.tif 000019