JP5063022B2 - プログラム、情報記憶媒体及び画像生成システム - Google Patents

プログラム、情報記憶媒体及び画像生成システム Download PDF

Info

Publication number
JP5063022B2
JP5063022B2 JP2006095787A JP2006095787A JP5063022B2 JP 5063022 B2 JP5063022 B2 JP 5063022B2 JP 2006095787 A JP2006095787 A JP 2006095787A JP 2006095787 A JP2006095787 A JP 2006095787A JP 5063022 B2 JP5063022 B2 JP 5063022B2
Authority
JP
Japan
Prior art keywords
vector
controller
orientation
coordinate system
rotation parameter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006095787A
Other languages
English (en)
Other versions
JP2007267851A (ja
Inventor
量一 加来
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Namco Ltd
Bandai Namco Entertainment Inc
Original Assignee
Namco Ltd
Namco Bandai Games Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Namco Ltd, Namco Bandai Games Inc filed Critical Namco Ltd
Priority to JP2006095787A priority Critical patent/JP5063022B2/ja
Publication of JP2007267851A publication Critical patent/JP2007267851A/ja
Application granted granted Critical
Publication of JP5063022B2 publication Critical patent/JP5063022B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Position Input By Displaying (AREA)

Description

本発明は、プログラム、情報記憶媒体及び画像生成システムに関する。
最近ではゲーム用のコントローラに加速度センサを設けてコントローラの向きや回転を検出して、ゲーム入力とすることが可能なゲーム装置が開発されている。
このようなゲーム装置において、検出された向きや回転に応じてゲーム空間のオブジェクトの向きや回転を制御して、当該オブジェクトを含むゲーム画像を生成するゲームも実現可能である。
特開2003−225467号公報
このようなゲームにおいてはコントローラの向きや回転に応じて矛盾なく動作するゲーム画像を生成することが重要なポイントとなる。
しかし加速度センサで検出できるのは加速度ベクトルにすぎないため、この加速度ベクトルからいかに精度よくまたは矛盾なくコントローラの向きや回転に関する情報を取り出すかが問題となる。
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、コントローラに設けられた加速度センサの検出値に基づき精度よく、または矛盾なくコントローラの向きや回転に関する情報を取得することが可能なプログラム、情報記憶媒体及び画像生成システムを提供することにある。
(1)本発明は、
操作部に設けられた加速度センサの出力値である加速度ベクトルに基づいて、操作部の向き又は回転を特定するための向き/回転パラメータを演算する向き/回転パラメータ演算部と、
演算された向き/回転パラメータに基づきオブジェクト空間の操作対象オブジェクト又は仮想カメラの向き、回転、姿勢、動作、移動方向の少なくとも1つを制御する演算を行うゲーム処理と、
オブジェクト空間を仮想カメラからみた画像を生成する画像生成部と、
としてコンピュータを機能させ、
向き/回転パラメータ演算部は、
ワールド座標系における上下方向の軸ベクトルであるWyベクトルまたはWyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCyベクトルを、センサの出力値に基づき特定し、
当該WyベクトルまたはCyベクトルに基づき、ワールド座標系における他の2軸の軸ベクトルであるWxベクトル、Wyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCxベクトル、Czベクトルを求め、求めたCxベクトル、Cyベクトル、Czベクトルに基づき向き/回転パラメータを決定するプログラムに関係する。
また本発明は、上記各部を含む画像生成システムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
加速度センサの出力値は、ワールド座標系での「下」方向(Y軸の反対方向)をコントローラ基準座標系に変換したものである。
ここでベクトルを特定したり求める際には、少なくともベクトルの方向を特定または求めればよく大きさに関しては任意である。したがってベクトルを直接取り扱う構成に限られず正規化したベクトルをもちいて特定したり求めたりする場合も本発明の範囲内である。
またCxベクトル、Cyベクトル、Czベクトルに基づき向き/回転パラメータを求めるとは、例えばCxベクトル、Cyベクトル、Czベクトルの正規化ベクトルに基づき向き/回転パラメータを求める構成や、またCxベクトル、Cyベクトル、Czベクトルの方向成分に基づき向き/回転パラメータを求める構成も含む。
本発明によれば操作部に設けられた加速度センサの出力値である加速度ベクトルに基づいて、操作部の向き又は回転を特定するための向き/回転パラメータをリアルタイムに演算して、操作対象オブジェクト又は仮想カメラの向き、回転、姿勢、動作、移動方向の少なくとも1つを制御することができる。
例えばコントローラの傾きや回転に応じて、プレーヤキャラクタである移動体オブジェクトを傾かせたり回転させたりして、かかる移動体オブジェクトを含むゲーム空間の3人称画像を生成するようにしてもよい。
また例えばコントローラの傾きや回転に応じて、仮想カメラを傾かせたり回転させたりして、ゲーム空間の1人称画像を生成するようにしてもよい。
このようにするとコントローラの傾きや回転にリアルタイムに連動してオブジェクトや視線方向がリアルタイムに変化するゲーム画像を生成することができる。
(2)本発明は、
操作部に設けられた加速度センサの出力値である加速度ベクトルに基づいて、操作部の向き又は回転を特定するための向き/回転パラメータをリアルタイムに演算する向き/回転パラメータ演算部と、としてコンピュータを機能させるプログラムであって、
前記向き/回転パラメータ演算部は、
ワールド座標系における上下方向の軸ベクトルであるWyベクトルまたはWyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCyベクトルを、センサの出力値に基づき特定し、
当該WyベクトルまたはCyベクトルに基づき、ワールド座標系における他の2軸の軸ベクトルであるWxベクトル、Wyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCxベクトル、Czベクトルを求め、求めたCxベクトル、Cyベクトル、Czベクトルに基づき向き/回転パラメータを決定するプログラムに関係する。
また本発明は、上記各部を含む画像生成システムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
(3)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記向き/回転パラメータ演算部は、
Cyベクトルに垂直な平面と、コントローラのローカル座標系におけるYZ平面またはXY平面との交線の方向に基づきCzベクトルまたはCxベクトルの方向を決定することを特徴とする。
Cyベクトルに垂直な平面がコントローラのローカル座標系におけるYZ平面(x=0)と交わる線上にCzベクトルが存在するとしてCzベクトルの方向を決定する第1の処理、及びCyベクトルに垂直な平面がコントローラのローカル座標系におけるXY平面(z=0)と交わる線上にCxベクトルが存在するとしてCxベクトルの方向を決定する第2の処理の少なくとも一方を行うようにしてもよい。
そして求めたCzベクトルとCyベクトルの外積をとることによりCxベクトルを求めることができる。また求めたCxベクトルとCyベクトルの外積をとることによりCzベクトルを求めることができる。
(4)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記向き/回転パラメータ演算部は、
前回または直近のCzベクトルまたはCxベクトルに基づき今回のCxベクトルまたはCyベクトルの方向を決定することを特徴とする。
直近とは、現時点からあらかじめ設定された短い期間だけさかのぼることを意味し、例えば前前回等でもよい。短い期間の長さをどのように設定するかは設計事項である。
本発明によれば、過去の履歴を反映させて今回のCzベクトルまたはCxベクトルを決定するので向きや回転の変化の連続性を担保することができる。しかも演算が不定値を取ったり不安定領域がないため、どのような入力地に対しても途中で破掟することなく向き/回転パラメータ求めることができる。
(5)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記向き/回転パラメータ演算部は、
前回または直近のCzベクトルまたはCxベクトルのいずれか一方のベクトルと今回のCyベクトルの外積をとって今回のCzベクトルまたはCxベクトルのいずれか他方のベクトルをもとめ、当該いずれか他方のベクトルと今回のCyベクトルの外積をとって今回のいずれか一方のベクトルを求める処理を行うことを特徴とする。
例えば今回のCyベクトルと前回のCzベクトルの外積によって、両者に垂直な正規化ベクトルを求めて今回のCxとする。そして新たに求めた今回のCxベクトルと今回のCyベクトルの外積から今回のCzベクトルを求めるようにしてもよい。
また例えば今回のCyベクトルと前回のCxベクトルの外積によって、両者に垂直な正規化ベクトルを求めて今回のCzとする。そして新たに求めた今回Czベクトルと今回のCyベクトルの外積から今回のCzベクトルを求めるようにしてもよい。
(6)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記向き/回転パラメータ演算部は、
Cyベクトルに基づきCzベクトル及びCxベクトルを決定する処理を行う際にアルゴリズムの異なる複数の処理が実行可能に構成され、
Cyベクトルが所定の条件を満たすかいなか判断し、前記判断結果に基づき、アルゴリズムを切り替えてCyベクトルに基づきCzベクトル及びCxベクトルを決定する処理を行うことを特徴とする。
Cyベクトルに基づきCzベクトル及びCxベクトルを決定する処理を行う際の各アルゴリズムの処理は、Cyベクトルの方向によってそれぞれにウイークポイントを有している場合がある。本発明によればCyベクトルの方向によって、アルゴリズムを切り替えてCzベクトル及びCxベクトルを決定する処理を行うことができる。
(7)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記向き/回転パラメータ演算部は、
Cyベクトルが所定の条件を満たすかいなか判断し、判断結果に基づき、Cyベクトルに垂直な平面がコントローラのローカル座標系におけるYZ平面と交わる線上にCzベクトルが存在するとしてCzベクトルの方向を決定する処理と、Cyベクトルに垂直な平面がコントローラのローカル座標系におけるXY平面と交わる線上にCxベクトルが存在するとしてCxベクトルの方向を決定する処理を切り替えて実行する制御を行うことを特徴とする。
(8)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記向き/回転パラメータ演算部は、
Cyベクトルが所定の条件を満たすかいなか判断し、判断結果に基づき、Cyベクトルに垂直な平面がコントローラのローカル座標系におけるYZ平面と交わる線上にCzベクトルが存在するとしてCzベクトルの方向を決定する処理と、 前回または直近のCzベクトルまたはCxベクトルに基づき今回のCzベクトルまたはCxベクトルの方向を決定する処理を、切り替えて実行する制御を行うことを特徴とする。
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.構成
まず、図1を用いて本実施形態の画像生成システム(ゲームシステム)の構成について説明する。なお、図1は、本実施形態の画像生成システムにおける機能構成の例である。また、本実施形態の画像生成システムは、当該構成要素(各部)の一部を省略した構成としてもよい。
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク等により実現できる。
操作部160は、加速度センサ162を含み、操作部自体の向きや回転に応じて生じる加速度ベクトルを検出する。
例えば加速度センサ162を内蔵したコントローラなどを用いることのより実現できる。
加速度センサ162は、操作に応じた加速度を検出し、検出した加速度情報(出力値)を出力するものであり、圧電型や動電式、歪みケージ式等の加速度センサなどのハードウェアにより実現できる。
本実施の形態では、加速度センサ3の出力値は、ワールド座標系での「下」方向(Y軸の反対方向)をコントローラ基準座標系に変換したものである。
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、ハードディスク、メモリーカード、メモリーカセット、磁気ディスク、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD(液晶表示装置)、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
携帯型情報記憶装置194は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置194としては、メモリーカードや携帯型ゲーム装置などがある。通信部196は、外部(例えばホスト装置や他の画像生成システム)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
なお、本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバー)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(記憶部170)に配信してもよい。このようなホスト装置(サーバー)の情報記憶媒体の使用も本発明の範囲内に含めることができる。
処理部100(プロセッサ)は、各機能ブロックへの命令の指示、ゲーム処理、画像生成処理、音生成処理などの各種の処理を行う。ここで、ゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
処理部100の機能は、各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。処理部100は、記憶部170をワーク領域として各種処理を行う。
処理部100は、向き/回転パラメータ演算部110、ゲーム処理部120、画像生成部130、音生成部150を含む。なお、これらの一部を省略する構成としてもよい。
向き/回転パラメータ演算部110は、ワールド座標系における上下方向の軸ベクトルであるWyベクトルまたはWyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCyベクトルを、センサの出力値に基づき特定し、当該WyベクトルまたはCyベクトルに基づき、ワールド座標系における他の2軸の軸ベクトルであるWxベクトル、Wyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCxベクトル、Czベクトルを求め、求めたCxベクトル、Cyベクトル、Czベクトルに基づき向き/回転パラメータを決定する処理を行う。
また向き/回転パラメータ演算部110は、Cyベクトルに垂直な平面と、コントローラのローカル座標系におけるYZ平面またはXY平面との交線の方向に基づきCzベクトルまたはCxベクトルの方向を決定するようにしてもよい。
また向き/回転パラメータ演算部は、前回または直近のCzベクトルまたはCxベクトルに基づき今回のCxベクトルまたはCyベクトルの方向を決定するようにしてもよい。
また向き/回転パラメータ演算部110は、前回または直近のCzベクトルまたはCxベクトルのいずれか一方のベクトルと今回のCyベクトルの外積をとって今回のCzベクトルまたはCxベクトルのいずれか他方のベクトルをもとめ、当該いずれか他方のベクトルと今回のCyベクトルの外積をとって今回のいずれか一方のベクトルを求める処理を行うようにしてもよい。
また向き/回転パラメータ演算部110は、Cyベクトルに基づきCzベクトル及びCxベクトルを決定する処理を行う際にアルゴリズムの異なる複数の処理が実行可能に構成され、Cyベクトルが所定の条件を満たすかいなか判断し、前記判断結果に基づき、アルゴリズムを切り替えてCyベクトルに基づきCzベクトル及びCxベクトルを決定する処理を行うようにしてもよい。
また向き/回転パラメータ演算部110は、Cyベクトルが所定の条件を満たすかいなか判断し、判断結果に基づき、Cyベクトルに垂直な平面がコントローラのローカル座標系におけるYZ平面と交わる線上にCzベクトルが存在するとしてCzベクトルの方向を決定する処理と、Cyベクトルに垂直な平面がコントローラのローカル座標系におけるXY平面と交わる線上にCxベクトルが存在するとしてCxベクトルの方向を決定する処理を切り替えて実行する制御を行うようにしてもよい。
また向き/回転パラメータ演算部110は、Cyベクトルが所定の条件を満たすかいなか判断し、判断結果に基づき、Cyベクトルに垂直な平面がコントローラのローカル座標系におけるYZ平面と交わる線上にCzベクトルが存在するとしてCzベクトルの方向を決定する処理と、前回または直近のCzベクトルまたはCxベクトルに基づき今回のCzベクトルまたはCxベクトルの方向を決定する処理を、切り替えて実行する制御を行うようにしてもよい。
ゲーム処理部は、オブジェクト空間設定部122、移動・動作制御部124、仮想カメラ制御部126を含む。
オブジェクト空間設定部122は、キャラクタ、車、戦車、建物、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ち、ワールド座標系でのオブジェクト(モデルオブジェクト)の位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
移動・動作制御124は、オブジェクト、例えば、キャラクタ、車、又は飛行機等の移動体オブジェクトの移動・動作演算(移動・動作シミュレーション)を行う。即ち、この移動・動作処理部112は、操作部160によりプレーヤが入力した操作データ、プログラム(移動・動作アルゴリズム)、または、各種データ(モーションデータ)などに基づいて、オブジェクト(移動オブジェクト)をオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させる処理を行う。
具体的には、本実施形態の移動・動作処理部124は、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(各パーツオブジェクトの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なお、このフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
移動・動作処理部124は、演算された向き/回転パラメータに基づきオブジェクト空間の操作対象オブジェクトの回転、姿勢、動作、移動方向の少なくとも1つを制御するようにしてもよい。
仮想カメラ制御部126は、プレーヤからの入力に基づき仮想カメラの位置、回転(向き)当を制御する処理を行う。
仮想カメラ制御部126は、演算された向き/回転パラメータに基づき仮想カメラの向き、回転、姿勢、動作、移動方向の少なくとも1つを制御するようにしてもよい。
また画像生成部130は、ゲーム処理部120で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まず、オブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理が行われる。
なお、頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
頂点処理では、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、あるいは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そして、ラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(フラグメント処理)が行われる。ピクセル処理では、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ172(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内に設定された仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
なお、画像生成部130が行う頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現されてもよい。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、ハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
そして、画像生成部130は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。また、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、記憶部170に保存される。
テクスチャマッピングは、記憶部170のテクスチャ記憶部174に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部178からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
特に、本実施形態では、オブジェクトを描画する際に、所与のテクスチャをマッピングする処理を行うようにしてもよい。この場合には、各オブジェクトに対してマッピングされるテクスチャの色分布(テクセルパターン)を動的に変化させることができる。
この場合において、色分布が異なるテクスチャを動的に生成してもよいし、複数の色分布が異なるテクスチャを予め用意しておき、使用するテクスチャを動的に切り替えるようにしてもよい。また、オブジェクト単位でテクスチャの色分布を変化させてもよいし、オブジェクト単位でテクスチャの色分布を変化させるようにしてもよい。
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ(奥行きバッファ)176を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわち、オブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファ176に格納されるZ値を参照する。そして参照されたZバッファ176のZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファ176のZ値を新たなZ値に更新する。
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。例えば、通常αブレンディングでは、α値を合成の強さとして線形補間を行うことにより2つの色を合成した色を求める処理を行う。
RQ=(1−α)×R1+α×R2 (1)
GQ=(1−α)×G1+α×G2 (2)
BQ=(1−α)×B1+α×B2 (3)
また合成処理が加算αブレンディングである場合を例にとれば、描画部120は、下式に従ったα合成処理を行う。
RQ=R1+α×R2 (4)
GQ=G1+α×G2 (5)
BQ=B1+α×B2 (6)
また、合成処理がα乗算である場合を例にとれば、描画部120は、下式に従ったα合成処理を行う。
RQ=α×R1 (7)
GQ=α×G1 (8)
BQ=α×B1 (9)
また合成処理がα乗加算である場合を例にとれば、描画部120は、下式に従ったα合成処理を行う。
RQ=α×R1+R2 (7)
GQ=α×G1+G2 (8)
BQ=α×B1+B2 (9)
ここで、R1、G1、B1は、描画バッファ172に既に描画されている画像(背景画像)の色(輝度)のR、G、B成分であり、R2、G2、B2は、描画バッファ172に描画するオブジェクト(プリミティブ)の色のR、G、B成分である。また、RQ、GQ、BQは、αブレンディングにより得られる画像の色のR、G、B成分である。
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えばRGBの各色成分の輝度を表す色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
音生成部140は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
2.本実施形態の手法
2.1 加速度センサの入力値
図2は、本実施形態の操作部の一例を示す図である。
本実施の形態では、操作手段160として同図に示すような加速度センサ162内蔵のコントローラを使用する。このようなコントローラを使用することにより加速度センサ162は、コントローラにかかる加速度ベクトルを検出することができる。
加速度センサ3は、操作に応じた加速度を検出し、検出した加速度情報(出力値)を出力するものであり、圧電型や動電式、歪みケージ式等の加速度センサなどのハードウェアにより実現できる。
本実施の形態の加速度センサ162で得られる情報は、ワールド座標系での「下」方向(Y軸の反対方向)をコントローラ基準座標系に変換した加速度ベクトルである。
図3(A)(B)を用いて本実施の形態のコントローラの向き/回転の検出原理について説明する。
図3(A)は座標変換と加速度センサ入力の関係について説明するための図である。
Wxベクトル、Wyベクトル、Wzベクトルはそれぞれワールド座標系20におけるX軸、Y軸、Z軸の軸ベクトル(大きさ1お基準ベクトル)を示しており、10はワールド座標系20に置ける加速度センサが検出した加速度ベクトルを示している。
本実施の形態では加速度センサ162で得られた加速度ベクトル10を重力の方向ベクトルと想定して、コントローラの向き/回転を推定する。
ここでワールド座標系20におけるX軸、Y軸、Z軸の基準ベクトルであるWxベクトル、Wyベクトル、Wzベクトルをコントローラのローカル座標系(以下コントローラ座標系という)に30に座標変換したものをCxベクトル、Cyベクトル、Czベクトルであるとする。
コントローラ座標系とはコントローラを基準姿勢に配置した時の座標系である。例えば図3(B)に示すようにコントートローラ160をワールド座標系に配置した場合を基準位置とすると、図3(A)のワールド座標系におけるコントローラは基準位置にたいして傾いた状態(回転した状態)にあるといえる。従ってコントローラ座標系に変換した場合のCyベクトルはコントローラ座標系の各軸に対して所定の傾きを有するベクトルとなっている。
本実施の形態では、図3(A)に示すワールド座標系での「下」方向(Y軸の反対方向)10をコントローラ基準座標系に変換したも(Cyベクトル)を加速度センサの出力値として受け取る。
ここでCxベクトル(ワールド座標系20におけるX軸の基準ベクトルであるWxベクトルをコントローラ座標系に30に座標変換したもの)、Czベクトル(ワールド座標系20におけるZ軸の基準ベクトルであるWzベクトルをコントローラ座標系に30に座標変換したもの)は、Cyベクトルに垂直な円盤領域のいずれになるかは、加速度センサの出力値のみでは確定することができない。
そこで本実施の形態では、ここでコントローラの向きを確定させるために、加速度センサの出力値として得られたCyベクトルから、Cxベクトル、Czベクトルを決定する。
以下に操作部に設けられた加速度センサの出力値である加速度ベクトルに基づいて、操作部の向き又は回転を特定するための向き/回転パラメータをリアルタイムに演算する手法について具体的に説明する。
図4は、コントローラ160をワールド座標系におけるY軸にそって回転させている様子を示している。このようにコントローラ160を重力の軸にそって回転させても加速度センサの出力値は変化しないので判別不能である。
図5(A)(B)はコントローラの回転パターンを示す図である。
図5(A)はコントローラ160をZ軸に沿って回転させている場合(Z回転)を示している。Z回転は捻りを示しておりゲーム操作上重要である。
また図5(B)はコントローラ160をX軸に沿って回転させている場合(X回転)を示している。X回転は宙返りを表すものであり、ゲーム上重要である。
本実施の形態ではゲーム操作上重要と思われる上記操作を正しく判別させることを目的とする。
2.2 第1の手法
図6は、Cyベクトルに基づいて、Cxベクトル、Czベクトルを求める第1の手法について説明するための図である。
第1の手法では、Cyベクトルに垂直な平面40がコントローラ座標系30におけるYZ平面(x=0)50またはXY平面(z=0)と交わる線lの方向に基づきCzベクトルまたはCxベクトルの方向を決定する。
Cyベクトルに垂直な半径1の円板S(図3(A)の40)が、YZ平面(x=0)と交わる線上lにあると仮定して、Czベクトルの方向を決定する(以下手法Aという)。ここで線l上のベクトルとしてはp1ベクトルとp2ベクトルが考えられるが、どちらにするかは前回のCzベクトルに基づいて決定するようにしてもよい。例えば前回のCzベクトルとの距離を比較し距離が近い方に決定してもよい。
このようにしてCzベクトルを決定したら、求めたCzベクトルとCyベクトルの外積をとることによりCxベクトルを求めることができる。
またCyベクトルに垂直な半径1の円板S(図3(A)の40)が、XY平面(z=0)と交わる線l上にあると仮定して、Cxベクトルの方向を決定する(以下手法A’という)。ここで線l上のベクトルとしてはp1ベクトルとp2ベクトルが考えられるが、どちらにするかは前回のCxベクトルに基づいて決定するようにしてもよい。例えば前回のCxベクトルとの距離を比較し距離が近い方に決定してもよい。
このようにしてCxベクトルを決定したら、求めたCxベクトルとCyベクトルの外積をとることによりCzベクトルを求めることができる。
図7は第1の手法について説明するためのフローチャート図である。
ここでgは加速度センサ入力(x,y,z)、Cx,Cy,Czは、それぞれワールド座標軸ベクトル(x,y,z)、Vzは前回のCzの履歴(x,y,z)、Mは回転マトリクス([3][3])、rは回転パラメータ(x,y,z)を示している。
本実施の形態では下記の処理を毎フレームごとに行っている。
まずCz、rを下記のように初期化する(ステップS10)。
Cz=(0,0,1)
r=(0,0,0)
次に前回のCzの履歴(x,y,z)であるVzにCzを代入する(ステップS20)。
次に加速度センサ入力(x,y,z)をgにセットする(ステップS30)。
次にCyに−gをセットする(ステップS40)。
そして|Cy|>0でなければステップS150にいき、|Cy|>0であれば以下の処理を行う(ステップS50)。これによりCyが0の時に不正な向き/回転パラメータが生成されるのを防止することができる。
次にCyを正規化する(大きさが1の基準ベクトルにする)(ステップS60)。
次にCyについて下記の条件を満たすか否か判定する(ステップS70)。
これによりp1ベクトル、p2ベクトルのy成分、Z成分が不定な値をとる場合に向き/回転パラメータが生成されるのを防止することができる。
次にYZ平面上でCyに垂直な正規化ベクトルp1,p2を求める(ステップS80)。正規化ベクトルp1,p2は、下記の式で与えられる。
次に正規化ベクトルp1,p2とVzとの距離を比較する(ステップS90)。
p1のほうがVzに近い場合にはCzにp1を代入する(ステップS100)。
p2のほうがVzに近い場合にはCzにp2を代入する(ステップS110)。
Cy、Czの外積からCxを求める(ステップS120)。
次にCx、Cy、Czを回転マトリックスMに格納する(ステップS130)。XYZ軸ベクトルの変換とマトリクスMの関係は以下のとおりである。
軸ベクトルを並べて作ったマトリクスは以下のとおりである。
MはそのままW座標系→C座標系への変換行列を表す。また、コントローラのW座標系での向きを表すマトリクスはC座標系→W座標系の変換行列でもあり、すなわちMの逆行列となる。回転行列の逆行列は転置行列に等しいので以下の式が成り立つ。
次に回転マトリックスMから向き/回転パラメータをrを求める(ステップS140)。
回転マトリクスと回転パラメータの関係式は以下のとおりである。
これを解くと以下の式が得られる。
どちらの値を採用するかについては、前回の結果に近いほうを選べばよい。
そして、向き/回転パラメータrをコントローラの傾き入力としてゲーム処理を行う(ステップS150)。
例えばコントローラの傾きや回転に応じて、プレーヤキャラクタである移動体オブジェクトを傾かせたり回転させたりして、かかる移動体オブジェクトを含むゲーム空間の3人称画像を生成するようにしてもよい。
また例えばコントローラの傾きや回転に応じて、仮想カメラを傾かせたり回転させたりして、ゲーム空間の1人称画像を生成するようにしてもよい。
このようにするとコントローラの傾きや回転にリアルタイムに連動してオブジェクトや視線方向がリアルタイムに変化するゲーム画像を生成することができる。
そしてゲーム終了になるまでステップS20〜S160の処理を繰り返す(ステップS160)。
2.3 第2の手法
図8は、Cyベクトルに基づいて、Cxベクトル、Czベクトルを求める第2の手法について説明するための図である。
第2の手法では、前回または直近のCzベクトルまたはCxベクトルに基づき今回のCzベクトルまたはCxベクトルの方向を決定する。
前回または直近のCzベクトルまたはCxベクトルのいずれか一方のベクトルと今回のCyベクトルの外積をとって今回のCzベクトルまたはCxベクトルのいずれか他方のベクトルをもとめ、当該いずれか他方のベクトルと今回のCyベクトルの外積をとって今回のいずれか一方のベクトルを求める処理を行うようにしてもよい。
具体的には、今回のCyベクトルと前回のCzベクトルの外積によって、両者に垂直な正規化ベクトルを求めて今回のCxとする。そして新たに求めた今回のCxベクトルと今回のCyベクトルの外積から今回のCzベクトルを求める(これを手法Bとする)。
また今回のCyベクトルと前回のCxベクトルの外積によって、両者に垂直な正規化ベクトルを求めて今回のCzとする。そして新たに求めた今回Czベクトルと今回のCyベクトルの外積から今回のCzベクトルを求める(これを手法Bとする)。
ここでCyベクトルとCzベクトルが並行になってしまうと外積ベクトルの値が0になってしまいCxベクトルが求められないが、このような状態は一瞬(1フレーム、例えば1/60秒)で90°の回転をした場合にしか発生しないので、現実には無用の値として無視できる。そもそも加速度センサの入力値を重力とみなすには、ローパスフィルタを通して急激な変化を除く方が望ましいため、このような変化は起こらない。
よって、この第2の手法では実質的に特異点の影響を受けることなく、コントローラの運動のさせかたに応じた向き(回転パラメータ)を得ることができる。
図9は第2の手法について説明するためのフローチャート図である。
ここでgは加速度センサ入力(x,y,z)、Cx,Cy,Czは、それぞれワールド座標軸ベクトル(x,y,z)、C’x,C’y,C’zは、それぞれワールド座標軸ベクトル履歴(x,y,z)で例えば前フレームのワールド座標軸ベクトル(x,y,z)、Mは回転マトリクス([3][3])、rは回転パラメータ(x,y,z)を示している。
本実施の形態では下記の処理を毎フレームごとに行っている。
まずCz、rを下記のように初期化する(ステップS210)。
Cx=(1,0,1)
Cy=(0,1,0)
Cz=(0,0,1)
r=(0,0,0)
次に前回のC’x、C’y、C’zの履歴(x,y,z)にそれぞれ現在のCx、Cy、Czを代入する(ステップS220)。
次に加速度センサ入力(x,y,z)をgにセットする(ステップS230)。
次にCyに−gをセットする(ステップS240)。
そして|Cy|>0でなければステップS320にいき、|Cy|>0であれば以下の処理を行う(ステップS250)。これによりCyが0の時に不正な向き/回転パラメータが生成されるのを防止することができる。
次にCyを正規化する(大きさが1の基準ベクトルにする)(ステップS260)。
そしてCyベクトルとC’zベクトルの外せきをとりCxベクトルとする(ステップS270)。
そして|Cx|>0でなければステップS320にいき、|Cx|>0であれば以下の処理を行う(ステップS280)。これによりCxが0の時に不正な向き/回転パラメータが生成されるのを防止することができる。
次にCx、Cyの外積からCzを求める(ステップS290)。
次にCx、Cy、Czを回転マトリックスMに格納する(ステップS300)。XYZ軸ベクトルの変換とマトリクスMの関係は図7で説明したのと同様である。
次に回転マトリックスMから向き/回転パラメータをrを求める(ステップS310)。
回転マトリクスと回転パラメータの関係関係は図7で説明したのと同様である。
そして、向き/回転パラメータrをコントローラの傾き入力としてゲーム処理を行う(ステップS320)。
例えばコントローラの傾きや回転に応じて、プレーヤキャラクタである移動体オブジェクトを傾かせたり回転させたりして、かかる移動体オブジェクトを含むゲーム空間の3人称画像を生成するようにしてもよい。
また例えばコントローラの傾きや回転に応じて、仮想カメラを傾かせたり回転させたりして、ゲーム空間の1人称画像を生成するようにしてもよい。
このようにするとコントローラの傾きや回転にリアルタイムに連動してオブジェクトや視線方向がリアルタイムに変化するゲーム画像を生成することができる。
そしてゲーム終了になるまでステップS220〜S330の処理を繰り返す(ステップS330)。
2.4 第3の手法
上記実施の形態では第1の手法や第2の手法を単独で用いる場合について説明したが、これらを組み合わせて用いる場合でもよい。
すなわちCyベクトルに基づきCzベクトル及びCxベクトルを決定する処理を行う際にアルゴリズムの異なる複数の処理(例えば手法A、手法A’、手法B、手法B’それぞれに対応した処理)が実行可能に構成され、Cyベクトルが所定の条件を満たすかいなか判断し、前記判断結果に基づき、アルゴリズムを切り替えてCyベクトルに基づきCzベクトル及びCxベクトルを決定する処理を行うようにしてもよい。
第3の手法では、Cyベクトルが所定の条件を満たすかいなか判断し、判断結果に基づき、Cyベクトルに垂直な平面がコントローラ座標系におけるYZ平面(x=0)と交わる線上にCzベクトルが存在するとしてCzベクトルの方向を決定する処理と、前回または直近のCzベクトルまたはCxベクトルに基づき今回のCzベクトルまたはCxベクトルの方向を決定する処理を、切り替えて実行する制御を行う。
図10は、第3の手法の所定の条件について説明するための図である。
手法Aでは下記の値が小さくなるにつれ、誤差によってX軸回転が激しく変化して計算が不安定になる。
60はコントローラ座標系における、軸ベクトル半径1の球(原点を中心とする半径1の球)である。球60とX軸正方向が交わる点を含む所定の領域62及び球60とX軸負方向が交わる点を含む所定の領域64は、手法Aでは計算が不安定になる領域である。
領域62、64は軸ベクトル半径1の球面上にあるので下記の条件式で判定することができる。
どちらの条件式を使用してもよい。ただし0<f<1であり、例えばf=0.9を使用してもよい。
本実施の形態では手法Aでは計算が不安定になる領域を上記条件式に基づき判定し、Cyベクトル(Cyベクトルの各成分)が上記条件式を満たす場合(言い換えればCyベクトル(正規化されているとする)の終点がX軸正方向が交わる点を含む所定の領域62または球60とX軸負方向が交わる点を含む所定の領域64に属する場合)には、手法Bまたは手法B’を使用する。
この場合手法Bまたは手法B’を使用するのは領域は狭い範囲に限定されているため、コントローラを連続的に動かしていけばずれが積もる前に脱出することができる。
図11は第3の手法について説明するためのフローチャート図である。
ここではCyベクトルについて所定の条件を満たすか否か判断し、判断結果に基づき手法Aと手法Bを切り替えて向き/回転パラメータを求める場合を例にとり説明する。
本実施の形態では下記の処理を毎フレームごとに行っている。
まずf=0.9に初期化する(ステップS410)。
次に加速度センサ入力(x,y,z)をgにセットする(ステップS420)。
次にCyに−gをセットする(ステップS430)。
そして|Cy|>0でなければステップS490にいき、|Cy|>0であれば以下の処理を行う(ステップS440)。これによりCyが0の時に不正な向き/回転パラメータが生成されるのを防止することができる。
次にCyを正規化する(大きさが1の基準ベクトルにする)(ステップS450)。
ここでCyベクトルが下記の条件式を満たすか否か判断する(ステップS460)。
満たさない場合には手法Aで向き/回転パラメータを演算する(ステップS470)。具体的には、図7のステップS70〜S140の処理を実行する。
満たす場合には手法Bで向き/回転パラメータを演算する(ステップS480)。具体的には、図7のステップS270〜S310の処理を実行する。
そして、向き/回転パラメータrをコントローラの傾き入力としてゲーム処理を行う(ステップS490)。
例えばコントローラの傾きや回転に応じて、プレーヤキャラクタである移動体オブジェクトを傾かせたり回転させたりして、かかる移動体オブジェクトを含むゲーム空間の3人称画像を生成するようにしてもよい。
また例えばコントローラの傾きや回転に応じて、仮想カメラを傾かせたり回転させたりして、ゲーム空間の1人称画像を生成するようにしてもよい。
このようにするとコントローラの傾きや回転にリアルタイムに連動してオブジェクトや視線方向がリアルタイムに変化するゲーム画像を生成することができる。
そしてゲーム終了になるまでステップS420〜S500の処理を繰り返す(ステップS500)。
2.5 第4の手法
第4の手法では、Cyベクトルが所定の条件を満たすかいなか判断し、判断結果に基づき、Cyベクトルに垂直な平面がコントローラ座標系におけるYZ平面(x=0)と交わる線上にCzベクトルが存在するとしてCzベクトルの方向を決定する処理と、Cyベクトルに垂直な平面がコントローラ座標系におけるXY平面(z=0)と交わる線上にCxベクトルが存在するとしてCxベクトルの方向を決定する処理を切り替えて実行する制御を行う。
図12(A)(B)は、第4の手法の所定の条件について説明するための図である。
図12(A)は、手法Aにおける不安定険領域を示しており、図12(B)は、手法A’における不安定険領域を示している。
手法Aでは下記の値が小さくなるにつれ、誤差によってX軸回転が激しく変化して計算が不安定になる。
図12(A)の60はコントローラ座標系における、軸ベクトル半径1の球(原点を中心とする半径1の球)である。球60とX軸正方向が交わる点を含む所定の領域62及び球60とX軸負方向が交わる点を含む所定の領域64は、手法Aでは計算が不安定になる領域である。
手法Aでは下記の値が小さくなるにつれ、誤差によってX軸回転が激しく変化して計算が不安定になる。
領域62、64は軸ベクトル半径1の球面上にあるので下記の条件式で判定することができる。
図12(B)の60はコントローラ座標系における、軸ベクトル半径1の球(原点を中心とする半径1の球)である。球60とZ軸正方向が交わる点を含む所定の領域68及び球60とX軸負方向が交わる点を含む所定の領域66は、手法A’では計算が不安定になる領域である。
手法A’では下記の値が小さくなるにつれ、誤差によってX軸回転が激しく変化して計算が不安定になる。
手法Aと手法A’をきりかえる際には手法Aで示した条件式に当てはまる場合には手法Aを採用し、当てはまあない場合いは手法A’を採用するようにしてもよい。
第4の手法ではただし0<f<1であり、例えばf=cos45=0.707を使用してもよい。
図13は第4の手法について説明するためのフローチャート図である。
ここではCyベクトルについて所定の条件を満たすか否か判断し、判断結果に基づき手法Aと手法A’を切り替えて向き/回転パラメータを求める場合を例にとり説明する。
本実施の形態では下記の処理を毎フレームごとに行っている。
まずf=0.707に初期化する(ステップS610)。
次に加速度センサ入力(x,y,z)をgにセットする(ステップS620)。
次にCyに−gをセットする(ステップS630)。
そして|Cy|>0でなければステップS690にいき、|Cy|>0であれば以下の処理を行う(ステップS640)。これによりCyが0の時に不正な向き/回転パラメータが生成されるのを防止することができる。
次にCyを正規化する(大きさが1の基準ベクトルにする)(ステップS650)。
ここでCyベクトルが下記の条件式を満たすか否か判断する(ステップS660)。
満たさない場合には手法Aで向き/回転パラメータを演算する(ステップS670)。
満たす場合には手法A’で向き/回転パラメータを演算する(ステップS680)。
そして、向き/回転パラメータrをコントローラの傾き入力としてゲーム処理を行う(ステップS690)。
例えばコントローラの傾きや回転に応じて、プレーヤキャラクタである移動体オブジェクトを傾かせたり回転させたりして、かかる移動体オブジェクトを含むゲーム空間の3人称画像を生成するようにしてもよい。
また例えばコントローラの傾きや回転に応じて、仮想カメラを傾かせたり回転させたりして、ゲーム空間の1人称画像を生成するようにしてもよい。
このようにするとコントローラの傾きや回転にリアルタイムに連動してオブジェクトや視線方向がリアルタイムに変化するゲーム画像を生成することができる。 そしてゲーム終了になるまでステップS620〜S700の処理を繰り返す(ステップS700)。
このように手法A、手法A’、手法B、手法B’を適宜組み合わせることにより、特異点を除去し、コントローラの捻り・宙返りに対応した入力を検出することが可能になる。
なお、本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語(描画領域、ピクセル値、変換テーブル等)として引用された用語(フレームバッファ・ワークバッファ、α値、ルックアップテーブル等)は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
また、メンバーオブジェクトの移動制御手法も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。
また、上記実施の形態では複数の戦闘機ゲームを例にとり説明したがこれに限られず、種々のゲームに適用できる。例えば、一機から構成される戦闘機ゲームまたは複数の移動体オブジェクトから構成されるグループを制御するゲームであれば適用可能である。
また、本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
本実施形態の画像生成システムの機能ブロック図の例。 本実施形態の操作部の一例を示す図である。 図3(A)(B)は、本実施の形態のコントローラの向き/回転の検出原理について説明するための図である。 コントローラをワールド座標系におけるY軸にそって回転させている様子を示す図である。 図5(A)(B)はコントローラの回転パターンを示す図である。 Cyベクトルに基づいて、Cxベクトル、Czベクトルを求める第1の手法について説明するための図である。 第1の手法について説明するためのフローチャート図である。 Cyベクトルに基づいて、Cxベクトル、Czベクトルを求める第2の手法について説明するための図である。 第2の手法について説明するためのフローチャート図である。 第3の手法の所定の条件について説明するための図である。 第3の手法について説明するためのフローチャート図である。 図12(A)(B)は、第4の手法の所定の条件について説明するための図である。 第4の手法について説明するためのフローチャート図である。
符号の説明
100 処理部、110 向き/回転パラメータ演算部、120 ゲーム処理部、122 オブジェクト空間設定部、124 移動・動作処理部、126 仮想カメラ制御部、130 画像生成部、140 音生成部、160 操作部、162 加速度センサ、170 記憶部、172 描画バッファ、174 テクスチャ記憶部、176 Zバッファ、180 情報記憶媒体、190 表示部、192 音出力部、194 携帯型情報記憶装置、196 通信部

Claims (11)

  1. コントローラに設けられた加速度センサの出力値である加速度ベクトルに基づいて、コントローラの向き又は回転を特定するための向き/回転パラメータを演算する向き/回転パラメータ演算部と、
    演算された向き/回転パラメータに基づきオブジェクト空間の操作対象オブジェクト又は仮想カメラの向き、回転、姿勢、動作、移動方向の少なくとも1つを制御する演算を行うゲーム処理と、
    オブジェクト空間を仮想カメラからみた画像を生成する画像生成部と、
    としてコンピュータを機能させ、
    向き/回転パラメータ演算部は、
    ワールド座標系における上下方向の軸ベクトルであるWyベクトルまたはWyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCyベクトルを、加速度センサの出力値に基づき特定し、
    当該WyベクトルまたはCyベクトルに基づき、ワールド座標系における他の2軸の軸ベクトルであるWxベクトル、Wyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCxベクトル、Czベクトルを求め、求めたCxベクトル、Cyベクトル、Czベクトルに基づき向き/回転パラメータを決定することを特徴とするプログラム。
  2. コントローラに設けられた加速度センサの出力値である加速度ベクトルに基づいて、コントローラの向き又は回転を特定するための向き/回転パラメータを演算する向き/回転パラメータ演算部と、としてコンピュータを機能させるプログラムであって、
    前記向き/回転パラメータ演算部は、
    ワールド座標系における上下方向の軸ベクトルであるWyベクトルまたはWyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCyベクトルを、加速度センサの出力値に基づき特定し、
    当該WyベクトルまたはCyベクトルに基づき、ワールド座標系における他の2軸の軸ベクトルであるWxベクトル、Wyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCxベクトル、Czベクトルを求め、求めたCxベクトル、Cyベクトル、Czベクトルに基づき向き/回転パラメータを決定することを特徴とするプログラム。
  3. 請求項1又は2のいずれかにおいて、
    前記向き/回転パラメータ演算部は、
    Cyベクトルに垂直な平面と、コントローラのローカル座標系におけるYZ平面またはXY平面との交線の方向に基づきCzベクトルまたはCxベクトルの方向を決定することを特徴とするプログラム。
  4. 請求項1乃至3のいずれかにおいて、
    前記向き/回転パラメータ演算部は、
    前回または直近のCzベクトルまたはCxベクトルに基づき今回のCxベクトルまたはCyベクトルの方向を決定することを特徴とするプログラム。
  5. 請求項4において、
    前記向き/回転パラメータ演算部は、
    前回または直近のCzベクトルまたはCxベクトルのいずれか一方のベクトルと今回のCyベクトルの外積をとって今回のCzベクトルまたはCxベクトルのいずれか他方のベクトルをもとめ、当該いずれか他方のベクトルと今回のCyベクトルの外積をとって今回のいずれか一方のベクトルを求める処理を行うことを特徴とするプログラム。
  6. 請求項1乃至5のいずれかにおいて、
    前記向き/回転パラメータ演算部は、
    Cyベクトルに基づきCzベクトル及びCxベクトルを決定する処理を行う際にアルゴリズムの異なる複数の処理が実行可能に構成され、
    Cyベクトルが所定の条件を満たすかいなか判断し、前記判断結果に基づき、アルゴリズムを切り替えてCyベクトルに基づきCzベクトル及びCxベクトルを決定する処理を行うことを特徴とするプログラム。
  7. 請求項1乃至6のいずれかにおいて、
    前記向き/回転パラメータ演算部は、
    Cyベクトルが所定の条件を満たすかいなか判断し、判断結果に基づき、Cyベクトルに垂直な平面がコントローラのローカル座標系におけるYZ平面と交わる線上にCzベクトルが存在するとしてCzベクトルの方向を決定する処理と、Cyベクトルに垂直な平面がコントローラのローカル座標系におけるXY平面と交わる線上にCxベクトルが存在するとしてCxベクトルの方向を決定する処理を切り替えて実行する制御を行うことを特徴とするプログラム。
  8. 請求項1乃至7のいずれかにおいて、
    前記向き/回転パラメータ演算部は、
    Cyベクトルが所定の条件を満たすかいなか判断し、判断結果に基づき、Cyベクトルに垂直な平面がコントローラのローカル座標系におけるYZ平面と交わる線上にCzベクトルが存在するとしてCzベクトルの方向を決定する処理と、 前回または直近のCzベクトルまたはCxベクトルに基づき今回のCzベクトルまたはCxベクトルの方向を決定する処理を、切り替えて実行する制御を行うことを特徴とするプログラム。
  9. コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至8のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
  10. 画像生成システムであって、
    コントローラに設けられた加速度センサの出力値である加速度ベクトルに基づいて、コントローラの向き又は回転を特定するための向き/回転パラメータを演算する向き/回転パラメータ演算部と、
    演算された向き/回転パラメータに基づきオブジェクト空間の操作対象オブジェクト又は仮想カメラの向き、回転、姿勢、動作、移動方向の少なくとも1つを制御する演算を行うゲーム処理と、
    オブジェクト空間を仮想カメラからみた画像を生成する画像生成部と、を含み、
    向き/回転パラメータ演算部は、
    ワールド座標系における上下方向の軸ベクトルであるWyベクトルまたはWyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCyベクトルを、加速度センサの出力値に基づき特定し、
    当該WyベクトルまたはCyベクトルに基づき、ワールド座標系における他の2軸の軸ベクトルであるWxベクトル、Wyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCxベクトル、Czベクトルを求め、求めたCxベクトル、Cyベクトル、Czベクトルに基づき向き/回転パラメータを決定することを特徴とする画像生成システム。
  11. コントローラに設けられた加速度センサの出力値である加速度ベクトルに基づいて、コントローラの向き又は回転を特定するための向き/回転パラメータを演算する向き/回転パラメータ演算部を含み、
    前記向き/回転パラメータ演算部は、
    ワールド座標系における上下方向の軸ベクトルであるWyベクトルまたはWyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCyベクトルを、加速度センサの出力値に基づき特定し、
    当該WyベクトルまたはCyベクトルに基づき、ワールド座標系における他の2軸の軸ベクトルであるWxベクトル、Wyベクトルをコントローラのローカル座標系に座標変換したベクトルであるCxベクトル、Czベクトルを求め、求めたCxベクトル、Cyベクトル、Czベクトルに基づき向き/回転パラメータを決定することを特徴とするシステム。
JP2006095787A 2006-03-30 2006-03-30 プログラム、情報記憶媒体及び画像生成システム Active JP5063022B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006095787A JP5063022B2 (ja) 2006-03-30 2006-03-30 プログラム、情報記憶媒体及び画像生成システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006095787A JP5063022B2 (ja) 2006-03-30 2006-03-30 プログラム、情報記憶媒体及び画像生成システム

Publications (2)

Publication Number Publication Date
JP2007267851A JP2007267851A (ja) 2007-10-18
JP5063022B2 true JP5063022B2 (ja) 2012-10-31

Family

ID=38671273

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006095787A Active JP5063022B2 (ja) 2006-03-30 2006-03-30 プログラム、情報記憶媒体及び画像生成システム

Country Status (1)

Country Link
JP (1) JP5063022B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5374287B2 (ja) * 2009-09-15 2013-12-25 任天堂株式会社 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
US8814678B2 (en) * 2011-06-03 2014-08-26 Nintendo Co., Ltd. Apparatus and method for gyro-controlled gaming viewpoint with auto-centering

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3821282B2 (ja) * 2002-02-01 2006-09-13 任天堂株式会社 ゲーム装置及びゲームプログラム
JP3910487B2 (ja) * 2002-05-17 2007-04-25 任天堂株式会社 ゲームシステムおよびゲームプログラム
JP3902508B2 (ja) * 2002-05-20 2007-04-11 任天堂株式会社 ゲームシステムおよびゲームプログラム
JP3952396B2 (ja) * 2002-11-20 2007-08-01 任天堂株式会社 ゲーム装置および情報処理装置

Also Published As

Publication number Publication date
JP2007267851A (ja) 2007-10-18

Similar Documents

Publication Publication Date Title
JP4651435B2 (ja) プログラム、情報記憶媒体及び画像生成システム
JP5089079B2 (ja) プログラム、情報記憶媒体及び画像生成システム
US20090244064A1 (en) Program, information storage medium, and image generation system
JP2007300974A (ja) プログラム、情報記憶媒体及び画像生成システム
JP2013127683A (ja) プログラム、情報記憶媒体、端末、サーバ及びネットワークシステム
JP4717622B2 (ja) プログラム、情報記録媒体および画像生成システム
JP4305903B2 (ja) 画像生成システム、プログラム及び情報記憶媒体
JP2006195882A (ja) プログラム、情報記憶媒体、及び画像生成システム
JP3748451B1 (ja) プログラム、情報記憶媒体、及び画像生成システム
JP4749198B2 (ja) プログラム、情報記憶媒体及び画像生成システム
JP5063022B2 (ja) プログラム、情報記憶媒体及び画像生成システム
JP5088972B2 (ja) 画像処理装置、画像処理方法、コンピュータプログラム、記録媒体、及び半導体装置
JP4754384B2 (ja) プログラム、情報記録媒体および画像生成システム
JP2009169471A (ja) プログラム、情報記憶媒体、及び画像生成システム
JP4528008B2 (ja) プログラム、情報記憶媒体、及び画像生成システム
JP4754385B2 (ja) プログラム、情報記録媒体および画像生成システム
JP2011215724A (ja) プログラム、情報記憶媒体及び画像生成システム
JP2009251887A (ja) 画像生成システム、プログラム及び情報記憶媒体
JP4662260B2 (ja) プログラム、情報記憶媒体及び画像生成システム
JP2010231364A (ja) 画像生成システム、プログラム及び情報記憶媒体
JP2009140370A (ja) プログラム、情報記憶媒体、画像生成システム
JP2009140371A (ja) プログラム、情報記憶媒体、画像生成システム
GB2432500A (en) Image generation using vertex and pixel processing sections
JP5097636B2 (ja) 画像処理装置、画像処理方法及びプログラム
JP2011209865A (ja) プログラム、情報記憶媒体及び画像生成システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120202

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120801

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120807

R150 Certificate of patent or registration of utility model

Ref document number: 5063022

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250