画像処理装置、画像処理方法、コンピュータプログラム、記録媒体、及び半導体装置
【課題】オブジェクトの形状の変化にもかかわらず、操作者が意図したようにキャラクタオブジェクトを自然に動かす画像を得ることが可能な画像処理装置を提供する。
【解決手段】本発明の画像処理装置1は、仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、3次元仮想空間内における動作制御を行うオブジェクト動作制御部31と、動作制御の結果得られるキャラクタオブジェクトの位置及びオブジェクトの形状から、キャラクタオブジェクトがオブジェクトに近接する位置の形状を判定するキャラクタ位置判定部34と、キャラクタ位置判定部34による判定結果に応じて、キャラクタオブジェクトのオブジェクトに対する位置及び姿勢を補正するキャラクタ位置・姿勢補正部35と、を備える。
【解決手段】本発明の画像処理装置1は、仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、3次元仮想空間内における動作制御を行うオブジェクト動作制御部31と、動作制御の結果得られるキャラクタオブジェクトの位置及びオブジェクトの形状から、キャラクタオブジェクトがオブジェクトに近接する位置の形状を判定するキャラクタ位置判定部34と、キャラクタ位置判定部34による判定結果に応じて、キャラクタオブジェクトのオブジェクトに対する位置及び姿勢を補正するキャラクタ位置・姿勢補正部35と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えば仮想3次元空間において複雑な形状の地面や形状が変化する巨大物体の表面を移動する人、動物、自動車や飛行機等の乗り物、或いは物体等の画像を、コンピュータグラフィクスにより、処理負荷を少なくしつつ自然に表現するための画像処理技術に関する。
【背景技術】
【0002】
コンピュータグラフィクスに関する技術の発達により、3次元画像を従来よりも自然に表現することが可能になってる。コンピュータグラフィックスは様々な分野に用いられている。一般に馴染み深いものの一つにコンピュータゲームがある。
コンピュータゲームには、いわゆるアクションアドベンチャーゲームのように、操作者によって操作可能なオブジェクトであるキャラクタオブジェクトにより、仮想3次元空間内を移動しながら進行されるゲームがある。このようなコンピュータゲームでは、操作者による操作に対して、リアルタイムに応答して自然に動作するキャラクタオブジェクトが好まれる。キャラクタオブジェクトには、人、動物、自動車や飛行機等の乗り物、或いは所定の物体等の画像を表す。
【0003】
このようなコンピュータゲームでは、キャラクタオブジェクトが仮想3次元空間内に設けられる様々なオブジェクトに接触する。キャラクタオブジェクトが接触するオブジェクトには、例えば地面や崖のように形状が固定されているものや、モンスターのような巨大生物のように形状が変化するものがある。
キャラクタオブジェクトが地面を移動する場合、地形の凸凹に合わせてキャラクタオブジェクトの位置及び姿勢を変えることが行われている。特許文献1、2は、キャラクタオブジェクトが地面に沿って移動する場合の画像処理についての発明である。
【0004】
特許文献1には、仮想3次元空間内に形成される地形をキャラクタオブジェクトの位置や姿勢に反映させる3次元ゲーム装置が記載されている。この3次元ゲーム装置では、ゲームフィールドの地形情報を記憶しておき、この地形情報を利用して移動体(キャラクタオブジェクト)のオブジェクト情報が変更される。変更されたオブジェクト情報により、地形情報が反映されたキャラクタオブジェクトの画像が生成される。特許文献2には、モデルオブジェクト(キャラクタオブジェクト)の自然な動作を少ない処理負荷で表現する画像生成システムが記載されている。モデルオブジェクトを構成する手や足となるパーツオブジェクトが地形面に潜り込まないように、モデルオブジェクトの形状を、地形に応じて変形させる。
【0005】
これに対して形状が変化するオブジェクト上をキャラクタオブジェクトが移動する場合には、オブジェクトの形状の変化に対応してキャラクタオブジェクトの位置及び姿勢を即時に変える必要がある。しかしこのような画像処理は、処理負荷が大きく、リアルタイム処理には限度がある。そのために従来は、例えば、予め作成したビデオ画像を再生することで、キャラクタオブジェクトが変形するオブジェクト上を移動していることを表している。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平6−277362号公報
【特許文献2】特開2003−44878号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1、2では、形状が決まっているオブジェクトの上をキャラクタオブジェクトが移動する場合のみを考慮している。しかし、ゲームの内容によっては、キャラクタオブジェクトが例えば巨大生物のような動きのあるオブジェクトの上を移動することも考えられる。特許文献1、2に開示される技術では、上記の通り動きのあるオブジェクト上を移動することは考慮されていない。また、形状が変化するオブジェクトの場合に、ビデオ画像を再生する場合には、キャラクタオブジェクトの動きが限られ、操作者の意図が完全に反映されたものとはならない。
【0008】
本発明は、上記の問題に鑑み、オブジェクトの形状の変化にもかかわらず、操作者が意図したようにキャラクタオブジェクトを自然に動かす画像を得ることが可能な画像処理装置を提供することを主たる課題とする。
【課題を解決するための手段】
【0009】
以上の課題を解決する本発明の画像処理装置は、仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段と、前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定するキャラクタ位置判定手段と、前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正するキャラクタ位置・姿勢補正手段と、を備える。
【0010】
本発明の画像処理装置は、オブジェクトの形状に応じてキャラクタオブジェクトの位置及び姿勢を補正する。オブジェクトの形状は、動作制御により変化することもある。その変化に対応してキャラクタオブジェクトの位置及び姿勢を補正可能であるので、オブジェクトの形状の変化にもかかわらず、キャラクタオブジェクトを自然に動かす画像が得られる。
前記オブジェクトの表面は、例えば前記ポリゴンにより平面、凸、凹、及び凹凸のいずれかの形状である。本発明の画像処理装置は、前記キャラクタ位置判定手段が、前記キャラクタオブジェクトが前記オブジェクトの平面、凸、凹、及び凹凸のいずれの形状の位置に最も近接するかを判定し、前記キャラクタ位置・姿勢補正手段が、前記キャラクタオブジェクトが最も近接する前記オブジェクトの位置の形状に応じて、当該キャラクタオブジェクトの位置及び姿勢を補正する。
【0011】
本発明の画像処理装置においては、例えば前記キャラクタオブジェクトの動作を表すための当該キャラクタオブジェクトのローカル座標系により、当該キャラクタオブジェクトの位置及び姿勢が決められる。この場合、例えば前記キャラクタ位置判定手段は、前記ローカル座標系の原点とこの原点に最も近いポリゴンとの位置関係により、当該キャラクタオブジェクトが当該オブジェクトに近接する位置の形状を判定する。
また、前記キャラクタ位置判定手段は、前記キャラクタオブジェクトの前記仮想3次元空間内における大きさに相当する仮想の球と前記オブジェクトを形成する1以上のポリゴンとの接点から、当該キャラクタオブジェクトが当該オブジェクトに近接する位置の形状を判定してもよい。この場合、いわゆるレイキャストと呼ばれる手法が適用できる。
【0012】
キャラクタ位置・姿勢補正手段は、例えば前記ローカル座標系を回転させることで当該キャラクタオブジェクトの姿勢を補正し、前記ローカル座標系の原点を移動させることで当該キャラクタオブジェクトの位置を補正する。
この場合、前記キャラクタ位置・姿勢補正手段は、前記ローカル座標系の回転角に制限を設けてもよい。制限を設けることで、キャラクタオブジェクトの姿勢が不自然に補正されることを防止する。また、前記キャラクタ位置・姿勢補正手段は、例えば、前記ローカル座標系の補正されたY軸方向に前記原点を移動させることで、当該キャラクタオブジェクトの位置を補正する。
前記キャラクタ位置・姿勢補正手段は、前記キャラクタオブジェクトが移動することで当該キャラクタオブジェクトの前記オブジェクトに最も近接する位置が移動する場合に、前記キャラクタオブジェクトの移動前に予め前記最も近接する位置の移動量と同等の量ずらす、或いは前記キャラクタオブジェクトの移動後に前記最も近接する位置を移動前の位置に戻す。これにより、動作制御の有無にかかわらずキャラクタオブジェクトが移動する現象を防止することができる。
【0013】
本発明の画像処理方法は、仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段を備えた画像処理装置により実行される。この画像処理方法では、前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定し、前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正する。
【0014】
本発明のコンピュータプログラムは、仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段を備えたコンピュータシステムに、前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定させ、前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正させる、ためのコンピュータプログラムである。このようなコンピュータプログラムは、例えばコンピュータ読み取り可能な記録媒体に記録される。
【0015】
本発明の半導体装置は、仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段を備えた画像処理装置に、前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定するキャラクタ位置判定手段;前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正するキャラクタ位置・姿勢補正手段;を形成するための半導体装置である。
【発明の効果】
【0016】
以上のような本発明の画像処理装置では、オブジェクトの形状に応じてキャラクタオブジェクトの位置及び姿勢を補正するので、オブジェクトの形状の変化にもかかわらず、キャラクタオブジェクトを自然に動かす画像が得られる。
【図面の簡単な説明】
【0017】
【図1】本実施形態の画像処理装置の全体構成図である。
【図2】画像処理装置にされる機能を表す機能ブロック図である。
【図3】オブジェクト形状記憶部に記憶される内容の具体例を表す図である。
【図4】キャラクタオブジェクト及びローカル座標系の例示図である。
【図5】オブジェクト上に位置するキャラクタオブジェクトを表す図である。
【図6】キャラクタオブジェクトがオブジェクトの平面部に存在することを表す図である。
【図7】キャラクタオブジェクトがオブジェクトの凸部に存在することを表す図である。
【図8】キャラクタオブジェクトがオブジェクトの凹部に存在することを説明する図である。
【図9】球とオブジェクトとの接点を説明するための図である。
【図10】図10(a)〜(c)は、オブジェクトの平面上に存在するキャラクタオブジェクトの位置及び姿勢の補正を説明する図である。
【図11】図11(a)〜(c)は、オブジェクトの凸部に存在するキャラクタオブジェクトの位置及び姿勢の補正を説明する図である。
【図12】キャラクタオブジェクトが滑るように移動することを説明する図である。
【図13】滑り防止を説明する図である。
【図14】複数のポリゴンのエッジにキャラクタオブジェクトが存在する状態を説明する図である。
【図15】キャラクタオブジェクトがオブジェクトの凹部に存在する場合のキャラクタオブジェクトの位置及び姿勢を補正する図である。
【図16】キャラクタオブジェクトがオブジェクトの凹部に存在する場合のキャラクタオブジェクトの位置及び姿勢を補正する図である。
【図17】キャラクタオブジェクトがオブジェクトの凹部に存在する場合のキャラクタオブジェクトの位置及び姿勢を補正する図である。
【図18】キャラクタオブジェクトがオブジェクトの凹部に存在する場合のキャラクタオブジェクトの位置及び姿勢を補正する図である。
【図19】キャラクタオブジェクトがオブジェクトの凸凹部に存在する場合のキャラクタオブジェクトの位置及び姿勢を補正する図である。
【図20】画像処理装置を用いて行われるキャラクタオブジェクトの位置及び姿勢の補正を行う画像処理の処理手順を表す処理手順図である。
【発明を実施するための最良の形態】
【0018】
以下、本発明の実施の形態を、図面を参照して説明する。
図1は、本実施形態の画像処理装置1の全体構成図である。この画像処理装置1は、CD−ROM又はDVD−ROM等のメディア171に記録されたプログラム及びデータを読み込んで処理することにより、図外のディスプレイ装置に画像を表示させるとともに、スピーカ等から音声を出力させるようにしたものである。このような画像処理装置1は、例えば、画像処理機能を有する汎用のコンピュータ、ビデオゲーム装置、エンタテインメント装置等により実現される。
【0019】
画像処理装置1は、CPU(Central Processing Unit)10と、RAMで構成されるメモリ11と、MPEG(Moving Picture Experts Group)デコーダ(MDEC)12と、DMAC(Direct Memory Access Controller)13と、BIOS等のプログラムが記録されているROM14と、ハードディスク等の記憶装置15と、操作装置161からの操作内容を受け付けるための入力インタフェース16と、メディア171を装着するためのメディアドライブ17と、外部ネットワークを介して他の機器との間でデータ通信を行うためのNIC(Network Interface Card)18と、フレームメモリ20を有する描画処理装置(Graphic Processing Unit、以下、「GPU」)19と、GPU19により画像が描画されるフレームメモリ20と、ビデオ出力信号を生成するCRTC(CRT Controller)21と、サウンドメモリ23に蓄積された音データを読み出してオーディオ出力信号として出力する音声処理装置(Sound Processing Unit、以下、「SPU」)22とを含んで構成される。これらは、バスBを介して接続される。
ビデオ出力信号は、NTSC(National Television Standards Committee)やPAL(Phase Alternation by Line)等の規格に準拠して生成され、CRTC20からディスプレイ装置に出力されるようになっている。
【0020】
CPU10は、画像処理装置1の起動時に、ROM14から起動プログラムを読み込み、その起動プログラムを実行してオペレーティングシステムを動作させる半導体デバイスである。また、CPU10は、メディアドライブ17に装着されたメディア171或いは記憶装置15からアプリケーションプログラムを読み出してメインメモリ11に記憶させる。また、メディア171からからアプリケーションプログラムを読み出す場合に、CPU10は、複数の基本図形(ポリゴン)で構成された3次元図形データ(ポリゴンの頂点の座標値等)、テクスチャデータ等の画像を生成するために必要なデータをメディア171から読み出して、記憶装置15に記憶させる機能を有する。3次元図形データは、仮想3次元空間内のオブジェクトを表す。
【0021】
CPU10は、3次元図形データに対して、座標変換処理や透視変換処理等のジオメトリ処理を行い、ジオメトリ処理によるポリゴン定義情報(使用するポリゴンの頂点及び重心についての、位置、色、テクスチャ座標、フォグカラー等の指定)、をその内容に含む描画データを生成する機能も有している。
【0022】
GPU19は、描画データを用いてレンダリング処理を行い、フレームメモリ20にポリゴンを描画して描画像を生成する機能を有する半導体デバイスである。GPU19は、描画データにより指定された3次元図形データ及びテクスチャデータによりレンダリング処理を行う。
【0023】
MDEC12は、CPU10と並列に動作し、MPEG(Moving Picture Experts Group)方式あるいはJPEG(Joint Photographic Experts Group)方式等で圧縮されたデータを伸張する機能を有する半導体デバイスであり、DMAC13は、バスBに接続されている各回路を対象としてDMA転送制御を行う半導体デバイスである。SPU22は、サウンドメモリ23から読み出した音データを合成してオーディオ出力信号を生成する半導体デバイスである。
この実施形態では、CPU10、MDEC12、DMAC13、GPU19、及びSPU22をそれぞれ別のハードウエアとして備えるが、これらの機能を同時に備えた一つのプロセッサを用いるようにしてもよい。また、マルチコアプロセッサにより、これらの機能を実現してもよい。
【0024】
入力インタフェース16は、操作装置161からの入力信号を受け付ける。操作装置161には、複数の操作ボタンが設けられており、操作者がこれらの操作ボタンを種々多様に操作することにより、ディスプレイ装置に表示されるキャラクタオブジェクトを操作することができるようになっている。操作装置161には、例えば、キーボード、マウス、ビデオゲーム装置のコントローラ等を用いることができる。NIC18は、外部ネットワークを介して他の機器からプログラムやデータ等を受信することができる。NIC18を介して受信されたプログラムやデータ等は、記憶装置15に記憶される。
【0025】
図2は、画像処理装置1のCPU10により本発明のコンピュータプログラムを実行することで実現される機能ブロックを表す図である。画像処理装置1には、入力部30、オブジェクト動作制御部31、オブジェクト形状記憶部32、キャラクタ位置・姿勢記憶部33、キャラクタ位置判定部34、及びキャラクタ位置・姿勢決定部35が形成される。画像処理装置1によるジオメトリ処理及びレンダリング処理では、この他にも必要な機能があるが、ここでは本発明を実現するために必要な機能についてのみ説明し、他の機能については従来通りであるので説明を省略する。
【0026】
入力部30は、入力インタフェース16を介して操作装置161による入力信号を受け付ける。操作装置161は操作者により操作されており、これにより、操作者によるキャラクタオブジェクト等の操作や各種命令の入力が可能になる。
【0027】
オブジェクト動作制御部31は、仮想3次元空間内のキャラクタオブジェクトを含めたすべてのオブジェクトについて、移動や変形等の動作を制御するものである。例えばオブジェクト動作制御部31は、仮想3次元空間内のキャラクタオブジェクトを含めたすべてのオブジェクトに対する物理演算を行う。オブジェクト動作制御部31は、入力部30により受け付けた入力信号に応じて、キャラクタオブジェクトやオブジェクトの動きの物理演算を行い、キャラクタオブジェクトの位置及び姿勢を算出する。またオブジェクト動作制御部31は、例えばオブジェクト同士の接触等の入力信号に依らずに仮想3次元空間内で起こりうる物理演算も行う。他にも、オブジェクト動作制御部31は、AI(Artificial Intelligence)やキーフレームアニメーション等のアニメーションによるオブジェクトの動作制御も行ってもよい。
【0028】
オブジェクト形状記憶部32は、オブジェクト動作制御部31によるオブジェクトの動作制御の結果に応じたオブジェクトの位置、形状等を記憶する。図3は、オブジェクト形状記憶部32に記憶される内容の具体例を表す図である。オブジェクトは、通常、複数のポリゴンにより構成される。そのために、オブジェクト形状記憶部32は、1つのオブジェクトを構成する複数のポリゴンの各々の、頂点座標、色、法線ベクトル等を記憶する。図3の例では、オブジェクト形状記憶部32に、オブジェクトを構成するポリゴン1〜3の頂点座標、色、法線ベクトル等が記憶される。複数のポリゴンの組み合わせにより、オブジェクトの凸凹が表現される。
オブジェクトが複数ある場合には、各オブジェクトについての、同様にポリゴンの頂点座標、色、法線ベクトル等がオブジェクト形状記憶部32に記憶される。オブジェクトの形状が変化しない場合に、オブジェクト形状記憶部32に記憶される当該オブジェクトを構成するポリゴンの位置、形状等は変化しない。オブジェクトの形状が変化する場合に、オブジェクト形状記憶部32に記憶される当該オブジェクトを構成するポリゴンの位置、形状等は変化する。
【0029】
キャラクタ位置・姿勢記憶部33は、オブジェクト動作制御部31によるキャラクタオブジェクトの動作制御の結果に応じたキャラクタオブジェクトの位置及び姿勢を含むキャラクタオブジェクトを表すためのデータを記憶する。この実施形態では、キャラクタオブジェクトの動作を表すために、キャラクタオブジェクトの位置及び姿勢を表すローカル座標系を用いる。キャラクタオブジェクトの位置がキャラクタオブジェクトのローカル座標系の原点の仮想3次元空間内における位置で表され、キャラクタオブジェクトの姿勢がローカル座標系のY軸の仮想3次元空間内における方向で表される。キャラクタ位置・姿勢記憶部33は、キャラクタオブジェクトの位置及び姿勢を表すためのデータとして、ローカル座標系の原点の位置及びY軸の方向を記憶する。
図4は、そのようなキャラクタオブジェクト及びローカル座標系の例示図である。図4の例では、ローカル座標系の原点がキャラクタオブジェクトの腰部付近に設けられるが、状況に応じてキャラクタオブジェクトの頭部や脚部付近に設けられてもよい。図4(a)では、キャラクタオブジェクトが直立の姿勢であるためにY軸が図中の上方を向いており、図4(b)では、キャラクタオブジェクトが図中右斜めに傾いているためにY軸が右斜めに傾いている。
【0030】
キャラクタ位置判定部34は、オブジェクト形状記憶部32に記憶されたオブジェクトの形状と、キャラクタ位置・姿勢記憶部33に記憶されたキャラクタオブジェクトの位置とから、キャラクタオブジェクトがオブジェクトのどの位置に存在するかを判定する。キャラクタ位置判定部34は、例えば凸フラグ及び凹フラグを備えており、これらのフラグにより、キャラクタオブジェクト3がオブジェクト2の平面部、凸部、凹部、凸凹部のいずれに存在するかを表す。
図5は、オブジェクト2上に位置するキャラクタオブジェクト3を表す図である。オブジェクト2は7個のポリゴンで構成されており、ポリゴンにより凸凹が形成されている。図5では、キャラクタオブジェクト3が中央のポリゴン上に位置している。キャラクタ位置判定部34は、キャラクタオブジェクト3のローカル座標系の原点pに最も近接するオブジェクト2上の点q(以下、「最近接点q」という。)により、キャラクタオブジェクト3がオブジェクト2の平面部、凸部、凹部、凸凹部のいずれに存在するかを判定する。
【0031】
キャラクタオブジェクト3の位置判定について詳述する。キャラクタオブジェクト3は、オブジェクト2の平面部、凸部、凹部、凸凹部のいずれかに存在する。キャラクタ位置判定部34は、キャラクタオブジェクト3がオブジェクト2を構成するポリゴンに対してどの位置に存在するかで、オブジェクト2の平面部、凸部、凹部、凸凹部のいずれに存在するかを判断する。
【0032】
図6は、キャラクタオブジェクト3がオブジェクト2の平面部に存在することを表す図である。以下、キャラクタオブジェクト3を円で表す。
平面部に存在することは、キャラクタオブジェクト3の最近接点qがポリゴンの平面内にあるか否かを判定することで判断可能である。キャラクタ位置判定部34は、例えば図6において、ポリゴンの一辺の中点からローカル座標系の原点pへのベクトルと、ポリゴンの該一辺の中点から最近接点qへのベクトルとの内積を辺毎に算出し、すべての内積値が正であれば、キャラクタオブジェクト3が当該ポリゴンの平面部に存在している、と判定する。キャラクタオブジェクト3がポリゴンの平面部に存在すると判定した場合に、キャラクタ位置判定部34は、凸フラグ及び凹フラグをいずれも「FALSE」にセットする。
ポリゴンの各辺の中点を、m1、m2、m3とすると、以下のような3式が満たされる場合にキャラクタオブジェクト3がポリゴンの平面部に存在する。
(点m1から原点pへのベクトル)・(点m1から最近接点qへのベクトル)>0
(点m2から原点pへのベクトル)・(点m2から最近接点qへのベクトル)>0
(点m3から原点pへのベクトル)・(点m3から最近接点qへのベクトル)>0
【0033】
図7は、キャラクタオブジェクト3がオブジェクト2の凸部に存在することを表す図である。
凸部に存在することは、キャラクタオブジェクト3の最近接点qがポリゴンの辺上よりも外側にあるか否を判定することで判断可能である。キャラクタ位置判定部34は、図7において、ポリゴンの一辺の中点からローカル座標系の原点pへのベクトルと、ポリゴンの該一辺の中点から最近接点qへのベクトルとの内積を辺毎に算出し、1以上の内積値が“0”以下であれば、キャラクタオブジェクト3が当該ポリゴンのいずれか辺よりも外側にありオブジェクト2の凸部に存在する、と判定する。キャラクタオブジェクト3がオブジェクト2の凸部に存在すると判定した場合に、キャラクタ位置判定部34は、凸フラグを「TRUE」にセットする。
つまり、以下の3式のいずれかが満たされる場合にキャラクタオブジェクト3がオブジェクト2の凸部に存在する。
(点m1から原点pへのベクトル)・(点m1から最近接点qへのベクトル)≦0
(点m2から原点pへのベクトル)・(点m2から最近接点qへのベクトル)≦0
(点m3から原点pへのベクトル)・(点m3から最近接点qへのベクトル)≦0
【0034】
図8は、キャラクタオブジェクト3がオブジェクト2の凹部に存在することを説明する図である。凹部に存在する場合には、まず、キャラクタオブジェクト3がオブジェクト2の平面部に存在する必要がある。そのために、上記のように平面部に存在することを判定する。平面部に存在する場合に、以下の処理より凹部に存在するか否かを判定する。
凹部に存在することは、キャラクタオブジェクト3の大きさに応じた大きさの球を想定し、この球とオブジェクト2の接点が複数のポリゴン上にあるか否かを判定することで判断可能である。キャラクタ位置判定部34は、接点が複数のポリゴン上にある場合に、キャラクタオブジェクト3がオブジェクト2の凹部に存在すると判定して、凹フラグを「TRUE」にセットする。
【0035】
図9は、球とオブジェクト2との接点を説明するための図である。図9では、いわゆるレイキャスト法により、球とオブジェクト2との接点を決めている。レイキャスト法では、点pから球状にレイを放出し、ポリゴンとの交差点(図9中「×」で表す点)が最近接点qと同じ平面にあるか否かを判定する。交差点のあるポリゴンの法線ベクトルと交差点から最接近点qへのベクトルと内積値により、同一平面であるか否かを判定可能である。
内積値が正であれば当該交差点のポリゴンと最接近点qのポリゴンとが凹の関係にあり、内積値が“0”であれば当該交差点のポリゴンと最接近点qのポリゴンとが同一平面の関係にあり、内積値が負であれば当該交差点のポリゴンと最接近点qのポリゴンとが凸の関係にある。キャラクタ位置判定部34は、交差点のうち、少なくとも一つが凹の関係にあれば、キャラクタオブジェクト3がオブジェクト2の凹部に存在すると判定する。また、図7により説明した方法によらず、内積値が負であれば凸部にキャラクタオブジェクトが存在すると判断できる。
なお、例えば、レイキャスト法で交差点毎に内積値が正負異なる場合には、キャラクタオブジェクト2が凸凹部に存在すると判断可能である。凸凹部にキャラクタ位置判定部34は、キャラクタオブジェクト3がオブジェクト2の凸凹部に存在すると判定した場合に、凸フラグを「TRUE」にセットする
【0036】
このように、キャラクタ位置判定部34の凸フラグ及び凹フラグにより、キャラクタオブジェクト3がオブジェクト2の平面部、凸部、凹部、凸凹部のいずれかに存在することが示される。
凸フラグ 凹フラグ キャラクタオブジェクト3とオブジェクト2との位置関係
FALSE FALSE キャラクタオブジェクト3がオブジェクト2の平面部に存在
TRUE FALSE キャラクタオブジェクト3がオブジェクト2の凸部に存在
FALSE TRUE キャラクタオブジェクト3がオブジェクト2の凹部に存在
TRUE TRUE キャラクタオブジェクト3がオブジェクト2の凸凹部に存在
【0037】
キャラクタ位置・姿勢決定部35は、キャラクタ位置判定部34により判定されたキャラクタオブジェクト3とオブジェクト2との位置関係により、キャラクタオブジェクト3の位置及び姿勢の補正を行う。なお、補正されたキャラクタオブジェクト2の位置及び姿勢は、キャラクタ位置・姿勢記憶部33に記憶される。
【0038】
キャラクタオブジェクト3がオブジェクト2の平面部に存在する場合、キャラクタ位置・姿勢補正部35は、図10(a)〜(c)に示すようにしてキャラクタオブジェクト3の位置及び姿勢を補正する。
オブジェクト動作制御部31によるキャラクタオブジェクト及びオブジェクトへの動作制御の結果、図10(a)に示すように、キャラクタオブジェクト3がオブジェクトの平面上にあり、そのローカル座標系の原点pがポリゴンの平面上に存在する場合、キャラクタ位置・姿勢補正部35は、図10(b)に示すように、Y軸が当該平面の法線ベクトルnの方向を向くように、ローカル座標系を回転する。ただし、回転角には制限を設け、ローカル座標系を回転することでキャラクタオブジェクト3の姿勢が急激に変化することを防止する。次いでキャラクタ位置・姿勢補正部35は、図10(c)に示すように、キャラクタオブジェクト3の大きさに合うように、原点pの位置をY軸上で最接近点qから距離hの場所に移動させる。このようにして、キャラクタオブジェクト3の位置の補正が終了し、新しいローカル座標系の原点p’が決定する。
距離hは、ローカル座標系の原点pがキャラクタオブジェクト3のどの部位に設けられるか、キャラクタオブジェクト3が起立しているのか或いは匍匐しているのか等により決められる値である。距離hは、キャラクタオブジェクト3のモデリング時或いは動作制御後のキャラクタの姿勢に応じてオブジェクト動作制御部31により決められる。
【0039】
キャラクタオブジェクト3がオブジェクト2の凸部に存在する場合、キャラクタ位置・姿勢補正部35は、図11(a)〜(c)に示すようにしてキャラクタオブジェクト3の位置及び姿勢を補正する。
オブジェクト動作制御部31による動作制御の結果、図11(a)に示すようにキャラクタオブジェクト3のローカル座標系の原点pがポリゴンのオブジェクト2の凸部上に存在する場合、キャラクタ位置・姿勢補正部35は、図11(b)に示すように、Y軸が最近接点qとローカル座標系の原点pとを結ぶ方向を向くように、ローカル座標系を回転する。ただし、回転角には制限を設け、ローカル座標系を回転することでキャラクタオブジェクト3の姿勢が急激に変化することを防止する。次いでキャラクタ位置・姿勢補正部35は、図11(c)に示すように、キャラクタオブジェクト3の大きさに合うように、原点pの位置をY軸上で最接近点qから距離hの場所に移動させる。このようにして、キャラクタオブジェクト3の位置の補正が終了し、新しいローカル座標系の原点p’が決定する。
【0040】
キャラクタオブジェクト3がオブジェクト2の凸部に存在する場合、図11(a)〜(c)の処理を行うことで、外部からの入力信号が無いにもかかわらずキャラクタオブジェクト3が滑るように移動することがある。例えば、ローカル座標系の回転角に制限を設けているために、必ずしもローカル座標系のY軸の方向が原点pと最近接点qとを結ぶ線の方向と一致しない。そのために、図11(c)でY軸方向にキャラクタオブジェクト3の位置を移動させると、最近接点qの位置が変わる。図12を用いて、キャラクタオブジェクト3が滑るように移動することを説明する。
図12において、キャラクタ位置・姿勢補正部35によりY軸が回転されたローカル座標系の原点pは、その後、Y軸上を移動して原点p’に位置が補正される。原点p’は、最近接点qから距離hだけ離れている。キャラクタ位置・姿勢補正部35による補正により原点p’に移動したキャラクタオブジェクト2の最近接点q’は、最近接点qとは異なる位置になる。そのために、次にキャラクタ位置・姿勢補正部35による補正を行うことで、外部からの入力が無くてもキャラクタオブジェクト3の位置が移動してしまう。この処理が連続すると、キャラクタオブジェクト3が操作に無関係に滑っているように表示される。
【0041】
そのために、凸部におけるキャラクタオブジェクト3の滑りを防止する対策が必要となる。図13は、滑り防止を説明する図である。キャラクタ位置・姿勢補正部35によるキャラクタオブジェクト3の姿勢の補正により、キャラクタオブジェクト3のローカル座標系のY軸がY_0からY_1に回転する。最近接点q_1はこの時点における最接近点である。ここで、最近接点q_1をY軸Y_1とポリゴンの接点q_2に変更する。その後に接点q_2を最近接点として位置の補正を行うことで、キャラクタオブジェクト3が操作内容にかかわらず移動してしまうことを防止することができる。
【0042】
ただし、図14のように複数のポリゴンのエッジにキャラクタオブジェクト3が存在する場合には、このような対策を施さない方がよいこともある。ポリゴンのエッジが集まる場所では、別のポリゴンのエッジにキャラクタオブジェクト3が乗ることもあるためである。
このような対策を施すか否かは、キャラクタ位置・姿勢補正部34が、補正の度に、キャラクタオブジェクト3がオブジェクト2のどの部分に位置するか、及びキャラクタオブジェクト3に対する動作制御がオブジェクト動作制御部31により行われているかに応じて決められる。
【0043】
キャラクタオブジェクト3がオブジェクト2の凹部に存在する場合、キャラクタ位置・姿勢補正部35は、図15〜図18に示すようにしてキャラクタオブジェクト3の位置及び姿勢を補正する。凹部におけるキャラクタオブジェクト3の位置・姿勢の補正は、操作装置161からの入力信号によるキャラクタオブジェクト3への移動指示の有無及び最近接点qの移動量に応じて処理が異なる。そのために、キャラクタ位置・姿勢補正部35は、まず、キャラクタオブジェクト3への移動指示の有無及び最近接点qの移動量の判定を行う。
移動指示の有無は、入力部30において操作装置161からキャラクタオブジェクト3を移動させる旨の入力信号を受け付けたか否かを確認することで判定可能である。最近接点qの移動量は、前回の最近接点q_0と今回の最近接点q_1とから距離Lとして算出可能である。距離Lを所定量L_0と比較することで移動量が所定量以上か否かを判定する。
【0044】
キャラクタオブジェクト3への移動の指示が有り、最近接点の移動量が所定量よりも大きい場合には、以下のような処理を行う。
図15に示すように最近接点がポリゴンを跨いで移動する場合、キャラクタオブジェクト3の位置及び姿勢を最近接点を基準にして補正するために、キャラクタオブジェクト3の位置及び姿勢が不連続になることがある。これを是正するために、最近接点q_0、q_1の位置を補間する点をオブジェクト2上の点を設ける。
【0045】
図16〜図18を参照して、補間する点をどのように求めるかを説明する。
図16に示すように、最近接点q_0と最近接点q_1との間をa:bに分割する分割点rを決める。分割点rの位置は、外部入力によるオブジェクト3の動き量に応じて決まる。キャラクタオブジェクト3のローカル座標系の原点p_1から分割点rへの延長線とポリゴンとの接点を接点q_dとする。
【0046】
キャラクタオブジェクト3の姿勢を表すローカル座標系は、最近接点q_0と最近接点q_1とを結ぶ線分に対して垂直な方向にY軸を合わせるように回転させる。
キャラクタオブジェクト3の位置は、図17に示すように、ローカル座標系の原点p_1と接点q_dとを結ぶ線上で、最近接点q_1があるポリゴンから距離hの位置に移動させる。
以上のように、キャラクタ位置・姿勢補正部35は、キャラクタオブジェクト3の位置及び姿勢を補正する。
【0047】
キャラクタオブジェクト3への移動の指示が有り、最近接点の移動量が所定量よりも小さくポリゴンを跨がない場合には、オブジェクト2の平面部にキャラクタオブジェクト3が存在する場合と同様の処理により、キャラクタオブジェクト3の位置及び姿勢の補正を行う。
【0048】
キャラクタオブジェクト3への移動の指示が無く、最近接点の移動量が所定量よりも大きく2以上のポリゴンを跨いで移動する場合には、以下のような処理を行う。
この場合、外部からの入力が無いので本来はキャラクタオブジェクト3が動かない。しかし、例えば、図16、図17で説明したような処理を行うと、最近接点q_1が実際に最もポリゴンに近い点ではないので(最近接点が移動するので)、次の処理の際にキャラクタオブジェクト3の位置が動くことがある。図18の点q_nが本当に最もポリゴンに近い点になる。
そこで、キャラクタオブジェクト3の位置及び姿勢を補正する前に、最近接点を図17の点q_dに変更する。これにより、外部からの入力が無い場合に、キャラクタオブジェクト3の位置が移動することを防止することができる。また、例えば図15でキャラクタオブジェクト3のローカル座標系の原点p_1が2つのポリゴンからほぼ同じ距離に有る場合に、キャラクタオブジェクト3が当該2つのポリゴンの間を飛び、連続的に移動しないことがあるが、上記のように最近接点を点q_dにすることでこれも防止できる。
【0049】
キャラクタオブジェクト3への移動の指示が無く、最近接点の移動量が所定量よりも小さい場合には、キャラクタオブジェクト3の位置、姿勢、最近接点をそのまま維持する。
【0050】
キャラクタオブジェクト3が凸凹が混在するオブジェクト2上に存在する場合の位置及び姿勢の補正について図19により説明する。この場合も、外部からの入力の有無及び最近接点の移動量に応じて異なる処理が必要になる。
キャラクタオブジェクト3のローカル座標系の原点pの位置が変化しても、オブジェクト2に対する最近接点が変化していない場合には、キャラクタオブジェクト3が同じ凸部のエッジ部分に止まる。キャラクタオブジェクト3の位置及び姿勢に変化はない。原点pの位置が変化し且つ最近接点も変化する場合には、凹部における位置及び姿勢の補正と同じになる。
【0051】
図20は、画像処理装置1を用いて行われるキャラクタオブジェクトの位置及び姿勢の補正を行う画像処理の処理手順を表す処理手順図である。図20では、本発明にかかわる画像処理についてのみ処理手順を説明するが、レンダリング処理等の従来の画像処理については説明を省略する。この画像処理は動画について処理であり、動画が終了するまで1フレームずつ連続して行われる。例えば動画がアクションアドベンチャゲームの画像であれば、ゲーム終了時まで、連続して処理が行われることになる。
【0052】
画像処理装置1は、今フレームの画像を生成するために、まず、前フレームのオブジェクトの形状等をオブジェクト形状記憶部32に記憶し、キャラクタオブジェクトの位置、姿勢等をキャラクタ位置・姿勢記憶部33に記憶する(ステップS10)。
次いで、操作装置161による外部入力が有る場合には(ステップS20:有)、オブジェクト動作制御部31により外部入力に応じたキャラクタオブジェクトの位置・姿勢等の動作制御が行われる。動作制御により、キャラクタ位置・姿勢記憶部33に記憶されたキャラクタの位置、姿勢等が更新される。また、キャラクタオブジェクトの位置、姿勢の変更等によりオブジェクトの位置、形状等が変更される場合には、オブジェクト形状記憶部32に記憶されたオブジェクトの形状、位置等も更新される(ステップS30)。
外部入力によるキャラクタオブジェクトの位置、姿勢が変更後、或いは外部入力が無い場合(ステップS20:無)、画像処理装置1は、キャラクタ位置判定部34によりキャラクタオブジェクトのオブジェクトに対する位置を判定する(ステップS40)。これにより、キャラクタオブジェクトがオブジェクトの平面部、凸部、凹部、凸凹部のいずれに位置するかが判定される。
【0053】
次いで画像処理装置1は、キャラクタ位置・姿勢決定部35により、キャラクタオブジェクトのオブジェクトに対する位置に応じて、上記の通り、キャラクタオブジェクトの位置及び姿勢を補正する(ステップS50)。このようにして補正された結果は、キャラクタ位置・姿勢記憶部33の記憶内容に反映される。
【0054】
このように、動作制御後にキャラクタオブジェクトの位置及び姿勢を補正することで、より自然にキャラクタオブジェクトがオブジェクトに接触して移動する様子を表現することができる。
【符号の説明】
【0055】
1…画像処理装置、10…CPU、11…メモリ、12…MDEC、13…DMAC、14…ROM、15…記憶装置、16…入力インタフェース、161…操作装置、17…メディアドライブ、171…メディア、18…NIC、19…GPU、20…フレームメモリ、21…CRTC、22…SPU、23…サウンドメモリ、30…入力部、31…オブジェクト動作制御部、32…オブジェクト形状記憶部、33…キャラクタ位置・姿勢記憶部、34…キャラクタ位置判定部、35…キャラクタ位置・姿勢決定部、2…オブジェクト、3…キャラクタオブジェクト
【技術分野】
【0001】
本発明は、例えば仮想3次元空間において複雑な形状の地面や形状が変化する巨大物体の表面を移動する人、動物、自動車や飛行機等の乗り物、或いは物体等の画像を、コンピュータグラフィクスにより、処理負荷を少なくしつつ自然に表現するための画像処理技術に関する。
【背景技術】
【0002】
コンピュータグラフィクスに関する技術の発達により、3次元画像を従来よりも自然に表現することが可能になってる。コンピュータグラフィックスは様々な分野に用いられている。一般に馴染み深いものの一つにコンピュータゲームがある。
コンピュータゲームには、いわゆるアクションアドベンチャーゲームのように、操作者によって操作可能なオブジェクトであるキャラクタオブジェクトにより、仮想3次元空間内を移動しながら進行されるゲームがある。このようなコンピュータゲームでは、操作者による操作に対して、リアルタイムに応答して自然に動作するキャラクタオブジェクトが好まれる。キャラクタオブジェクトには、人、動物、自動車や飛行機等の乗り物、或いは所定の物体等の画像を表す。
【0003】
このようなコンピュータゲームでは、キャラクタオブジェクトが仮想3次元空間内に設けられる様々なオブジェクトに接触する。キャラクタオブジェクトが接触するオブジェクトには、例えば地面や崖のように形状が固定されているものや、モンスターのような巨大生物のように形状が変化するものがある。
キャラクタオブジェクトが地面を移動する場合、地形の凸凹に合わせてキャラクタオブジェクトの位置及び姿勢を変えることが行われている。特許文献1、2は、キャラクタオブジェクトが地面に沿って移動する場合の画像処理についての発明である。
【0004】
特許文献1には、仮想3次元空間内に形成される地形をキャラクタオブジェクトの位置や姿勢に反映させる3次元ゲーム装置が記載されている。この3次元ゲーム装置では、ゲームフィールドの地形情報を記憶しておき、この地形情報を利用して移動体(キャラクタオブジェクト)のオブジェクト情報が変更される。変更されたオブジェクト情報により、地形情報が反映されたキャラクタオブジェクトの画像が生成される。特許文献2には、モデルオブジェクト(キャラクタオブジェクト)の自然な動作を少ない処理負荷で表現する画像生成システムが記載されている。モデルオブジェクトを構成する手や足となるパーツオブジェクトが地形面に潜り込まないように、モデルオブジェクトの形状を、地形に応じて変形させる。
【0005】
これに対して形状が変化するオブジェクト上をキャラクタオブジェクトが移動する場合には、オブジェクトの形状の変化に対応してキャラクタオブジェクトの位置及び姿勢を即時に変える必要がある。しかしこのような画像処理は、処理負荷が大きく、リアルタイム処理には限度がある。そのために従来は、例えば、予め作成したビデオ画像を再生することで、キャラクタオブジェクトが変形するオブジェクト上を移動していることを表している。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平6−277362号公報
【特許文献2】特開2003−44878号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1、2では、形状が決まっているオブジェクトの上をキャラクタオブジェクトが移動する場合のみを考慮している。しかし、ゲームの内容によっては、キャラクタオブジェクトが例えば巨大生物のような動きのあるオブジェクトの上を移動することも考えられる。特許文献1、2に開示される技術では、上記の通り動きのあるオブジェクト上を移動することは考慮されていない。また、形状が変化するオブジェクトの場合に、ビデオ画像を再生する場合には、キャラクタオブジェクトの動きが限られ、操作者の意図が完全に反映されたものとはならない。
【0008】
本発明は、上記の問題に鑑み、オブジェクトの形状の変化にもかかわらず、操作者が意図したようにキャラクタオブジェクトを自然に動かす画像を得ることが可能な画像処理装置を提供することを主たる課題とする。
【課題を解決するための手段】
【0009】
以上の課題を解決する本発明の画像処理装置は、仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段と、前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定するキャラクタ位置判定手段と、前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正するキャラクタ位置・姿勢補正手段と、を備える。
【0010】
本発明の画像処理装置は、オブジェクトの形状に応じてキャラクタオブジェクトの位置及び姿勢を補正する。オブジェクトの形状は、動作制御により変化することもある。その変化に対応してキャラクタオブジェクトの位置及び姿勢を補正可能であるので、オブジェクトの形状の変化にもかかわらず、キャラクタオブジェクトを自然に動かす画像が得られる。
前記オブジェクトの表面は、例えば前記ポリゴンにより平面、凸、凹、及び凹凸のいずれかの形状である。本発明の画像処理装置は、前記キャラクタ位置判定手段が、前記キャラクタオブジェクトが前記オブジェクトの平面、凸、凹、及び凹凸のいずれの形状の位置に最も近接するかを判定し、前記キャラクタ位置・姿勢補正手段が、前記キャラクタオブジェクトが最も近接する前記オブジェクトの位置の形状に応じて、当該キャラクタオブジェクトの位置及び姿勢を補正する。
【0011】
本発明の画像処理装置においては、例えば前記キャラクタオブジェクトの動作を表すための当該キャラクタオブジェクトのローカル座標系により、当該キャラクタオブジェクトの位置及び姿勢が決められる。この場合、例えば前記キャラクタ位置判定手段は、前記ローカル座標系の原点とこの原点に最も近いポリゴンとの位置関係により、当該キャラクタオブジェクトが当該オブジェクトに近接する位置の形状を判定する。
また、前記キャラクタ位置判定手段は、前記キャラクタオブジェクトの前記仮想3次元空間内における大きさに相当する仮想の球と前記オブジェクトを形成する1以上のポリゴンとの接点から、当該キャラクタオブジェクトが当該オブジェクトに近接する位置の形状を判定してもよい。この場合、いわゆるレイキャストと呼ばれる手法が適用できる。
【0012】
キャラクタ位置・姿勢補正手段は、例えば前記ローカル座標系を回転させることで当該キャラクタオブジェクトの姿勢を補正し、前記ローカル座標系の原点を移動させることで当該キャラクタオブジェクトの位置を補正する。
この場合、前記キャラクタ位置・姿勢補正手段は、前記ローカル座標系の回転角に制限を設けてもよい。制限を設けることで、キャラクタオブジェクトの姿勢が不自然に補正されることを防止する。また、前記キャラクタ位置・姿勢補正手段は、例えば、前記ローカル座標系の補正されたY軸方向に前記原点を移動させることで、当該キャラクタオブジェクトの位置を補正する。
前記キャラクタ位置・姿勢補正手段は、前記キャラクタオブジェクトが移動することで当該キャラクタオブジェクトの前記オブジェクトに最も近接する位置が移動する場合に、前記キャラクタオブジェクトの移動前に予め前記最も近接する位置の移動量と同等の量ずらす、或いは前記キャラクタオブジェクトの移動後に前記最も近接する位置を移動前の位置に戻す。これにより、動作制御の有無にかかわらずキャラクタオブジェクトが移動する現象を防止することができる。
【0013】
本発明の画像処理方法は、仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段を備えた画像処理装置により実行される。この画像処理方法では、前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定し、前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正する。
【0014】
本発明のコンピュータプログラムは、仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段を備えたコンピュータシステムに、前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定させ、前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正させる、ためのコンピュータプログラムである。このようなコンピュータプログラムは、例えばコンピュータ読み取り可能な記録媒体に記録される。
【0015】
本発明の半導体装置は、仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段を備えた画像処理装置に、前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定するキャラクタ位置判定手段;前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正するキャラクタ位置・姿勢補正手段;を形成するための半導体装置である。
【発明の効果】
【0016】
以上のような本発明の画像処理装置では、オブジェクトの形状に応じてキャラクタオブジェクトの位置及び姿勢を補正するので、オブジェクトの形状の変化にもかかわらず、キャラクタオブジェクトを自然に動かす画像が得られる。
【図面の簡単な説明】
【0017】
【図1】本実施形態の画像処理装置の全体構成図である。
【図2】画像処理装置にされる機能を表す機能ブロック図である。
【図3】オブジェクト形状記憶部に記憶される内容の具体例を表す図である。
【図4】キャラクタオブジェクト及びローカル座標系の例示図である。
【図5】オブジェクト上に位置するキャラクタオブジェクトを表す図である。
【図6】キャラクタオブジェクトがオブジェクトの平面部に存在することを表す図である。
【図7】キャラクタオブジェクトがオブジェクトの凸部に存在することを表す図である。
【図8】キャラクタオブジェクトがオブジェクトの凹部に存在することを説明する図である。
【図9】球とオブジェクトとの接点を説明するための図である。
【図10】図10(a)〜(c)は、オブジェクトの平面上に存在するキャラクタオブジェクトの位置及び姿勢の補正を説明する図である。
【図11】図11(a)〜(c)は、オブジェクトの凸部に存在するキャラクタオブジェクトの位置及び姿勢の補正を説明する図である。
【図12】キャラクタオブジェクトが滑るように移動することを説明する図である。
【図13】滑り防止を説明する図である。
【図14】複数のポリゴンのエッジにキャラクタオブジェクトが存在する状態を説明する図である。
【図15】キャラクタオブジェクトがオブジェクトの凹部に存在する場合のキャラクタオブジェクトの位置及び姿勢を補正する図である。
【図16】キャラクタオブジェクトがオブジェクトの凹部に存在する場合のキャラクタオブジェクトの位置及び姿勢を補正する図である。
【図17】キャラクタオブジェクトがオブジェクトの凹部に存在する場合のキャラクタオブジェクトの位置及び姿勢を補正する図である。
【図18】キャラクタオブジェクトがオブジェクトの凹部に存在する場合のキャラクタオブジェクトの位置及び姿勢を補正する図である。
【図19】キャラクタオブジェクトがオブジェクトの凸凹部に存在する場合のキャラクタオブジェクトの位置及び姿勢を補正する図である。
【図20】画像処理装置を用いて行われるキャラクタオブジェクトの位置及び姿勢の補正を行う画像処理の処理手順を表す処理手順図である。
【発明を実施するための最良の形態】
【0018】
以下、本発明の実施の形態を、図面を参照して説明する。
図1は、本実施形態の画像処理装置1の全体構成図である。この画像処理装置1は、CD−ROM又はDVD−ROM等のメディア171に記録されたプログラム及びデータを読み込んで処理することにより、図外のディスプレイ装置に画像を表示させるとともに、スピーカ等から音声を出力させるようにしたものである。このような画像処理装置1は、例えば、画像処理機能を有する汎用のコンピュータ、ビデオゲーム装置、エンタテインメント装置等により実現される。
【0019】
画像処理装置1は、CPU(Central Processing Unit)10と、RAMで構成されるメモリ11と、MPEG(Moving Picture Experts Group)デコーダ(MDEC)12と、DMAC(Direct Memory Access Controller)13と、BIOS等のプログラムが記録されているROM14と、ハードディスク等の記憶装置15と、操作装置161からの操作内容を受け付けるための入力インタフェース16と、メディア171を装着するためのメディアドライブ17と、外部ネットワークを介して他の機器との間でデータ通信を行うためのNIC(Network Interface Card)18と、フレームメモリ20を有する描画処理装置(Graphic Processing Unit、以下、「GPU」)19と、GPU19により画像が描画されるフレームメモリ20と、ビデオ出力信号を生成するCRTC(CRT Controller)21と、サウンドメモリ23に蓄積された音データを読み出してオーディオ出力信号として出力する音声処理装置(Sound Processing Unit、以下、「SPU」)22とを含んで構成される。これらは、バスBを介して接続される。
ビデオ出力信号は、NTSC(National Television Standards Committee)やPAL(Phase Alternation by Line)等の規格に準拠して生成され、CRTC20からディスプレイ装置に出力されるようになっている。
【0020】
CPU10は、画像処理装置1の起動時に、ROM14から起動プログラムを読み込み、その起動プログラムを実行してオペレーティングシステムを動作させる半導体デバイスである。また、CPU10は、メディアドライブ17に装着されたメディア171或いは記憶装置15からアプリケーションプログラムを読み出してメインメモリ11に記憶させる。また、メディア171からからアプリケーションプログラムを読み出す場合に、CPU10は、複数の基本図形(ポリゴン)で構成された3次元図形データ(ポリゴンの頂点の座標値等)、テクスチャデータ等の画像を生成するために必要なデータをメディア171から読み出して、記憶装置15に記憶させる機能を有する。3次元図形データは、仮想3次元空間内のオブジェクトを表す。
【0021】
CPU10は、3次元図形データに対して、座標変換処理や透視変換処理等のジオメトリ処理を行い、ジオメトリ処理によるポリゴン定義情報(使用するポリゴンの頂点及び重心についての、位置、色、テクスチャ座標、フォグカラー等の指定)、をその内容に含む描画データを生成する機能も有している。
【0022】
GPU19は、描画データを用いてレンダリング処理を行い、フレームメモリ20にポリゴンを描画して描画像を生成する機能を有する半導体デバイスである。GPU19は、描画データにより指定された3次元図形データ及びテクスチャデータによりレンダリング処理を行う。
【0023】
MDEC12は、CPU10と並列に動作し、MPEG(Moving Picture Experts Group)方式あるいはJPEG(Joint Photographic Experts Group)方式等で圧縮されたデータを伸張する機能を有する半導体デバイスであり、DMAC13は、バスBに接続されている各回路を対象としてDMA転送制御を行う半導体デバイスである。SPU22は、サウンドメモリ23から読み出した音データを合成してオーディオ出力信号を生成する半導体デバイスである。
この実施形態では、CPU10、MDEC12、DMAC13、GPU19、及びSPU22をそれぞれ別のハードウエアとして備えるが、これらの機能を同時に備えた一つのプロセッサを用いるようにしてもよい。また、マルチコアプロセッサにより、これらの機能を実現してもよい。
【0024】
入力インタフェース16は、操作装置161からの入力信号を受け付ける。操作装置161には、複数の操作ボタンが設けられており、操作者がこれらの操作ボタンを種々多様に操作することにより、ディスプレイ装置に表示されるキャラクタオブジェクトを操作することができるようになっている。操作装置161には、例えば、キーボード、マウス、ビデオゲーム装置のコントローラ等を用いることができる。NIC18は、外部ネットワークを介して他の機器からプログラムやデータ等を受信することができる。NIC18を介して受信されたプログラムやデータ等は、記憶装置15に記憶される。
【0025】
図2は、画像処理装置1のCPU10により本発明のコンピュータプログラムを実行することで実現される機能ブロックを表す図である。画像処理装置1には、入力部30、オブジェクト動作制御部31、オブジェクト形状記憶部32、キャラクタ位置・姿勢記憶部33、キャラクタ位置判定部34、及びキャラクタ位置・姿勢決定部35が形成される。画像処理装置1によるジオメトリ処理及びレンダリング処理では、この他にも必要な機能があるが、ここでは本発明を実現するために必要な機能についてのみ説明し、他の機能については従来通りであるので説明を省略する。
【0026】
入力部30は、入力インタフェース16を介して操作装置161による入力信号を受け付ける。操作装置161は操作者により操作されており、これにより、操作者によるキャラクタオブジェクト等の操作や各種命令の入力が可能になる。
【0027】
オブジェクト動作制御部31は、仮想3次元空間内のキャラクタオブジェクトを含めたすべてのオブジェクトについて、移動や変形等の動作を制御するものである。例えばオブジェクト動作制御部31は、仮想3次元空間内のキャラクタオブジェクトを含めたすべてのオブジェクトに対する物理演算を行う。オブジェクト動作制御部31は、入力部30により受け付けた入力信号に応じて、キャラクタオブジェクトやオブジェクトの動きの物理演算を行い、キャラクタオブジェクトの位置及び姿勢を算出する。またオブジェクト動作制御部31は、例えばオブジェクト同士の接触等の入力信号に依らずに仮想3次元空間内で起こりうる物理演算も行う。他にも、オブジェクト動作制御部31は、AI(Artificial Intelligence)やキーフレームアニメーション等のアニメーションによるオブジェクトの動作制御も行ってもよい。
【0028】
オブジェクト形状記憶部32は、オブジェクト動作制御部31によるオブジェクトの動作制御の結果に応じたオブジェクトの位置、形状等を記憶する。図3は、オブジェクト形状記憶部32に記憶される内容の具体例を表す図である。オブジェクトは、通常、複数のポリゴンにより構成される。そのために、オブジェクト形状記憶部32は、1つのオブジェクトを構成する複数のポリゴンの各々の、頂点座標、色、法線ベクトル等を記憶する。図3の例では、オブジェクト形状記憶部32に、オブジェクトを構成するポリゴン1〜3の頂点座標、色、法線ベクトル等が記憶される。複数のポリゴンの組み合わせにより、オブジェクトの凸凹が表現される。
オブジェクトが複数ある場合には、各オブジェクトについての、同様にポリゴンの頂点座標、色、法線ベクトル等がオブジェクト形状記憶部32に記憶される。オブジェクトの形状が変化しない場合に、オブジェクト形状記憶部32に記憶される当該オブジェクトを構成するポリゴンの位置、形状等は変化しない。オブジェクトの形状が変化する場合に、オブジェクト形状記憶部32に記憶される当該オブジェクトを構成するポリゴンの位置、形状等は変化する。
【0029】
キャラクタ位置・姿勢記憶部33は、オブジェクト動作制御部31によるキャラクタオブジェクトの動作制御の結果に応じたキャラクタオブジェクトの位置及び姿勢を含むキャラクタオブジェクトを表すためのデータを記憶する。この実施形態では、キャラクタオブジェクトの動作を表すために、キャラクタオブジェクトの位置及び姿勢を表すローカル座標系を用いる。キャラクタオブジェクトの位置がキャラクタオブジェクトのローカル座標系の原点の仮想3次元空間内における位置で表され、キャラクタオブジェクトの姿勢がローカル座標系のY軸の仮想3次元空間内における方向で表される。キャラクタ位置・姿勢記憶部33は、キャラクタオブジェクトの位置及び姿勢を表すためのデータとして、ローカル座標系の原点の位置及びY軸の方向を記憶する。
図4は、そのようなキャラクタオブジェクト及びローカル座標系の例示図である。図4の例では、ローカル座標系の原点がキャラクタオブジェクトの腰部付近に設けられるが、状況に応じてキャラクタオブジェクトの頭部や脚部付近に設けられてもよい。図4(a)では、キャラクタオブジェクトが直立の姿勢であるためにY軸が図中の上方を向いており、図4(b)では、キャラクタオブジェクトが図中右斜めに傾いているためにY軸が右斜めに傾いている。
【0030】
キャラクタ位置判定部34は、オブジェクト形状記憶部32に記憶されたオブジェクトの形状と、キャラクタ位置・姿勢記憶部33に記憶されたキャラクタオブジェクトの位置とから、キャラクタオブジェクトがオブジェクトのどの位置に存在するかを判定する。キャラクタ位置判定部34は、例えば凸フラグ及び凹フラグを備えており、これらのフラグにより、キャラクタオブジェクト3がオブジェクト2の平面部、凸部、凹部、凸凹部のいずれに存在するかを表す。
図5は、オブジェクト2上に位置するキャラクタオブジェクト3を表す図である。オブジェクト2は7個のポリゴンで構成されており、ポリゴンにより凸凹が形成されている。図5では、キャラクタオブジェクト3が中央のポリゴン上に位置している。キャラクタ位置判定部34は、キャラクタオブジェクト3のローカル座標系の原点pに最も近接するオブジェクト2上の点q(以下、「最近接点q」という。)により、キャラクタオブジェクト3がオブジェクト2の平面部、凸部、凹部、凸凹部のいずれに存在するかを判定する。
【0031】
キャラクタオブジェクト3の位置判定について詳述する。キャラクタオブジェクト3は、オブジェクト2の平面部、凸部、凹部、凸凹部のいずれかに存在する。キャラクタ位置判定部34は、キャラクタオブジェクト3がオブジェクト2を構成するポリゴンに対してどの位置に存在するかで、オブジェクト2の平面部、凸部、凹部、凸凹部のいずれに存在するかを判断する。
【0032】
図6は、キャラクタオブジェクト3がオブジェクト2の平面部に存在することを表す図である。以下、キャラクタオブジェクト3を円で表す。
平面部に存在することは、キャラクタオブジェクト3の最近接点qがポリゴンの平面内にあるか否かを判定することで判断可能である。キャラクタ位置判定部34は、例えば図6において、ポリゴンの一辺の中点からローカル座標系の原点pへのベクトルと、ポリゴンの該一辺の中点から最近接点qへのベクトルとの内積を辺毎に算出し、すべての内積値が正であれば、キャラクタオブジェクト3が当該ポリゴンの平面部に存在している、と判定する。キャラクタオブジェクト3がポリゴンの平面部に存在すると判定した場合に、キャラクタ位置判定部34は、凸フラグ及び凹フラグをいずれも「FALSE」にセットする。
ポリゴンの各辺の中点を、m1、m2、m3とすると、以下のような3式が満たされる場合にキャラクタオブジェクト3がポリゴンの平面部に存在する。
(点m1から原点pへのベクトル)・(点m1から最近接点qへのベクトル)>0
(点m2から原点pへのベクトル)・(点m2から最近接点qへのベクトル)>0
(点m3から原点pへのベクトル)・(点m3から最近接点qへのベクトル)>0
【0033】
図7は、キャラクタオブジェクト3がオブジェクト2の凸部に存在することを表す図である。
凸部に存在することは、キャラクタオブジェクト3の最近接点qがポリゴンの辺上よりも外側にあるか否を判定することで判断可能である。キャラクタ位置判定部34は、図7において、ポリゴンの一辺の中点からローカル座標系の原点pへのベクトルと、ポリゴンの該一辺の中点から最近接点qへのベクトルとの内積を辺毎に算出し、1以上の内積値が“0”以下であれば、キャラクタオブジェクト3が当該ポリゴンのいずれか辺よりも外側にありオブジェクト2の凸部に存在する、と判定する。キャラクタオブジェクト3がオブジェクト2の凸部に存在すると判定した場合に、キャラクタ位置判定部34は、凸フラグを「TRUE」にセットする。
つまり、以下の3式のいずれかが満たされる場合にキャラクタオブジェクト3がオブジェクト2の凸部に存在する。
(点m1から原点pへのベクトル)・(点m1から最近接点qへのベクトル)≦0
(点m2から原点pへのベクトル)・(点m2から最近接点qへのベクトル)≦0
(点m3から原点pへのベクトル)・(点m3から最近接点qへのベクトル)≦0
【0034】
図8は、キャラクタオブジェクト3がオブジェクト2の凹部に存在することを説明する図である。凹部に存在する場合には、まず、キャラクタオブジェクト3がオブジェクト2の平面部に存在する必要がある。そのために、上記のように平面部に存在することを判定する。平面部に存在する場合に、以下の処理より凹部に存在するか否かを判定する。
凹部に存在することは、キャラクタオブジェクト3の大きさに応じた大きさの球を想定し、この球とオブジェクト2の接点が複数のポリゴン上にあるか否かを判定することで判断可能である。キャラクタ位置判定部34は、接点が複数のポリゴン上にある場合に、キャラクタオブジェクト3がオブジェクト2の凹部に存在すると判定して、凹フラグを「TRUE」にセットする。
【0035】
図9は、球とオブジェクト2との接点を説明するための図である。図9では、いわゆるレイキャスト法により、球とオブジェクト2との接点を決めている。レイキャスト法では、点pから球状にレイを放出し、ポリゴンとの交差点(図9中「×」で表す点)が最近接点qと同じ平面にあるか否かを判定する。交差点のあるポリゴンの法線ベクトルと交差点から最接近点qへのベクトルと内積値により、同一平面であるか否かを判定可能である。
内積値が正であれば当該交差点のポリゴンと最接近点qのポリゴンとが凹の関係にあり、内積値が“0”であれば当該交差点のポリゴンと最接近点qのポリゴンとが同一平面の関係にあり、内積値が負であれば当該交差点のポリゴンと最接近点qのポリゴンとが凸の関係にある。キャラクタ位置判定部34は、交差点のうち、少なくとも一つが凹の関係にあれば、キャラクタオブジェクト3がオブジェクト2の凹部に存在すると判定する。また、図7により説明した方法によらず、内積値が負であれば凸部にキャラクタオブジェクトが存在すると判断できる。
なお、例えば、レイキャスト法で交差点毎に内積値が正負異なる場合には、キャラクタオブジェクト2が凸凹部に存在すると判断可能である。凸凹部にキャラクタ位置判定部34は、キャラクタオブジェクト3がオブジェクト2の凸凹部に存在すると判定した場合に、凸フラグを「TRUE」にセットする
【0036】
このように、キャラクタ位置判定部34の凸フラグ及び凹フラグにより、キャラクタオブジェクト3がオブジェクト2の平面部、凸部、凹部、凸凹部のいずれかに存在することが示される。
凸フラグ 凹フラグ キャラクタオブジェクト3とオブジェクト2との位置関係
FALSE FALSE キャラクタオブジェクト3がオブジェクト2の平面部に存在
TRUE FALSE キャラクタオブジェクト3がオブジェクト2の凸部に存在
FALSE TRUE キャラクタオブジェクト3がオブジェクト2の凹部に存在
TRUE TRUE キャラクタオブジェクト3がオブジェクト2の凸凹部に存在
【0037】
キャラクタ位置・姿勢決定部35は、キャラクタ位置判定部34により判定されたキャラクタオブジェクト3とオブジェクト2との位置関係により、キャラクタオブジェクト3の位置及び姿勢の補正を行う。なお、補正されたキャラクタオブジェクト2の位置及び姿勢は、キャラクタ位置・姿勢記憶部33に記憶される。
【0038】
キャラクタオブジェクト3がオブジェクト2の平面部に存在する場合、キャラクタ位置・姿勢補正部35は、図10(a)〜(c)に示すようにしてキャラクタオブジェクト3の位置及び姿勢を補正する。
オブジェクト動作制御部31によるキャラクタオブジェクト及びオブジェクトへの動作制御の結果、図10(a)に示すように、キャラクタオブジェクト3がオブジェクトの平面上にあり、そのローカル座標系の原点pがポリゴンの平面上に存在する場合、キャラクタ位置・姿勢補正部35は、図10(b)に示すように、Y軸が当該平面の法線ベクトルnの方向を向くように、ローカル座標系を回転する。ただし、回転角には制限を設け、ローカル座標系を回転することでキャラクタオブジェクト3の姿勢が急激に変化することを防止する。次いでキャラクタ位置・姿勢補正部35は、図10(c)に示すように、キャラクタオブジェクト3の大きさに合うように、原点pの位置をY軸上で最接近点qから距離hの場所に移動させる。このようにして、キャラクタオブジェクト3の位置の補正が終了し、新しいローカル座標系の原点p’が決定する。
距離hは、ローカル座標系の原点pがキャラクタオブジェクト3のどの部位に設けられるか、キャラクタオブジェクト3が起立しているのか或いは匍匐しているのか等により決められる値である。距離hは、キャラクタオブジェクト3のモデリング時或いは動作制御後のキャラクタの姿勢に応じてオブジェクト動作制御部31により決められる。
【0039】
キャラクタオブジェクト3がオブジェクト2の凸部に存在する場合、キャラクタ位置・姿勢補正部35は、図11(a)〜(c)に示すようにしてキャラクタオブジェクト3の位置及び姿勢を補正する。
オブジェクト動作制御部31による動作制御の結果、図11(a)に示すようにキャラクタオブジェクト3のローカル座標系の原点pがポリゴンのオブジェクト2の凸部上に存在する場合、キャラクタ位置・姿勢補正部35は、図11(b)に示すように、Y軸が最近接点qとローカル座標系の原点pとを結ぶ方向を向くように、ローカル座標系を回転する。ただし、回転角には制限を設け、ローカル座標系を回転することでキャラクタオブジェクト3の姿勢が急激に変化することを防止する。次いでキャラクタ位置・姿勢補正部35は、図11(c)に示すように、キャラクタオブジェクト3の大きさに合うように、原点pの位置をY軸上で最接近点qから距離hの場所に移動させる。このようにして、キャラクタオブジェクト3の位置の補正が終了し、新しいローカル座標系の原点p’が決定する。
【0040】
キャラクタオブジェクト3がオブジェクト2の凸部に存在する場合、図11(a)〜(c)の処理を行うことで、外部からの入力信号が無いにもかかわらずキャラクタオブジェクト3が滑るように移動することがある。例えば、ローカル座標系の回転角に制限を設けているために、必ずしもローカル座標系のY軸の方向が原点pと最近接点qとを結ぶ線の方向と一致しない。そのために、図11(c)でY軸方向にキャラクタオブジェクト3の位置を移動させると、最近接点qの位置が変わる。図12を用いて、キャラクタオブジェクト3が滑るように移動することを説明する。
図12において、キャラクタ位置・姿勢補正部35によりY軸が回転されたローカル座標系の原点pは、その後、Y軸上を移動して原点p’に位置が補正される。原点p’は、最近接点qから距離hだけ離れている。キャラクタ位置・姿勢補正部35による補正により原点p’に移動したキャラクタオブジェクト2の最近接点q’は、最近接点qとは異なる位置になる。そのために、次にキャラクタ位置・姿勢補正部35による補正を行うことで、外部からの入力が無くてもキャラクタオブジェクト3の位置が移動してしまう。この処理が連続すると、キャラクタオブジェクト3が操作に無関係に滑っているように表示される。
【0041】
そのために、凸部におけるキャラクタオブジェクト3の滑りを防止する対策が必要となる。図13は、滑り防止を説明する図である。キャラクタ位置・姿勢補正部35によるキャラクタオブジェクト3の姿勢の補正により、キャラクタオブジェクト3のローカル座標系のY軸がY_0からY_1に回転する。最近接点q_1はこの時点における最接近点である。ここで、最近接点q_1をY軸Y_1とポリゴンの接点q_2に変更する。その後に接点q_2を最近接点として位置の補正を行うことで、キャラクタオブジェクト3が操作内容にかかわらず移動してしまうことを防止することができる。
【0042】
ただし、図14のように複数のポリゴンのエッジにキャラクタオブジェクト3が存在する場合には、このような対策を施さない方がよいこともある。ポリゴンのエッジが集まる場所では、別のポリゴンのエッジにキャラクタオブジェクト3が乗ることもあるためである。
このような対策を施すか否かは、キャラクタ位置・姿勢補正部34が、補正の度に、キャラクタオブジェクト3がオブジェクト2のどの部分に位置するか、及びキャラクタオブジェクト3に対する動作制御がオブジェクト動作制御部31により行われているかに応じて決められる。
【0043】
キャラクタオブジェクト3がオブジェクト2の凹部に存在する場合、キャラクタ位置・姿勢補正部35は、図15〜図18に示すようにしてキャラクタオブジェクト3の位置及び姿勢を補正する。凹部におけるキャラクタオブジェクト3の位置・姿勢の補正は、操作装置161からの入力信号によるキャラクタオブジェクト3への移動指示の有無及び最近接点qの移動量に応じて処理が異なる。そのために、キャラクタ位置・姿勢補正部35は、まず、キャラクタオブジェクト3への移動指示の有無及び最近接点qの移動量の判定を行う。
移動指示の有無は、入力部30において操作装置161からキャラクタオブジェクト3を移動させる旨の入力信号を受け付けたか否かを確認することで判定可能である。最近接点qの移動量は、前回の最近接点q_0と今回の最近接点q_1とから距離Lとして算出可能である。距離Lを所定量L_0と比較することで移動量が所定量以上か否かを判定する。
【0044】
キャラクタオブジェクト3への移動の指示が有り、最近接点の移動量が所定量よりも大きい場合には、以下のような処理を行う。
図15に示すように最近接点がポリゴンを跨いで移動する場合、キャラクタオブジェクト3の位置及び姿勢を最近接点を基準にして補正するために、キャラクタオブジェクト3の位置及び姿勢が不連続になることがある。これを是正するために、最近接点q_0、q_1の位置を補間する点をオブジェクト2上の点を設ける。
【0045】
図16〜図18を参照して、補間する点をどのように求めるかを説明する。
図16に示すように、最近接点q_0と最近接点q_1との間をa:bに分割する分割点rを決める。分割点rの位置は、外部入力によるオブジェクト3の動き量に応じて決まる。キャラクタオブジェクト3のローカル座標系の原点p_1から分割点rへの延長線とポリゴンとの接点を接点q_dとする。
【0046】
キャラクタオブジェクト3の姿勢を表すローカル座標系は、最近接点q_0と最近接点q_1とを結ぶ線分に対して垂直な方向にY軸を合わせるように回転させる。
キャラクタオブジェクト3の位置は、図17に示すように、ローカル座標系の原点p_1と接点q_dとを結ぶ線上で、最近接点q_1があるポリゴンから距離hの位置に移動させる。
以上のように、キャラクタ位置・姿勢補正部35は、キャラクタオブジェクト3の位置及び姿勢を補正する。
【0047】
キャラクタオブジェクト3への移動の指示が有り、最近接点の移動量が所定量よりも小さくポリゴンを跨がない場合には、オブジェクト2の平面部にキャラクタオブジェクト3が存在する場合と同様の処理により、キャラクタオブジェクト3の位置及び姿勢の補正を行う。
【0048】
キャラクタオブジェクト3への移動の指示が無く、最近接点の移動量が所定量よりも大きく2以上のポリゴンを跨いで移動する場合には、以下のような処理を行う。
この場合、外部からの入力が無いので本来はキャラクタオブジェクト3が動かない。しかし、例えば、図16、図17で説明したような処理を行うと、最近接点q_1が実際に最もポリゴンに近い点ではないので(最近接点が移動するので)、次の処理の際にキャラクタオブジェクト3の位置が動くことがある。図18の点q_nが本当に最もポリゴンに近い点になる。
そこで、キャラクタオブジェクト3の位置及び姿勢を補正する前に、最近接点を図17の点q_dに変更する。これにより、外部からの入力が無い場合に、キャラクタオブジェクト3の位置が移動することを防止することができる。また、例えば図15でキャラクタオブジェクト3のローカル座標系の原点p_1が2つのポリゴンからほぼ同じ距離に有る場合に、キャラクタオブジェクト3が当該2つのポリゴンの間を飛び、連続的に移動しないことがあるが、上記のように最近接点を点q_dにすることでこれも防止できる。
【0049】
キャラクタオブジェクト3への移動の指示が無く、最近接点の移動量が所定量よりも小さい場合には、キャラクタオブジェクト3の位置、姿勢、最近接点をそのまま維持する。
【0050】
キャラクタオブジェクト3が凸凹が混在するオブジェクト2上に存在する場合の位置及び姿勢の補正について図19により説明する。この場合も、外部からの入力の有無及び最近接点の移動量に応じて異なる処理が必要になる。
キャラクタオブジェクト3のローカル座標系の原点pの位置が変化しても、オブジェクト2に対する最近接点が変化していない場合には、キャラクタオブジェクト3が同じ凸部のエッジ部分に止まる。キャラクタオブジェクト3の位置及び姿勢に変化はない。原点pの位置が変化し且つ最近接点も変化する場合には、凹部における位置及び姿勢の補正と同じになる。
【0051】
図20は、画像処理装置1を用いて行われるキャラクタオブジェクトの位置及び姿勢の補正を行う画像処理の処理手順を表す処理手順図である。図20では、本発明にかかわる画像処理についてのみ処理手順を説明するが、レンダリング処理等の従来の画像処理については説明を省略する。この画像処理は動画について処理であり、動画が終了するまで1フレームずつ連続して行われる。例えば動画がアクションアドベンチャゲームの画像であれば、ゲーム終了時まで、連続して処理が行われることになる。
【0052】
画像処理装置1は、今フレームの画像を生成するために、まず、前フレームのオブジェクトの形状等をオブジェクト形状記憶部32に記憶し、キャラクタオブジェクトの位置、姿勢等をキャラクタ位置・姿勢記憶部33に記憶する(ステップS10)。
次いで、操作装置161による外部入力が有る場合には(ステップS20:有)、オブジェクト動作制御部31により外部入力に応じたキャラクタオブジェクトの位置・姿勢等の動作制御が行われる。動作制御により、キャラクタ位置・姿勢記憶部33に記憶されたキャラクタの位置、姿勢等が更新される。また、キャラクタオブジェクトの位置、姿勢の変更等によりオブジェクトの位置、形状等が変更される場合には、オブジェクト形状記憶部32に記憶されたオブジェクトの形状、位置等も更新される(ステップS30)。
外部入力によるキャラクタオブジェクトの位置、姿勢が変更後、或いは外部入力が無い場合(ステップS20:無)、画像処理装置1は、キャラクタ位置判定部34によりキャラクタオブジェクトのオブジェクトに対する位置を判定する(ステップS40)。これにより、キャラクタオブジェクトがオブジェクトの平面部、凸部、凹部、凸凹部のいずれに位置するかが判定される。
【0053】
次いで画像処理装置1は、キャラクタ位置・姿勢決定部35により、キャラクタオブジェクトのオブジェクトに対する位置に応じて、上記の通り、キャラクタオブジェクトの位置及び姿勢を補正する(ステップS50)。このようにして補正された結果は、キャラクタ位置・姿勢記憶部33の記憶内容に反映される。
【0054】
このように、動作制御後にキャラクタオブジェクトの位置及び姿勢を補正することで、より自然にキャラクタオブジェクトがオブジェクトに接触して移動する様子を表現することができる。
【符号の説明】
【0055】
1…画像処理装置、10…CPU、11…メモリ、12…MDEC、13…DMAC、14…ROM、15…記憶装置、16…入力インタフェース、161…操作装置、17…メディアドライブ、171…メディア、18…NIC、19…GPU、20…フレームメモリ、21…CRTC、22…SPU、23…サウンドメモリ、30…入力部、31…オブジェクト動作制御部、32…オブジェクト形状記憶部、33…キャラクタ位置・姿勢記憶部、34…キャラクタ位置判定部、35…キャラクタ位置・姿勢決定部、2…オブジェクト、3…キャラクタオブジェクト
【特許請求の範囲】
【請求項1】
仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段と、
前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定するキャラクタ位置判定手段と、
前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正するキャラクタ位置・姿勢補正手段と、を備える、
画像処理装置。
【請求項2】
前記オブジェクトの表面が前記ポリゴンにより平面、凸、凹、及び凹凸のいずれかの形状に構成されており、
前記キャラクタ位置判定手段は、前記キャラクタオブジェクトが前記オブジェクトの平面、凸、凹、及び凹凸のいずれの形状の位置に最も近接するかを判定し、
前記キャラクタ位置・姿勢補正手段は、前記キャラクタオブジェクトが最も近接する前記オブジェクトの位置の形状に応じて、当該キャラクタオブジェクトの位置及び姿勢を補正する、
請求項1記載の画像処理装置。
【請求項3】
前記キャラクタオブジェクトの動作を表すための当該キャラクタオブジェクトのローカル座標系により、当該キャラクタオブジェクトの位置及び姿勢が決められており、
前記キャラクタ位置判定手段は、前記ローカル座標系の原点とこの原点に最も近いポリゴンとの位置関係により、当該キャラクタオブジェクトが当該オブジェクトに近接する位置の形状を判定する、
請求項1又は2記載の画像処理装置。
【請求項4】
前記キャラクタ位置判定手段は、前記キャラクタオブジェクトの前記仮想3次元空間内における大きさに相当する仮想の球と前記オブジェクトを形成する1以上のポリゴンとの接点から、当該キャラクタオブジェクトが当該オブジェクトに近接する位置の形状を判定する、
請求項1〜3のいずれか1項記載の画像処理装置。
【請求項5】
キャラクタ位置・姿勢補正手段は、前記ローカル座標系を回転させることで当該キャラクタオブジェクトの姿勢を補正し、前記ローカル座標系の原点を移動させることで当該キャラクタオブジェクトの位置を補正する、
請求項3記載の画像処理装置。
【請求項6】
前記キャラクタ位置・姿勢補正手段は、前記ローカル座標系の回転角に制限を設けている、
請求項5記載の画像処理装置。
【請求項7】
前記キャラクタ位置・姿勢補正手段は、前記ローカル座標系の補正されたY軸方向に前記原点を移動させることで、当該キャラクタオブジェクトの位置を補正する、
請求項5又は6記載の画像処理装置。
【請求項8】
前記キャラクタ位置・姿勢補正手段は、前記キャラクタオブジェクトが移動することで当該キャラクタオブジェクトの前記オブジェクトに最も近接する位置が移動する場合に、前記キャラクタオブジェクトの移動前に予め前記最も近接する位置の移動量と同等の量ずらす、或いは前記キャラクタオブジェクトの移動後に前記最も近接する位置を移動前の位置に戻す、
請求項7記載の画像処理装置。
【請求項9】
仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段を備えた画像処理装置により実行される方法であって、
前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定し、前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正する、
画像処理方法。
【請求項10】
仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段を備えたコンピュータシステムに、
前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定させ、前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正させる、
ためのコンピュータプログラム。
【請求項11】
請求項10記載のコンピュータプログラムが記録されたコンピュータ読み取り可能な記録媒体。
【請求項12】
仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段を備えた画像処理装置に、
前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定するキャラクタ位置判定手段;
前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正するキャラクタ位置・姿勢補正手段;
を形成するための半導体装置。
【請求項1】
仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段と、
前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定するキャラクタ位置判定手段と、
前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正するキャラクタ位置・姿勢補正手段と、を備える、
画像処理装置。
【請求項2】
前記オブジェクトの表面が前記ポリゴンにより平面、凸、凹、及び凹凸のいずれかの形状に構成されており、
前記キャラクタ位置判定手段は、前記キャラクタオブジェクトが前記オブジェクトの平面、凸、凹、及び凹凸のいずれの形状の位置に最も近接するかを判定し、
前記キャラクタ位置・姿勢補正手段は、前記キャラクタオブジェクトが最も近接する前記オブジェクトの位置の形状に応じて、当該キャラクタオブジェクトの位置及び姿勢を補正する、
請求項1記載の画像処理装置。
【請求項3】
前記キャラクタオブジェクトの動作を表すための当該キャラクタオブジェクトのローカル座標系により、当該キャラクタオブジェクトの位置及び姿勢が決められており、
前記キャラクタ位置判定手段は、前記ローカル座標系の原点とこの原点に最も近いポリゴンとの位置関係により、当該キャラクタオブジェクトが当該オブジェクトに近接する位置の形状を判定する、
請求項1又は2記載の画像処理装置。
【請求項4】
前記キャラクタ位置判定手段は、前記キャラクタオブジェクトの前記仮想3次元空間内における大きさに相当する仮想の球と前記オブジェクトを形成する1以上のポリゴンとの接点から、当該キャラクタオブジェクトが当該オブジェクトに近接する位置の形状を判定する、
請求項1〜3のいずれか1項記載の画像処理装置。
【請求項5】
キャラクタ位置・姿勢補正手段は、前記ローカル座標系を回転させることで当該キャラクタオブジェクトの姿勢を補正し、前記ローカル座標系の原点を移動させることで当該キャラクタオブジェクトの位置を補正する、
請求項3記載の画像処理装置。
【請求項6】
前記キャラクタ位置・姿勢補正手段は、前記ローカル座標系の回転角に制限を設けている、
請求項5記載の画像処理装置。
【請求項7】
前記キャラクタ位置・姿勢補正手段は、前記ローカル座標系の補正されたY軸方向に前記原点を移動させることで、当該キャラクタオブジェクトの位置を補正する、
請求項5又は6記載の画像処理装置。
【請求項8】
前記キャラクタ位置・姿勢補正手段は、前記キャラクタオブジェクトが移動することで当該キャラクタオブジェクトの前記オブジェクトに最も近接する位置が移動する場合に、前記キャラクタオブジェクトの移動前に予め前記最も近接する位置の移動量と同等の量ずらす、或いは前記キャラクタオブジェクトの移動後に前記最も近接する位置を移動前の位置に戻す、
請求項7記載の画像処理装置。
【請求項9】
仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段を備えた画像処理装置により実行される方法であって、
前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定し、前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正する、
画像処理方法。
【請求項10】
仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段を備えたコンピュータシステムに、
前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定させ、前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正させる、
ためのコンピュータプログラム。
【請求項11】
請求項10記載のコンピュータプログラムが記録されたコンピュータ読み取り可能な記録媒体。
【請求項12】
仮想3次元空間を操作者による操作により移動可能なキャラクタオブジェクト及びこの仮想3次元空間で1以上のポリゴンにより形状が表されるオブジェクトについて、前記3次元仮想空間内における動作制御を行うオブジェクト動作制御手段を備えた画像処理装置に、
前記動作制御の結果得られる前記キャラクタオブジェクトの位置及び前記オブジェクトの形状から、前記キャラクタオブジェクトが前記オブジェクトに近接する位置の形状を判定するキャラクタ位置判定手段;
前記キャラクタ位置判定手段による判定結果に応じて、前記キャラクタオブジェクトの前記オブジェクトに対する位置及び姿勢を補正するキャラクタ位置・姿勢補正手段;
を形成するための半導体装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2011−258117(P2011−258117A)
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願番号】特願2010−133997(P2010−133997)
【出願日】平成22年6月11日(2010.6.11)
【出願人】(310021766)株式会社ソニー・コンピュータエンタテインメント (417)
【Fターム(参考)】
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願日】平成22年6月11日(2010.6.11)
【出願人】(310021766)株式会社ソニー・コンピュータエンタテインメント (417)
【Fターム(参考)】
[ Back to top ]