(57)【要約】【課題】キャラクタがオブジェクトに触る様子を表す画像を生成することが可能なゲーム装置を提供すること。【解決手段】仮位置／方向取得手段（５２）は、オブジェクトに触るために用いられるキャラクタの部位の仮位置、又はキャラクタ本体から部位への仮方向を取得する。線取得手段（５４）は、仮位置又は仮方向に基づいて、キャラクタの代表点からオブジェクトに向けて伸びる少なくとも３本の線を取得する。交点取得手段（５６）は、少なくとも３本の線の各々とオブジェクトとの交点を取得する。キャラクタ制御手段（５８）は、交点取得手段（５６）によって取得される少なくとも３つの交点を含む面に基づいて、キャラクタの前記部位の位置を制御する。画像生成手段（６０）は、仮想空間に設定された視点から見たキャラクタ及びオブジェクトを表す画像を生成する。【選択図】図３
2011186689.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間においてキャラクタがオブジェクトに触る様子を表す画像を生成する画像処理装置において、
前記オブジェクトに触るために用いられる前記キャラクタの部位の仮位置、又は前記キャラクタ本体から前記部位への仮方向を取得する仮位置／方向取得手段と、
前記仮位置又は前記仮方向に基づいて、前記キャラクタの代表点から前記オブジェクトに向けて伸びる少なくとも３本の線を取得する線取得手段と、
前記少なくとも３本の線の各々と前記オブジェクトとの交点を取得する交点取得手段と、
前記交点取得手段によって取得される少なくとも３つの交点を含む面に基づいて、前記キャラクタの前記部位の位置を制御するキャラクタ制御手段と、
前記仮想空間に設定された視点から見た前記キャラクタ及び前記オブジェクトを表す画像を生成する画像生成手段と、
を含むことを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
前記キャラクタ制御手段は、前記キャラクタから前記面に向かって伸びる線が前記面と交わる前に前記オブジェクトと交わる場合、前記面を、前記キャラクタへの方向に平行移動させることによって、前記面の位置を、前記キャラクタから前記面に向かって伸びる前記線が前記面と交わる前に前記オブジェクトと交わらないような位置に変更する手段を含むことを特徴とする画像処理装置。
【請求項３】
仮想空間においてキャラクタがオブジェクトに触る様子を表す画像を生成する画像処理方法において、
前記オブジェクトに触るために用いられる前記キャラクタの部位の仮位置、又は前記キャラクタ本体から前記部位への仮方向を取得する仮位置／方向取得ステップと、
前記仮位置又は前記仮方向に基づいて、前記キャラクタの代表点から前記オブジェクトに向けて伸びる少なくとも３本の線を取得する線取得ステップと、
前記少なくとも３本の線の各々と前記オブジェクトとの交点を取得する交点取得ステップと、
前記交点取得ステップにおいて取得される少なくとも３つの交点を含む面に基づいて、前記キャラクタの前記部位の位置を制御するキャラクタ制御ステップと、
前記仮想空間に設定された視点から見た前記キャラクタ及び前記オブジェクトを表す画像を生成する画像生成ステップと、
を含むことを特徴とする画像処理方法。
【請求項４】
仮想空間においてキャラクタがオブジェクトに触る様子を表す画像を生成する画像処理装置としてコンピュータを機能させるためのプログラムであって、
前記オブジェクトに触るために用いられる前記キャラクタの部位の仮位置、又は前記キャラクタ本体から前記部位への仮方向を取得する仮位置／方向取得手段、
前記仮位置又は前記仮方向に基づいて、前記キャラクタの代表点から前記オブジェクトに向けて伸びる少なくとも３本の線を取得する線取得手段、
前記少なくとも３本の線の各々と前記オブジェクトとの交点を取得する交点取得手段、
前記交点取得手段によって取得される少なくとも３つの交点を含む面に基づいて、前記キャラクタの前記部位の位置を制御するキャラクタ制御手段、及び、
前記仮想空間に設定された視点から見た前記キャラクタ及び前記オブジェクトを表す画像を生成する画像生成手段、
として前記コンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
仮想カメラから見た仮想空間を表す画像を生成する画像処理装置が知られている。例えば、仮想カメラから見たゲーム空間を表すゲーム画面を生成するゲーム装置（画像処理装置）が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−９６０６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のような画像処理装置では、キャラクタがオブジェクトを触る様子を表す画像を生成したい場合がある。例えば、上記のようなゲーム装置では、プレイヤによって操作されるキャラクタが壁を触る様子を表すゲーム画面を表示したい場合がある。
【０００５】
本発明は上記課題に鑑みてなされたものであって、その目的は、例えば、キャラクタがオブジェクトに触る様子を表す画像を生成することが可能な画像処理装置、画像処理方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明に係る画像処理装置は、仮想空間においてキャラクタがオブジェクトに触る様子を表す画像を生成する画像処理装置において、前記オブジェクトに触るために用いられる前記キャラクタの部位の仮位置、又は前記キャラクタ本体から前記部位への仮方向を取得する仮位置／方向取得手段と、前記仮位置又は前記仮方向に基づいて、前記キャラクタの代表点から前記オブジェクトに向けて伸びる少なくとも３本の線を取得する線取得手段と、前記少なくとも３本の線の各々と前記オブジェクトとの交点を取得する交点取得手段と、前記交点取得手段によって取得される少なくとも３つの交点を含む面に基づいて、前記キャラクタの前記部位の位置を制御するキャラクタ制御手段と、前記仮想空間に設定された視点から見た前記キャラクタ及び前記オブジェクトを表す画像を生成する画像生成手段と、を含むことを特徴とする。
【０００７】
また、本発明に係る画像処理方法は、仮想空間においてキャラクタがオブジェクトに触る様子を表す画像を生成する画像処理方法において、前記オブジェクトに触るために用いられる前記キャラクタの部位の仮位置、又は前記キャラクタ本体から前記部位への仮方向を取得する仮位置／方向取得ステップと、前記仮位置又は前記仮方向に基づいて、前記キャラクタの代表点から前記オブジェクトに向けて伸びる少なくとも３本の線を取得する線取得ステップと、前記少なくとも３本の線の各々と前記オブジェクトとの交点を取得する交点取得ステップと、前記交点取得ステップにおいて取得される少なくとも３つの交点を含む面に基づいて、前記キャラクタの前記部位の位置を制御するキャラクタ制御ステップと、前記仮想空間に設定された視点から見た前記キャラクタ及び前記オブジェクトを表す画像を生成する画像生成ステップと、を含むことを特徴とする。
【０００８】
また、本発明に係るプログラムは、仮想空間においてキャラクタがオブジェクトに触る様子を表す画像を生成する画像処理装置として、家庭用ゲーム機（据置型ゲーム機）、携帯ゲーム機、携帯電話機、携帯情報端末（ＰＤＡ）、パーソナルコンピュータ、又はサーバコンピュータ等のコンピュータを機能させるためのプログラムであって、前記オブジェクトに触るために用いられる前記キャラクタの部位の仮位置、又は前記キャラクタ本体から前記部位への仮方向を取得する仮位置／方向取得手段、前記仮位置又は前記仮方向に基づいて、前記キャラクタの代表点から前記オブジェクトに向けて伸びる少なくとも３本の線を取得する線取得手段、前記少なくとも３本の線の各々と前記オブジェクトとの交点を取得する交点取得手段、前記交点取得手段によって取得される少なくとも３つの交点を含む面に基づいて、前記キャラクタの前記部位の位置を制御するキャラクタ制御手段、及び、前記仮想空間に設定された視点から見た前記キャラクタ及び前記オブジェクトを表す画像を生成する画像生成手段、として前記コンピュータを機能させるためのプログラムである。
【０００９】
また、本発明に係る情報記憶媒体は、上記プログラムを記録したコンピュータ読み取り可能な情報記憶媒体である。
【００１０】
本発明によれば、キャラクタがオブジェクトに触る様子を表す画像を生成することが可能になる。
【００１１】
また本発明の一態様では、前記キャラクタ制御手段は、前記キャラクタから前記面に向かって伸びる線が前記面と交わる前に前記オブジェクトと交わる場合、前記面を、前記キャラクタへの方向に平行移動させることによって、前記面の位置を、前記キャラクタから前記面に向かって伸びる前記線が前記面と交わる前に前記オブジェクトと交わらないような位置に変更する手段を含むようにしてもよい。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態に係るゲーム装置（画像処理装置）のハードウェア構成を示す図である。
【図２】仮想空間の一例を示す図である。
【図３】本実施の形態に係るゲーム装置の機能ブロック図である。
【図４】仮位置／仮方向取得部の動作の一例を説明するための図である。
【図５】線取得部の動作の一例を説明するための図である。
【図６】線取得部の動作の一例を説明するための図である。
【図７】線取得部の動作の他の一例を説明するための図である。
【図８】仮位置／仮方向取得部の動作の他の一例を説明するための図である。
【図９】線取得部の動作の一例を説明するための図である。
【図１０】線取得部の動作の一例を説明するための図である。
【図１１】線取得部の動作の他の一例を説明するための図である。
【図１２】交点取得部の動作の一例を説明するための図である。
【図１３】キャラクタ制御部の動作の一例を説明するための図である。
【図１４】ゲーム装置で実行される処理の一例を示すフロー図である。
【図１５】ゲーム装置で実行される処理を説明するための図である。
【図１６】ゲーム装置で実行される処理を説明するための図である。
【図１７】ゲーム装置で実行される処理の他の一例を示すフロー図である。
【図１８】キャラクタが壁に触る様子を表す画像を生成するための他の方法を説明するための図である。
【図１９】キャラクタが壁に触る様子を表す画像を生成するための他の方法を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態の一例について図面に基づき詳細に説明する。ここでは、画像処理装置の一態様であるゲーム装置に本発明を適用した例について説明する。本発明の実施形態に係るゲーム装置（画像処理装置）は、例えば家庭用ゲーム機（据置型ゲーム機）、携帯ゲーム機、携帯電話機、携帯情報端末（ＰＤＡ）、パーソナルコンピュータ、又はサーバコンピュータ等によって実現される。ここでは、本発明の実施形態に係るゲーム装置を家庭用ゲーム機によって実現する例について説明する。
【００１４】
［１．ハードウェア構成］
図１は、本発明の実施形態に係るゲーム装置（画像処理装置）のハードウェア構成を示す図である。図１に示すゲーム装置１０は、家庭用ゲーム機１１、表示部３２、音声出力部３４、及び光ディスク３６（情報記憶媒体）を含む。表示部３２及び音声出力部３４は家庭用ゲーム機１１に接続される。例えば、家庭用テレビ受像機又は液晶ディスプレイ等が表示部３２として用いられる。例えば、家庭用テレビ受像機に内蔵されたスピーカ又はヘッドホン等が音声出力部３４として用いられる。
【００１５】
家庭用ゲーム機１１は公知のコンピュータゲームシステムである。家庭用ゲーム機１１は、バス１２、制御部１４、主記憶１６、画像処理部１８、入出力処理部２０、音声処理部２２、光ディスク読み取り部２４、ハードディスク２６、通信インタフェース２８、及びコントローラ３０を含む。
【００１６】
制御部１４は一又は複数のマイクロプロセッサを含む。制御部１４は、図示しないＲＯＭに格納されるオペレーティングシステムや、ハードディスク２６又は光ディスク３６から読み出されるプログラムに基づいて、家庭用ゲーム機１１の各部を制御する処理やその他の情報処理を実行する。主記憶１６は例えばＲＡＭを含み、ハードディスク２６又は光ディスク３６から読み出されたプログラム及びデータが書き込まれる。主記憶１６は制御部１４の作業用メモリとしても用いられる。バス１２はアドレス及びデータを家庭用ゲーム機１１の各部でやり取りするためのものである。
【００１７】
画像処理部１８はＶＲＡＭを含み、制御部１４から送られる画像データに基づいてＶＲＡＭ上にゲーム画面を描画し、ＶＲＡＭ上に描画されたゲーム画面をビデオ信号に変換して所定のタイミングで表示部３２に出力する。
【００１８】
入出力処理部２０は制御部１４が音声処理部２２、光ディスク読み取り部２４、ハードディスク２６、通信インタフェース２８、及びコントローラ３０にアクセスするためのインタフェースである。音声処理部２２はサウンドバッファを含み、ハードディスク２６又は光ディスク３６からサウンドバッファに読み出された音声データを音声出力部３４から出力する。通信インタフェース２８はインターネット等の通信ネットワークに家庭用ゲーム機１１を有線又は無線接続するためのインタフェースである。
【００１９】
光ディスク読み取り部２４は光ディスク３６に記録されたプログラムやデータを読み取る。なお、ここではプログラムやデータを家庭用ゲーム機１１に供給するために光ディスク３６を用いるが、メモリカード等、他の情報記憶媒体を用いるようにしてもよい。また、例えばインターネット等の通信ネットワークを介して遠隔地からプログラムやデータを家庭用ゲーム機１１に供給するようにしてもよい。ハードディスク２６は一般的なハードディスク装置（補助記憶装置）である。なお、以下で光ディスク３６に記憶されることとして説明するプログラムやデータはハードディスク２６に記憶されていてもよい。
【００２０】
コントローラ３０はユーザが各種ゲーム操作を行うための操作部である。家庭用ゲーム機１１には複数のコントローラ３０を有線又は無線接続することが可能である。入出力処理部２０は一定周期毎（例えば１／６０秒ごと）にコントローラ３０の状態をスキャンし、そのスキャン結果を表す操作信号をバス１２を介して制御部１４に渡す。制御部１４はその操作信号に基づいてプレイヤのゲーム操作を判定する。
【００２１】
［２．仮想空間及び画面］
ゲーム装置１０では、例えば、ユーザによって操作されるキャラクタが仮想空間内を移動するゲームが実行される。このゲームは、光ディスク３６から読み出されたプログラムが実行されることによって実現される。
【００２２】
図２は仮想空間の一例を示す図である。図２に示す仮想空間４０には、互いに直交する３つの座標軸（Ｘｗ，Ｙｗ，Ｚｗ軸）が設定された仮想３次元空間になっている。図２に示す仮想空間４０には、床を表す床オブジェクト（以下、単に「床」と記載する。）４２が配置されている。また、壁を表す壁オブジェクト（以下、単に「壁」と記載する。）４４と、キャラクタを表すキャラクタオブジェクト（以下、単に「キャラクタ」と記載する。）４６とが床４２上に配置されている。キャラクタ４６はユーザの操作に従って仮想空間４０内を移動する。
【００２３】
仮想空間４０に配置される各オブジェクトは複数のポリゴンを含んで構成される。また、キャラクタ４６内にはスケルトンが設定される。スケルトンは、複数のボーンと、ボーン同士を接続するための複数のジョイントと、を含み、階層構造を有する。例えば、キャラクタ４６の内部には、キャラクタ４６の右手に関するスケルトンとして、「右上腕」、「右前腕」、「右手」のスケルトンが設定される。「右上腕」は「右前腕」の上位のスケルトンであり、「右前腕」は「右手」の上位のスケルトンである。
【００２４】
キャラクタ４６の形状（姿勢）は、スケルトンの状態（例えば位置や回転角度）を変化させることによって制御される。例えば、あるスケルトンを回転させた場合、そのスケルトンよりも下位の階層のスケルトンも連動する。例えば、「右上腕」を回転させた場合、「右上腕」よりも下位の階層である「右前腕」や「右手」が「右上腕」の回転に合わせて動く。各スケルトンにはキャラクタ４６の一又は複数の頂点が関連づけられる。スケルトンの状態が変化すると、そのスケルトンに関連づけられた頂点の位置が変化する。その結果として、キャラクタ４６の形状（姿勢）が変化する。
【００２５】
仮想カメラ４８（視点）から見た仮想空間４０を表す画面が表示部３２に表示される。本実施形態の場合、キャラクタ４６が常に画面に表示されるように（言い換えれば、キャラクタ４６が常に仮想カメラ４８の視野領域に含まれるように）、仮想カメラ４８が制御される。
【００２６】
以下、キャラクタ４６がオブジェクト（例えば壁４４）に触る様子を表す画像を生成するための技術について説明する。
【００２７】
［３．機能ブロック］
図３は、ゲーム装置１０で実現される機能のうち、本発明に関連する機能を主に示す機能ブロック図である。図３に示すように、ゲーム装置１０は、データ記憶部５０、仮位置／仮方向取得部５２、線取得部５４、交点取得部５６、キャラクタ制御部５８、及び画像生成部６０を含む。データ記憶部５０は例えば主記憶１６及び光ディスク３６によって実現される。その他の機能ブロックは、制御部１４がプログラムを実行することによって実現される。
【００２８】
［３−１］まず、データ記憶部５０について説明する。データ記憶部５０は、仮想空間４０に配置される各オブジェクトに関するデータを記憶する。例えば、下記に示すようなデータがデータ記憶部５０に記憶される。
（１）床４２、壁４４、及びキャラクタ４６の形状を示すデータ
（２）床４２及び壁４４の位置を示すデータ
（３）キャラクタ４６の現在の状態（例えば位置、向き、及び姿勢等）を示すデータ
（４）仮想カメラ４８の現在の状態（例えば位置、視線方向、及び画角）を示すデータ
【００２９】
［３−２］次に、仮位置／仮方向取得部５２及び線取得部５４について説明する。
【００３０】
仮位置／仮方向取得部５２は、オブジェクト（例えば壁４４）に触るために用いられるキャラクタ４６の部位の仮位置を取得する。「キャラクタ４６の部位」とは、例えばキャラクタ４６の手又は足等である。
【００３１】
または、仮位置／仮方向取得部５２は、キャラクタ４６本体から上記部位への仮方向を取得する。ここで、「キャラクタ４６本体」とは、キャラクタ４６の胴体部分のことを意味し、「仮方向」とは、例えば、キャラクタ４６が手又は足を伸ばすおおよその方向のことを意味する。
【００３２】
以下、仮位置／仮方向取得部５２が上記の仮位置を取得する場合の仮位置／仮方向取得部５２及び線取得部５４の動作と、仮位置／仮方向取得部５２が上記の仮方向を取得する場合の仮位置／仮方向取得部５２及び線取得部５４の動作と、について説明する。なお、以下では、キャラクタ４６が手で壁４４に触る場合を例として、各機能ブロックの動作について説明する。
【００３３】
［３−２−１］まず、仮位置／仮方向取得部５２が上記の仮位置を取得する場合の仮位置／仮方向取得部５２及び線取得部５４の動作について説明する。
【００３４】
この場合の仮位置／仮方向取得部５２は、キャラクタ４６の手の仮位置をキャラクタ４６の位置と壁４４の位置に基づいて決定する。図４は、仮位置／仮方向取得部５２の動作の一例について説明するための図である。
【００３５】
例えば、仮位置／仮方向取得部５２は、キャラクタ４６に対応する球６２が壁４４に当たるか否かを判定する。ここで、球６２は、キャラクタ４６が壁４４に当たるか否かの判定するための当たり判定用オブジェクトであり、キャラクタ４６の位置に基づいて設定される。図４に示すように、球６２の中心点（重心点）はキャラクタ４６の代表点４６ｏに設定される。キャラクタ４６の代表点４６ｏは、例えばキャラクタ４６の腰の位置に設定される。また、球６２の半径は所定距離（ｒ）に設定される。所定距離（ｒ）は、例えばキャラクタ４６の腕の長さに基づいて設定され、キャラクタ４６の手の届く距離に相当する。なお、当たり判定オブジェクトの形状は球に限られず、他の形状（例えば立方体又は直方体）であってもよい。また、球６２の半径（所定距離（ｒ））は腕の長さに基づく長さに限られない。
【００３６】
球６２が壁４４と当たる場合、仮位置／仮方向取得部５２は、キャラクタ４６の手の仮位置を取得する。例えば、球６２と当たる壁４４の領域内のいずれかの位置が、キャラクタ４６の手の仮位置として決定される。図４に示す例では、球６２と当たる壁４４の領域内でキャラクタ４６に最も近い位置６４が仮位置６６として決定されている。なお、キャラクタ４６に最も近い位置６４以外の位置が仮位置６６として決定されるようにしてもよい。例えば、球６２と当たる壁４４の領域内のいずれかの位置がランダムに仮位置６６として決定されるようにしてもよい。
【００３７】
上記のようにして仮位置６６が仮位置／仮方向取得部５２によって取得された場合、線取得部５４は、その仮位置６６に基づいて、キャラクタ４６の代表点４６ｏからオブジェクト（例えば壁４４）に向かって伸びる少なくとも３本の線を取得する。図５及び図６は線取得部５４の動作の一例を説明するための図である。図５及び図６において、面７０は、上記仮位置６６を含む面であり、この面７０の法線方向は、仮位置６６からキャラクタ４６の代表点４６ｏへの方向６８と一致している。
【００３８】
例えば、線取得部５４は、仮位置６６と予め定められた位置関係を有する少なくとも３つの点を取得する。例えば図５に示す例では４つの点を取得する。すなわち、線取得部５４は、面７０上において仮位置６６から左上方向に所定距離（Δｄ）移動してなる点７２ａを取得する。また、線取得部５４は、面７０上において仮位置６６から左下方向に所定距離（Δｄ）移動してなる点７２ｂを取得する。また、線取得部５４は、面７０上において仮位置６６から右上方向に所定距離（Δｄ）移動してなる点７２ｃを取得する。さらに、線取得部５４は、面７０上において仮位置６６から右下方向に所定距離（Δｄ）移動してなる点７２ｄを取得する。
【００３９】
そして、図６に示すように、線取得部５４は、キャラクタ４６の代表点４６ｏから各々の点７２ａ，７２ｂ，７２ｃ，７２ｄへと伸ばした直線（及びその延長線）７４ａ，７４ｂ，７４ｃ，７４ｄを取得する。
【００４０】
なお、線取得部５４による線の取得方法は上記の方法に限られない。例えば、線取得部５４は、キャラクタ４６の代表点４６ｏから仮位置６６への方向と所定の角度関係を有する少なくとも３つの線を取得するようにしてもよい。図７は、この場合の線取得部５４による線の取得方法を説明するための図である。
【００４１】
例えば、線取得部５４は、キャラクタ４６の代表点４６ｏから仮位置６６への方向７６を、キャラクタ４６の代表点４６ｏを回転中心として上方向に所定角度だけ回転させることによって得られる方向に伸ばした直線７８ａを取得する。なお、この直線７８ａは、面７０上において仮位置６６から上方向に所定距離だけ移動してなる点８０ａを通過する直線になる。また、線取得部５４は、キャラクタ４６の代表点４６ｏを回転中心として、上記方向７６を下方向に所定角度だけ回転させることによって得られる方向に伸ばした直線７８ｂを取得する。なお、この直線７８ｂは、面７０上において仮位置６６から下方向に所定距離だけ移動してなる点８０ｂを通過する直線になる。
【００４２】
同様に、線取得部５４は、キャラクタ４６の代表点４６ｏを回転中心として、上記方向７６を左方向に所定角度だけ回転させることによって得られる方向を示す直線７８ｃを取得する。なお、この直線７８ｃは、面７０上において仮位置６６から左方向に所定距離だけ移動してなる点８０ｃを通過する直線になる。さらに、線取得部５４は、キャラクタ４６の代表点４６ｏを回転中心として、上記方向７６を右方向に所定角度だけ回転させることによって得られる方向を示す直線７８ｄを取得する。なお、この直線７８ｄは、面７０上において仮位置６６から右方向に所定距離だけ移動してなる点８０ｄを通過する直線になる。
【００４３】
［３−２−２］次に、仮位置／仮方向取得部５２が上記の仮方向を取得する場合の仮位置／仮方向取得部５２及び線取得部５４の動作について説明する。
【００４４】
この場合の仮位置／仮方向取得部５２は、キャラクタ４６本体から上記部位（例えば手）への仮方向を、キャラクタ４６の代表方向（例えば正面方向）に基づいて決定する。または、仮位置／仮方向取得部５２は、キャラクタ４６本体から上記部位（例えば手）への仮方向を、キャラクタ４６の位置と壁４４の位置とに基づいて決定する。
【００４５】
図８は、この場合の仮位置／仮方向取得部５２の動作の一例を説明するための図である。例えば、仮位置／仮方向取得部５２は、キャラクタ４６が手を伸ばす方向を決定する。キャラクタ４６が手を伸ばす方向は、例えば、キャラクタ４６の代表方向（例えば正面方向）に基づいて決定される。例えば図８に示すように、キャラクタ４６の正面方向４６ｆ自体がキャラクタ４６が手を伸ばす方向８２として決定される。なお、キャラクタ４６が手を伸ばす方向８２は、キャラクタ４６と壁４４との位置関係に基づいて決定されるようにしてもよい。
【００４６】
その後、仮位置／仮方向取得部５２は、決定された方向８２に伸ばした直線８４が壁４４と交わるか否かを判定する。直線８４が壁４４と交わる場合、仮位置／仮方向取得部５２は、直線８４と壁４４との交点８６と、キャラクタ４６（代表点４６ｏ）と、の間の距離（ｌ）が基準距離以下であるか否かを判定する。ここで、基準距離はキャラクタ４６の手が届く距離に相当する。距離（ｌ）が基準距離以下である場合、仮位置／仮方向取得部５２は、上記決定された方向（直線８４の方向）を、キャラクタ４６本体（代表点４６ｏ）から手への仮方向８８として取得する。
【００４７】
上記のようにして仮方向８８が仮位置／仮方向取得部５２によって取得された場合、線取得部５４は、その仮方向８８に基づいて、キャラクタ４６の代表点４６ｏからオブジェクト（例えば壁４４）に向かって伸びる少なくとも３本の線を取得する。
【００４８】
図９は、この場合の線取得部５４の動作の一例について説明するための図である。例えば、この場合では４つの線を取得する。すなわち、線取得部５４は、キャラクタ４６の代表点４６ｏを回転中心として、仮方向８８を上方向に所定角度だけ回転させることによって得られる方向に伸ばした直線９０ａを取得する。また、線取得部５４は、キャラクタ４６の代表点４６ｏを回転中心として、仮方向８８を下方向に所定角度だけ回転させることによって得られる方向に伸ばした直線９０ｂを取得する。
【００４９】
同様に、線取得部５４は、キャラクタ４６の代表点４６ｏを回転中心として、仮方向８８を左方向に所定角度だけ回転させることによって得られる方向を示す直線９０ｃを取得する。さらに、線取得部５４は、キャラクタ４６の代表点４６ｏを回転中心として、仮方向８８を右方向に所定角度だけ回転させることによって得られる方向を示す直線９０ｄを取得する。
【００５０】
なお、線取得部５４による線の取得方法は上記の方法に限られない。図１０及び図１１は、線取得部５４による線の取得方法の他の一例を説明するための図である。
【００５１】
この場合の線取得部５４は、キャラクタ４６の代表点４６ｏから仮方向８８に伸ばした直線上の点９２を取得する。例えば、この点９２は、上記直線上の点であって、かつ、キャラクタ４６の代表点４６ｏからの距離が所定距離であるような点である。
【００５２】
そして、線取得部５４は、上記点９２と予め定められた位置関係を有する少なくとも３つの点を取得する。例えば図１０に示すように、線取得部５４は、面９４上において上記点９２から左上方向に所定距離（Δｄ）移動してなる点９６ａを取得する。ここで、面９４は、上記点９２を含む面であり、この面９４の法線方向は、上記点９２からキャラクタ４６の代表点４６ｏへの方向（すなわち、仮方向８８の逆方向）と一致している。
【００５３】
また、線取得部５４は、面９４上において上記点９２から左下方向に所定距離（Δｄ）移動してなる点９６ｂを取得する。また、線取得部５４は、面９４上において上記点９２から右上方向に所定距離（Δｄ）移動してなる点９６ｃを取得する。さらに、線取得部５４は、面９４上において上記点９２から右下方向に所定距離（Δｄ）移動してなる点９６ｄを取得する。
【００５４】
そして、図１１に示すように、線取得部５４は、キャラクタ４６の代表点４６ｏから各々の点９６ａ，９６ｂ，９６ｃ，９６ｄへと伸ばした直線（及びその延長線）９８ａ，９８ｂ，９８ｃ，９８ｄを取得する。
【００５５】
［３−３］次に、交点取得部５６について説明する。交点取得部５６は、線取得部５４によって取得された少なくとも３本の線の各々とオブジェクト（例えば壁４４）との交点を取得する。
【００５６】
図１２は、交点取得部５６の動作の一例を説明するための図である。なお、図１２ではキャラクタ４６の右腕及び左腕を省略している。また、図１２において、直線１００ａ，１００ｂ，１００ｃ，１００ｄは、線取得部５４によって取得された４本の直線を示している。すなわち、図１２における直線１００ａ，１００ｂ，１００ｃ，１００ｄは、図６における直線７４ａ，７４ｂ，７４ｃ，７４ｄ、図７における直線７８ａ，７８ｂ，７８ｃ，７８ｄ、図９における直線９０ａ，９０ｂ，９０ｃ，９０ｄや、図１１における直線９８ａ，９８ｂ，９８ｃ，９８ｄに相当している。
【００５７】
図１２に示すように、交点取得部５６は、線取得部５４によって取得された４本の直線１００ａ，１００ｂ，１００ｃ，１００ｄの各々と壁４４との交点１０２ａ，１０２ｂ，１０２ｃ，１０２ｄを取得する。
【００５８】
［３−４］次に、キャラクタ制御部５８について説明する。キャラクタ制御部５８は、交点取得部５６によって取得される少なくとも３つの交点を含む面に基づいて、キャラクタ４６の上記部位（例えば手又は足）の位置を制御する。
【００５９】
図１３は、キャラクタ制御部５８の動作の一例を説明するための図である。例えば、図１３に示すように、キャラクタ制御部５８は、交点取得部５６によって取得された交点１０２ａ〜１０２ｄを含む面１０４を特定する。例えば、キャラクタ制御部５８は、交点取得部５６によって取得された交点１０２ａ〜１０２ｄをそれぞれ頂点とする面１０４を特定する。
【００６０】
そして、図１３に示すように、キャラクタ制御部５８は、特定された面１０４にキャラクタ４６の一方の手が触れるように、キャラクタ４６の一方の手の位置を制御する。例えば、キャラクタ制御部５８は、キャラクタ４６の右手の位置を面１０４の代表点１０４ｏ（例えば、重心点又は中心点）に設定する。なお、この場合、キャラクタ制御部５８は、右手の位置に基づいて、右手のスケルトン以外の他のスケルトンの状態を決定し、キャラクタ４６の姿勢を制御する。右手のスケルトンよりも上位の階層の各スケルトンの状態を決定する場合には、例えばインバースキネマティクス法のアルゴリズムが用いられる。
【００６１】
［３−５］次に、画像生成部６０について説明する。画像生成部６０は、視点から見たキャラクタ４６及びオブジェクト（例えば壁４４）を表す画像を生成する。すなわち、画像生成部６０は、仮想カメラ４８から見た仮想空間４０を表す画像を生成する。
【００６２】
［４．処理］
次に、仮位置／仮方向取得部５２、線取得部５４、交点取得部５６、キャラクタ制御部５８、及び画像生成部６０を実現するための処理について説明する。図１４は、キャラクタ４６に壁４４を触らせる場合にゲーム装置１０が実行する処理の一例を示すフロー図である。図１４に示す処理を制御部１４が実行することによって、上記機能ブロックが実現される。また、制御部１４は光ディスク３６に記憶されるプログラムに従って、図１４に示す処理を実行する。
【００６３】
図１４に示すように、まず、制御部１４（仮位置／仮方向取得部５２）は、キャラクタ４６に対応する球６２が壁４４に当たる否かを判定する（Ｓ１０１）。例えば図４に示したように、中心点がキャラクタ４６の代表点４６ｏに設定され、かつ、半径が所定距離（ｒ）に設定された球６２が壁４４に当たるか否かが判定される。
【００６４】
球６２が壁４４に当たる場合、制御部１４（仮位置／仮方向取得部５２）は、キャラクタ４６の手の仮位置６６を決定する（Ｓ１０２）。例えば図４に示したように、球６２と当たる壁４４の領域内でキャラクタ４６に最も近い位置６４が仮位置６６として決定される。なお、仮位置６６がキャラクタ４６の正面方向よりも左側にある場合、キャラクタ４６は左手で壁４４に触ることになる。一方、仮位置６６がキャラクタ４６の正面方向よりも右側にある場合、キャラクタ４６は右手で壁４４に触ることになる。
【００６５】
その後、制御部１４（線取得部５４）は、キャラクタ４６の代表点４６ｏから壁４４に向かって伸びる４本の線を、ステップＳ１０２で決定された仮位置６６に基づいて取得する（Ｓ１０３）。例えば図５に示したような、仮位置６６と所定の位置関係を有する４つの点７２ａ，７２ｂ，７２ｃ，７２ｄが取得され、図６に示したように、キャラクタ４６の代表点４６ｏから各々の点７２ａ，７２ｂ，７２ｃ，７２ｄに向かって伸びる直線（及びその延長線）７４ａ，７４ｂ，７４ｃ，７４ｄが取得される。または、例えば図７に示したような、キャラクタ４６の代表点４６ｏから仮位置６６への方向と所定の角度関係を有する直線７８ａ，７８ｂ，７８ｃ，７８ｄが取得される。
【００６６】
その後、制御部１４（交点取得部５６）は、ステップＳ１０３で取得された４本の線の各々と壁４４との交点を取得する（Ｓ１０４）。例えば図１２に示したように、ステップＳ１０３で取得される４本の直線１００ａ，１００ｂ，１００ｃ，１００ｄの各々と壁４４との交点１０２ａ，１０２ｂ，１０２ｃ，１０２ｄが取得される。そして、制御部１４（キャラクタ制御部５８）は、ステップＳ１０４で取得された４つの交点を含む面を特定する（Ｓ１０５）。例えば図１２及び図１３に示したように、４つの交点１０２ａ，１０２ｂ，１０２ｃ，１０２ｄを頂点とする矩形の面１０４が特定される。
【００６７】
その後、制御部１４（キャラクタ制御部５８）は、キャラクタ４６の代表点４６ｏから、ステップＳ１０５で特定された面の代表点まで伸びる直線が該面と交わる前に壁４４と交わるか否かを判定する（Ｓ１０６）。図１５は、このステップＳ１０６の処理について説明するための図である。図１５に示す例では壁４４に突起部分４４ｐが存在している。また図１５に示す例では、キャラクタ４６の代表点４６ｏから面１０４の代表点１０４ｏまで伸びる直線１０６と壁４４との交点１０８が、面１０４の代表点１０４ｏよりもキャラクタ４６に近くなっている。すなわち、上記直線１０６が面１０４と交わる前に壁４４（突起部分４４ｐ）と交わっている。図１５に示す例の場合、ステップＳ１０６の判定結果は「真（Ｙ）」となる。
【００６８】
ステップＳ１０６において上記直線がステップＳ１０５で特定された面と交わる前に壁４４と交わると判定された場合、制御部１４（キャラクタ制御部５８）は、ステップＳ１０５で特定された面の位置を修正する（Ｓ１０７）。図１６は、このステップＳ１０７の処理について説明するための図である。ステップＳ１０７では、ステップＳ１０５で特定された面１０４をキャラクタ４６への方向に平行移動させることによって、面１０４の位置が、上記直線１０６が面１０４と交わる前に壁４４と交わらなくなるような位置に変更される。例えば、面１０４の代表点１０４ｏが、上記直線１０６と壁４４との交点１０８と一致するように、面１０４の位置が変更される。ステップＳ１０６，Ｓ１０７の処理の意義については後述する。
【００６９】
ステップＳ１０７の処理が実行された場合、又は、ステップＳ１０６において上記直線がステップＳ１０５で特定された面と交わる前に壁４４と交わらないと判定された場合、制御部１４（キャラクタ制御部５８）は、ステップＳ１０５で特定された面（又はステップＳ１０７で修正された面）に基づいて、キャラクタ４６の手の位置を決定する（Ｓ１０８）。例えば図１３に示したように、キャラクタ４６の一方の手が面１０４の代表点１０４ｏを触るようにして、キャラクタ４６の手の位置が決定される。つまり、キャラクタ４６の一方の手の位置が面１０４の代表点１０４ｏに設定される。
【００７０】
ここで、ステップＳ１０６，Ｓ１０７の処理の意義について説明する。例えば、図１５に示す例のように、キャラクタ４６の代表点４６ｏから面１０４の代表点１０４ｏまで伸びる直線１０６が面１０４と交わる前に壁４４（突起部分４４ｐ）と交わる場合に、キャラクタ４６の手が面１０４に触れるようにしてしまうと、キャラクタ４６の手が壁４４の内側に入ってしまう。この点、本実施形態では、ステップＳ１０６，Ｓ１０７の処理が実行されることによって、そのような不都合が発生しないように図られている。
【００７１】
ステップＳ１０８においてキャラクタ４６の手の位置が決定された後、制御部１４（キャラクタ制御部５８）は、キャラクタ４６の手の位置に基づいて、キャラクタ４６の全身の姿勢を制御する（Ｓ１０９）。このステップＳ１０９では、例えばインバースキネマティクス法のアルゴリズムが用いられる。
【００７２】
そして、制御部１４（画像生成部６０）は、仮想カメラ４８から見た仮想空間４０を表す画像を生成する（Ｓ１１０）。生成された画像は表示部３２に表示される。以上で本処理は終了する。
【００７３】
なお、ステップＳ１０４において、ステップＳ１０３で取得された線が壁４４と交わらない場合には、ステップＳ１０５〜Ｓ１０９の処理を実行せずに、ステップＳ１１０の処理を実行するようにすればよい。
【００７４】
仮位置／仮方向取得部５２、線取得部５４、交点取得部５６、キャラクタ制御部５８、及び画像生成部６０を実現するための処理は図１４に示した処理に限られない。図１７は、キャラクタ４６に壁４４を触らせる場合にゲーム装置１０が実行する処理の他の一例を示すフロー図である。図１７に示す処理は、ステップＳ１０１〜Ｓ１０３の処理の代わりに、ステップＳ２０１，Ｓ２０２の処理が実行される点で図１４に示す処理と異なる。なお、図１７におけるステップＳ１０３〜Ｓ１１０の処理は図１４と同様である。
【００７５】
図１７に示す処理では、制御部１４（仮位置／仮方向取得部５２）は、キャラクタ４６本体から手への仮方向８８を決定する（Ｓ２０１）。例えば図８に示したように、制御部１４はキャラクタ４６の正面方向４６ｆを上記仮方向８８として決定する。
【００７６】
その後、制御部１４（線取得部５４）は、ステップＳ２０１で決定された仮方向８８に基づいて、キャラクタ４６の代表点４６ｏから壁４４に向かって伸びる４本の線を取得する（Ｓ２０２）。例えば図９に示したような、仮方向８８と所定の角度関係を有する直線９０ａ，９０ｂ，９０ｃ，９０ｄが取得される。または、例えば図１０に示したような、キャラクタ４６の代表点４６ｏから仮方向８８に伸びる直線上の点９２が取得され、その点９２と所定の位置関係を有する４つの点９６ａ，９６ｂ，９６ｃ，９６ｄが取得される。そして、図１１に示したように、キャラクタ４６の代表点４６ｏから各々の点９６ａ，９６ｂ，９６ｃ，９６ｄに向かって伸びる直線９８ａ，９８ｂ，９８ｃ，９８ｄが取得される。
【００７７】
その後、制御部１４（交点取得部５６）は、ステップＳ２０２で取得された４本の線の各々と壁４４との交点を取得する（Ｓ１０４）。ステップＳ１０４以降の処理は、図１４と同様である。
【００７８】
［５．まとめ］
以上に説明したゲーム装置１０によれば、キャラクタ４６がオブジェクト（例えば壁４４）に触る様子を表す画像を生成できるようになる。
【００７９】
ところで、キャラクタ４６が壁４４に触る様子を表す画像を生成する方法としては、下記に説明するような方法も考えられる。図１８及び図１９は、この方法について説明するための図であり、仮想空間４０を真上から見た様子を表している。
【００８０】
この方法では、キャラクタ４６に対応する球６２が壁４４に当たる場合、球６２と当たった壁４４の法線ベクトルを取得する（図１８参照）。言い換えれば、すなわち、キャラクタ４６から所定距離（ｒ）以下の領域内に一又は複数の壁４４が存在する場合、それらの壁４４の法線ベクトルを取得する。図１８に示す例の場合、球６２と当たった壁４４ａの法線ベクトルＮａと、球６２と当たった壁４４ｂの法線ベクトルＮｂと、を取得する。
【００８１】
その後、取得された法線ベクトルＮａ，Ｎｂの平均ベクトルＮを取得する（図１９参照）。そして、この平均ベクトルＮに基づいて、キャラクタ４６の姿勢（手の位置）を制御する。例えば、図１９に示すような面１１０を触るように、キャラクタ４６の姿勢（手の位置）を制御する。その後、仮想カメラ４８から見た仮想空間４０を表す画像を生成する。このようにしても、キャラクタ４６が壁４４を触る様子を表す画像を生成することができる。
【００８２】
しかしながら、この方法を用いた場合、下記に説明するような問題がある。例えば、球６２が２つの壁４４ａ，４４ｂが当たる場合には、キャラクタ４６と壁４４ａ，４４ｂとの細かい位置関係に関係なく、常に同じ平均ベクトルＮが取得され、その平均ベクトルＮに基づいて、キャラクタ４６の姿勢（手の位置）が制御される。その結果、キャラクタ４６と壁４４ａ，４４ｂとの位置関係によっては、キャラクタ４６の姿勢が不自然になってしまう場合がある。
【００８３】
また、例えば、多数の壁４４の付近にキャラクタ４６が位置しているような場合には、球６２が多数の壁４４に当たることになる。この場合、それらの多数の壁４４の法線ベクトルの平均ベクトルＮが取得されることになる。その結果、平均ベクトルＮが、キャラクタ４６と壁４４との位置関係に合ったものにならない場合がある。このような場合、キャラクタ４６の姿勢が不自然になってしまう。
【００８４】
この点、ゲーム装置１０で採用している方法によれば、上記のような不都合が生じないように図りつつ、キャラクタ４６がオブジェクト（例えば壁４４）を触る様子を表す画像を生成することが可能になる。
【００８５】
［６．変形例］
なお、本発明は以上に説明した実施の形態に限定されるものではない。
【００８６】
例えば、線取得部５４によって取得された線が壁４４と交わらないような場合に限って、図１８及び図１９を用いて説明した方法を用いるようにしてもよい。
【００８７】
また例えば、キャラクタ４６が触れるオブジェクトは壁４４に限られず、壁４４以外のオブジェクトであってもよい。また、キャラクタ４６が触れるオブジェクトは、位置、姿勢や形状が変化しない静的オブジェクトに限られず、位置、姿勢や形状が変化する動的オブジェクトであってもよい。
【００８８】
また例えば、キャラクタ４６がオブジェクトに触れるために用いる部位は手に限らず、手以外の部位（例えば足）であってもよい。
【００８９】
また例えば、本発明はゲーム装置１０以外の画像処理装置にも適用することができる。
【符号の説明】
【００９０】
１０  ゲーム装置、１１  家庭用ゲーム機、１２  バス、１４  制御部、１６  主記憶、１８  画像処理部、２０  入出力処理部、２２  音声処理部、２４  光ディスク読み取り部、２６  ハードディスク、２８  通信インタフェース、３０  コントローラ、３２  表示部、３４  音声出力部、３６  光ディスク、４０  仮想空間、４２  床オブジェクト、４４  壁オブジェクト、４６  キャラクタオブジェクト、４８  仮想カメラ、５０  データ記憶部、５２  仮位置／仮方向取得部、５４  線取得部、５６  交点取得部、５８  キャラクタ制御部、６０  画像生成部。
【図１】
2011186689.tif 000003
【図２】
2011186689.tif 000004
【図３】
2011186689.tif 000005
【図４】
2011186689.tif 000006
【図５】
2011186689.tif 000007
【図６】
2011186689.tif 000008
【図７】
2011186689.tif 000009
【図８】
2011186689.tif 000010
【図９】
2011186689.tif 000011
【図１０】
2011186689.tif 000012
【図１１】
2011186689.tif 000013
【図１２】
2011186689.tif 000014
【図１３】
2011186689.tif 000015
【図１４】
2011186689.tif 000016
【図１５】
2011186689.tif 000017
【図１６】
2011186689.tif 000018
【図１７】
2011186689.tif 000019
【図１８】
2011186689.tif 000020
【図１９】
2011186689.tif 000021