(57)【特許請求の範囲】
【請求項１】
仮想空間内に配置される視点の位置および視線の方向と、当該仮想空間内に配置される実像オブジェクトの形状、位置および向きと、当該仮想空間内に配置される仮想鏡面の位置および向きと、当該仮想空間内に配置される鏡像オブジェクトの形状、位置および向きと、が記憶される記憶部、
前記記憶部に記憶される当該実像オブジェクトの形状、位置もしくは向き、当該視点の位置、当該視線の方向の少なくとも一つを、ユーザからの指示入力もしくは時間経過に基づいて更新する更新部、
当該実像オブジェクトの当該仮想鏡面に対する鏡像を表す鏡像オブジェクトの形状、位置および向きを計算して前記記憶部に記憶させる鏡像配置部、
当該仮想空間において当該視点の位置から当該視線の方向に当該実像オブジェクトと当該鏡像オブジェクトとを見ると、当該実像オブジェクトおよび当該鏡像オブジェクトが互いに近傍に見えるか否かを判定する判定部、
当該実像オブジェクトおよび当該鏡像オブジェクトが互いに近傍に見えると判定された場合、当該実像オブジェクトと、当該鏡像オブジェクトと、が、互いに近傍に見えないように、前記記憶部に記憶される当該鏡像オブジェクトの位置を調整する調整部、
前記記憶される当該実像オブジェクトの形状、位置および向きと、当該視点の位置および当該視線の方向と、当該鏡像オブジェクトの形状、位置および向きと、から、当該視点から当該視線の方向に当該仮想空間を見た画像を生成する生成部
を備えることを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記調整部は、当該鏡像オブジェクトを当該視点を通過する所定の回転軸に対して回転移動して、当該鏡像オブジェクトの位置および向きを調整する
ことを特徴とする画像処理装置。
【請求項３】
請求項１に記載の画像処理装置であって、
前記調整部は、当該鏡像オブジェクトと当該視点との距離を保ったまま、当該鏡像オブジェクトを当該仮想空間内に配置された床平面に対して平行移動して、当該鏡像オブジェクトの位置を調整する
ことを特徴とする画像処理装置。
【請求項４】
請求項１から３のいずれか１項に記載の画像処理装置であって、
前記判定部は、当該視点の位置から当該視線の方向に所定の距離だけ離れた位置に配置された投影面に、当該実像オブジェクトおよび当該鏡像オブジェクトを投影した場合、両者の投影先が重なると、両者が互いに近傍に見えると判定する
ことを特徴とする画像処理装置。
【請求項５】
請求項１から３のいずれか１項に記載の画像処理装置であって、当該実像オブジェクトと当該鏡像オブジェクトとのそれぞれには、これを内包する球形のバウンディングエリアが対応付けられ、
前記判定部は、当該視点の位置から当該視線の方向に所定の距離だけ離れた位置に配置された投影面に、当該実像オブジェクトのバウンディングエリアおよび当該鏡像オブジェクトのバウンディングエリアを投影した場合、両者の投影先が重なると、両者が互いに近傍に見えると判定し、
前記調整部は、当該両者の投影先が接するように調整する
ことを特徴とする画像処理装置。
【請求項６】
請求項２から５のいずれか１項に記載の画像処理装置であって、
前記調整部は、当該鏡像オブジェクトの位置を調整すると、その調整量にあらかじめ対応付けられる量だけ、前記記憶部に記憶される当該視点の位置を調整し、
前記調整部は、当該鏡像オブジェクトの向きを調整すると、その調整量にあらかじめ対応付けられる量だけ、前記記憶部に記憶される当該視線の方向を調整する
ことを特徴とする画像処理装置。
【請求項７】
記憶部と、更新部と、鏡像配置部と、判定部と、調整部と、生成部と、を備える画像処理装置を制御する画像処理方法であって、
前記記憶部が、仮想空間内に配置される視点の位置および視線の方向と、当該仮想空間内に配置される実像オブジェクトの形状、位置および向きと、当該仮想空間内に配置される仮想鏡面の位置および向きと、当該仮想空間内に配置される鏡像オブジェクトの形状、位置および向きと、を記憶する記憶工程、
前記更新部が、前記記憶部に記憶される当該実像オブジェクトの形状、位置もしくは向き、当該視点の位置、当該視線の方向の少なくとも一つを、ユーザからの指示入力もしくは時間経過に基づいて更新する更新工程、
前記鏡像配置部が、当該実像オブジェクトの当該仮想鏡面に対する鏡像を表す鏡像オブジェクトの形状、位置および向きを計算して前記記憶部に記憶させる鏡像配置工程、
前記判定部が、当該仮想空間において当該視点の位置から当該視線の方向に当該実像オブジェクトと当該鏡像オブジェクトとを見ると、当該実像オブジェクトおよび当該鏡像オブジェクトが互いに近傍に見えるか否かを判定する判定工程、
前記調整部が、当該実像オブジェクトおよび当該鏡像オブジェクトが互いに近傍に見えると判定された場合、当該実像オブジェクトと、当該鏡像オブジェクトと、が、互いに近傍に見えないように、前記記憶部に記憶される当該鏡像オブジェクトの位置を調整する調整工程、
前記生成部が、前記記憶される当該実像オブジェクトの形状、位置および向きと、当該視点の位置および当該視線の方向と、当該鏡像オブジェクトの形状、位置および向きと、から、当該視点から当該視線の方向に当該仮想空間を見た画像を生成する生成工程、
を備える画像処理方法。
【請求項８】
コンピュータを、
仮想空間内に配置される視点の位置および視線の方向と、当該仮想空間内に配置される実像オブジェクトの形状、位置および向きと、当該仮想空間内に配置される仮想鏡面の位置および向きと、当該仮想空間内に配置される鏡像オブジェクトの形状、位置および向きと、が記憶される記憶部、
前記記憶部に記憶される当該実像オブジェクトの形状、位置もしくは向き、当該視点の位置、当該視線の方向の少なくとも一つを、ユーザからの指示入力もしくは時間経過に基づいて更新する更新部、
当該実像オブジェクトの当該仮想鏡面に対する鏡像を表す鏡像オブジェクトの形状、位置および向きを計算して前記記憶部に記憶させる鏡像配置部、
当該仮想空間において当該視点の位置から当該視線の方向に当該実像オブジェクトと当該鏡像オブジェクトとを見ると、当該実像オブジェクトおよび当該鏡像オブジェクトが互いに近傍に見えるか否かを判定する判定部、
当該実像オブジェクトおよび当該鏡像オブジェクトが互いに近傍に見えると判定された場合、当該実像オブジェクトと、当該鏡像オブジェクトと、が、互いに近傍に見えないように、前記記憶部に記憶される当該鏡像オブジェクトの位置を調整する調整部、
前記記憶される当該実像オブジェクトの形状、位置および向きと、当該視点の位置および当該視線の方向と、当該鏡像オブジェクトの形状、位置および向きと、から、当該視点から当該視線の方向に当該仮想空間を見た画像を生成する生成部
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元仮想空間に配置されるオブジェクトの様子を、鏡像を用いて複数方向から表示するのに好適な画像処理装置、画像処理方法、ならびにコンピュータ上で実現するためのプログラムに関する。
【背景技術】
【０００２】
スポーツのトレーニング用装置として、インストラクターの動作姿勢を様々な角度からモニタに表示し、プレイヤにトレーニング動作をガイドする装置が存在する。例えば、特許文献１には、人間を模したキャラクタオブジェクトを、正面、背部、上部などの多方向から見た様子をそれぞれ微小時間（例えば、１秒間）ずつモニタに表示し、プレイヤのトレーニング動作をガイドすることで、プレイヤが効果的に、かつ楽しみながら運動を行えるトレーニングシステム装置が開示されている。
【特許文献１】特開２００４−１０５２２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
現実世界においては、同時に複数方向から対象物の様子を見る場合、典型的には鏡を用いる。鏡は人間にとっては馴染み深いものであり、鏡像を見ることで、瞬時にどちらの方向から対象物を見ているかが判断しやすい。しかしながら、鏡を用いた場合、視点の方向によっては実像と鏡像が重なってしまい、鏡像が見え難いことがある。特許文献１のように、対象物を見る視点の位置を微小時間ずつ切り替えて表示すれば、どの方向からも対象物を見ることは可能となるが、対象物の一連の動作が切り替える瞬間に中断されてしまう上、同時に複数の方向からの様子を表示できないという問題もある。
【０００４】
本発明は以上のような課題を解決するためのものであり、３次元仮想空間に配置されるオブジェクトの様子を、鏡像を用いて複数方向から表示するのに好適な画像処理装置、画像処理方法、ならびにコンピュータ上で実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、本発明の第１の観点に係る画像処理装置は、仮想空間内に配置される視点の位置および視線の方向と、当該仮想空間内に配置される実像オブジェクトの形状、位置および向きと、当該仮想空間内に配置される仮想鏡面の位置および向きと、当該仮想空間内に配置される鏡像オブジェクトの形状、位置および向きと、が記憶される記憶部を備える。
【０００６】
ここで、視点は３次元仮想空間を見ている仮想カメラであり、視線は仮想カメラが向いている方向である。当該仮想空間の２次元画像は、当該視点から当該視線方向に見た当該仮想空間を、２次元平面（投射面または投影面とも呼ぶ）に投射することで生成される。実像オブジェクトは、３次元仮想空間内に配置される、キャラクタ等を含むオブジェクトである。個々の実像オブジェクトの形状は、例えばポリゴンと呼ばれる微小な多角形の組み合わせ等によるサーフェスで定義（モデル化）される。
【０００７】
さらに、仮想空間内には実像オブジェクトが鏡に反射している様子を表現するために、仮想的な鏡である仮想鏡面が配置される。この仮想鏡面に対して、視点が配置される側とは逆側の適切な位置に、実像オブジェクトの鏡像である鏡像オブジェクトが適切な形状、および向きで、後述の鏡像配置部によって配置される。そして、後述の生成部が、視点から視線方向に見た当該鏡像オブジェクトを投射面に投射することで、実像オブジェクトの鏡像が生成される。
【０００８】
また、画像処理装置は、記憶部に記憶される当該実像オブジェクトの形状、位置もしくは向き、当該視点の位置、当該視線の方向の少なくとも一つを、ユーザからの指示入力もしくは時間経過に基づいて更新する更新部を備える。
【０００９】
即ち、ユーザがコントローラなどの入力装置を用いて、仮想カメラの位置（視点）、向き（視線方向）、仮想カメラのズーム倍率等を指定するためのパラメータを変更する旨の指示をすると、更新部は当該指示入力に基づいて記憶部に記憶された視点の位置や視線の方向を表す視線ベクトルを更新する。
【００１０】
なお、仮想鏡面は無限に広がっており、仮想空間を実像空間と鏡像空間の２つに分けているものとする。そして、ユーザが仮想鏡面を隔てて裏側（即ち、鏡像空間側）に仮想カメラを移動しようとした場合（例えば、仮想鏡面に衝突したり、ような場合）、仮想カメラを仮想鏡面に対して跳ね返るように移動させ、鏡像空間側に移動しないようにする。
【００１１】
また、ユーザが実像オブジェクトの位置や向きを指定するパラメータを変更する旨の指示をすると、更新部は指示入力に基づいて３次元空間内で実像オブジェクトを平行移動や回転させ、実像オブジェクトの位置や向きを更新する。
【００１２】
さらに、画像処理装置は、当該実像オブジェクトの当該仮想鏡面に対する鏡像を表す鏡像オブジェクトの形状、位置および向きを計算して記憶部に記憶させる鏡像配置部を備える。
【００１３】
即ち、上述のように、本画像処理装置においては、仮想的な鏡である仮想鏡面が３次元仮想空間内に配置され、鏡像配置部は、仮想鏡面に対して、視点が配置される側とは逆側の適切な位置および向きで、実像オブジェクトの鏡像である鏡像オブジェクトを配置する。鏡像オブジェクトが投射面に投影されることで、実像オブジェクトが鏡に反射している様子が表現される。
【００１４】
また、画像処理装置は、当該仮想空間において当該視点の位置から当該視線の方向に当該実像オブジェクトと当該鏡像オブジェクトとを見ると、当該実像オブジェクトおよび当該鏡像オブジェクトが互いに近傍に見えるか否かを判定する判定部を備える。
【００１５】
即ち、視点の位置から視線の方向に仮想空間を見た場合、鏡像オブジェクトが、実像オブジェクトの背後に隠れてしまい、鏡像オブジェクトの一部が視点から見えない場合がある。あるいは、ある瞬間においては、鏡像オブジェクトの全てが見えたとしても、鏡像オブジェクトが実像オブジェクトに近過ぎるために、実像オブジェクト（および鏡像オブジェクト）が姿勢を変えた際に、鏡像オブジェクトの一部を隠してしまう可能性もある。
本実施の形態では、このように、視点の位置から視線の方向に仮想空間を見た場合に、実像オブジェクトが鏡像オブジェクトを隠してしまう状態、或いは、現時点では隠していなくても、姿勢を変えると実像オブジェクトが鏡像オブジェクトを隠してしまう可能性がある状態を実像オブジェクトおよび鏡像オブジェクトが互いに近傍に見える状態にあるという。判定部は、所定の条件を満たすか否かを判定し、当該実像オブジェクトおよび当該鏡像オブジェクトが互いに近傍に見える状態にあるか否かを判定する。
【００１６】
また画像処理装置は、当該実像オブジェクトおよび当該鏡像オブジェクトが互いに近傍に見えると判定された場合、当該実像オブジェクトと、当該鏡像オブジェクトと、が、互いに近傍に見えないように、記憶部に記憶される当該鏡像オブジェクトの位置を調整する調整部を備える。
【００１７】
即ち、実像オブジェクトが鏡像オブジェクトに近過ぎたり、鏡像オブジェクトの一部を隠していると判定部が判断すると、調整部は、視点から視線の方向に見て鏡像オブジェクトが見え易いように、鏡像オブジェクトの位置や向きを調整する。
【００１８】
また画像処理装置は、記憶される当該実像オブジェクトの形状、位置および向きと、当該視点の位置および当該視線の方向と、当該鏡像オブジェクトの形状、位置および向きと、から、当該視点から当該視線の方向に当該仮想空間を見た画像を生成する生成部を備える。
【００１９】
即ち、生成部は３次元仮想空間内のオブジェクトを２次元平面に描画するために、視点から視線の方向に見た３次元仮想空間内の全オブジェクトの様子を投射面へと投射し、描画する。生成部は、描画された画像データを例えばフレームバッファなどに記憶し、垂直同期割り込みが生じると、フレームバッファの内容をモニタ等の表示装置に転送する。
【００２０】
このように、本発明に係る画像処理装置は、実像オブジェクトの鏡像がプレイヤに見え易いように、鏡像オブジェクトの位置や向きを調整して仮想空間内に配置する。
【００２１】
また、調整部は、当該鏡像オブジェクトを当該視点を通過する所定の回転軸に対して回転移動して、当該鏡像オブジェクトの位置および向きを調整するようにしてもよい。
【００２２】
即ち、調整部は、視点と鏡像オブジェクトの距離を保ちながら、水平に鏡像オブジェクトの位置を動かし、移動後も、視点に対しての鏡像オブジェクトの向きが変わらないように、鏡像オブジェクトの方向を調整する。
【００２３】
また、調整部は、当該鏡像オブジェクトと当該視点との距離を保ったまま、当該鏡像オブジェクトを当該仮想空間内に配置された床平面に対して平行移動して、当該鏡像オブジェクトの位置を調整するようにしてもよい。
【００２４】
即ち、調整部は、上述の所定の回転軸に対して鏡像オブジェクトを回転移動する場合と同様に、視点と鏡像オブジェクトの距離を保ちながら、床平面に対して平行に鏡像オブジェクトの位置を動かす。しかし、鏡像オブジェクトの向きは変更せずに移動後も同じに保つ。
【００２５】
また、判定部は、当該視点の位置から当該視線の方向に所定の距離だけ離れた位置に配置された投影面に、当該実像オブジェクトおよび当該鏡像オブジェクトを投影した場合、両者の投影先が重なると、両者が互いに近傍に見えると判定する、ようにしてもよい。
【００２６】
即ち、判定部は、視点の位置から視線方向に見たときに、実像オブジェクトと鏡像オブジェクトとが重なって見えた場合に、両者が互いに近傍に見えると判定する。
【００２７】
また、当該実像オブジェクトと当該鏡像オブジェクトとのそれぞれには、これを内包する球形のバウンディングエリアが対応付けられ、判定部は、当該視点の位置から当該視線の方向に所定の距離だけ離れた位置に配置された投影面に、当該実像オブジェクトのバウンディングエリアおよび当該鏡像オブジェクトのバウンディングエリアを投影した場合、両者の投影先が重なると、両者が互いに近傍に見えると判定し、調整部は、当該両者の投影先が接するように調整する、ようにしてもよい。
【００２８】
ここで、バウンディングエリアとは、実像オブジェクト、および鏡像オブジェクトのそれぞれが、位置を固定された状態で、姿勢を変えられる範囲である。視点から視線方向に見て、実像オブジェクト、および鏡像オブジェクトのそれぞれのバウンディングエリアが重なっている場合、両オブジェクトが重って見える可能性がある。したがって、このような場合、判定部は、当該２つのオブジェクトが互いに近傍に見えると判定する。そして、調整部は、両オブジェクトのバウンディングエリアが接するように、即ち、両オブジェクトが重ならない最も短い距離を保てるように、鏡像オブジェクトの位置を調整する。
【００２９】
また、調整部は、当該鏡像オブジェクトの位置を調整すると、その調整量にあらかじめ対応付けられる量だけ、記憶部に記憶される当該視点の位置を調整し、調整部は、当該鏡像オブジェクトの向きを調整すると、その調整量にあらかじめ対応付けられる量だけ、記憶部に記憶される当該視線の方向を調整する、ようにしてもよい。
【００３０】
即ち、鏡像オブジェクトの位置を調整すると、不自然さが目立つ鏡像が得られる場合がある。この不自然さを緩和するために、調整部は、移動した鏡像オブジェクトの位置や向きに応じて、視点の位置や視線の方向を調整するようにしてもよい。
【００３１】
また、本発明の他の観点に係る画像処理方法は、記憶部と、更新部と、鏡像配置部と、判定部と、調整部と、生成部と、を備える画像処理装置を制御する以下の工程を備える。
【００３２】
まず、記憶工程では、記憶部が、仮想空間内に配置される視点の位置および視線の方向と、当該仮想空間内に配置される実像オブジェクトの形状、位置および向きと、当該仮想空間内に配置される仮想鏡面の位置および向きと、当該仮想空間内に配置される鏡像オブジェクトの形状、位置および向きと、を記憶する。
【００３３】
更新工程では、更新部が、記憶部に記憶される当該実像オブジェクトの形状、位置もしくは向き、当該視点の位置、当該視線の方向の少なくとも一つを、ユーザからの指示入力もしくは時間経過に基づいて更新する。
【００３４】
鏡像配置工程では、鏡像配置部が、当該実像オブジェクトの当該仮想鏡面に対する鏡像を表す鏡像オブジェクトの形状、位置および向きを計算して記憶部に記憶させる。
【００３５】
判定工程では、判定部が、当該仮想空間において当該視点の位置から当該視線の方向に当該実像オブジェクトと当該鏡像オブジェクトとを見ると、当該実像オブジェクトおよび当該鏡像オブジェクトが互いに近傍に見えるか否かを判定する。
【００３６】
調整工程では、調整部が、当該実像オブジェクトおよび当該鏡像オブジェクトが互いに近傍に見えると判定された場合、当該実像オブジェクトと、当該鏡像オブジェクトと、が、互いに近傍に見えないように、記憶部に記憶される当該鏡像オブジェクトの位置を調整する。
【００３７】
生成工程では、生成部が、記憶される当該実像オブジェクトの形状、位置および向きと、当該視点の位置および当該視線の方向と、当該鏡像オブジェクトの形状、位置および向きと、から、当該視点から当該視線の方向に当該仮想空間を見た画像を生成する。
【００３８】
また、本発明の他の観点に係るプログラムは、コンピュータを、上記の画像処理装置として機能させるように構成する。本発明の他の観点に係るプログラムは、コンピュータに上記の画像処理方法を実行させるように構成する。
【００３９】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記録媒体に記録することができる。上記プログラムは、当該プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記録媒体は、当該コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００４０】
本発明は、３次元仮想空間に配置されるオブジェクトの様子を、鏡像を用いて複数方向から表示するのに好適な画像処理装置、画像処理方法、ならびにコンピュータ上で実現するためのプログラムを提供することができる。
【発明を実施するための最良の形態】
【００４１】
以下に本発明の実施の形態を説明する。以下では、理解を容易にするため、ゲーム装置に本発明が適用される実施の形態を説明するが、各種のコンピュータ、ＰＤＡ、携帯電話などの情報処理装置においても同様に本発明を適用することができる。すなわち、以下に説明する実施の形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと等しいものに置換した実施形態を採用することが可能であるが、これらの実施の形態も本発明の範囲に含まれる。
【００４２】
（実施形態）
図１は、本発明の実施形態の１つに係る画像処理装置が実現される典型的なゲーム装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００４３】
ゲーム装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ（Read Only Memory) １０２と、ＲＡＭ（Random Access Memory）１０３と、インターフェイス１０４ と、コントローラ１０５と、外部メモリ１０６と、画像処理部１０７ と、ＤＶＤ（Digital Versatile Disk）−ＲＯＭドライブ１０８と、ＮＩＣ（Network Interface Card）１０９と、音声処理部１１０と、を備える。
【００４４】
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０８に装着して、ゲーム装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態の画像処理装置が実現される。
【００４５】
ＣＰＵ １０１は、ゲーム装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。
【００４６】
ＲＯＭ１０２は、電源投入直後に実行されるＩＰＬ（Initial Program Loader）を記憶する。このＩＰＬをＣＰＵ １０１が実行することにより、ＤＶＤ−ＲＯＭに記録されたプログラムがＲＡＭ１０３に読み出され、ＣＰＵ １０１による実行が開始される。
また、ＲＯＭ１０２にはゲーム装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００４７】
ＲＡＭ１０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータ等が保持される。
【００４８】
インターフェイス１０４を介して接続されたコントローラ１０５は、ユーザがゲーム実行の際に行う操作入力を受け付ける。
【００４９】
インターフェイス１０４を介して着脱自在に接続された外部メモリ１０６には、例えばチャット通信のログのデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記憶することができる。
【００５０】
ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭには、前述のようにゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。ＣＰＵ １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０８は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出す。読み出されたデータはＲＡＭ１０３等に一時的に記憶される。
【００５１】
画像処理部１０７は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ １０１や画像処理部１０７が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０７が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０７に接続されるモニタ（図示せず）へ出力される。これにより、各種の画像表示が可能となる。
【００５２】
画像演算プロセッサは、２次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００５３】
また、３次元仮想空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から３次元仮想空間に配置されたポリゴンを俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【００５４】
さらに、ＣＰＵ １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。フォント情報は、ＲＯＭ １０２に記録されているが、ＤＶＤ−ＲＯＭに記録された専用のフォント情報を利用することも可能である。
【００５５】
ＮＩＣ １０９は、ゲーム装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものである。ＮＩＣ １０９は、例えばＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格に準拠するものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ １０１との仲立ちを行うインターフェイス（図示せず）により構成される。
【００５６】
インターネット内のＳＮＴＰサーバにＮＩＣ １０９を介して接続し、ここから情報を取得することによって現在の日時情報を得ることができる。また、各種のネットワークゲームのサーバ装置が、ＳＮＴＰサーバと同様の機能を果たすように構成設定してもよい。
【００５７】
音声処理部１１０は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【００５８】
このほか、ゲーム装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ １０２、ＲＡＭ １０３、ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００５９】
尚、本実施の形態に係る画像処理装置２００は、ゲーム装置１００や、携帯式のゲーム装置上に実現されるが、一般的なコンピュータ上に実現することもできる。一般的なコンピュータは、上記ゲーム装置１００と同様に、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＤＶＤ−ＲＯＭ ドライブ、および、ＮＩＣを備え、ゲーム装置１００よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラではなく、キーボードやマウスなどを入力装置として利用する。そして、ゲームプログラムをインストールした後に、そのプログラムを実行させると、画像処理装置として機能させることができる。
【００６０】
以下では、注記しない限り、画像処理装置２００について、図１に示したゲーム装置１００により説明を加える。画像処理装置２００は、必要に応じて適宜一般的なコンピュータの要素に置換することができ、これらの実施の形態も本発明の範囲に含まれる。
【００６１】
（画像処理装置の概要構成）
図２は、本実施の形態に係る画像処理装置２００の概要構成を示す模式図である。以下本図を参照して説明する。
本実施の形態においては、図３に示すように、実像オブジェクト（キャラクタ）３００と、平面状の仮想的な鏡（仮想鏡面）３１０、を１枚当該仮想空間に配置する。そして、仮想鏡面に実像オブジェクト３００の鏡像が映し出されているかのように、鏡像オブジェクト３００’、即ち、実像オブジェクトの鏡像となるオブジェクトを配置することで、２方向から当該オブジェクトの様子をプレイヤに表示する例を示す。
【００６２】
なお、本実施の形態においては、仮想鏡面３１０は、オブジェクトとして仮想空間に配置されるものではなく、鏡像オブジェクト３００’の形状および位置を求めるために使われるものである。ただし、理解を容易にするために、本図では仮想鏡面３１０の形状を明記している。
【００６３】
画像処理装置２００は、ユーザの指示、または時間経過に応じて変化する、３次元仮想空間内の実像オブジェクトの位置や向き、仮想カメラ（視点）の位置や向き等を考慮して、実像オブジェクトとその鏡像とを表示するものであり、図２に示すように、記憶部２０１、更新部２０２、鏡像配置部２０３、判定部２０４、調整部２０５、生成部２０６等を備える。
以下に画像処理装置２００の各構成要素について説明する。
【００６４】
記憶部２０１は、３次元仮想空間内を表現するための種々の情報を記憶する。
まず、記憶部２０１は、３次元仮想空間内の各要素（オブジェクト、あるいはモデルとも呼ばれる）の形状情報を記憶する。各オブジェクトは、その形状をポリゴンと呼ばれる、微小な多角形（例えば三角形や四角形等）の組み合わせによって定義されるサーフェス（表面）として表現される。
【００６５】
記憶部２０１は、各オブジェクト（実像オブジェクト、および、後述の鏡像配置部２０３によって算出される鏡像オブジェクトの両方を含む）の、仮想空間内における形状、位置および向きを記憶する。例えば、記憶部２０１は、仮想空間の全体を表現するグローバル座標系（ワールド座標系）と、オブジェクト毎に固定されたローカル座標系とを記憶する。典型的には、オブジェクトの代表点（例えば重心）がローカル座標系の原点であり、オブジェクトのサーフェス形状（即ち、オブジェクトを構成するポリゴンの形状や当該ポリゴンが配置される位置）がローカル座標系に基づいて定義される。一方、個々のオブジェクトの位置は、グローバル座標系に基づいて定義される。そして、オブジェクトの向きは、例えば、オブジェクトの代表点からオブジェクトの正面方向に延びる方向ベクトルによって、グローバル座標で定義する。
【００６６】
なお、位置情報は直交座標系を用いて定義しても、１個の動径と２個の偏角を用いた極座標系を用いて（ｒ，θ，φ）で表してもよい。
【００６７】
さらに、記憶部２０１は、３次元仮想空間内のオブジェクトの鏡像を映し出す、仮想的な鏡面（以下仮想鏡面と呼ぶ）の位置、向き、そして、視点の位置、および、視線の方向を記憶する。ここで、視点の位置とは、仮想的カメラが当該仮想空間においてオブジェクトを見ている位置であり、典型的にはグローバル座標系で定義される。一方、視線の方向とは、仮想カメラ（視点）が当該仮想空間を見ている方向である。この他にも、記憶部２０１は、当該仮想空間を投射する投射面の位置および向きなども記憶する。
【００６８】
なお、仮想鏡面や視点や投射面についても、上述したように、グローバル座標系やローカル座標系を用いて、位置や向きを定義する。
なお、投射面の位置、向きは、後述の更新部２０２によって仮想カメラの位置、向き、等が更新されたときに、これら変更された値に基づいて算出される。
【００６９】
さらに、記憶部２０１はオブジェクトそれぞれの表面に貼り付けるテクスチャと呼ばれる画像データや、当該仮想空間を照らす光源の位置等も記憶する。テクスチャ情報をオブジェクトのサーフェス形状に貼り付けることで、オブジェクトの質感を表現することが可能となる。
【００７０】
これら記憶部２０１に記憶される情報は例えばＤＶＤ−ＲＯＭに予め格納されており、ＣＰＵ １０１がＤＶＤ−ＲＯＭドライブ １０８に装着されたＤＶＤ−ＲＯＭを読み出してＲＡＭ １０３に一時記憶させる。あるいは、外部メモリ１０６に記憶させたこれらの情報を、ＣＰＵ １０１に読み出させ、ＲＡＭ １０３に一時記憶させるようにしてもよい。なお、ＣＰＵ １０１は、一時記憶された情報を、例えばゲームの進行に応じて、随時更新することができる。このように、ＣＰＵ １０１、ＲＡＭ １０３、ＤＶＤ−ＲＯＭドライブ１０８等が協働して動作することにより、記憶部２０１として機能する。
【００７１】
次に、更新部２０２は、インターフェイス１０４を介して接続された入力装置を操作してユーザが指示した入力等に基づいて、または、ユーザがプログラムなどによって指示した内容などに基づいて、記憶部２０１に記憶されるオブジェクトの位置ならびに向きのほか、視点の位置、および、視線の方向を更新する。また、更新された視点の位置、視線の方向などに基づいて、投射面の位置、および向きも算出し、更新する。ＣＰＵ １０１、ＲＡＭ １０３、が協働して動作することにより、更新部２０２として機能する。
【００７２】
鏡像配置部２０３は、更新部２０２によって更新された仮想空間内のオブジェクトの向きや位置を考慮して、仮想空間内のオブジェクトの鏡像を生成するために、仮想鏡面に対して、視点および当該オブジェクトが配置される側とは逆側に鏡像オブジェクトを配置する。なお、鏡像オブジェクトの形状や、配置される位置、および場所は、記憶部２０１に記憶される。そして、後述の生成部２０６がこの鏡像オブジェクトを投射面に投影して、仮想的な鏡像を生成する。ＣＰＵ １０１、ＲＡＭ １０３、が協働して動作することにより、鏡像配置部２０３として機能する。
【００７３】
判定部２０４は、当該仮想空間において当該視点の位置から当該視線の方向に当該実像オブジェクトと当該鏡像オブジェクトとを見た場合に、両者が互いに近傍に見えるか否かを判定する。上述したように、本実施の形態においては、視点の位置から視線の方向に仮想空間を見た場合に、実像オブジェクトが鏡像オブジェクトを隠してしまう状態、或いは、現時点では隠していなくても、姿勢を変えると実像オブジェクトが鏡像オブジェクトを隠してしまう可能性がある状態を、「実像オブジェクトと鏡像オブジェクトが互いに近傍に見える」と表現する。例えば、図３では、鏡像オブジェクト３００’の向かって左足が実像オブジェクト３００の右手によって隠れているため、「実像オブジェクトと鏡像オブジェクトが互いに近傍に見える」状態にある。
【００７４】
判定部２０４はこのような実像オブジェクトと鏡像オブジェクトが互いに近傍に見える状態を判定するためのものである。ＣＰＵ １０１、ＲＡＭ １０３、が協働して動作することにより、判定部２０４として機能する。
【００７５】
判定部２０４によって、実像のオブジェクトと、鏡像オブジェクトとが、互いに近傍に見えると判定された場合に、調整部２０５は、当該鏡像オブジェクトの位置や向きを調整し、当該鏡像オブジェクトを当該実像オブジェクトから引き離して配置する。ＣＰＵ １０１、ＲＡＭ １０３、が協働して動作することにより、調整部２０５として機能する。
【００７６】
生成部２０６は、更新部２０２によって更新されたオブジェクトの位置ならびに向き、そして、視点の位置、および、投射面の位置ならびに向きに基づいて、当該視点から、当該３次元仮想空間内の各オブジェクトを投射面に投射（投影）して、モニター等の表示装置に表示する画像データを生成する。本実施の形態では、例えば１点透視法で透視投影する。ＣＰＵ １０１、ＲＡＭ １０３、画像処理部１０７が協働して動作することにより、生成部２０６として機能する。
【００７７】
（画像処理装置の動作）
以上のような構成を有する画像処理装置２００の動作を図４を参照して説明する。
【００７８】
画像処理装置が電源を投入されて、処理を開始すると、ＲＡＭ １０３に必要な情報（例えば仮想カメラの位置や向き、そしてオブジェクトの形状、位置、そして向きなど）が読み込まれ、記憶部２０１が初期化される（ステップＳ１１）。
【００７９】
ユーザは、コントローラ１０５を用いて、仮想カメラ（視点）の位置、仮想カメラの向き（視線方向）、仮想カメラの撮影倍率（ズーム率）、のほか、オブジェクトの位置や向き、そしてオブジェクトの動き、等のパラメータを変更する旨の指示ができる。
【００８０】
まず、更新部２０２が、当該ユーザから仮想カメラに関するパラメータの変更の指示入力があったか判断する（ステップＳ１２）。指示入力があった場合（ステップＳ１２；Ｙ）、更新部２０２は指示に従って、記憶部２０１の仮想カメラの位置、向き、を更新する（ステップＳ１３）。さらに、更新部２０２は、更新された仮想カメラの位置や、向き、そしてズーム率に応じて、視点から視線方向に見た仮想空間を投射する投射面が当該仮想空間内に配置される位置や向きを算出する（ステップＳ１４）。
【００８１】
即ち、更新部２０２は視点を起点とする視線ベクトル（視線の向きを表すベクトル）と垂直に交わる向きを算出し、これを投射面の向きとする。そして、ズームインの際には投射面を３次元空間内の撮影対象に近づくように（視点から遠ざかるように）並行移動させ、ズームアウトの際には撮影対象から遠ざかるように（視点に近づくように）平行移動させる。視線ベクトルの向きを変える（即ち仮想カメラをパンする）ときには、視線ベクトルの向きにしたがって投射面の向きも変える。このように、更新部２０２は視点の位置および視点の見ている方向（視線ベクトルの向き）、そしてズーム倍率などから投射面の位置や向きを決定し、記憶部２０１に記憶（更新）する。
なお、ユーザから仮想カメラに関するパラメータの変更の指示入力がなかった場合（ステップＳ１２；Ｎ）、処理はステップＳ１５に進む。
【００８２】
次いで、更新部２０２は、当該ユーザからのオブジェクトの位置や向きに関する指示入力があったか否かを判断する（ステップＳ１５）。指示入力があった場合（ステップＳ１５；Ｙ）、更新部２０２は指示入力に基づいて３次元空間内でオブジェクトを平行移動や回転させ、記憶部２０１に記憶されるオブジェクトの位置や向きを更新する（ステップＳ１６）。指示入力がなかった場合（ステップＳ１５；Ｎ）処理は、ステップＳ１７に進む。
【００８３】
なお、仮想カメラの位置や向き、撮影倍率、オブジェクトの位置ならびに向きなどのパラメータは、制御プログラムなどから与えられてもよい。あるいは、時間の経過に対応付けてパラメータを所定の値に変更したり、ランダムに変更したりしてもよい。
【００８４】
次いで、鏡像配置部２０３は、更新部２０２により更新された実像のオブジェクトの形状、位置、向きと、仮想鏡面の位置、向きとを考慮して、仮想空間において、仮想鏡面の、視点およびオブジェクトの配置される側とは逆側に鏡像オブジェクトを配置すべく、鏡像オブジェクトの形状、位置、向きを算出する（ステップＳ１７）。図５（Ａ）は実像オブジェクト５００およびその鏡像オブジェクト５００’を仮想鏡面５０１を挟んで上部から見た様子を示す図である。本実施の形態では仮想鏡面は平面状であるため、図５（Ａ）に示すように、鏡像オブジェクト５００’は、実像オブジェクト５００とは仮想鏡面５０１に対して面対称となる。
即ち、仮想鏡面５０１と垂直な線を伸ばした時に通過する実像オブジェクト５００の点までの距離と同じ距離を、同一線上に仮想鏡面５０１の逆側に伸ばした位置に、対応する鏡像オブジェクト５００’の点が存在するように、鏡像オブジェクト５００’の形状、位置、および向きを算出する。
【００８５】
したがって、鏡像オブジェクト５００’は実像オブジェクト５００とは左右対称の形状を有する。鏡像オブジェクト５００’の位置（代表点の位置）は、実像オブジェクト５００の代表点Ｐを通る仮想鏡面５０１から垂直に延びた線上に、点Ｐから仮想鏡面の逆側に同じ距離だけ離れた、点Ｐ’となる。また、例えば、実像オブジェクト５００の方向ベクトル（例えば、代表点からオブジェクトの正面方向を示すベクトル）をＦ、Ｆと仮想鏡面５０１から垂直に延びる線との角度をαとしたとき、鏡像オブジェクト５００’の方向ベクトルＦ’と垂線Ｎとの角度は、１８０°−αとなる。
【００８６】
なお、仮想空間の床面には仮想鏡面５０１に対して対称な模様を描くと、より一層「鏡らしさ」をユーザに感じさせることが可能となる。
【００８７】
本実施の形態では、平面状の仮想鏡面を用いたが、簡単な座標変換で鏡像が求まる、例えば球面鏡を仮想鏡面として用いてもよい。球面鏡を仮想鏡面とした場合、鏡像オブジェクトは図５（Ｂ）に示すように求められる。即ち、仮想鏡面５１０上の各点の接面に垂直な線を伸ばした時に通過する実像オブジェクト５００の点までの距離と同じ距離を、同一線上に仮想鏡面５１０の逆側に伸ばした位置に、対応する鏡像オブジェクト５００”の点が存在するように、鏡像オブジェクト５００”の形状、位置、および向きを算出する。
【００８８】
次に、視点から視線方向に仮想空間を見た場合に、実像のオブジェクトと鏡像オブジェクトが互いに近傍に見えるか否かを判定部２０４が判定する（ステップＳ１８）。
本実施の形態においては、両者が互いに近傍に見えるか否かは、実像オブジェクトと鏡像オブジェクトのそれぞれのバウンディングエリアを用いて判定する。上述のように、バウンディングエリアとは、オブジェクトが、位置を固定された状態で姿勢を変えられる範囲である。例えばオブジェクトの重心を中心点として、当該オブジェクトが位置を固定された状態で到達可能な、最も中心点から遠くまでの距離を半径とした球体を当該オブジェクトのバウンディングエリアとする。
【００８９】
判定部２０４は、視点から視線方向に見て、実像オブジェクトおよび鏡像オブジェクトのそれぞれのバウンディングエリアが互いに重なって見えた場合に、実像オブジェクトと鏡像オブジェクトとが互いに近傍に見えると判定する。これは、投射面に実像オブジェクトおよび鏡像オブジェクトのバウンディングエリアを投射して、投射先領域のそれぞれが重なっているか否かを判断することで判定可能である。
【００９０】
例えば、まず、投射面の各画素に対応する配列要素を備える配列を用意し、実像オブジェクトの投射された領域に対応する当該配列要素に所定の値（例えば１）を記憶する。次いで、鏡像オブジェクトの投射された領域に対応する配列要素に所定の値（例えば１）を加算する。当該配列に所定の値以上（この場合２以上）の値が記憶されていれば、投射先領域が重なっていると判断できる。
【００９１】
実像オブジェクトや鏡像オブジェクトのバウンディングエリアの投射先領域が重なっているか否かは、視点からの実像オブジェクト（または鏡像オブジェクト）の距離に基づいても算出可能である。例えば、１点透視法を用いた場合、実像オブジェクト（または鏡像オブジェクト）の距離が大きくなるのに相対して、実像オブジェクト（または鏡像オブジェクト）のバウンディングエリアの投射先領域は小さくなる。即ち、図７に示すように、バウンディングエリアの投射先領域の直径をＸ、実際のバウンディングエリアの直径をＤ、視点７１０から投射面７２０の距離をＬ、視点７１０からバウンディングエリアの中心点までの距離をＬ１としたとき、Ｘは次式によって求められる：
Ｘ＝（Ｌ／Ｌ１）＊Ｄ
【００９２】
したがって、実像オブジェクトと鏡像オブジェクトのそれぞれのバウンディングエリアの中心点に対応する投射面上の２点間の距離が、上式によって算出された両バウンディングエリアの投射先領域における半径（それぞれの直径を２で除算）を合計した値よりも小さければ、両バウンディングエリアが重なって見えると判定する。
なお、投射方法として平行投影を用いた場合は、投射先領域の半径は視点からの距離に関わらずバウンディングエリアの半径と同じ値となる。
【００９３】
判断部２０４によって実像オブジェクトと鏡像オブジェクトが近傍にないと判断されると（ステップＳ１８；Ｎ）、処理はステップＳ２０に進む。一方、両オブジェクトが近傍にあると判断された場合（ステップＳ１８；Ｙ）、調整部２０５は、投射面上で見て、実像オブジェクトから離れるように、鏡像オブジェクトの位置を調整する（ステップＳ１９）。図６は、鏡像オブジェクト６０１、調整部２０５によって位置および向きを調整された鏡像オブジェクト６０１’、および視点６１０を上部から見た様子を示す。図６においては、実像オブジェクトの代表点は図面に向かって鏡像オブジェクト６０１の左上の位置の点ｘにあるとする。本実施の形態では、図６（Ａ）に示すように、視点６１０を通過する、図面から垂直方向に伸びる軸に対して鏡像オブジェクト６０１を回転移動させて投射面上に投射された実像オブジェクトと鏡像オブジェクト６０１の代表点間の距離が広がるように実像オブジェクトの位置および向きを調整する。
【００９４】
即ち、床平面に対して平行に、鏡像オブジェクト６０１を点線の矢印で示される方向に移動する。このとき、鏡像オブジェクト６０１と、移動後の鏡像オブジェクト６０１’のそれぞれの方向ベクトルと両者の代表点から視点に延びるそれぞれ線とが成す角度が同じβとなるように鏡像オブジェクトの向きは調整される。
【００９５】
この他、図６（Ｂ）に示すように、視点６１０と鏡像オブジェクト６０１の距離を保ちながら、床平面に対して平行に鏡像オブジェクトの位置を調整してもよい（調整後の鏡像オブジェクトは６０１”に示す）。即ち、方向ベクトルの向きを変えずに、鏡像オブェジェクトの位置のみを移動してもよい。
【００９６】
なお、上記図６（Ａ）および（Ｂ）に示すいずれの方法においても、実像オブジェクトと鏡像オブジェクトが完全に重なっている場合は、鏡像オブジェクトが実像オブジェクトから離れる方向としては２方向あるため、どちらか所定の方向に移動すればよい。
【００９７】
上述の回転移動の量、または、平行移動の量は、例えば所定の量としてもよい。あるいは、視点から視線方向に見たときに、両者のそれぞれのバウンディングエリアが互いに接するかそれ以上に離れるように見える距離だけ移動してもよい。バウンディングエリアは、上述のように各オブジェクトが姿勢を変えられる範囲を表す領域である。よって、当該視点から当該視線方向に見て、実像オブジェクト、および鏡像オブジェクトが重ねて見えないための、両オブジェクト間の距離は、少なくとも、両者のバウンディングエリアが接するように見える距離となる。したがって、鏡像オブジェクトを当該距離以上離れるように移動すれば、実像オブジェクト、および鏡像オブジェクトが重ねて見えることは回避される。
【００９８】
なお、ステップＳ１８の説明に記したように、投射先領域における実像オブジェクト、および鏡像オブジェクトのそれぞれのバウンディングエリアの半径は、両オブジェクトの視点からの距離に基づいてそれぞれ算出可能である。したがって、両オブジェクトを、両オブジェクトのバウンディングエリアのそれぞれの投射先領域が接するかそれ以上引き離すには、次にようにすればよい。即ち、調整部２０５は、実像オブジェクトおよび鏡像オブジェクトのバウンディングエリアのそれぞれの中心点を投射面へ投射したときの２点間の距離が、両者のバウンディングエリアのそれぞれの半径を合計した値以上になるように鏡像オブジェクトを、実像オブジェクトから引き離すように移動すればよい。
【００９９】
次いで、生成部２０６は、ステップＳ２０およびＳ２１を当該仮想空間内の全オブジェクトに対して実施し、当該仮想空間の２次元画像を描画する。
【０１００】
まず、生成部２０６はオブジェクト（実像オブジェクト、鏡像オブジェクトを含む）の投射先領域を求める（ステップＳ２０）。本実施の形態では、上述のように、各オブジェクトを投射面に１点透視法で透視投影するため、視点から遠くにあるオブジェクトは小さく、近くにあるオブジェクトは大きく投影されることになる。ただし、１点透視法の代わりに、平行投影を採用することもできる。
【０１０１】
投影先を求めると、投影先の各領域に、対応するテクスチャの対応する領域を貼り付けて（マッピングして）描画する（ステップＳ２１）。このとき、生成部２０６は陰面処理を行うために、例えば、Ｚバッファ法などを用いる。即ち、生成部２０６は描画する画像データを構成する画素ごとに、視点（投射面）に最も近いポリゴンに対応するテクスチャ情報の色で、当該画素を塗るようにする。
視線方向と、ポリゴンのサーフェス形状の向きが同じ場合、該サーフェスは視線ベクトルと反対を向いていることを意味するため、生成部２０６はこのようなサーフェスを描画しないようにしてもよい。
【０１０２】
また、テクスチャを貼り付ける際は、各オブジェクトを形成するポリゴンの光源に対する向きを考慮する。即ち、オブジェクトを構成するサーフェス形状の各ポリゴンの法線と、光源ベクトルとがなす角度を求め、０度に近い程（即ち角度が近いほど）テクスチャの明度を高くする。逆に直角に近い程、明度を低くする。ただし、明度に反射率を乗算することで質感を変化させる場合は、ポリゴンの法線と光源ベクトルのなす角度が直角であっても明度を完全に０とはしない。こうすることで、暗い部分においても質感（ざらざら感や、滑らか感、など）を表現することが可能となる。なお、角度そのものではなく、角度の余弦をベクトルの内積から求めて１に近いほど明度を明るくしてもよい。また、ポリゴンの境界において明るさの違いが目立たないように、グローシェーディングやフォンシェーディングなどを適用してもよい。
【０１０３】
このとき、実像オブジェクト、鏡像オブジェクトのいずれも、同じ光源（仮想空間に元々配置されている光源）により照らされるようにしてもよい。あるいは、より自然に見せるために、光源を仮想鏡面に対して、面対称に配置してもよい。この場合、オブジェクトも、仮想的な光源も、実像オブジェクトと鏡像オブジェクトとの両方を照らすことになる。よって、さらに自然な照明を得たい場合は、実像オブジェクト用の光源は実像オブジェクトのみを、そして鏡像オブジェクト用の光源は鏡像オブジェクトのみを、照らすようにしてもよい。
【０１０４】
以上の画像生成処理を終了すると、生成部２０６は垂直同期割込が生じるまで待機する（ステップＳ２２）。この待機中には、他の処理（例えば、ＲＡＭ １０３内に記憶される各オブジェクト、および仮想カメラの位置や向きを、時間の経過やユーザからの処理に基づいて更新する等の処理）をコルーチン的に実行してもよい。
【０１０５】
垂直同期割込が生じたら、生成部２０６は描画した画像データ（通常フレームバッファに記憶）の内容をモニター（図示せず）に転送して、画像を表示し（ステップＳ２３）、ステップＳ１２に戻る。
【０１０６】
以上、本発明の実施の形態について説明したが、本発明は、上述した実施形態に限定されず、種々の変形および応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【０１０７】
例えば、上記実施の形態においては、判定部は、バウンディングエリアを用いて、実像オブジェクトと鏡像オブジェクトとが、視点から視線方向に見て互いに近傍に見えるか否かを判定した。そうではなく、判定部は、視点から視線方向に見て、両オブジェクトが重なって見える場合のみ、両オブジェクトが互いに近傍に見えると判断してもよい。重なって見えるか否かは、実像オブジェクトと鏡像オブジェクトとを投射面に投射して、投射先領域に重なっている部分があるか否かによって判定する。
【０１０８】
投射面領域における両オブジェクトの重なりは、上述の、バウンディングエリアの投射先領域における重なりを判定する方法と同様の手法で検出可能である。例えば、投射面の各画素に対応する配列要素を備える配列を用意し、実像オブジェクトの投射された領域に対応する当該配列要素に所定の値（例えば１）を加算する。当該配列に所定の値以上（この場合２以上）の値が記憶されていれば、投射先領域において重なりがあることを検出できる。
【０１０９】
なお、実像オブジェクトと鏡像オブジェクトとが重なって見える状態を両オブジェクトが互いに近傍に見える条件としたとき、バウンディングエリアを用いた場合とは異なり、どの程度動かせば重ならないように見えるのかを予め算出することは困難である。よって、例えば、調整部は鏡像オブジェクトを所定の距離だけ実像オブジェクトと離れる方向に動かし、再度両オブジェクトの投射先領域において重りがあるか否かを判定すればよい。そして両オブジェクトの投射先領域が重ならなくなるまで所定の距離だけ鏡像オブジェクトを動かす処理を行えばよい。
【０１１０】
なお、この場合、調整部は上述したように、鏡像オブジェクトを、視点を通過する所定の回転軸に対して回転移動しても、あるいは、当該仮想空間内に配置された床平面に対して視点との距離を保ちながら平行移動してもよい。
【０１１１】
また、上記実施の形態においては、１枚の仮想鏡面を用いた場合について説明したが、仮想鏡面の数はこれに限らない。
図８は、実像オブジェクト８００に対して、仮想鏡面８１０ａ、８１０ｂ、８１０ｃをそれぞれ、正面、左、右に置いた例を、上部から示している図である。鏡像配置部は、仮想鏡面の数（この場合は３枚）と同じ数の鏡像オブジェクト８００ａ、８００ｂ、８００ｃのそれぞれを、ステップＳ１７と同様の手順で、仮想鏡面８１０ａ、８１０ｂ、８１０ｃの裏側に配置する（図８（Ａ）を参照）。
【０１１２】
現実では、鏡像の鏡像、その鏡像…、のように、鏡像が無限に生じることを考慮する必要があるが、本実施の形態では、１つの仮想鏡面について、１つの鏡像オブジェクトを配置するようにして、計算量の低減を図る。次いで、調整部は、視点８２０から視線方向に見た場合に、実像オブジェクト８００と鏡像オブジェクト８００ａとが近傍に見えないように、ステップＳ１８およびＳ１９と同様の手順で調整する。図８（Ｂ）は、調整の結果、例えば、矢印方向へと鏡像オブジェクト８００ａの位置を移動した例を示す図である。
【０１１３】
図９は、図８と同様に、実像オブジェクト８００に対して、仮想鏡面８１０ａを挟んで、８１０ｂと８１０ｃとをそれぞれ斜めにして配置した例を、上部から示している図である。鏡像配置部は、図９（Ａ）に示すように、鏡像オブジェクト８００ａ、８００ｂ、８００ｃのそれぞれを、ステップＳ１７でと同様の手順で仮想鏡面８１０ａ、８１０ｂ、８１０ｃの裏側に配置する。調整部は、視点８２０から視線方向に見た場合に、実像オブジェクト８００と鏡像オブジェクト８００ａとが近傍に見えないように、ステップＳ１８およびＳ１９と同様の手順で調整する。図９（Ｂ）は、調整の結果、例えば、矢印方向へと鏡像オブジェクト８００ａの位置を移動した例を示す図である。
【０１１４】
さらに、鏡像同士が互いに近傍となってしまう場合に、これを避ける手法を適用してもよい（図示せず）。例えば、実像と鏡像Ａが互いに近傍に見えるときに、鏡像Ａを移動すると、鏡像Ａと別の鏡像Ｂとが互いに近傍に見える場合がある。このときは、調整部は鏡像Ａの移動後の位置を固定して、鏡像Ｂを移動すればよい。この移動については、鏡像Ａを「上記の実像」、鏡像Ｂを「上記の鏡像」として上記の鏡像の移動の手法を適用すればよい。
【０１１５】
なお、この場合、視点（仮想カメラ）の位置は、上記実施の形態と同様に、仮想鏡面８１０ａ〜８１０ｃによって隔てられた、鏡像空間側に移動できないようにする。
【０１１６】
また、上記実施の形態においては、調整部は鏡像オブジェクトの位置や向きを調整するに過ぎなかった。しかし、鏡像オブジェクトの位置や向きのみを変更すると、鏡像として不自然さが際立つ場合がある。これを緩和するために、調整部は、移動した鏡像オブジェクトの位置や向きに応じて、記憶部に記憶される視点の位置や視線の方向を調整するようにしてもよい。例えば、鏡像オブジェクトを移動した場合、移動量の所定の割合だけ視点を同じ方向へ移動すればよい。そして、例えば、視点の移動を行う前に視点から視線の方向へ延びる線が投射面と交わった点を通るように、視線の向きを調整すればよい。
【０１１７】
また、上記実施の形態においては、仮想鏡面によって隔てられた鏡像空間側に視点（仮想カメラ）を移動できないようにしたが、視点を鏡像空間側に移動してもよい。この場合、生成部は、視点が動いた先の鏡像空間に配置される鏡像オブジェクトを描画してもよい。あるいは、より自然に見えるように、生成部は、当該鏡像オブジェクトを描画しないようにしてもよい。
【０１１８】
また、上記実施の形態においては、仮想鏡面はオブジェクトとして仮想空間に配置されないようにした。しかし、実像と鏡像の差異を表現するために、仮想鏡面を１枚の面オブジェクトとして仮想空間上に配置してもよい。そして、仮想鏡面には透過情報を表すアルファ値を掛け合わせ、表示する。こうすることで、仮想鏡面に反射率があるかのように、仮想鏡面の裏側に存在する鏡像オブジェクトが半透明に描画され、違和感なく、実像と鏡像に差異をつけることが可能となる。なお、複数の仮想鏡面を用いる場合は、アルファ値を掛け合わせる割合をそれぞれの仮想鏡面で変化させて、反射率が異なるかのように描画してもよい。こうすることにより、各鏡像オブジェクトは異なる透過率で描画され、鏡像オブジェクト間の差異を明確に描画することが可能となる。
【０１１９】
あるいは、仮想鏡面オブジェクトに色を持たせて、これにアルファ値を掛け合わせてもよい。こうすることで、色のついた鏡に映し出された鏡像のように、鏡像オブジェクトが描画され、実像オブジェクトとの差異がはっきりする。複数の仮想鏡面を用いる場合は、それぞれの仮想鏡面の色を変化させてもよい。これにより、各鏡像オブジェクトの差異をより明確に表現することが可能となる。
【０１２０】
この他にも、仮想鏡面をより現実の鏡に近づけて表現するために、実像空間と仮想鏡面との境界、および仮想鏡面と鏡像空間との境界において不連続性を持たせてもよい。通常、鏡は一定の厚みを有し、ガラス部分では屈折も生じる。よって、図１０に上部からみた様子を示すように、実像空間と仮想鏡面との境界をＷ２、および仮想鏡面と鏡像空間との境界をＷ１として、Ｗ１およびＷ２の間に空間を設ける。そして、このＷ１とＷ２の間の空間を仮想鏡面の厚みを表す部分として、ガラスの縁を表現するような灰色、または緑色などの所定の色で、塗りつぶす。
【０１２１】
Ｗ１からＷ２までの部分は現実では、通常ガラスで構成されているが、このガラス部分で生じる屈折を考慮しないとすると、床面は、Ｗ１に対して対称に配置される（床面の模様の一部を延長した線を破線で、そしてその鏡像を点線で示す）。ここで、あたかも屈折が生じているかのように見せるために、視線が仮想鏡面に対して垂直でない場合は、Ｗ１に対して対象な床面の画像を、Ｗ１および床面に対して水平に、そして視点に近づく方向に、δだけずらす。なお、このδは、Ｗ（Ｗ１からＷ２までの幅）より小さく設定することが好ましい。こうすることにより、仮想鏡面をより現実の鏡に近づけて表現することが可能となる。あるいは、Ｗ１からＷ２までの空間を所定の色で塗りつぶすのではなく、床面の模様を延長して貼り付けて、鏡像空間に描画した床面と繋がるように、貼り付けた画像に対して線形変換を施してもよい。
【図面の簡単な説明】
【０１２２】
【図１】本発明の実施の形態に係る画像処理装置等が実現される典型的なゲーム装置の概要構成を示す模式図である。
【図２】本実施の形態に係る画像処理装置の概要構成を示す説明図である。
【図３】本実施の形態で想定している対象（実像）オブジェクトと、仮想鏡面と、鏡像オブジェクトとの配置例を示す図である。
【図４】本実施の形態に係る画像処理装置の動作を説明するフロー図である。
【図５】実像オブジェクトと鏡像オブジェクトの関係を上部から示した図であり、（Ａ）は平面状の仮想鏡面を用いた場合、（Ｂ）は球面状の仮想鏡面を用いた場合を示す。
【図６】（Ａ）は鏡像オブジェクトを視点を通過する所定の回転軸に対して回転移動して調整する様子を示す図であり、（Ｂ）は、鏡像オブジェクトを当該仮想空間内に配置された床平面に対して、視点との距離を保ちながら平行移動して調整する様子を示す図である。
【図７】視点からの距離に応じて、投射先領域が小さくなる様子を示す図である。
【図８】１枚以上の仮想鏡面を用いた場合の例を上部より示した図であり、（Ａ）は調整部が鏡像オブジェクトを調整する前、（Ｂ）は調整部が鏡像オブジェクトを調整した後、の様子を示した図である。
【図９】１枚以上の仮想鏡面を用いた別の例を上部より示した図であり、（Ａ）は調整部が鏡像オブジェクトを調整する前、（Ｂ）は調整部が鏡像オブジェクトを調整した後、の様子を示した図である。
【図１０】仮想鏡面の境界付近を上部から見た様子を示した図である。
【符号の説明】
【０１２３】
１００  ゲーム装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェイス
１０５  コントローラ
１０６  外部メモリ
１０７  画像処理部
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  ＮＩＣ
１１０  音声処理部
２００  画像処理装置
２０１  記憶部
２０２  更新部
２０３  鏡像配置部
２０４  判定部
２０５  調整部
２０６  生成部
【要約】
【課題】３次元仮想空間に配置されるオブジェクトの様子を、鏡像を用いて複数方向から表示するのに好適な画像処理装置等を提供することを目的とする。
【解決手段】記憶部２０１は、３次元仮想空間に配置される実像オブジェクトの形状、位置、向き、を記憶する他、視点の位置、視線の方向、仮想的な鏡である仮想鏡面の位置、向き等を記憶する。更新部２０２は、ユーザの指示入力などに応じて記憶部２０１に記憶される値を更新する。鏡像配置部２０３は、実像オブジェクトに対して適当な鏡像オブジェクトを仮想鏡面の逆側に配置する。判定部２０４は、視点から視線方向に仮想空間を見た場合に、実像オブジェクトが鏡像オブジェクトに重なって見えないか等を判定する。判定に応じて、調整部２０５は、鏡像オブジェクトを、見えやすい位置に移動する。生成部２０６は、当該仮想空間を２次元平面に投射する。
【選択図】図２【図１】
0004226639.tif 000002
【図２】
0004226639.tif 000003
【図３】
0004226639.tif 000004
【図４】
0004226639.tif 000005
【図５】
0004226639.tif 000006
【図６】
0004226639.tif 000007
【図７】
0004226639.tif 000008
【図８】
0004226639.tif 000009
【図９】
0004226639.tif 000010
【図１０】
0004226639.tif 000011