(57)【要約】【課題】３次元空間内のオブジェクトをカメラとの距離に関係なく、表示画面上では一定の速度で移動するように、３次元空間におけるオブジェクトの移動を制御すること。【解決手段】Ｓ４０２では、ゲーム空間における現在のカーソルの位置Ｐ’を示すデータに対してカメラの画角、投影面のサイズ、カメラと投影面との距離などを示すパラメータに基づいて透視変換を行い、位置Ｐ’に対応するゲーム空間における位置Ｐを求める。そしてＳ４０３では、入力された移動量を位置Ｐに加算し、カーソルの移動後の投影面上における位置Ｑを求める。次にＳ４０４では、カメラの位置と位置Ｑとを結ぶ直線と最初に接する（交差を含む）点の位置を位置Ｑ’として求める。そしてＳ４０５では、位置Ｑ’にカーソルを移動させる。【選択図】　図４
2004005024.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、仮想の３次元空間に設けられたオブジェクトの移動制御を行わせる情報処理プログラムであって、
３次元空間におけるオブジェクトの位置を投影面に投影し、当該投影面における当該オブジェクトの位置を求める第１の位置計算工程と、
所定の入力装置から入力された前記オブジェクトの移動量を当該第１の位置計算工程で求めた前記オブジェクトの位置に加算し、加算後の前記オブジェクトの前記投影面上における位置を求める第２の位置計算工程と、
前記３次元空間における仮想のカメラの位置と当該第２の位置計算工程で求めた位置とを結ぶ直線と前記３次元空間内で接触する点のうち、最も当該カメラの位置に近い点の位置を求める第３の位置計算工程と、
当該第３の位置計算工程で求めた位置に前記オブジェクトを移動させる移動制御工程と
をコンピュータに実行させるための情報処理プログラム。
【請求項２】
前記第１の位置計算工程では、３次元空間におけるオブジェクトの位置を示すデータに対して、前記カメラの画角、前記投影面のサイズ、前記カメラと前記投影面との距離を含むパラメータを用いた透視変換を行うことで、前記投影面における前記オブジェクトの位置を求めることを特徴とする請求項１に記載の情報処理プログラム。
【請求項３】
前記オブジェクトは、カーソルであることを特徴とする請求項１または２に記載の情報処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータに、仮想の３次元空間に設けられたオブジェクトの移動制御を行わせる情報処理プログラムに関するものである。
【０００２】
【従来の技術】
仮想の３次元空間内に３次元モデルを生成し、ユーザの見ているディスプレイに表示するといった技術は、ゲームやＣＡＤ等の分野で広く利用されている。そのゲームやＣＡＤ等で、表示されている３次元モデル、もしくは３次元モデルがポリゴンにより構成されている場合、任意のポリゴンを指示する方法としてカーソルを表示する必要がある。従来ではこのカーソルの表示、そして移動方法として例えば、３次元モデル、もしくは２次元の画像としてのカーソルを３次元空間に配置し、ユーザからの移動指示入力により、設定された速度で３次元空間内を移動させていた。
【０００３】
【発明が解決しようとする課題】
しかし上記方法でカーソルを表示、移動させる場合、以下のような問題がある。例えば３次元空間において、カーソルを一定の速度で移動させる場合、視点とカーソルとの距離が小さいほど、ディスプレイ上（投影面上）の移動速度は速く見え、視点とカーソルとの距離が大きいほど、ディスプレイ上の移動速度は遅く見える。よって、ユーザがディスプレイ上におけるカーソルの所望の移動速度を設定しても、カーソルと視点位置との距離に応じてその移動速度が異なり、ディスプレイ上における所望の移動速度が得られないことになる。
【０００４】
本発明はこのような点を考慮して成されたものであり、３次元空間内のオブジェクトをカメラとの距離に関係なく、表示画面上では一定の速度で移動するように、３次元空間におけるオブジェクトの移動を制御する情報処理プログラムを提供することを目的とする。
【０００５】
【課題を解決するための手段】
本発明の目的を達成するために、例えば本発明の情報処理プログラムは以下の構成を備える。
【０００６】
すなわち、コンピュータに、仮想の３次元空間に設けられたオブジェクトの移動制御を行わせる情報処理プログラムであって、
３次元空間におけるオブジェクトの位置を投影面に投影し、当該投影面における当該オブジェクトの位置を求める第１の位置計算工程と、
所定の入力装置から入力された前記オブジェクトの移動量を当該第１の位置計算工程で求めた前記オブジェクトの位置に加算し、加算後の前記オブジェクトの前記投影面上における位置を求める第２の位置計算工程と、
前記３次元空間における仮想のカメラの位置と当該第２の位置計算工程で求めた位置とを結ぶ直線と前記３次元空間内で接触する点のうち、最も当該カメラの位置に近い点の位置を求める第３の位置計算工程と、
当該第３の位置計算工程で求めた位置に前記オブジェクトを移動させる移動制御工程と
をコンピュータに実行させる。
【０００７】
また、前記第１の位置計算工程では、３次元空間におけるオブジェクトの位置を示すデータに対して、前記カメラの画角、前記投影面のサイズ、前記カメラと前記投影面との距離を含むパラメータを用いた透視変換を行うことで、前記投影面における前記オブジェクトの位置を求めることを特徴とする。
【０００８】
また、前記オブジェクトは、カーソルであることを特徴とする。
【０００９】
【発明の実施の形態】
以下添付図面を参照して、本発明を好適な実施形態について詳細に説明する。
【００１０】
［第１の実施形態］
図１に本実施形態におけるゲーム装置の基本構成を示す。１０１はＣＰＵで、ＲＡＭ１０２にロードされたゲームプログラムやゲームデータを用いてゲームの進行処理を行ったり、後述のカーソルの移動制御処理を行う。また、ＲＯＭ１０３に格納された本装置全体の制御を行うプログラムや、本装置の設定データなどを用いて本装置の起動やその後の制御を行う。
【００１１】
１０２はＲＡＭで、ＣＰＵ１０１が各処理を行うために使用するワークエリアを備えると共に、処理対象のデータを一時的に記憶したり、記憶媒体ドライブ１０６からロードされたゲームプログラムやゲームデータを記憶するエリアも備える。１０３はＲＯＭで、上述の通り、本装置全体の制御を行うプログラムや、本装置の設定データなどを格納する。１０４は操作部で、自キャラクタやカーソルなどを移動させる方向指示ボタンや、決定やキャンセルなどを入力するためのボタン群を備える。
【００１２】
１０５は表示部で、ＣＲＴや液晶画面などにより構成されており、ゲーム画面を表示する。１０６は記憶媒体ドライブで、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの後述の記憶媒体からゲームプログラムやゲームデータを読み込み、必要に応じてＲＡＭ１０２に出力する。１０７は記憶媒体で、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどにより構成されており、ゲームプログラム１０８やゲームデータ１０９を格納する。１０８はゲームプログラムで、ゲームの進行を制御するプログラムや、後述のカーソルの移動制御処理を行うプログラムを含む。１０９はゲームデータで、自キャラクタやカーソルを含む各種のキャラクタやゲームフィールドの３次元モデルのデータを含む。なお本実施形態ではカーソルを３次元モデルにて表現するが、これに限定されるものではなく、２次元の画像であっても良い。
【００１３】
１１０はサウンド処理部で、ゲームデータに含まれる効果音やバックグラウンドミュージックなどのデータをＤ／Ａ変換し、アナログ信号に変換するＤ／Ａ変換器と、Ｄ／Ａ変換器により変換されたアナログ信号を音として外部に出力するスピーカとで構成されている。１１１は上記各部をつなぐバスである。
【００１４】
よって以上の構成を備えるゲーム装置により、仮想の３次元空間（以下、ゲーム空間と呼称することがある）において３次元モデルを生成し、表示部１０５に表示することができる。以下の説明では、本ゲーム装置によりゲーム空間内にキャラクタを表現する３次元モデルを生成し、更にカーソルを表現する３次元モデルを生成し、同空間に設けられた仮想のカメラ（ユーザの同空間における視点）から見える画像を表示部１０５に表示する場合について説明する。
【００１５】
上記構成を備えるゲーム装置によって、後述のカーソルの移動制御処理を行うが、まず、ゲーム空間内で一定の速度で移動するカーソルが、移動する位置と仮想カメラの位置（ユーザの視点位置）との距離に応じて、その移動速度の上記表示部１０５における見え方について説明する。
【００１６】
図２は、上記カメラと、カメラから夫々異なる距離に配置したキャラクタとしての一辺の長さがＬの立方体の３次元モデルとの位置関係を横から見た図である。同図において２００は上記カメラで、２０１，２０２，２０３は夫々上記キャラクタとしての３次元モデルで、以下の説明ではこの３次元モデルとして立方体を用いるが、この形状に限定されるものではない。夫々の立方体において対応する一辺ＣＤ、ＥＦ、ＧＨの長さは夫々Ｌである。また２０５は投影面で、投影面２０５に公知の方法で透視変換された、ゲーム空間及び同空間内に配置された３次元モデル（２次元モデルがあればそれも含む）が表示部１０５に表示されることになる。
【００１７】
３次元モデル２０１の一辺ＣＤの長さはゲーム空間内ではＬであるが、この一辺ＣＤの長さＬが投影面２０５に投影された場合、その長さはＬｅｎ（ＡＢ’’）となり（Ｌｅｎ（Ｘ）は線分Ｘの長さを示すものとする）、Ｌ≠Ｌｅｎ（ＡＢ’’）となる。また３次元モデル２０２の一辺ＥＦの長さはゲーム空間内ではＬであるが、この一辺ＥＦの長さＬが投影面２０５に投影された場合、その長さはＬｅｎ（ＡＢ’）となり、Ｌ≠Ｌｅｎ（ＡＢ’）＜Ｌｅｎ（ＡＢ’’）となる。すなわち、３次元モデル２０２は３次元モデル２０１よりもカメラ２００から遠い位置に配置されているので、ゲーム空間では一辺の長さが同じでも投影面ではより短い長さとなる。
【００１８】
また、３次元モデル２０３の一辺ＧＨの長さはゲーム空間内ではＬであるが、この一辺ＧＨの長さＬが投影面２０５に投影された場合、その長さはＬｅｎ（ＡＢ）となり、Ｌ≠Ｌｅｎ（ＡＢ）＜Ｌｅｎ（ＡＢ’）＜Ｌｅｎ（ＡＢ’’）となる。すなわち、３次元モデル２０３は３次元モデル２０２よりもカメラ２００から遠い位置に配置されているので、ゲーム空間では一辺の長さが同じでも投影面ではより短い長さとなる。よって同図を用いた以上の説明により、３次元モデルの対応する一辺の長さが上記ゲーム空間で同じ長さであったとしても、カメラから遠い位置に配置されているほど、投影面に投影されるその長さは短くなることがわかる。
【００１９】
ここで例えば上記ゲーム空間内にカーソルを示す３次元モデルを配置し、上記３つの３次元モデルの一辺の両端間をゲーム空間における一定速度ｖで移動する場合を考える。このカーソルは一定速度ｖで移動するわけであるから、上記各一辺ＣＤ、ＥＦ、ＧＨの両端間を移動する（例えば一辺ＣＤ上を移動する場合、点Ｃの位置から点Ｄの位置まで移動）に要する時間は同じである。しかしユーザは、投影面２０５に投影された画像を見るのであるから、投影面上でより短い長さの一辺の両端間を移動するカーソルほど、投影面では遅く見える。
【００２０】
このように、カーソルが移動する位置とカメラとの距離に応じてカーソルの投影面上における速度が異なってしまう。よってこの問題に対処するための本実施形態におけるカーソルの移動制御方法について、以下説明する。
【００２１】
図３は、本実施形態におけるカーソルの移動制御処理を説明するための図で、図２と同じ部分については同じ番号を付けており、その説明を省略する。同図においてＳはｘ−ｚ平面と平行の基準面であって、本実施形態ではｙ＝０における平面とするが、これに限定されるものではなく、例えばゲーム空間にｙの値が負となるような起伏がある場合、その最小のｙの値以下のｙの値における基準面を設けても良い。
【００２２】
カーソルはゲーム空間に存在し、同空間におけるカーソルの初期位置を点Ａ’で示す。また、点Ａはこの点Ａ’の位置を投影面に投影した位置を示す。また、ユーザから操作部１０４を用いて指示されるカーソルの移動速度ｖ（移動量）は投影面上におけるカーソルの移動速度であるものとする。これにより、入力された移動量ｖを現在のカーソルの投影面上の位置に加算し、カーソルの位置を更新することで、カーソルは常に一定の移動量で投影面上を移動することになり、ユーザの見る表示部１０５上でもカーソルは一定の速度で移動するように見える。しかし、実際にカーソルはゲーム空間内に存在するので、本実施形態のカーソルの移動制御処理では、投影面上における移動先の位置に対応するゲーム空間における位置を求め、求めた位置にカーソルを移動させる処理を行う。
【００２３】
まず、点Ａ’の位置にあるカーソルの投影面上における位置（点Ａが示す位置）を求める。求める方法は、カメラ２００の画角、投影面２０５のサイズ、カメラ２００と投影面２０５との距離などを示すパラメータに基づいて公知の透視変換などにより求めることができる。そして操作部１０４を用いて入力された移動量を点Ａの位置に加算することで投影面における点Ｂの位置を求める。そして、カメラ２００の位置と点Ｂの位置とを結ぶ直線と平面Ｓとの交点（点Ｂ’）を求める。この交点が即ち、投影面上の点Ｂに対応するゲーム空間における点の位置を示す。そして点Ｂ’の位置にカーソル移動させる。
【００２４】
以上の処理を行うことで、投影面上の移動速度が一定となるように、カーソルをゲーム空間において移動させることができる。また、図２に示した３次元モデルの一辺上を同様に移動させる場合、例えば一辺ＣＤ上を点Ｃの位置から点Ｄの位置までカーソルを移動させる場合、点Ｃの位置から点Ａの位置は上記透視変換により求めることができ、入力された移動量から点Ｂ’’の位置は上記加算処理により求めることができ、点Ｄの位置はカメラ２００の位置と点Ｂ’’の位置とを結ぶ直線と接触する点のうち、最もカメラに近い点を計算する事で求めることができる。
【００２５】
図４に、本実施形態におけるカーソルの移動制御処理のフローチャートを示す。なお、同図のフローチャートに従った処理は、ゲーム本体の処理から、カーソルを移動させるためのサブルーチンとしてＣＰＵ１０１により実行される。
【００２６】
まずステップＳ４０１において、ゲーム空間における現在のカーソルの位置Ｐ’を求める。そしてステップＳ４０２では、ステップＳ４０１で求めた位置Ｐ’を示すデータに対してカメラの画角、投影面のサイズ、カメラと投影面との距離などを示すパラメータに基づいて透視変換を行うことで、位置Ｐ’に対応する投影面上における位置Ｐを求める。そしてステップＳ４０３では、操作部１０４を用いて入力された移動量を位置Ｐに加算することで、カーソルの移動後の投影面上における位置Ｑを求める。次にステップＳ４０４では、カメラの位置と位置Ｑとを結ぶ直線と最初に接する（交差を含む）点の位置を位置Ｑ’として求める。そしてステップＳ４０５では、ステップＳ４０４で求めた位置Ｑ’にカーソルを移動させる。以上、同図に示した処理を終えると、メインのゲーム処理にリターンする。
【００２７】
［第２の実施形態］
第１の実施形態ではゲームにおけるカーソルの移動制御処理について説明したが、使用用途はこれに限定されるものではなく、他にも例えばＣＡＤに適用しても良い。また、操作部１０４を用いて入力される移動量は常に一定でなくとも良く、例えば、移動量を指示するボタンの押下量によって、アナログに指示する移動量を変化させても良い。
【００２８】
［第３の実施形態］
以上の処理（例えば図４に示したフローチャートの一部、もしくは全部に従った処理）をプログラムとしてＣＤ−Ｒ、ＲＯＭやＤＶＤ−ＲＯＭ、ＭＯ等の記憶媒体に記憶させ、この記憶媒体に記憶されているプログラムをコンピュータに読み込ませる（インストール、もしくはコピーさせる）ことで、このコンピュータに以上の処理を実行させることができる。よって、この記憶媒体も本発明の範疇にあることは明白である。
【００２９】
【発明の効果】
以上の説明により、本発明によって、３次元空間内のオブジェクトをカメラとの距離に関係なく、表示画面上では一定の速度で移動するように、３次元空間におけるオブジェクトの移動を制御することができる。
【図面の簡単な説明】
【図１】本発明の実施形態におけるゲーム装置の基本構成を示すブロック図である。
【図２】カメラと、カメラから夫々異なる距離に配置したキャラクタとしての一辺の長さがＬの立方体の３次元モデルとの位置関係を横から見た図である。
【図３】本発明の実施形態におけるカーソルの移動制御処理を説明するための図でる。
【図４】本発明の実施形態におけるカーソルの移動制御処理のフローチャートである。
【図１】
2004005024.tif 000003
【図２】
2004005024.tif 000004
【図３】
2004005024.tif 000005
【図４】
2004005024.tif 000006