説明

3次元画像処理プログラムおよび3次元画像処理装置

【構成】 ゲーム装置12はCPU(40)を含み、このCPU(40)は3次元画像処理を実行する。ユーザの指示に従って表示画面(100)上のカーソル(106)が移動されると、それに従って注視点も移動される。このとき、注視点面が元の位置に維持されるように、視体積(錐体200)が変形される。したがって、表示画面(100)において、注視点と消失点(110)とが重なる。
【効果】 注視点と消失点とが重なるため、3次元仮想空間における真正面が2次元の表示画面においても真正面となり、3次元仮想空間を容易に認識できる表示画面を表示することができる。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は3次元画像処理プログラムおよび3次元画像処理装置に関し、特にたとえば、3次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する、3次元画像処理プログラムおよび3次元画像処理装置に関する。
【背景技術】
【0002】
従来のこの種の3次元画像処理装置の一例が特許文献1に開示されている。この特許文献1には、ビデオゲームシステムを用いて、3次元空間内でプレイヤオブジェクトを操作するシューティングゲームをプレイすることが記載されている。3次元空間内を一方向にスクロールしてプレイヤオブジェクトが移動して行く中、プレイヤがコントローラを用いてプレイヤオブジェクトの操作を行うことにより、プレイヤオブジェクトは、3次元空間内を移動したり、攻撃を加えてくる敵オブジェクトに対して攻撃を加えたりする。プレイヤオブジェクトが敵オブジェクトに攻撃を加える際には、プレイヤは、プレイヤオブジェクトの移動に伴って移動制御される照準を敵オブジェクトに合わせた上で攻撃操作を行う。
【特許文献1】特開平10−295940号公報[A63F 9/22]
【発明の開示】
【発明が解決しようとする課題】
【0003】
通常、3次元空間内に描画されたプレイヤオブジェクトによって3次元空間内の奥に向かって弾丸が射撃されるような場合は、弾丸はプレイヤオブジェクトから3次元空間の消失点に向かって移動するように制御される。特許文献1のビデオゲームシステムにおいても、プイレイヤオブジェクトによって射撃された弾丸は、3次元空間の消失点に向かって移動し、プレイヤオブジェクトから消失点への向きの指標として照準が表示されている。ここで、照準はプレイヤオブジェクトの移動に伴い移動制御されるものであるため、プレイヤはプレイヤオブジェクト自身の移動操作を行いながら、そのプレイヤオブジェクトの移動に伴い移動制御される照準を敵オブジェクトに合わせて攻撃操作を行う必要がある。つまり、プレイヤオブジェクトの移動操作と照準の移動操作との両方を同時に行いならがゲームを進めなければならない。このため、操作が複雑で難しいという問題があった。さらには、3次元空間内において、照準をプレイヤオブジェクトと消失点との間のどの位置に配置させるかによって、狙ったはずの敵オブジェクトへの射撃に失敗してしまうことがあった。つまり、3次元空間を認識するのが困難であった。
【0004】
それゆえに、この発明の主たる目的は、新規な、3次元画像処理プログラムおよび3次元画像処理装置を提供することである。
【0005】
この発明の他の目的は、3次元仮想空間を簡単に認識することができる、3次元画像処理プログラムおよび3次元画像処理装置を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0007】
第1の発明は、3次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する3次元画像処理装置のコンピュータにおいて実行される3次元画像処理プログラムであって、3次元画像処理装置のコンピュータを、入力装置からの操作入力を検出する操作入力検出手段、操作入力検出手段によって検出された操作入力に基づいて3次元仮想空間内または撮影画像上でオブジェクトを移動させるオブジェクト移動手段、3次元仮想空間内または撮影画像上におけるオブジェクトの位置に基づいて仮想カメラの注視点および位置座標を設定するパラメータ設定手段、およびオブジェクト移動手段によってオブジェクトが移動された場合に、仮想カメラの注視点を含み、かつ撮影画像の投影面に平行である平面を移動させないように、仮想カメラの視体積を変形させる視体積変形手段として機能させる、3次元画像処理プログラムである。
【0008】
第1の発明では、3次元画像処理プログラムは、3次元仮想空間を仮想カメラで撮影した撮影画像を表示装置(34)に出力する3次元画像処理装置(12)のコンピュータによって実行される。操作入力検出手段(40)は、入力装置(22)からの操作入力を検出する。オブジェクト移動手段(40)は、操作入力検出手段によって検出された操作入力に基づいて、3次元仮想空間内または撮影画像上でオブジェクト(106)を移動させる。パラメータ設定手段(40,S21,S23,S25)は、3次元仮想空間内または撮影画像上におけるオブジェクトの位置に基づいて仮想カメラの注視点および仮想カメラの位置座標を設定する。視体積変形手段(40,S25,S27)は、オブジェクト移動手段によってオブジェクトが移動された場合に、仮想カメラの注視点を含み、かつ撮影画像の投影面に平行である平面(注視点面)を移動させないように、仮想カメラの視体積を変形させる。
【0009】
第1の発明によれば、注視点を含み、かつ撮影画像の投影面に平行である平面を移動させないで、視体積を変形させるので、表示画面において注視点と消失点とが重なる。このため、3次元仮想空間上での真正面が2次元の表示画面上においても真正面となるので、3次元仮想空間を容易に認識することができる。
【0010】
第2の発明は、3次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する3次元画像処理装置のコンピュータにおいて実行される3次元画像処理プログラムであって、3次元画像処理装置のコンピュータを、入力装置からの操作入力を検出する操作入力検出手段、操作入力検出手段によって検出された操作入力に基づいて3次元仮想空間内または撮影画像上でオブジェクトを移動させるオブジェクト移動手段、3次元仮想空間内または撮影画像上に設定された基準点に対するオブジェクトの変位量を検出する変位量検出手段、および変位量検出手段によって検出された変位量が0でない場合に、撮影画像の投影面において、当該変位量を打ち消すとともに、オブジェクトの位置と3次元仮想空間における消失点とが重なるように、仮想カメラのパラメータを設定するパラメータ設定手段として機能させる、3次元画像処理プログラムである。
【0011】
第2の発明では、3次元画像処理プログラムは、3次元仮想空間を仮想カメラで撮影した撮影画像を表示装置(34)に出力する3次元画像処理装置(12)のコンピュータによって実行される。操作入力検出手段(40)は、入力装置(22)からの操作入力を検出する。オブジェクト移動手段(40)は、操作入力検出手段によって検出された操作入力に基づいて、3次元仮想空間内または撮影画像上でオブジェクト(106)を移動させる。変位量検出手段(40,S11)は、3次元仮想空間内または撮影画像上に設定された基準点に対するオブジェクトの変位量を検出する。パラメータ設定手段(40,S23,S25,S27)は、変位量検出手段によって検出された変位量が0でない場合に(S13で“NO”)、撮影画像の投影面において、当該変位量を打ち消すとともに、オブジェクトの位置と3次元仮想空間における消失点とが重なるように、仮想カメラのパラメータを設定する。
【0012】
第2の発明によれば、撮影画像の投影面において、オブジェクトの変位量を打ち消すとともに、オブジェクトの位置と3次元仮想空間における消失点とが重なるように、仮想カメラのパラメータを設定するので、3次元仮想空間上での真正面が2次元の表示画面上においても真正面となる。したがって、3次元仮想空間を容易に認識することができる。
【0013】
第3の発明は、第2の発明に従属し、パラメータ設定手段によって設定されるパラメータは、仮想カメラの位置座標、注視点および視体積を含む。
【0014】
第3の発明では、パラメータとしては、仮想カメラの位置座標、注視点および視体積を含む。たとえば、仮想カメラの注視点は、オブジェクトの移動に従って設定され、これに平行移動するように、仮想カメラの位置が決定される。そして、注視点を含み、かつ撮影画像の投影面と平行な面(注視点面)が移動しないように、視体積の範囲が設定される。
【0015】
第3の発明によれば、仮想カメラの位置座標、注視点および視体積を設定するだけなので、簡単な処理によって、見易い表示画面を表示することができる。
【0016】
第4の発明は第1ないし第3の発明のいずれかに従属し、オブジェクトは、撮影画像の投影面上に描画される2次元のオブジェクトである。
【0017】
第4の発明では、オブジェクトは、撮影画像の投影面上に描画される2次元のオブジェクトである。たとえば、オブジェクトはカーソルのような指示画像であったり、シューティングゲームにおける照準であったりする。
【0018】
第4の発明によれば、撮影画像の投影面上における2次元のオブジェクトの移動に従って、当該撮影画像の投影面上において、当該オブジェクトの位置と消失点とが重なるように、仮想カメラのパラメータを設定することができる。
【0019】
第5の発明は第1の発明に従属し、オブジェクトは、3次元仮想空間内の3次元のオブジェクトであり、当該3次元のオブジェクトを含む当該3次元仮想空間内の一部の範囲を仮想カメラで撮影した撮影画像の投影面に投影される。
【0020】
第5の発明では、オブジェクトは、3次元仮想空間内に存在する3次元のオブジェクトである。したがって、その3次元のオブジェクトを含む3次元仮想区間内の一部の範囲を仮想カメラで撮影した撮影画像の投影面に投影される。したがって、オブジェクト移動手段がオブジェクトを移動させると、当該オブジェクトを含む3次元仮想空間の一部を投影面に投影した様子が表示画面に表示される。
【0021】
第5の発明によれば、3次元空間内の3次元のオブジェクトの移動に従って、撮影画像の投影面上において、当該オブジェクトの位置と消失点とが重なるように、仮想カメラの注視点および位置座標を設定することもできる。
【0022】
第6の発明は第5の発明に従属し、3次元仮想空間内におけるオブジェクトの位置を、3次元仮想空間において撮影画像の投影面と平行な平面上での位置に変換する位置変換手段をさらに備え、パラメータ設定手段は、位置変換手段によって変換された位置に基づいて仮想カメラの注視点および位置座標を設定する。
【0023】
第6の発明では、位置変換手段(40,S21)は、3次元仮想空間内におけるオブジェクトの位置を、3次元仮想空間において撮影画像の投影面と平行な平面(注視点面)上での位置に変換する。パラメータ設定手段は、位置変換手段によって変換された位置に基づいて仮想カメラの注視点および仮想カメラの位置座標を設定する。したがって、仮想カメラの位置座標も平行移動される。つまり、注視点と消失点と重なるように、仮想カメラが移動されるのである。
【0024】
第6の発明によれば、3次元仮想空間におけるオブジェクトの位置を、3次元仮想空間における注視点面上での位置に変換するので、その変換した位置に基づいて仮想カメラのパラメータを設定すれば、撮影画像の投影面において注視点と消失点とが重なり、しかも注視点面を移動させないようにすることができる。
【0025】
第7の発明は、第2または第3の発明に従属し、オブジェクトは、3次元仮想空間内の3次元のオブジェクトであり、当該3次元のオブジェクトを含む当該3次元仮想空間内の一部の範囲を仮想カメラで撮影した撮影画像の投影面に投影される。
【0026】
第7の発明では、オブジェクトは、3次元仮想空間内に存在する3次元のオブジェクトである。したがって、その3次元のオブジェクトを含む3次元仮想区間内の一部の範囲を仮想カメラで撮影した撮影画像の投影面に投影される。したがって、オブジェクト移動手段がオブジェクトを移動させると、当該オブジェクトを含む3次元仮想空間の一部を投影面に投影した様子が表示画面に表示される。
【0027】
第7の発明によれば、3次元空間内の3次元のオブジェクトの移動に従って、撮影画像の投影面上において、当該オブジェクトの位置と消失点とが重なるように、仮想カメラのパラメータを設定することもできる。
【0028】
第8の発明は、第7の発明に従属し、変位量検出手段によって検出された3次元仮想空間内に設定された基準点に対するオブジェクトの変位量を、3次元仮想空間において撮影画像の投影面と平行な平面上での変位量に変換する変位量変換手段をさらに備え、パラメータ設定手段は、変位量変換手段によって変換された変位量が0でない場合に、当該変位量を打ち消すように仮想カメラのパラメータを設定する。
【0029】
第8の発明では、変位量変換手段(40,S21)は、変位量検出手段によって検出された3次元仮想空間内に設定された基準点に対するオブジェクトの変位量を、3次元仮想空間において撮影画像の投影面と平行な平面上での変位量に変換する。パラメータ設定手段は、変位量変換手段によって変換された変位量が0でない場合に(S13で“NO”)、当該変位量を打ち消すように仮想カメラのパラメータを設定する。
【0030】
第8の発明によれば、3次元仮想空間におけるオブジェクトの変位量を打ち消すように、仮想カメラのパラメータを設定するので、3次元仮想空間上での真正面が2次元の表示画面上においても真正面となり、見易い画面を表示することができる。
【0031】
第9の発明は第1ないし第3の発明のいずれかに従属し、パラメータ設定手段は、仮想カメラの位置座標を、仮想カメラの注視点、向き、および注視点と当該仮想カメラとの距離に基づいて設定する。
【0032】
第9の発明では、パラメータ設定手段は、仮想カメラの位置座標を、仮想カメラの注視点、向き、および注視点と当該仮想カメラとの距離に基づいて1回の計算処理によって設定する。
【0033】
第9の発明によれば、仮想カメラの位置座標を1回の計算処理で設定するので、計算処理の負荷を軽減することができる。
【0034】
第10の発明は第1ないし第3の発明のいずれかに従属し、パラメータ設定手段は、仮想カメラの位置座標を、直前の仮想カメラの位置座標を仮想カメラの注視点の移動に従って平行移動して設定する。
【0035】
第8の発明では、パラメータ設定手段は、仮想カメラの位置座標を、直前の仮想カメラの位置座標を予め計算しておき、計算しておいた仮想カメラの位置座標を仮想カメラの注視点の移動に従って平行移動するように計算する。
【0036】
第10の発明によれば、予め仮想カメラの位置座標を計算しておくので、計算処理を2回実行する必要があるが、仮想カメラの注視点と同様に、平行移動するだけなので、計算自体は簡単である。
【0037】
第11の発明は第1ないし第10の発明のいずれかに従属し、入力装置はポインティングデバイスであり、オブジェクト移動手段は、ポインティングデバイスで指示された撮影画像の投影面上の位置座標にオブジェクトを移動させる。
【0038】
第11の発明では、入力装置はポインティングデバイス(22)であり、このポインティングデバイスで指示された撮影画像の投影面上の位置座標にオブジェクトを移動させる。
【0039】
第11の発明によれば、ポインティングデバイスによってオブジェクトを移動させることができるので、直観的で簡単に操作することができる。
【0040】
第12の発明は、3次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する3次元画像処理装置であって、入力装置からの操作入力を検出する操作入力検出手段、操作入力検出手段によって検出された操作入力に基づいて3次元仮想空間内または撮影画像上でオブジェクトを移動させるオブジェクト移動手段、3次元仮想空間内または撮影画像上におけるオブジェクトの位置に基づいて仮想カメラの注視点および位置座標を設定するパラメータ設定手段、およびオブジェクト移動手段によってオブジェクトが移動された場合に、仮想カメラの注視点を含み、かつ撮影画像の投影面に平行である平面を移動させないように、仮想カメラの視体積を変形させる視体積変形手段を備える、3次元画像処理装置である。
【0041】
第12の発明においても、第1の発明と同様に、3次元仮想空間を容易に認識することができる。
【0042】
第13の発明は、3次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する3次元画像処理装置であって、入力装置からの操作入力を検出する操作入力検出手段、操作入力検出手段によって検出された操作入力に基づいて3次元仮想空間内または撮影画像上でオブジェクトを移動させるオブジェクト移動手段、3次元仮想空間内または撮影画像上に設定された基準点に対するオブジェクトの変位量を検出する変位量検出手段、および変位量検出手段によって検出された変位量が0でない場合に、撮影画像の投影面において、当該変位量を打ち消すとともに、オブジェクトの位置と3次元仮想空間における消失点とが重なるように、仮想カメラのパラメータを設定するパラメータ設定手段を備える、3次元画像処理装置である。
【0043】
第13の発明においても、第2の発明と同様に、3次元仮想空間を容易に認識することができる。
【発明の効果】
【0044】
この発明によれば、注視点を含み、かつ投影面に平行である平面を移動させないで、視体積を変形させるので、表示画面において注視点と消失点とが重なる。このため、3次元仮想空間上での真正面が2次元の表示画面上においても真正面となるので、3次元仮想空間を容易に認識することができる。
【0045】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0046】
図1を参照して、この発明の一実施例であるゲームシステム10は、3次元画像処理装置としても機能するビデオゲーム装置(以下、単に「ゲーム装置」という)12およびコントローラ22を含む。なお、図示は省略するが、この実施例のゲーム装置12は、最大4つのコントローラ22と通信可能に設計されている。また、ゲーム装置12と各コントローラ22とは、無線によって接続される。たとえば、無線通信は、Bluetooth(登録商標)規格に従って実行されるが、赤外線や無線LANなど他の規格に従って実行されてもよい。さらには、有線で接続されてもよい。
【0047】
ゲーム装置12は、略直方体のハウジング14を含み、ハウジング14の前面にはディスクスロット16が設けられる。ディスクスロット16から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が挿入されて、ハウジング14内のディスクドライブ54(図2参照)に装着される。図示は省略するが、ディスクスロット16の周囲には、LEDと導光板とが配置され、様々な処理に応答させて、ディスクスロット16を点灯または点滅させることが可能である。
【0048】
また、ゲーム装置12のハウジング14の前面であり、その上部には、電源ボタン20aおよびリセットボタン20bが設けられ、その下部には、イジェクトボタン20cが設けられる。さらに、リセットボタン20bとイジェクトボタン20cとの間であり、ディスクスロット16の近傍には、外部メモリカード用コネクタカバー28が設けられる。この外部メモリカード用コネクタカバー28の内側には、外部メモリカード用コネクタ62(図2参照)が設けられ、図示しない外部メモリカード(以下、単に「メモリカード」という)が挿入される。メモリカードは、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置12の内部に設けられるフラッシュメモリ44(図2参照)のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。さらに、ゲーム装置12では、ゲーム以外の他のアプリケーションを実行することも可能であり、かかる場合には、メモリカードには当該他のアプリケーションのデータを保存することができる。
【0049】
なお、メモリカードとしては、汎用のSDカードを用いることができるが、メモリスティックやマルチメディアカード(登録商標)のような他の汎用のメモリカードを用いることもできる。
【0050】
図1では省略するが、ゲーム装置12のハウジング14の後面には、AVケーブルコネクタ58(図2参照)が設けられ、そのAVコネクタ58を用いて、AVケーブル32aを通してゲーム装置12にモニタ34およびスピーカ34aを接続する。このモニタ34およびスピーカ34aは典型的にはカラーテレビジョン受像機であり、AVケーブル32aによって、ゲーム装置12からの映像信号がカラーテレビのビデオ入力端子に入力され、ゲーム装置12からの音声信号が音声入力端子に入力される。したがって、カラーテレビ(モニタ)34の画面上にたとえば3次元(3D)ビデオゲームのゲーム画像が表示され、左右のスピーカ34aからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ34の周辺(この実施例では、モニタ34の上側)には、2つの赤外LED(マーカ)34m,34nを備えるマーカ部34bが設けられる。このマーカ部34bは、電源ケーブル32bを通してゲーム装置12に接続される。したがって、マーカ部34bには、ゲーム装置12から電源が供給される。これによって、マーカ34m,34nは発光し、それぞれモニタ34の前方に向けて赤外光を出力する。
【0051】
なお、ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置12は、家庭用電源(商用電源)を、駆動に適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【0052】
このゲームシステム10において、ユーザまたはプレイヤがゲーム(またはゲームに限らず、他のアプリケーション)をプレイするために、ユーザはまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)のプログラムを記録している適宜の光ディスク18を選択し、その光ディスク18をゲーム装置12のディスクドライブ54にローディングする。応じて、ゲーム装置12がその光ディスク18に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段26に対する操作以外にも、コントローラ22自体を動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
【0053】
ただし、ビデオゲームや他のアプリケーションのプログラムは、ゲーム装置12の内部メモリ(フラッシュメモリ42(図2参照))に記憶(インストール)しておき、当該内部メモリから実行するようにしてもよい。かかる場合には,光ディスク18のような記憶媒体に記憶されたプログラムを内部メモリにインストールしてもよいし、ダウンロードされたプログラムを内部メモリにインストールしてもよい。
【0054】
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。図示は省略するが、ハウジング14内の各コンポーネントは、プリント基板に実装される。図2に示すように、ゲーム装置12には、CPU40が設けられ、ゲームプロセッサとして機能する。また、CPU40には、システムLSI42が接続される。このシステムLSI42には、外部メインメモリ46、ROM/RTC48、ディスクドライブ54およびAV IC56が接続される。
【0055】
外部メインメモリ46は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりして、CPU40のワーク領域やバッファ領域として用いられる。ROM/RTC48は、いわゆるブートROMであり、ゲーム装置12の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ54は、光ディスク18からプログラム,画像データや音声データ等を読み出し、CPU40の制御の下で、後述する内部メインメモリ42eまたは外部メインメモリ46に書き込む。
【0056】
システムLSI42には、入出力プロセッサ42a、GPU(Graphics Processor Unit)42b,DSP(Digital Signal Processor)42c,VRAM42dおよび内部メインメモリ42eが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。入出力プロセッサ(I/Oプロセッサ)42aは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後述する。
【0057】
GPU42bは、描画手段の一部を形成し、CPU40からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、CPU40は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU42bに与える。
【0058】
図示は省略するが、上述したように、GPU42bにはVRAM42dが接続される。GPU42bが作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンデータやテクスチャデータなどのデータ)は、GPU42bがVRAM42dにアクセスして取得する。ただし、CPU40は、描画に必要な画像データを、GPU42bを介してVRAM42dに書き込む。GPU42bは、VRAM42dにアクセスして描画のためのゲーム画像データを作成する。
【0059】
なお、この実施例では、GPU42bがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、GPU42bは当該任意のアプリケーションについての画像データを生成する。
【0060】
また、DSP42cは、オーディオプロセッサとして機能し、内部メインメモリ42eや外部メインメモリ46に記憶されるサウンドデータや音波形(音色)データを用いて、スピーカ34aから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【0061】
上述のように生成されたゲーム画像データおよびオーディオデータは、AV IC56によって読み出され、AVコネクタ58を介してモニタ34およびスピーカ34aに出力される。したがって、ゲーム画面がモニタ34に表示され、ゲームに必要な音(音楽)がスピーカ34aから出力される。
【0062】
また、入出力プロセッサ42aには、フラッシュメモリ44、無線通信モジュール50および無線コントローラモジュール52が接続されるとともに、拡張コネクタ60およびメモリカード用コネクタ62が接続される。また、無線通信モジュール50にはアンテナ50aが接続され、無線コントローラモジュール52にはアンテナ52aが接続される。
【0063】
図示は省略するが、入出力プロセッサ42aは、無線通信モジュール50を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ42aは、定期的にフラッシュメモリ44にアクセスし、ネットワークへ送信する必要があるデータ(「送信データ」とする)の有無を検出し、当該送信データが有る場合には、無線通信モジュール50およびアンテナ50aを介してネットワークに送信する。また、入出力プロセッサ42aは、他のゲーム装置から送信されるデータ(「受信データ」とする)を、ネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、当該受信データをフラッシュメモリ44に記憶する。ただし、受信データが一定の条件を満たさない場合には、当該受信データはそのまま破棄される。さらに、入出力プロセッサ42aは、ダウンロードサーバからダウンロードしたデータ(ダウンロードデータとする)をネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、そのダウンロードデータをフラッシュメモリ44に記憶する。
【0064】
また、入出力プロセッサ42aは、コントローラ22から送信される入力データをアンテナ52aおよび無線コントローラモジュール52を介して受信し、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に記憶(一時記憶)する。入力データは、CPU40の処理(たとえば、ゲーム処理)によって利用された後、バッファ領域から消去される。
【0065】
なお、この実施例では、上述したように、無線コントローラモジュール52は、Bluetooth規格に従ってコントローラ22との間で通信を行う。
【0066】
さらに、入出力プロセッサ42aには、拡張コネクタ60およびメモリカード用コネクタ62が接続される。拡張コネクタ60は、USBやSCSIのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、コントローラ22とは異なる他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ60に有線LANアダプタを接続し、無線通信モジュール50に代えて当該有線LANを利用することもできる。メモリカード用コネクタ62には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ42aは、拡張コネクタ60やメモリカード用コネクタ62を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0067】
詳細な説明は省略するが、図1にも示したように、ゲーム装置12(ハウジング14)には、電源ボタン20a,リセットボタン20bおよびイジェクトボタン20cが設けられる。電源ボタン20aは、システムLSI42に接続される。この電源ボタン20aがオンされると、システムLSI42には、ゲーム装置12の各コンポーネントに図示しないACアダプタを経て電源が供給され、通常の通電状態となるモード(「通常モード」と呼ぶこととする)が設定される。一方、電源ボタン20aがオフされると、システムLSI42には、ゲーム装置12の一部のコンポーネントのみに電源が供給され、消費電力を必要最低限に抑えるモード(以下、「スタンバイモード」という)が設定される。
【0068】
この実施例では、スタンバイモードが設定された場合には、システムLSI42は、入出力プロセッサ42a、フラッシュメモリ44、外部メインメモリ46、ROM/RTC48および無線通信モジュール50、無線コントローラモジュール52以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、この実施例では、スタンバイモードにおいて、CPU40がアプリケーションを実行することはない。
【0069】
なお、システムLSI42には、スタンバイモードにおいても電源が供給されるが、GPU42b、DSP42cおよびVRAM42dへのクロックの供給を停止することにより、これらを駆動しないようにして、消費電力を低減するようにしてある。
【0070】
また、図示は省略するが、ゲーム装置12のハウジング14内部には、CPU40やシステムLSI42などのICの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【0071】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン20aがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【0072】
また、通常モードとスタンバイモードとの切り替えは、コントローラ22の電源スイッチ26hのオン/オフの切り替えによって、遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール52aへの電源供給を行わない設定にしてもよい。
【0073】
リセットボタン20bもまた、システムLSI42に接続される。リセットボタン20bが押されると、システムLSI42は、ゲーム装置12の起動プログラムを再起動する。イジェクトボタン20cは、ディスクドライブ54に接続される。イジェクトボタン20cが押されると、ディスクドライブ54から光ディスク18が排出される。
【0074】
図3(A)ないし図3(E)は、コントローラ22の外観の一例を示す。図3(A)はコントローラ22の先端面を示し、図3(B)はコントローラ22の上面を示し、図3(C)はコントローラ22の右側面を示し、図3(D)はコントローラ22の下面を示し、そして、図3(E)はコントローラ22の後端面を示す。
【0075】
図3(A)ないし図3(E)を参照して、コントローラ22は、たとえばプラスチック成型によって形成されたハウジング22aを有している。ハウジング22aは、略直方体形状であり、ユーザが片手で把持可能な大きさである。ハウジング22a(コントローラ22)には、入力手段(複数のボタンないしスイッチ)26が設けられる。具体的には、図3(B)に示すように、ハウジング22aの上面には、十字キー26a,1ボタン26b,2ボタン26c,Aボタン26d,−ボタン26e,HOMEボタン26f,+ボタン26gおよび電源スイッチ26hが設けられる。また、図3(C)および図3(D)に示すように、ハウジング22aの下面に傾斜面が形成されており、この傾斜面に、Bトリガースイッチ26iが設けられる。
【0076】
十字キー26aは、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト(プレイヤキャラクタまたはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したり、単に方向を指示したりすることができる。
【0077】
1ボタン26bおよび2ボタン26cは、それぞれ、押しボタンスイッチである。たとえば3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、1ボタン26bおよび2ボタン26cは、Aボタン26dおよびBトリガースイッチ26iと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
【0078】
Aボタンスイッチ26dは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。また、Aボタンスイッチ26dは、コントローラ22をポインティングデバイスとして用いる場合に、ゲーム画面上でポインタ(指示画像)が指示するアイコンないしボタン画像の決定を指示するために使用される。たとえば、アイコンやボタン画像が決定されると、これらに対応して予め設定されている指示ないし命令(コマンド)を入力することができる。
【0079】
−ボタン26e、HOMEボタン26f、+ボタン26gおよび電源スイッチ26hもまた、押しボタンスイッチである。−ボタン26eは、ゲームモードを選択するために使用される。HOMEボタン26fは、ゲームメニュー(メニュー画面)を表示するために使用される。+ボタン26gは、ゲームを開始(再開)したり、一時停止したりするなどのために使用される。電源スイッチ26hは、ゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
【0080】
なお、この実施例では、コントローラ22自体をオン/オフするための電源スイッチは設けておらず、コントローラ22の入力手段26のいずれかを操作することによってコントローラ22はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
【0081】
Bトリガースイッチ26iもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、コントローラ22で選択した位置を指定したりするために使用される。また、Bトリガースイッチ26iを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Bトリガースイッチ26iは、通常のBボタンと同様に機能し、Aボタン26dによって決定したアクションやコマンドなどを取り消すなどのために使用される。
【0082】
また、図3(E)に示すように、ハウジング22aの後端面に外部拡張コネクタ22bが設けられ、また、図3(B)に示すように、ハウジング22aの上面であり、後端面側にはインジケータ22cが設けられる。外部拡張コネクタ22bは、コントローラ22とは異なる拡張コントローラ(図示せず)を接続するためなどに使用される。インジケータ22cは、たとえば、4つのLEDで構成される。たとえば、インジケータ22cでは、4つのうちのいずれか1つを点灯させることにより、点灯したLEDに応じて、コントローラ22の識別情報(コントローラ番号)を示すことができる。また、インジケータ22cでは、点灯させるLEDの個数によってコントローラ22の電池残量を示すこともできる。
【0083】
さらに、コントローラ22は、撮像情報演算部80(図4参照)を有しており、図3(A)に示すように、ハウジング22aの先端面には撮像情報演算部80の光入射口22dが設けられる。また、コントローラ22は、スピーカ86(図4参照)を有しており、このスピーカ86は、図3(B)に示すように、ハウジング22aの上面であり、1ボタン26bとHOMEボタン26fとの間に設けられる音抜き孔22eに対応して、ハウジング22a内部に設けられる。
【0084】
なお、図3(A)ないし図3(E)に示したコントローラ22の形状や、各入力手段26の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【0085】
図4はコントローラ22の電気的な構成を示すブロック図である。この図4を参照して、コントローラ22はプロセッサ70を含み、このプロセッサ70には、内部バス(図示せず)によって、外部拡張コネクタ22b、入力手段26、メモリ72、加速度センサ74、無線モジュール76、撮像情報演算部80、LED82(インジケータ22c)、バイブレータ84、スピーカ86および電源回路88が接続される。また、無線モジュール76には、アンテナ78が接続される。
【0086】
なお、簡単のため、図4では省略するが、上述したように、インジケータ22cは4つのLED82によって構成される。
【0087】
プロセッサ70は、コントローラ22の全体制御を司り、入力手段26、加速度センサ74および撮像情報演算部80によって入力された情報(入力情報)を、入力データとして無線モジュール76およびアンテナ78を介してゲーム装置12に送信(入力)する。このとき、プロセッサ70は、メモリ72を作業領域ないしバッファ領域として用いる。また、上述した入力手段26(26a−26i)からの操作信号(操作データ)は、プロセッサ70に入力され、プロセッサ70は操作データを一旦メモリ72に記憶する。
【0088】
加速度センサ74は、コントローラ22の縦方向(y軸方向)、横方向(x軸方向)および前後方向(z軸方向)の3軸で各々の加速度を検出する。この加速度センサ74は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
【0089】
たとえば、加速度センサ74は、第1所定時間毎に、x軸,y軸,z軸の各々についての加速度(ax,ay,az)を検出し、検出した加速度のデータ(加速度データ)をプロセッサ70に入力する。たとえば、加速度センサ74は、各軸方向の加速度を、−2.0g〜2.0g(gは重力加速度である。以下、同じ。)の範囲で検出する。プロセッサ70は、加速度センサ74から与えられる加速度データを、第2所定時間毎に検出し、一旦メモリ72に記憶する。
【0090】
プロセッサ70は、操作データ、加速度データおよび後述するマーカ座標データの少なくとも1つを含む入力データを作成し、作成した入力データを、第3所定時間(たとえば、5msec)毎にゲーム装置12に送信する。
【0091】
なお、図3(A)−図3(E)では省略したが、この実施例では、加速度センサ74は、ハウジング22a内部の基板上の十字キー26aが配置される付近に設けられる。
【0092】
無線モジュール76は、たとえばBluetoothの技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ78から放射する。つまり、入力データは、無線モジュール76によって微弱電波信号に変調されてアンテナ78(コントローラ22)から送信される。この微弱電波信号が上述したゲーム装置12に設けられた無線コントローラモジュール52によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置12(CPU40)は、コントローラ22からの入力データを取得することができる。そして、CPU40は、取得した入力データとアプリケーションプログラム(ゲームプログラム)とに従ってアプリケーションの処理(ゲーム処理)を行う。
【0093】
さらに、上述したように、コントローラ22には、撮像情報演算部80が設けられる。この撮像情報演算部80は、赤外線フィルタ80a、レンズ80b、撮像素子80cおよび画像処理回路80dによって構成される。赤外線フィルタ80aは、コントローラ22の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ34の表示画面近傍(周辺)に配置されるマーカ340mおよび340nは、モニタ34の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ80aを設けることによってマーカ340mおよび340nの画像をより正確に撮像することができる。レンズ80bは、赤外線フィルタ80aを透過した赤外線を集光して撮像素子80cへ出射する。撮像素子80cは、たとえばCMOSセンサあるいはCCDのような固体撮像素子であり、レンズ80bによって集光された赤外線を撮像する。したがって、撮像素子80cは、赤外線フィルタ80aを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子80cによって撮像された画像を撮像画像と呼ぶ。撮像素子80cによって生成された画像データは、画像処理回路80dで処理される。画像処理回路80dは、撮像画像内における撮像対象(マーカ340mおよび340n)の位置を算出し、第4所定時間毎に、当該位置を示す各座標値を撮像データ(後述するマーカ座標データ)としてプロセッサ70に出力する。なお、画像処理回路80dにおける処理については後述する。
【0094】
図5は、コントローラ22を用いてゲームプレイするときの状態を概説する図解図である。ただし、ゲームプレイのみならず、他のアプリケーションを実行する場合も同様である。図5に示すように、ビデオゲームシステム10でコントローラ22を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ22を把持する。厳密に言うと、プレイヤは、コントローラ22の先端面(撮像情報演算部80が撮像する光の入射口22d側)がマーカ340mおよび340nの方を向く状態でコントローラ22を把持する。ただし、図1からも分かるように、マーカ340mおよび340nは、モニタ34の画面の横方向と平行に配置されている。この状態で、プレイヤは、コントローラ22が指示する画面上の位置を変更したり、コントローラ22と各マーカ340mおよび340nとの距離を変更したりすることによってゲーム操作を行う。
【0095】
図6は、マーカ340mおよび340nと、コントローラ22との視野角を説明するための図である。図6に示すように、マーカ340mおよび340nは、それぞれ、視野角θ1の範囲で赤外光を放射する。また、撮像情報演算部80の撮像素子80cは、コントローラ22の視線方向を中心とした視野角θ2の範囲で入射する光を受光することができる。たとえば、マーカ340mおよび340nの視野角θ1は、共に34°(半値角)であり、一方、撮像素子80cの視野角θ2は41°である。プレイヤは、撮像素子80cが2つのマーカ340mおよび340nからの赤外光を受光することが可能な位置および向きとなるように、コントローラ22を把持する。具体的には、撮像素子80cの視野角θ2の中にマーカ340mおよび340nの少なくとも一方が存在し、かつ、マーカ340mまたは340nの少なくとも一方の視野角θ1の中にコントローラ22が存在する状態となるように、プレイヤはコントローラ22を把持する。この状態にあるとき、コントローラ22は、マーカ340mおよび340nの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ22の位置および向きを変化させることによってゲーム操作を行うことができる。
【0096】
なお、コントローラ22の位置および向きがこの範囲外となった場合、コントローラ22の位置および向きに基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
【0097】
操作可能範囲内でコントローラ22が把持される場合、撮像情報演算部80によって各マーカ340mおよび340nの画像が撮像される。すなわち、撮像素子80cによって得られる撮像画像には、撮像対象である各マーカ340mおよび340nの画像(対象画像)が含まれる。図7は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路80dは、各マーカ340mおよび340nの撮像画像における位置を表す座標(マーカ座標)を算出する。
【0098】
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路80dは、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路80dは、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である2つのマーカ340mおよび340nに対応する画像340m’および340n’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像である画像340m’および340n’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【0099】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路80dは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子80cの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子80cによって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。
【0100】
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをY軸正方向とし、右向きをX軸正方向とする座標系(XY座標系)で表現されるものとする。
【0101】
また、対象画像が正しく検出される場合には、判定処理によって2つの高輝度部分が対象画像として判定されるので、2箇所のマーカ座標が算出される。画像処理回路80dは、算出された2箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ(マーカ座標データ)は、上述したように、プロセッサ70によって入力データに含まれ、ゲーム装置12に送信される。
【0102】
ゲーム装置12(CPU40)は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ34の画面上におけるコントローラ22の指示位置(指示座標)と、コントローラ22からマーカ340mおよび340nまでの各距離とを算出することができる。具体的には、2つのマーカ座標の中点の位置から、コントローラ22の向いている位置すなわち指示位置が算出される。また、撮像画像における対象画像間の距離が、コントローラ22と、マーカ340mおよび340nとの距離に応じて変化するので、2つのマーカ座標間の距離を算出することによって、ゲーム装置12はコントローラ22と、マーカ340mおよび340nとの間の距離を把握できる。
【0103】
このような構成のゲームシステム10では、上述したように、ゲーム装置12は3次元画像処理装置としても機能し、たとえば、ゲーム装置12における3次元画像処理によって、図8に示すような表示画面100がモニタ34に表示される。
【0104】
図8に示すように、表示画面100には、3次元仮想空間内に設けられた断面が長方形であり、視点(仮想カメラ)から見て3次元空間の奥行き方向(Z軸方向)に延びる筒状のオブジェクト102が表示される。図8では、オブジェクト102を分かり易くするために、その内面に桝目模様を付してある。また、オブジェクト102の内部に、4つの立方体(ブロック状)のオブジェクト104a,104b,104c,104dがマトリックス状に並んで表示される。さらに、オブジェクト102の中心(中央)であり、オブジェクト104a,104b,104cおよび104dの間には、指示画像のオブジェクトとしてカーソル106が表示される。
【0105】
また、図8には、カーソル106によって指示される位置に、消失点110が示される。ただし、この消失点110は、実際の表示画面100では、表示されることはない。ここで、消失点110とは、視点(仮想カメラ)と注視点とを通る直線上であり、仮想カメラから無限遠の位置に存在する点である(図9参照)。たとえば、真っ直ぐに伸びる線路やその線路上を移動する列車が遠くに向かうほど小さくなり、やがて消失点に収束する。また、たとえば、ゲームにおいては、プレイヤオブジェクトが撃った弾丸や戦闘機から発射されたミサイルなども消失点に収束する。
【0106】
さらに、この実施例では、カーソル106の指示位置に対応する3次元空間内の位置が仮想カメラ(視点)の注視点に設定されている。したがって、表示画面100においては、注視点は消失点110と重なっていることになる。ただし、この注視点も、実際の表示画面100では、表示されることはない。
【0107】
このような表示画面100(3次元仮想空間)では、プレイヤがコントローラ22を操作することにより、カーソル106を移動させることができる。この実施例では、カーソル106は、2次元のオブジェクトであり、投影面上に配置(表示)されているものとする。この実施例では、投影面は、後述するニアクリッピング面に設定される。
【0108】
ただし、カーソル106のように、プレイヤないしユーザの操作に従って移動等されるオブジェクトは、3次元のオブジェクトとして3次元仮想空間内に配置されるようにしてもよい。かかる場合には、プレイヤないしユーザの操作に従って移動等される3次元のオブジェクトを含む3次元仮想空間の一部の範囲が投影面に投影される。したがって、投影変換された3次元のオブジェクトが投影面に表示されることとなる。たとえば、仮想ゲームにおいては、3次元仮想空間内に、人物、車や戦闘機などの3次元のオブジェクト(プレイヤオブジェクト)が配置され、プレイヤの操作に従って移動等が制御される。
【0109】
なお、カーソル106を3次元のオブジェクトとして3次元仮想空間内に配置されるようにする場合には、後述するように、撮影画像の投影面上におけるカーソル移動量を注視点面上で注視点からの移動量に変換すること(S21)は、結果として、3次元仮想空間内におけるカーソル106の位置を注視点面上の位置に変換することを意味する。
【0110】
図8に示すような表示画面100を表示する場合には、まず、3次元仮想空間内に、オブジェクト102,104a−104dが配置(モデリング)される。次に、3次元仮想空間においてどの範囲を切り抜くかが決定される。切り抜く範囲が決定されると、これに基づいて注視点の位置が決定される。つまり、注視点の位置座標(ax,ay,az)が決定される。ただし、図9−図11に示すように、カメラ座標系は、3次元仮想空間において、水平(横)方向がX軸方向であり、垂直(縦)方向がY軸方向であり、奥行き方向がZ軸方向である。また、仮想カメラからニアクリッピング面やファークリッピング面を見る方向を正面方向とした場合に、左方向がX軸のプラスであり、上方向がY軸のプラスであり、正面方向がZ軸のプラスである。ただし、カメラ座標系では、原点(0,0,0)は、仮想カメラ(視点)の位置である。
【0111】
次に、3次元仮想空間における視点(仮想カメラ)の向きが設定され、注視点と仮想カメラとの距離dが設定される。ただし、仮想カメラの向きは、正面方向(Zx,Zy,Zz)、上方向(Yx,Yy,Yz)および左方向(Xx,Xy,Xz)の3つのベクトルで設定され、各ベクトルは大きさが「1」の単位ベクトルである。
【0112】
また、仮想カメラからニアクリッピング面への距離nと、仮想カメラからファークリッピング面への距離fとが決定される。ただし、これらの距離nおよび距離fは、3次元仮想空間のどの範囲を切り抜くかによって決定される。さらに、ニアクリッピング面の大きさ(横の長さwxと縦の長さwy)が設定される。ただし、このニアクリッピング面の大きさは、表示物すなわち画面(モニタ34)の大きさによって決定される。
【0113】
したがって、図9に示すように、仮想カメラから3次元仮想空間を見た場合に、上述したように、ニアクリッピング面とファークリッピング面とを決定すると、ピラミッド状の錐体(四角錐)200が規定される。この錐体200のうち、ニアクリッピング面とファークリッピング面とで挟まれる四角錐台の部分が視体積である。
【0114】
ただし、図9は、錐体200を仮想カメラの後方の斜め上方から見た斜視図を示してある。
【0115】
なお、この実施例では、仮想カメラの位置を頂点とし、ファークリッピング面を底面とする四角錐の全体と、ニアクリッピング面を上面とし、ファークリッピング面を底面とする四角錐台とを区別するために、この四角錐を「錐体」と呼ぶが、この「錐体」は「ビューフラスタム」や「視体積」と呼ばれることもある。
【0116】
また、図9に示すように、ニアクリッピング面とファークリッピング面との間には、注視点面が設けられる。ここで、注視点面は、ニアクリッピング面およびファークリッピング面と平行な平面であり、仮想カメラの注視点が設定される(含まれる)面を意味する。この実施例では、図8(図12および図13も同じ。)に示す表示画面100に表示されるオブジェクト104a−104dの6面のうち、こちら側(視点側)を向いている面が注視点面と同一平面に来るように、各オブジェクト104a−104dは3次元仮想空間に配置されている。
【0117】
図8に示すような表示画面100では、プレイヤないしユーザがコントローラ22を用いてカーソル106を移動させると、それに従って注視点が移動される。ここで、通常の3次元画像処理においては、注視点を移動させると、それに追従して仮想カメラも移動されるため、その移動に従って錐体200が平行移動される。このため、表示画面100はスクロールされる。したがって、たとえば、遠くに存在する敵オブジェクトに弾丸を撃って攻撃する場合には、プレイヤオブジェクトが敵オブジェクトの正面に並ぶように当該プレイヤオブジェクトを移動させても、弾丸のオブジェクトは消失点110に収束される。つまり、プレイヤオブジェクトが画面の中央に存在しない場合には、プレイヤオブジェクトが射撃した弾丸のオブジェクトは、斜め方向に飛んで行く。このため、プレイヤは、そのことを予測して弾丸を撃ったり、試し撃ちをしてから敵オブジェクトを狙って弾丸を撃ったりする必要がある。しかし、このような予測は困難であり、また、無駄な攻撃操作が必要である。
【0118】
そこで、この実施例では、注視点が移動された場合であっても、注視点面を移動させないように、つまり注視点面が元の位置に維持されるように、視体積を変形させて、表示画面上で注視点と消失点とが重なるようにしてある。これによって、3次元仮想空間上での真正面が2次元の表示画面(投影面)上においても真正面となるようにする。このため、3次元仮想空間を容易に認識(把握)することができるのである。
【0119】
具体的な視体積の変形処理について、図10および図11を用いて説明することにする。ただし、図10(A)は錐体200を仮想カメラの後方の斜め上方から見た斜視図であり、図10(B)は錐体200を鉛直上方(真上)から見た上面図であり、図11(A)は錐体200を右側面から見た側面図であり、そして、図11(B)は錐体200を仮想カメラの後方から見た後端面図である。また、図11および図12において、黒の太線で示す錐体200が基準(元)の錐体(説明の便宜上、「200a」とする)であり、白抜きの太線で示す錐体200が基準の錐体200aを注視点の移動に従って平行移動した錐体(説明の便宜上、「200b」とする)であり、斜線を付した太線で示す錐体200が平行移動した錐体200b(視体積)を変形させた錐体(説明の便宜上、「200c」とする)である。
【0120】
上述したように、カーソル106が移動されると、表示画面100すなわち投影面上におけるカーソル106の移動量(カーソル移動量)が算出される。この実施例では、カーソル移動量は、X軸方向およびY軸方向のそれぞれについて算出され、投影面(表示画面100)上における基準位置からの距離で表わされる。この実施例では、基準位置は投影面の中心点である。
【0121】
表示画面100上におけるカーソル移動量は、3次元空間内における移動量に変換され、移動後のカーソル106が指示する位置(指示位置)が新たな注視点として設定される。この新たな注視点に合わせて仮想カメラの位置(カメラ座標)が設定される。つまり、カーソル106の移動に従って仮想カメラが平行移動される。
【0122】
図10(B)および図11(A)から良く分かるように、カーソル106の移動に従って、基準の錐体200aが錐体200bで示すように、平行移動される。ただし、3次元仮想空間におけるX軸方向(水平方向)の移動量が図10(B)に示され、3次元仮想空間におけるY軸方向(垂直方向)の移動量が図11(A)に示される。
【0123】
たとえば、投影面(表示画面100)のローカル座標における中心点を原点(0,0)とした場合において、投影面上におけるカーソル106の指示位置すなわちカーソル移動量を示す2次元のベクトル(sx,sy)が検出される。ただし、ローカル座標系において、水平方向がX軸方向であり、垂直方向がY軸方向である。また、左方向がX軸のプラスであり、上方向がY軸のプラスである。また、この実施例では、「カーソル移動量」と表記するが、これは原点(0,0)からのずれ(変位)量を意味し、必ずしもカーソル106が移動されることを前提とするものではない。つまり、たとえば、カーソル106が原点(0,0)から移動された後に、その移動後の位置に留まる場合にもカーソル移動量は検出される。
【0124】
ここで、カーソル移動量が0である場合には、注視点は変化されないため、そのまま投影変換して図8に示すような表示画面100がモニタ34に表示される。一方、カーソル移動量が0でない場合には、そのカーソル移動量が3次元仮想空間の注視点面のローカル座標における中心点を原点(0,0,0)とした場合における移動量に変換される。変換された移動量を示す3次元ベクトル(vx,vy,vz)は、仮想カメラの方向を示す3つのベクトルを用いて、数1に従って算出される。
【0125】
[数1]
vx=sx×Xx+sy×Yx
vy=sx×Xy+sy×Yy
vz=sx×Xz+sy×Yz
また、カーソル106の位置に合わせた新たな注視点(bx,by,bz)は、数2に従って算出される。つまり、新たな注視点(bx,by,bz)は、元の注視点(ax,ay,az)を移動後のカーソル106の指示位置に平行移動することにより求められる。
【0126】
[数2]
bx=ax+vx
by=ay+vy
bz=az+vz
さらに、新たな注視点(bx,by,bz)に合わせたカメラ座標(cx,cy,cz)は、数3に従って算出される。
【0127】
[数3]
cx=bx−d×Zx
cy=by−d×Zy
cz=bz−d×Zz
この実施例では、注視点、仮想カメラの向き、および注視点と仮想カメラとの距離からカメラ座標を算出することができるため、数3に従う計算処理を1回で済ませるようにしてある。ただし、予めカメラ座標(cx,cy,cz)を算出している場合には、注視点と同様に、予め(直前に)算出されたカメラ座標(cx,cy,cz)を平行移動させるようにすることも可能である。具体的には、数4に従って平行移動後のカメラ座標が算出される。かかる場合には、予めカメラ座標を算出するための計算処理と、直前に算出されたカメラ座標を平行移動するための計算処理とが実行されることになる。
【0128】
[数4]
cx=cx+vx
cy=cy+vy
cz=cz+vz
このように、注視点およびカメラ座標が移動されると、図10および図11の白抜きの太線で示す錐体200bのように、元の錐体200aが平行移動される。このままでは、単なるスクロールと同じであるため、元の注視点(ax,ay,az)の移動を打ち消し、表示画面100の中央に留まるように、錐体200(視体積)の範囲を設定する。つまり、注視点面が元の錐体200aにおける位置から移動しないように、錐体200b(視体積)を変形させる。具体的には、注視点面での移動量(カーソル移動量)をニアクリッピング面での移動量に変換した後、ニアクリッピング面の左右端および上下端の位置をニアクリッピング面の大きさに従って設定する。これは、数5に従って設定される。ただし、ニアクリッピング面(画面)左端の位置がx1であり、画面右端の位置がx2であり、画面上端の位置がy1であり、そして、画面下端の位置がy2である。
【0129】
[数5]
x1=−sx×(n÷d)+(wx÷2)
x2=−sx×(n÷d)−(wx÷2)
y1=−sy×(n÷d)+(wy÷2)
y2=−sy×(n÷d)−(wy÷2)
なお、仮想カメラから注視点面までの距離dと仮想カメラからニアクリッピング面までの距離nとの比率を掛けることにより、注視点面での移動量をニアクリッピング面での移動量に変換している。また、投影面(ニアクリッピング面)の中心点からのカーソル移動量(sx,sy)を用いるため、横の長さwxと縦の長さwyとを半分にして、加算または減算してある。
【0130】
このようにして、視体積すなわち錐体200は変形される。上述したように、変形された錐体200cは、図10および図11の斜線を付した太線によって表わされる。図10および図11から分かるように、元の錐体200aにおける注視点面と変形後の錐体200cにおける注視点面とが重なっている。つまり、注視点面が移動しないように、錐体200(視体積)が変形されているのである。
【0131】
錐体200(視体積)が変形されると、カメラ座標(cx,cy,cz)、注視点(bx,by,bz)および錐体200(視体積)の情報{n,f,x1,x2,y1,y2}に基づいてカメラ行列が生成される。ここで、カメラ行列は、3次元仮想空間を仮想カメラから見た方向に変換する3×4ビュー行列と、2次元画面(投影面)に投影する4×4プロジェクション行列とからなる。具体的には、数6にビュー行列が示され、数7にプロジェクション行列が示される。
【0132】
【数6】

【0133】
【数7】

【0134】
このようなカメラ行列に従って投影変換(透視変換)され、つまり3次元画像が投影面に描画され、カーソル106(注視点)の位置が移動された表示画面100がモニタ34に表示される。この結果、カーソル106(注視点)の位置が移動されても、表示画面100(投影面)上において、注視点と消失点110とが重なるように、表示画面100が表示される。
【0135】
したがって、たとえば、図12および図13に示すように、カーソル106を移動させた場合には、カーソル106が指示する位置(指示位置)が3次元仮想空間および2次元の表示画面100において正面となる。図12では、カーソル106によって、左下のオブジェクト104cの中央が指示され、表示画面100において、その指示位置に注視点と消失点110が重なっている。同様に、図13では、カーソル106によって、右上のオブジェクト104bと右下のオブジェクト104dとの間が指示され、表示画面100において、その指示位置に注視点と消失点110とが重なっている。
【0136】
なお、図8、図12および図13からも分かるように、カーソル106(注視点)が移動された場合であっても、注視点面は移動されていない。つまり、元の注視点は表示画面100(投影面)の中心から移動されていないのである。
【0137】
図14は図2に示したメインメモリ(42eまたは46)のメモリマップを示す。図14に示すように、メインメモリ42e,46は、プログラム記憶領域500およびデータ記憶領域502を含む。プログラム記憶領域500は、3次元画像処理プログラムを記憶し、この3次元画像処理プログラムは、入力データ検出プログラム500a、オブジェクト制御プログラム500b、注視点制御プログラム500c、カメラ制御プログラム500d、視体積制御プログラム500eおよび画像描画プログラム500fなどによって構成される。
【0138】
入力データ検出プログラム500aは、コントローラ22からの入力データを検出し、検出した入力データをデータ記憶領域502に記憶(一時記憶)するためのプログラムである。オブジェクト制御プログラム500bは、入力データ検出プログラム500aに従って検出された入力データに従ってオブジェクト(106)の移動等を制御するためのプログラムである。
【0139】
注視点制御プログラム500cは、仮想カメラの注視点の位置を設定するためのプログラムであり、注視点を予め設定された基準位置に自動的に設定したり、プレイヤないしユーザの指示に従って注視点を設定(移動)したりする。この実施例では、コントローラ22からのプレイヤないしユーザの操作入力(入力データ)に従ってカーソル106が移動され、それに従って注視点が移動される。ただし、最初に表示画面100が表示される際には、注視点は画面の中心(基準位置)と重なる位置に設定される。
【0140】
カメラ制御プログラム500dは、仮想カメラの位置(カメラ座標)および仮想カメラの向きを設定するためのプログラムである。この実施例では、最初に表示画面100が表示される際には、仮想カメラの注視点、仮想カメラの向きおよび仮想カメラと注視点との距離が3次元仮想空間において開発者等が意図する一部の範囲を切り抜くように設定される。ただし、カーソル106の移動に従って注視点が変化さると、注視点の変化に応じて、仮想カメラの位置および向きが変化される。
【0141】
視体積制御プログラム500eは、錐体200(視体積)の範囲を設定するためのプログラムである。この実施例では、注視点が変化されると、注視点の変化に応じて、錐体200(視体積)の範囲が設定(変更)される。画像描画プログラム500fは、仮想カメラの位置、注視点および視体積(錐体200)の情報から、カメラ行列を生成し、このカメラ行列に従って3次元画像を描画するためのプログラムである。
【0142】
なお、図示は省略するが、3次元画像処理プログラムには、3次元仮想空間内にオブジェクトを生成するためのプログラムやテクスチャを貼り付けるためのプログラムなども含まれる。
【0143】
データ記憶領域502には、入力データ502a、注視点座標データ502b、カメラ座標データ502c、カメラ方向データ502d、第1距離データ502e、第2距離データ502f、第3距離データ502g、ニアクリッピング面の大きさデータ502h、カーソル座標データ502i、移動量データ502j、視体積範囲データ502kおよび画像データ502mなどのデータが記憶される。
【0144】
入力データ502aは、上述したように、入力データ検出プログラム500aに従って検出されるデータであって、コントローラ22から入力(送信)される。この入力データ502aは、たとえば、カーソル106の移動処理に用いられると、データ記憶領域502から削除される。注視点座標データ502bは、3次元仮想空間における注視点の位置座標についてのデータである。カメラ座標データ502cは、3次元仮想空間における仮想カメラの位置(カメラ座標)についてのデータである。カメラ方向データ502dは、3次元仮想空間における仮想カメラの向き(正面方向、上方向、左方向)についてのデータである。
【0145】
第1距離データ502eは、注視点と仮想カメラとの距離dについてのデータある。第2距離データ502fは、仮想カメラからニアクリッピング面までの距離nについてのデータである。第3距離データ502gは、仮想カメラからファークリッピング面までの距離fについてのデータである。ニアクリッピング面の大きさデータ502hは、ニアクリッピング面の横の長さwxと縦の長さwfとのついてのデータである。
【0146】
カーソル座標データ502iは、2次元の投影面(表示画面100)上におけるカーソル106の位置座標についてのデータである。移動量データ502jは、2次元の投影面上における中心からカーソル106の指示位置までの距離(カーソル移動量)を、3次元仮想空間における注視点面の中心からの距離(移動量)に変換したデータである。
【0147】
視体積範囲データ502kは、視体積(錐体200)の範囲を設定するためのデータであり、具体的は、ニアクリッピング面(画面)左端の位置x1,画面右端の位置x2,画面上端の位置y1,画面下端の位置y2についての座標データである。画像データ502mは、3次元仮想空間におけるオブジェクトなどを生成するためのポリゴンデータやテクスチャデータなどのデータである。
【0148】
なお、図示は省略するが、データ記憶領域502には、3次元画像処理プログラムを実行するための他のデータが記憶されたり、カウンタ(タイマ)やフラグが設けたりする。
【0149】
具体的には、図2に示したCPU40が図15および図16に示すフロー図に従って3次元画像処理を実行する。なお、図示および詳細な説明は省略するが、別の処理によって、CPU40は、入力データ検出処理およびオブジェクト移動処理を実行し、コントローラ22からの入力データに従ってカーソル106を投影面上で移動させるのである。
【0150】
図15に示すように、CPU40は3次元画像処理を開始すると、ステップS1で、注視点(ax,ay,az)を設定する。つまり、3次元仮想空間における注視点の位置座標(注視点座標)が設定され、設定された注視点座標に対応する注視点データ502bがデータ記憶領域502に記憶される。
【0151】
次のステップS3では、仮想カメラの正面方向(Zx,Zy,Zz)、上方向(Yx,Yy,Yz)および左方向(Xx,Xy,Xz)を設定する。つまり、仮想カメラの向きが設定され、設定された向きに対応するカメラ方向データ502dがデータ記憶領域502に記憶される。ただし、各方向を示すベクトルの大きさは「1」である。
【0152】
続いて、ステップS5では、注視点と仮想カメラとの距離dを設定する。つまり、注視点と仮想カメラとの距離dが決定され、決定された距離dに対応する第1距離データ502eがデータ記憶領域502に記憶される。ステップS7では、仮想カメラから視体積のニアクリッピング面への距離nとファークリッピング面への距離fとを設定する。つまり、距離nと距離fとが決定され、距離nに対応する第2距離データ502fがデータ記憶領域502に記憶されるとともに、距離fに対応する第3距離データ502gがデータ記憶領域502に記憶される。
【0153】
続くステップS9では、ニアクリッピング面の横の長さwxと縦の長さwyとを設定する。つまり、横の長さwxと縦の長さwyとが決定され、決定された横の長さwxと縦の長さwyとに対応するニアクリッピング面の大きさデータ502hがデータ記憶領域502に記憶される。
【0154】
図16に示すように、次のステップS11では、画面上でのカーソル座標(sx,sy)を取得する。つまり、表示画面100(投影面)におけるカーソル106の表示位置が検出される。そして、検出されたカーソル106の表示位置に対応するカーソル座標データ502iがデータ記憶領域502に記憶される。
【0155】
次のステップS13では、カーソル移動量が0であるかどうかを判断する。つまり、カーソル座標(sx,sy)が(0,0)であるかどうかが判断される。ステップS13で“YES”であれば、つまりカーソル座標(sx,sy)が(0,0)であれば、カーソル移動量が0であると判断して、ステップS15で、注視点(ax,ay,az)に合わせたカメラ座標(cx,cy,cz)を設定する。ここでは、CPU40は、数8に従ってカメラ座標(cx,cy,cz)を算出し、算出したカメラ座標に対応するカメラ座標データ502cをデータ記憶領域502に記憶する。ただし、数8は数3において、注視点の座標を(ax,ay,az)としただけである。
【0156】
[数8]
cx=ax−d×Zx
cy=ay−d×Zy
cz=az−d×Zz
続くステップS17では、通常の視体積の範囲を設定する。ここでは、CPU40は、数9に従って、視体積の範囲、すなわち、画面左端の位置x1,画面右端の位置x2,画面上端の位置y1および画面下端の位置y2を算出し、算出した視体積の範囲に対応する視体積範囲データ502kをデータ記憶領域502に記憶する。ただし、この数9は数5において、sx=sy=0としただけである。
【0157】
[数9]
x1=wx÷2
x2=−wx÷2
y1=wy÷2
y2=−wy÷2
そして、ステップS19で、通常のカメラ行列を生成して、ステップS31に進む。ただし、ステップS19においては、注視点(ax,ay,az)と、ステップS15で算出されたカメラ座標(cx,cy,cz)と、ステップS17で算出された視体積の範囲を含む視体積情報{n,f,x1,x2,y1,y2}とから数6および数7に示したカメラ行列が算出される。
【0158】
また、ステップS13で“NO”であれば、つまりカーソル座標(sx,sy)が(0,0)でなければ、カーソル移動量が0でないと判断して、ステップS21で、画面中心からのカーソル移動量を、仮想空間の注視点を含むカメラ投影面と平行な平面上での注視点からの移動量(vx,vy,vz)に変換する。より具体的には、CPU40は、表示画面100(投影面)の中心からカーソル106の位置(カーソル位置)までのカーソル移動量(X軸方向およびY軸方向のそれぞれの距離)を算出し、算出したカーソル移動量を数1に従って3次元仮想空間における注視点面上における移動量に変換する。この変換された移動量についてのデータ(移動量データ)502jがデータ記憶領域502に記憶される。
【0159】
次のステップS23では、カーソル位置に合わせた新たな注視点(bx,by,bz)を設定する。つまり、CPU40は、数2に従って、表示画面100(投影面)上のカーソル106が指示する位置(指示位置)を3次元仮想空間における注視点面上の位置に変換し、変換された指示位置を新たな注視点の位置座標に決定し、決定した位置座標に対応する注視点座標データ502bをデータ記憶領域502に記憶する。つまり、注視点座標データ502bが更新される。
【0160】
続いて、ステップS25では、新たな注視点(bx,by,bz)に合わせたカメラ座標(cx,cy,cz)を設定する。つまり、CPU40は、カーソル106の位置に従って移動された注視点と同様に、数3に従って、仮想カメラの位置座標(カメラ座標)を平行移動し、平行移動したカメラ座標に対応するカメラ座標データ502cをデータ記憶領域502に記憶する。
【0161】
次に、ステップS27では、元の注視点(ax,ay,az)が画面中央に留まるように視体積の範囲を設定する。ここでは、CPU40は、数5に従って、表示画面100上におけるカーソル106(元の注視点)の移動量を打ち消すように、ニアクリッピング面の各辺の移動量を算出する。つまり、CPU40は、視体積の範囲(x1,x2,y1,y2)を算出し、算出した視体積の範囲に対応する視体積範囲データ502kをデータ記憶領域502に記憶する。したがって、注視点面が移動しないように、視体積(錐体200)が変形される。
【0162】
続くステップS29では、カメラ座標(cx,cy,cz)と注視点(bx,by,bz)と視体積情報{n,f,x1,x2,y1,y2}とから数6および数7に示したカメラ行列を生成する。ステップS19またはステップS29において、カメラ行列を生成すると、ステップS31で、3D描画する。つまり、カメラ行列に従って3次元画像を投影面に描画し、表示画面100をモニタ34に表示する。
【0163】
そして、ステップS33で、終了かどうかを判断する。つまり、プレイヤないしユーザの指示に従って3次元画像処理の終了の指示が入力されたかどうかを判断する。ステップS33で“NO”であれば、つまり3次元画像処理を終了しない場合には、そのままステップS11に戻る。一方、ステップS33で“YES”であれば、つまり3次元画像処理を終了する場合には、そのまま処理を終了する。
【0164】
この実施例によれば、カーソルのようなオブジェクトの移動に従って注視点が移動されると、注視点面が移動されないように、視体積を変形させるので、投影面(表示画面)上で注視点と消失点とが重なる。このため、3次元仮想空間における真正面が2次元の表示画面上においても真正面となるので、3次元仮想空間を容易に認識(把握)することができる。
【0165】
なお、この実施例では、カーソルのようなオブジェクトの移動に従って注視点が移動されるようにしたが、注視点を直接的に移動させるようにしてもよい。
【0166】
また、この実施例では、カーソルのようなオブジェクトを移動させるようにしたが、ゲーム装置を用いてゲームをプレイする場合には、カーソルに代えてプレイヤオブジェクトを表示するようにしてもよい。
【0167】
さらに、この実施例では、ゲーム装置とモニタとが個別に設けられたゲーム装置についてのみ説明したが、ゲーム機能を有するコンピュータ、モニタがゲーム装置に一体的に設けられた携帯ゲーム装置(ゲーム機能を有する携帯電話機を含む)、アーケードゲームのような他のゲーム装置を用いることも可能である。
【図面の簡単な説明】
【0168】
【図1】図1はこの発明のゲームシステムの一実施例を示す図解図である。
【図2】図2は図1に示すゲームシステムの電気的な構成を示すブロック図である。
【図3】図3は図1に示すコントローラの外観を説明するための図解図である。
【図4】図4は図3に示すコントローラの電気的な構成を示すブロック図である。
【図5】図5は図1に示すコントローラを用いてゲームプレイするときの状態を概説するための図解図である。
【図6】図6は図1に示すマーカおよびコントローラの視野角を説明するための図解図である。
【図7】図7は対象画像を含む撮像画像の一例を示す図解図である。
【図8】図8は図1に示すモニタに表示される表示画面の例を示す図解図である。
【図9】図9は3次元仮想空間における錐体(視体積)を説明するための図解図である。
【図10】図10は3次元仮想空間における錐体(視体積)の平行移動および変形を説明するための図解図である。
【図11】図11は3次元仮想空間における錐体(視体積)の平行移動および変形を説明するための図解図である。
【図12】図12は図1に示すモニタに表示される表示画面の他の例を示す図解図である。
【図13】図13は図1に示すモニタに表示される表示画面のその他の例を示す図解図である。
【図14】図14は図2に示すメインメモリのメモリマップを示す図解図である。
【図15】図15は図2に示すCPUの3次元画像処理の一部を示すフロー図である。
【図16】図16は図2に示すCPUの3次元画像処理の他の一部であって、図15に後続するフロー図である。
【符号の説明】
【0169】
10 …ゲームシステム
12 …ゲーム装置
18 …光ディスク
22 …コントローラ
26 …入力手段
34 …モニタ
34a …スピーカ
40 …CPU
42 …システムLSI
42a …入出力プロセッサ
42b …GPU
42c …DSP
42d …VRAM
42e …内部メインメモリ
44 …フラッシュメモリ
46 …外部メインメモリ
48 …ROM/RTC
50 …無線通信モジュール
52 …無線コントローラモジュール
54 …ディスクドライブ
56 …AV IC
58 …AVコネクタ
60 …拡張コネクタ
62 …メモリカード用コネクタ
70 …プロセッサ
74 …加速度センサ
80 …画像情報演算部
80c …撮像素子
80d …画像処理回路

【特許請求の範囲】
【請求項1】
3次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する3次元画像処理装置のコンピュータにおいて実行される3次元画像処理プログラムであって、
前記3次元画像処理装置のコンピュータを、
入力装置からの操作入力を検出する操作入力検出手段、
前記操作入力検出手段によって検出された操作入力に基づいて前記3次元仮想空間内または前記撮影画像上でオブジェクトを移動させるオブジェクト移動手段、
前記3次元仮想空間内または前記撮影画像上における前記オブジェクトの位置に基づいて前記仮想カメラの注視点および位置座標を設定するパラメータ設定手段、および
前記オブジェクト移動手段によって前記オブジェクトが移動された場合に、前記仮想カメラの注視点を含み、かつ前記撮影画像の投影面に平行である平面を移動させないように、前記仮想カメラの視体積を変形させる視体積変形手段として機能させる、3次元画像処理プログラム。
【請求項2】
3次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する3次元画像処理装置のコンピュータにおいて実行される3次元画像処理プログラムであって、
前記3次元画像処理装置のコンピュータを、
前記入力装置からの操作入力を検出する操作入力検出手段、
前記操作入力検出手段によって検出された操作入力に基づいて前記3次元仮想空間内または前記撮影画像上でオブジェクトを移動させるオブジェクト移動手段、
前記3次元仮想空間内または前記撮影画像上に設定された基準点に対するオブジェクトの変位量を検出する変位量検出手段、および
前記変位量検出手段によって検出された変位量が0でない場合に、前記撮影画像の投影面において、当該変位量を打ち消すとともに、前記オブジェクトの位置と前記3次元仮想空間における消失点とが重なるように、前記仮想カメラのパラメータを設定するパラメータ設定手段として機能させる、3次元画像処理プログラム。
【請求項3】
前記パラメータ設定手段によって設定されるパラメータは、前記仮想カメラの位置座標、注視点および視体積を含む、請求項2記載の3次元画像処理プログラム。
【請求項4】
前記オブジェクトは、前記撮影画像の投影面上に描画される2次元のオブジェクトである、請求項1ないし3のいずれかに記載の3次元画像処理プログラム。
【請求項5】
前記オブジェクトは、前記3次元仮想空間内の3次元のオブジェクトであり、当該3次元のオブジェクトを含む当該3次元仮想空間内の一部の範囲を前記仮想カメラで撮影した前記撮影画像の投影面に投影される、請求項1記載の3次元画像処理プログラム。
【請求項6】
前記3次元仮想空間内における前記オブジェクトの位置を、前記3次元仮想空間において前記撮影画像の投影面と平行な平面上での位置に変換する位置変換手段をさらに備え、
前記パラメータ設定手段は、前記位置変換手段によって変換された位置に基づいて前記仮想カメラの注視点および前記位置座標を設定する、請求項5記載の3次元画像処理プログラム。
【請求項7】
前記オブジェクトは、前記3次元仮想空間内の3次元のオブジェクトであり、当該3次元のオブジェクトを含む当該3次元仮想空間内の一部の範囲を前記仮想カメラで撮影した前記撮影画像の投影面に投影される、請求項2または3記載の3次元画像処理プログラム。
【請求項8】
前記変位量検出手段によって検出された前記3次元仮想空間内に設定された基準点に対するオブジェクトの変位量を、前記3次元仮想空間において前記撮影画像の投影面と平行な平面上での変位量に変換する変位量変換手段をさらに備え、
前記パラメータ設定手段は、前記変位量変換手段によって変換された変位量が0でない場合に、当該変位量を打ち消すように前記仮想カメラのパラメータを設定する、請求項7記載の3次元画像処理プログラム。
【請求項9】
前記パラメータ設定手段は、前記仮想カメラの位置座標を、前記仮想カメラの注視点、向き、および注視点と当該仮想カメラとの距離に基づいて設定する、請求項1ないし3のいずれかに記載の3次元画像処理プログラム。
【請求項10】
前記パラメータ設定手段は、前記仮想カメラの位置座標を、直前の前記仮想カメラの位置座標を前記仮想カメラの注視点の移動に従って平行移動して設定する、請求項1ないし3のいずれかに記載の3次元画像処理プログラム。
【請求項11】
前記入力装置はポインティングデバイスであり、
前記オブジェクト移動手段は、前記ポインティングデバイスで指示された前記撮影画像の投影面上の位置座標に前記オブジェクトを移動させる、請求項1ないし10のいずれかに記載の3次元画像処理プログラム。
【請求項12】
3次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する3次元画像処理装置であって、
前記入力装置からの操作入力を検出する操作入力検出手段、
前記操作入力検出手段によって検出された操作入力に基づいて前記3次元仮想空間内または前記撮影画像上でオブジェクトを移動させるオブジェクト移動手段、
前記3次元仮想空間内または前記撮影画像上における前記オブジェクトの位置に基づいて前記仮想カメラの注視点および位置座標を設定するパラメータ設定手段、および
前記オブジェクト移動手段によって前記オブジェクトが移動された場合に、前記仮想カメラの注視点を含み、かつ前記撮影画像の投影面に平行である平面を移動させないように、前記仮想カメラの視体積を変形させる視体積変形手段を備える、3次元画像処理装置。
【請求項13】
3次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する3次元画像処理装置であって、
前記入力装置からの操作入力を検出する操作入力検出手段、
前記操作入力検出手段によって検出された操作入力に基づいて前記3次元仮想空間内または前記撮影画像上でオブジェクトを移動させるオブジェクト移動手段、
前記3次元仮想空間内または前記撮影画像上に設定された基準点に対するオブジェクトの変位量を検出する変位量検出手段、および
前記変位量検出手段によって検出された変位量が0でない場合に、前記撮影画像の投影面において、当該変位量を打ち消すとともに、前記オブジェクトの位置と前記3次元仮想空間における消失点とが重なるように、前記仮想カメラのパラメータを設定するパラメータ設定手段を備える、3次元画像処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2010−72668(P2010−72668A)
【公開日】平成22年4月2日(2010.4.2)
【国際特許分類】
【出願番号】特願2008−235903(P2008−235903)
【出願日】平成20年9月16日(2008.9.16)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】