(57)【要約】【課題】画面の地形に合わせたカメラの角度位置を得ることができ、上り坂の地形では遠くを見通す構図や下り坂，崖などでは足元を見やすくする構図にカメラの撮影画面を制御するカメラ制御方法および該カメラ制御を取り入れたＣＧゲーム装置を提供する。【解決手段】プレイヤの位置に対し、カメラ位置はプレイヤの後ろに設定される。カメラ位置からプレイヤの頭部を通って距離Ｌの位置である注視点チェック位置と地面と離れているか、交差している場合、カメラの角度が調整され、カメラ位置も修正される。画面は地平線が中央になるように制御される。【選択図】図１Ａ
2008132014.tif 000002
【特許請求の範囲】
【請求項１】
画面中を移動するキャラクタに対し、所定の位置から前記キャラクタを撮影した画像をモニタ画面に表示するＣＧ画面の制御方法において、
操作部からキャラクタの位置を移動させる操作がなされた場合、操作量に応じた位置にキャラクタを移動させ、
前記キャラクタの移動位置に対応して所定位置に追従設置されるようにカメラを設定し、
前記カメラ設置位置とキャラクタを結ぶ延長上の線分であって、前記キャラクタから所定距離の線分先端が画面上の地形面に対し交差しているか否かを判断し、
前記線分先端が前記地形面に対し略一致する位置になるように前記カメラの光軸を前記キャラクタに対し回転制御することを特徴とするカメラ制御方法。
【請求項２】
前記交差しているか否かの判断は所定の時間間隔で行い、交差していない場合には交差する方向に所定の角度だけカメラの光軸を回転させ、この動作を繰り返して前記地形面に対し略一致する位置になるまで制御することを特徴とする請求項１記載のカメラ制御方法。
【請求項３】
前記所定の角度ずつカメラの回転制御を繰り返し、前記線分先端が地形面に交差したとき、交差する前のカメラの回転位置に戻すことを特徴とする請求項２記載のカメラ制御方法。
【請求項４】
画面中を移動するキャラクタに対し、所定の位置から前記キャラクタを撮影した画像をモニタ画面に表示するＣＧゲーム装置において、
操作部の操作にしたがってキャラクタを移動させるキャラクタ移動手段と、
前記キャラクタの移動に従ってキャラクタを視界に捕らえるためのカメラ位置設定手段と、
前記カメラ位置とキャラクタを結ぶ延長上の線分であって、前記キャラクタから所定距離の線分先端が画面上の地形面に対し交差しているか否かを判断し、前記線分先端が前記地形面に対し略一致する位置になるように前記カメラの光軸を前記キャラクタに対し回転制御する制御手段とを有し、
前記キャラクタの移動と地形の変化に対応し、前記カメラからの視界が前記キャラクタを含めつつ空の部分と地形部分を所定の割合で画面に表示することを特徴とするＣＧゲーム装置。
【請求項５】
前記制御手段は、交差しているか否かの判断を所定の時間間隔で行い、交差していない場合には交差する方向に所定の角度だけカメラの光軸を回転させ、この動作を繰り返して前記地形面に対し略一致する位置になるまで制御することを特徴とする請求項４記載のＣＧゲーム装置。
【請求項６】
前記制御手段は、所定の角度ずつカメラの回転制御を繰り返し、前記線分先端が地形面に交差したとき、交差する前のカメラの回転位置に戻すことを特徴とする請求項５記載のＣＧゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＧ（コンピュータグラフィック）ゲームにおける３人称カメラの制御で、地形に合わせた視線を得るカメラ制御を行うことができるカメラ制御方法およびこのカメラ制御を取り入れたＣＧゲーム装置に関する。ここで「３人称カメラ」とは、画面上に現れる任意のキャラクタに対し、所定の位置関係で配置され、キャラクタを含む視界を撮影して画面として表示するカメラと定義する。
【背景技術】
【０００２】
ＣＧゲームなどにおいて３人称カメラ位置を主体キャラクタに対し変化させるカメラ位置を制御するゲーム装置が提案されている。
その１つとしてキャラクタの移動速度に合わせてカメラの軸を制御する３次元ゲーム装置が開示されている（特許文献１）。
これは、３次元ゲーム装置において移動体を操作情報に基づき移動させる場合、追従する位置に仮想カメラを設定し、この仮想カメラから見た視界画像を合成するものである。カメラの視点設定部は移動体を基準としたＸ，Ｙ，Ｚの３軸方向の少なくとも一軸成分を視点移動制御方向として、視点移動制御方向への移動体の速度成分を制御関数として仮想カメラの視点位置を移動制御している。
【０００３】
一般のカメラ制御では、例えば、下りの坂道を下りる場合、カメラを通常より少し下に向けて先まで見通せるようにする必要があるが、この点については特許文献１におけるカメラ制御は、坂を下りている場合は下方向に移動するので、カメラの軸は下方向に向けることが可能である。しかしながら下り始めるまでは上下方向の移動がないので下方向にはカメラが向くことがない。下りの坂道にさしかかった所でカメラには下を向かせる必要があるがそのような制御はできない。
例えば、オートレースのバイクに追従してカメラ位置をＺ軸方向に移動する場合、バイクが横方向（Ｘ軸方向）にΔＸだけ速度を変化させたとき、カメラの視点位置をＸ軸方向に移動させ画面の中心より速度変化した方向にバイクを移動させて表示する。また、ジャンプなどで上方向（Ｙ軸方向）にΔＹだけ速度を変化させたとき、カメラの視点位置をＹ軸方向に移動させ画面の中心より上方向にバイクを移動させて表示し、臨場感を表現しているが、上述のように坂の上り下りなどに対してのカメラのピッチ軸の回転変化を行うものではない。
【０００４】
また、カメラを向ける目標との距離に応じてカメラ位置を変える方法が開示されている（特許文献２）。
これは、プレーヤキャラクタと他のキャラクタとの位置関係に係る視認性を高めることを目的とし、視線方向はプレーヤキャラクタＰＣと標的キャラクタＴＣとの中間位置を向くように制御し、プレーヤキャラクタＰＣと標的キャラクタＴＣとのライン差が大きくなるにつれて仮想カメラの俯角が大きくなるように制御するものである。
プレーヤキャラクタＰＣと標的キャラクタの距離に対応してカメラの俯角を制御するものであるが、プレーヤキャラクタＰＣと標的キャラクタが画面上に良好に入るように画面表示し、背景画との関係でキャラクタが進行すべき視界を適正にするものではない。
【特許文献１】特開平１１−１４６９７８号公報
【特許文献２】特開２００６−８７６００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
通常、プレイヤはゲームに登場する主人公キャラクタを操作して背景画面の中を移動制御するため、主人公キャラクタが進むべき遠方が明瞭に判別できる表示がなされることが要請される。
【０００６】
本発明は上記要請に応えるもので、その目的は、画面の地形に合わせたカメラの角度位置を得ることができ、上り坂の地形では遠くを見通す構図や下り坂，崖などでは足元を見やすくする構図にカメラの撮影画面を制御するカメラ制御方法および該カメラ制御を取り入れたＣＧゲーム装置を提供することにある。
【課題を解決するための手段】
【０００７】
前記目的を達成するために本発明の請求項１は、画面中を移動するキャラクタに対し、所定の位置から前記キャラクタを撮影した画像をモニタ画面に表示するＣＧ画面の制御方法において、操作部からキャラクタの位置を移動させる操作がなされた場合、操作量に応じた位置にキャラクタを移動させ、前記キャラクタの移動位置に対応して所定位置に追従設置されるようにカメラを設定し、前記カメラ設置位置とキャラクタを結ぶ延長上の線分であって、前記キャラクタから所定距離の線分先端が画面上の地形面に対し交差しているか否かを判断し、前記線分先端が前記地形面に対し略一致する位置になるように前記カメラの光軸を前記キャラクタに対し回転制御することを特徴とする。
本発明の請求項２は請求項１記載の発明において前記交差しているか否かの判断は所定の時間間隔で行い、交差していない場合には交差する方向に所定の角度だけカメラの光軸を回転させ、この動作を繰り返して前記地形面に対し略一致する位置になるまで制御することを特徴とする。
本発明の請求項３は請求項２記載の発明において前記所定の角度ずつカメラの回転制御を繰り返し、前記線分先端が地形面に交差したとき、交差する前のカメラの回転位置に戻すことを特徴とする。
本発明の請求項４は画面中を移動するキャラクタに対し、所定の位置から前記キャラクタを撮影した画像をモニタ画面に表示するＣＧゲーム装置において、操作部の操作にしたがってキャラクタを移動させるキャラクタ移動手段と、前記キャラクタの移動に従ってキャラクタを視界に捕らえるためのカメラ位置設定手段と、前記カメラ位置とキャラクタを結ぶ延長上の線分であって、前記キャラクタから所定距離の線分先端が画面上の地形面に対し交差しているか否かを判断し、前記線分先端が前記地形面に対し略一致する位置になるように前記カメラの光軸を前記キャラクタに対し回転制御する制御手段とを有し、前記キャラクタの移動と地形の変化に対応し、前記カメラからの視界が前記キャラクタを含めつつ空の部分と地形部分を所定の割合で画面に表示することを特徴とする。
本発明の請求項５は請求項４記載の発明において前記制御手段は、交差しているか否かの判断を所定の時間間隔で行い、交差していない場合には交差する方向に所定の角度だけカメラの光軸を回転させ、この動作を繰り返して前記地形面に対し略一致する位置になるまで制御することを特徴とする。
本発明の請求項６は請求項５記載の発明において前記制御手段は、所定の角度ずつカメラの回転制御を繰り返し、前記線分先端が地形面に交差したとき、交差する前のカメラの回転位置に戻すことを特徴とする。
【発明の効果】
【０００８】
上記構成によれば、地形の面と視線の先端をヒットチェック（キャラクタから所定延長線上での所定距離先端が地形表面に交差しているか否かのチェック）してカメラの角度（ピッチ角）を制御するので、地形に合わせたカメラの角度を得ることができる。そのため、上り坂では空ではなく、地上を含めた視界位置で見ることができ、また、下り坂，崖などでは地形表示して足元の方を見やすくできる。
【発明を実施するための最良の形態】
【０００９】
まず、本発明によるカメラ制御方法を適用するための手法について説明する。
本発明ではカメラ位置からプレイヤを通った延長線上にあるプレイヤからの距離Ｌの位置と地面などの面との交差判定を行い、交差している場合はカメラの角度を上を見るように変更し、交差していない場合は角度を下げるように変更するが、交差しているか否かのヒットチェックは以下の手法を用いている。
【００１０】
１）まず、入力データを以下の通り定義する。
直線の開始点と終了点の位置情報を（ｘ，ｙ，ｚ） VECTOR start, endとする。
面（３頂点情報による３角形）情報の配列を（ｘ，ｙ，ｚ） VECTOR vertex〔〕とする。
ここでいう VECTOR は（ｘ，ｙ，ｚ）の要素を持つ変数の型を意味する。
以下で用いられる floatは一般的な浮動小数点型の変数の型を意味する。
vertex 〔〕は VECTOR 型の変数の配列を意味する。
上記定義で面を３角形にしたのは、一般的に３角形でヒットデータを持っていることが多いためである。４角形であると曲がった面ができる可能性があり不都合が生じる場合がある。
【００１１】
２）面の頂点情報より面の法線データを作成し面の方程式を得る。
面の方程式は    ax + by + cz + d = 0・・・（１）である。
つぎに面の頂点データより面を構成する２つの直線のベクトルを求める。
VECTOR vec1 = vertex[1] - vertex[0] ・・・（２）
VECTOR vec2 = vertex[2] - vertex[0] ・・・（３）
さらに法線データ normal を外積を使って求める。
VECTOR normal = vec1Ｘ vec2 ・・・（４）
（４）式の normal の x,y,zが（１）式の a,b,cに相当する。なおＸは外積計算を意味する。ｄは定数である。
ついで、面の方程式より dを求める。
（１）式よりd = -(ax + by + cz) であるから、
d = -(vertex[0].x * normal.x + vertex[0].y * normal.y + vertex[0].z * normal.z) ・・・（５）となる。
【００１２】
３）直線の方程式より２）で求めた面と直線の交点を求める。
直線は最初の位置と方向ベクトル（vec)、媒介変数（t)でもって表されるので、まず面と直線が交わる媒介変数（t)を求める。
そのために、入力データ startの各要素（ｘ，ｙ，ｚ）を（１）式の面の方程式のｘ，ｙ，ｚに代入して求めた値float q を、end - start のベクトルVECTOR aと（４）式の法線データ normal の内積の結果で割る。
（１）式に、start.x ,start.y,start.zおよびnormal.x, normal.y,normal.z を代入すると、
float q = (start.x * normal.x + start.y * normal.y + start.z * normal.z + d)    ・・・（６）
VECTOR a = (end - start)・・・（７）であり、
end - start のベクトルと法線データ normal の内積float b は  
float b = a ・(normal)・・・（８）となる。
したがって、媒介変数（t)は
float t = q/b ・・・（９）となる。
なお(end - start) はベクトルの引き算であり，・は内積計算を意味する。
上記計算において、b ＝０になった場合は、面と直線が平行になっていることを意味するので、交わることが無いことが確定する。
また、 tが 0 <= t <= 1以外のときは面が裏向きの場合か、交差していない場合などで、これもヒットの対象から外す。
【００１３】
このようにして（９）式より媒介変数（t)を求めた後、直線の方程式より面と直線の交点を求めることになる。
交点ｐは、
VECTOR p = a * t + start・・・（１０）
ここで a * tは VECTOR a の各要素に媒介変数 tを掛けることを意味する。
（１０）式は無限の大きさを持つ場合の面と直線との交点ｐを求めるものである。
【００１４】
４）つぎに３）で求めた交点ｐは３角形の面の中を通っているのか、外を通っているかを調べる。
３）で求めた（１０）式の交点ｐは直線が無限大の面に交差している点であり、実際にチェックするべき３角形の面の中に存在しない可能性がある。そのため、３角形の中に存在するか否かを調べる。
そのためには、３）で求めた交点と３角形の各頂点を使って外積を求める。
・一つ目の頂点は
VECTOR vec1 = vertex[0] - p 
VECTOR vec2 = vertex[1] - vertex[0] 
VECTOR vec3-1 = vec1Ｘ vec2       である。
・二つ目の頂点は
VECTOR vec1 = vertex[1] - p 
VECTOR vec2 = vertex[2] - vertex[1] 
VECTOR vec3-2 = vec1Ｘ vec2       である。
・三つ目の頂点は
VECTOR vec1 = vertex[2] - p 
VECTOR vec2 = vertex[0] - vertex[2] 
VECTOR vec3-3 = vec1Ｘ vec2       である。
【００１５】
上記３頂点分すべて同じ向きであれば、３）で求めた交点は３角形の内部に存在する。
各頂点の向きを比べる方法は、２）で求めたベクトル normal との内積を計算する方法がある。今回、求めるベクトルは、２）で求めたベクトル normal と同じ向きか１８０°反対の向きのベクトルになるためである。
２）で求めたベクトル normal との内積の符号を比べて、すべて同じ符号であるならば３）で求めた交点は３角形の内部に存在することになる。
２）で求めたベクトル normal との内積は以下のようになる。
float nn1 = vec3-1 ・ normal   ・・・（１１）
float nn2 = vec3-2 ・ normal   ・・・（１２）
float nn3 = vec3-3 ・ normal   ・・・（１３）
したがって上記（１１）（１２）（１３）式の符号を調べることによって交点ｐが３角形の内部に存在するか否かを判別できる。
【００１６】
つぎにプレイヤの位置とカメラ角度からカメラ位置を求めるための行列式を説明する。回転行列式は後述のカメラ位置を求める演算のときに用いられるものである。
ここでは３行３列の行列を説明する。ＣＧの計算では４行４列の行列を使うことがあるが、回転の計算に影響を及ぼすのはこの部分であるので、３行３列とした。
Ｘ軸の回転角度をＲｘ、Ｙ軸の回転角度をＲｙ、Ｚ軸の回転角度をＲｚとした時の各軸の回転は以下のようになる。
【００１７】
・Ｘ軸の回転
2008132014.tif 000003
・・・（１４）
・Ｙ軸の回転
2008132014.tif 000004
・・・（１５）
・Ｚ軸の回転
2008132014.tif 000005
・・・（１６）
【００１８】
これらを掛け合わせて回転行列を作成する。掛け合わせる順番により大きく結果が異なるが、掛け合わせる順番はシステム，ライブラリによって変わってくる。
今回はＸ，Ｙ，Ｚの順番に掛けたものを説明する。
上の sin,cosを用いた式で説明すると見難くなるので、簡易版にて説明する。
行列の各要素に番号を与える。
2008132014.tif 000006
・・・（１７）
? には各軸の記号を入れて表す。例えば、Ｘ軸の行列の要素は、Xm00,Xm01,Xm12,Xm10 ・・・
Ｙ軸の行列の要素は、Ym00,Ym01,Ym12,Ym10 ・・・といった様にである。
【００１９】
まず、Ｘ軸の回転行列とＹ軸の回転行列を掛け合わせる。
掛け合わせた回転行列ＸＹの各要素は、
XYm00 = Xm00 * Ym00 + Xm01 * Ym10 + Xm02 * Ym20 
XYm01 = Xm00 * Ym01 + Xm01 * Ym11 + Xm02 * Ym21 
XYm02 = Xm00 * Ym02 + Xm01 * Ym12 + Xm02 * Ym22 
XYm10 = Xm10 * Ym00 + Xm11 * Ym10 + Xm12 * Ym20 
XYm11 = Xm10 * Ym01 + Xm11 * Ym11 + Xm12 * Ym21 
XYm12 = Xm10 * Ym02 + Xm11 * Ym12 + Xm12 * Ym22 
XYm20 = Xm20 * Ym00 + Xm21 * Ym10 + Xm22 * Ym20 
XYm21 = Xm20 * Ym01 + Xm21 * Ym11 + Xm22 * Ym21 
XYm22 = Xm20 * Ym02 + Xm21 * Ym12 + Xm22 * Ym22 
2008132014.tif 000007
・・・（１８）
となる。この結果とＺ軸の回転行列を同様に掛け合わせることにより最終的な回転行列を得ることが出来る。
【００２０】
つぎに図１Ａを用いてカメラ位置，カメラ角度，プレイヤ位置および注視（注目）点チェック位置に対し上記手法の取り入れ方法を説明する。
図１Ａに示すようにカメラの位置を（camera pos(x,y,z))，カメラ角度を（camera angle(x,y,z))，画面の中心に持っていきたい点、すなわち３人称の場合、プレイヤキャラクタの頭部または頭部より少し上になる位置を（player pos(x,y,z))，camera posから player pos を通過しcamera angle方向に伸びる直線の、player posから距離Ｌの長さにある点すなわち注視点チェック位置を（check pos(x,y,z)) とする。
【００２１】
カメラは通常プレイヤキャラクタを画面内に収めるように位置と角度が決定される。
カメラはこの固定された位置からプレイヤキャラクタを見るように角度を変更しても良いし、プレイヤキャラクタの移動に合わせて位置を移動しても良い。本発明によるＣＧゲーム機ではプレイヤが操作部によって固定された位置からカメラ角度を変えることができる。また、カメラとプレイヤキャラクタとは常に所定の位置関係になるようにＣＧゲーム機で設定されていれば、プレイヤの移動に従ってカメラ位置も移動する。
(i) まず、決定すべき点は、プレイヤキャラクタの位置player posである。これはプレイヤの操作部による入力などで操作され、操作情報の演算の結果、プレイヤキャラクタの位置が決定される。
(ii)次にカメラの角度camera angleを決定する。プレイヤの操作等からカメラの角度を変更する場合と、前回の演算結果を利用する場合がある。
【００２２】
(iii) 次にカメラの位置を決定する。カメラの位置はプレイヤキャラクタの位置とカメラの角度から求められる。プレイヤキャラクタから距離Ｌｐ離した位置をカメラの位置camera posとする。
カメラの位置camera posは、カメラのＸ軸，Ｙ軸およびＺ軸の角度（式（１４）（１５））を掛け合わせて回転行列ＸＹを作り、これにＺ軸の回転行列（式（１６））を掛け合わせてＸ軸，Ｙ軸およびＺ軸の回転行列を作り、これにＬｐをベクトル成分として掛け合わせることにより求めることができる。
(iｖ) 次に地形と視線のヒットチェックを行う点check pos を求める。プレイヤキャラクタの位置からカメラの位置への逆ベクトルになるので、これも容易に求めることができる。
【００２３】
(v) 次に地形の面と視線のヒットチェックを行う点check pos とのヒットチェックを行う。
これは、上記１）２）３）４）の手法を用いてチェックすることができる。このときplayer pos（ｘ，ｙ，ｚ）は VECTOR start に，check pos （ｘ，ｙ，ｚ）は VECTOR  endにそれぞれ対応して演算されることとなる。３）４）の交点を求めて、交点が３角形の中か外かの判定で、check pos とplayer posを結ぶ線分と地形の面が交差していれば、check pos が地形に入り込んでいるので、カメラの角度が上を見るように変更される。
もし、交わっていなければ、地形より浮いているので、カメラの角度が下を見るように変更される。
この処理をそのまま繰り返すと、地形と境界線上で毎回上下に変更するようになるので、地形に入り込んでいる時、または、地形から浮いている時どちらか片方で、変更後のカメラの角度でもう一度ヒットチェックを行い、ヒットチェックの結果が変わった場合は変更したカメラの角度を使わないで、変更前のカメラの角度に戻すように処理を行う。
【００２４】
つぎに、本発明の実施の形態を詳しく説明する。
図１Ｂは、本発明によるカメラ制御方法を用いたＣＧゲーム装置の外観を示す斜視図である。このＣＧゲーム装置１は家庭用ゲーム機であり、プレイヤはパッド２の各ボタン，方向選択ボタンなどを操作することによりモニタ３に表示されている画面上のキャラクタを移動させたり、種々の動作を行わせたりしてゲームを進行させることができる。
このゲームは主人公キャラクタ４が斜面５を登っている状態が示されており、斜面５と空６の部分が画面の略中央になるようにカメラ位置制御されており、プレイヤは背景画の前方を良く見通すことができる視界を得ている。
【００２５】
図２は本発明によるカメラ制御方法を用いたＣＧゲーム装置の回路の実施の形態を示す回路ブロック図である。
家庭用ゲーム機１は、ＣＰＵ１０，画像処理回路１１，メインバス１３，メモリ回路１４，外部記憶装置１６，サウンド処理回路１７およびスピーカ１８より構成されている。  外部記憶装置１６はＣＤ−ＲＯＭ，カード，ＤＶＤなどのメディアを装着してなる記憶部で、メディアにはゲームプログラムおよびそのデータを格納している。
ゲームプログラムはゲームを開始するための画面を表示させるゲーム開始起動ステップ，プレイヤからの移動操作などを受けてキャラクタ位置を移動させるゲーム操作ステップ，キャラクタ位置に対応しキャラクタ位置から所定の位置にカメラを設置するカメラ位置設定ステップ，プレイヤの操作に応じてゲーム処理を行うゲーム進行処理ステップ，カメラとキャラクタを結ぶ延長線であってキャラクタから所定距離の線分が地形の表面と交差するか否かをチェックする衝突チェックステップ，衝突チェックで、所定距離の線分と地形の表面が一致（接触）しない場合、一致する方向にカメラのピッチを回転制御するカメラ角度調整ステップを含んでいる。
メモリ回路１４はＣＰＵ１０が処理を行う作業領域として用いられる他、演算結果などのデータを一時的に格納するＲＡＭと、装置全体の制御を司る制御プログラムおよびそれに関連するデータを格納するＲＯＭを備えたものである。
【００２６】
画像処理回路１１は、ＣＰＵ１０で演算処理された画像データを受信し、ＣＲＴ３で表示するイメージデータに変換するものである。
サウンド処理回路１７は、ＣＰＵ１０で演算処理されたサウンドデータを受信し、アナログ音声に変換しスピーカ１８より背景音や音声などのサウンドを出力する。
ＣＰＵ１０は、ＲＯＭより制御プログラムを読み出し、装置全体の制御を行う機能を有する。外部記憶装置１６に例えばＣＤ−ＲＯＭが装着された場合、ＣＰＵ１０はＣＤ−ＲＯＭのゲームプログラムを読み込み最初にゲーム開始の画面をＣＲＴに表示させる。
ＣＰＵ１０では制御プログラムにより読み込まれたゲームプログラムにより、上記ステップの各機能を実現する。すなわち、ゲーム開始・進行部１０ａ，ゲーム操作処理部１０ｂ，カメラ位置設定部１０ｃ，衝突チェック部１０ｄおよびカメラ角度調整部１０ｅの各機能を実現する。
【００２７】
図３は、キャラクタを含む画面をカメラ視点から撮影表示する際のカメラの制御方法を説明するための図である。
プレイヤは入力装置（パッド）を操作してキャラクタＣを画面上で移動させることができる。（ａ）は水平の地面ＧＯにキャラクタＣが存在し、キャラクタＣに対し、所定のカメラ角度で後方の所定距離にカメラＶを設定し、カメラからキャラクタの頭部分を通って延長した長さＬの点が地面に略一致するようにカメラの位置とピッチ角を調整した状態を示すものである。
カメラは、（ｂ）に示すように画面の高さｈに対し略１／２位置に地面と空の境界が配置されるように位置とピッチ角が調整される。
【００２８】
キャラクタＣが移動して二点鎖線Ｇ１に示すような下り坂に差しかかった場合、当初のカメラのピッチ角の状態であると、（ｃ）に示すようにキャラクタＣの先の背景は空のみとなる。このような画面を回避するために、キャラクタＣの移動により地形の傾きが変化した場合、（ｂ）の図面になるようにカメラＶの位置とピッチ角を僅かづつ移動・回転制御する。制御方法は僅かずつ修正するのではなく、地形の傾きが非常に大きくなったときにカメラの移動・回転を行うことも可能である。
また、二点鎖線Ｇ２に示すような上り坂に差しかかった場合、当初のカメラの位置とピッチ角の状態であると、（ｃ）に示すようにキャラクタＣの先の背景は空のみとなる。このような画面を回避するために、キャラクタＣの移動により地形の傾きが変化した場合、（ｂ）の図面になるようにカメラＶの位置とピッチ角を僅かづつ移動・回転制御する。制御方法は僅かずつ修正するのではなく、地形の傾きが相当傾いたときにカメラの移動・回転を行うことも可能である。
【００２９】
図４は、図１ＢのＣＧゲーム装置におけるゲームにおけるカメラ制御の流れを説明するためのフローチャートである。
ゲーム内ではプレイヤが入出力装置（パッド）２のボタン操作することにより操作情報がＣＰＵ１０に送られる。ゲーム操作処理部１０ｂは入力した操作情報に基づき例えばキャラクタの移動であれば、キャラクタを操作情報に対応した分移動させ、その画像がＣＲＴ３に表示される。カメラ位置設定部１０ｃはキャラクタ（頭位置または頭の僅かに上位置）から距離Ｌｐ離れた位置であって、水平面に対しピッチ角θｈになるようにカメラを設定する。水平の地表をキャラクタが移動している限りは、このカメラの位置とキャラクタの位置の相対的関係は保持するようにカメラの位置を移動させる（ステップ（以下「Ｓ」という）００１）。
【００３０】
衝突チェック部１０ｄは、キャラクタから延長される線分のＬの長さの先端（チェック位置）のヒットチェックを行う。すなわち地面に対しチェック位置が交差しているか、または全く交差していないかをチェックする（Ｓ００２）。これは例えば１／６０秒の間隔で行われ、上述したような演算式を使用して行われる。チェックの結果、図５（ａ）に示すように線分Ｌの先端部が交差して地面に入り込んでいる場合、カメラ角度調整部１０ｅは２°上向きの角度修正する（Ｓ００３）。そしてカメラの角度を調整する（Ｓ００４）。これに伴い、カメラ位置もカメラ角度に沿った位置となる。
【００３１】
一方、チェックの結果、図６（ａ）に示すように線分Ｌの先端部が交差せず地面から離れている場合、カメラ角度調整部１０ｅは１回のチェックで２°下向きの角度修正する（Ｓ００４）。そして注視点が地面に交差したか否かをチェックする（Ｓ００５）。注視点が地面に交差する位置に達っていると、１つ手前のチェック位置に戻り（Ｓ００６）、カメラをその角度位置に調整する（Ｓ００７）。それに伴いカメラ位置もカメラ角度に沿った位置となる。
このような動作の後、ゲームオーバーでなければ、再度Ｓ００１からＳ００２に戻り、同様な動作を繰り返し行う。この結果、注視点が地面から交差しない位置になった場合、１／６０秒間隔で２°づつカメラのピッチ角が地面から交差する方向に制御され、図６（ｂ）のように適正な視界を得られる位置にもたらされる。また、注視点が地面から交差する位置になった場合、１／６０秒間隔で２°づつカメラのピッチ角が地面から交差しない方向に制御され、図５（ｂ）のような適正な視界を得られる位置にもたらされる。
【００３２】
図７は、図４のフローチャートとは異なるカメラ制御方法を説明するためのフローチャートである。図４のフローチャートではカメラの角度２°づつ変更する場合について説明したが、この例はカメラの角度を１回の処理で確定させるものである。
Ｓ１０１はＳ００１と同じ処理であり、カメラの位置とキャラクタの位置の相対的関係は保持するようにカメラの位置を移動させる
衝突チェック部１０ｄは、キャラクタから延長される線分のＬの長さの先端（チェック位置）のヒットチェックを行う。すなわち地面に対しチェック位置が交差しているか、または全く交差していないかをチェックする（Ｓ１０２）。
【００３３】
チェックの結果、図５（ａ）に示すように線分Ｌの先端部が交差して地面に入り込んでいる場合、カメラ角度調整部１０ｅはカメラ角度を上を見るように修正する（Ｓ１０３）。そして再度、Ｓ１０２でヒットチェックを行い、交差しているならば、連続してカメラの角度を上を見るように変更する。チェックの結果、図６（ａ）に示すように線分Ｌの先端部が交差せず地面から離れている位置になった場合は、カメラ角度調整部１０ｅは下向きの角度修正する（Ｓ１０４）。そして注視点が地面に交差したか否かをチェックし（Ｓ１０５）、交差していない場合はカメラの角度位置を下に見るように変更する（Ｓ１０５）。このようにして、注視点が地面に交差する位置に達っすると、１つ手前のチェック位置に戻り（Ｓ１０６）、カメラをその角度位置に調整する（Ｓ１０７）。それに伴いカメラ位置もカメラ角度に沿った位置となる。
【００３４】
以上の実施の形態は家庭用ゲーム機について適用した例を説明したが、業務用ゲーム機，携帯ゲーム機，オンラインゲーム機などにも同様に適用できるものである。
また、注視点チェック動作を１／６０秒間隔で行う例について説明したが、他の時間の間隔、例えば１／３０秒，１／２０秒などでチェックすることも可能である。１回のチェックでピッチ角を２°づつ修正しているが、この角度も他の角度、例えば１°，３°づつ修正しても良い。修正方法として注視点が地面に略一致する位置までの角度単位で修正することも可能である。例えば、水平面から崖の縁の部分に移動した場合、小さい角度単位で修正するのでは、崖に立ったときの適正な画面を表示する時間がかかるため、このような場合には大きな角度でカメラ位置を修正することが必要である。
【産業上の利用可能性】
【００３５】
家庭用ゲーム機，業務用ゲーム機，携帯ゲーム機，オンラインゲーム機などに適用でき、地形に合わせた視線を得て画面表示するカメラ制御を取り入れたＧＣゲーム装置である。
【図面の簡単な説明】
【００３６】
【図１Ａ】カメラ位置，カメラ角度，プレイヤ位置および注視点チェック位置に対し上記手法の取り入れ方法を説明するための図である。
【図１Ｂ】本発明によるカメラ制御方法を用いたＣＧゲーム装置の外観を示す斜視図である。
【図２】本発明によるカメラ制御方法を用いたＣＧゲーム装置の回路の実施の形態を示す回路ブロック図である。
【図３】キャラクタを含む画面をカメラ視点から撮影表示する際のカメラの制御方法を説明するための図である。
【図４】図１のカメラ制御方法の流れを説明するためのフローチャートである。
【図５】画面を覆って視界が不良の場合のカメラの視界位置を良好にする例を説明するための図である。
【図６】足元が見えず視界が不良の場合のカメラの視界位置を良好にする例を説明するための図である。
【図７】図４のフローチャートとは異なるカメラ制御方法を説明するためのフローチャートである。
【符号の説明】
【００３７】
１  ＣＧゲーム装置  
２  入力装置（パッド）
３  モニタ（ＣＲＴ）
１０  ＣＰＵ
１１  画像処理回路  
１３  メインバス
１４  メモリ回路
１６  外部記憶装置
１７  サウンド処理回路
１８  スピーカ
【図１Ａ】
2008132014.tif 000008
【図１Ｂ】
2008132014.tif 000009
【図２】
2008132014.tif 000010
【図３】
2008132014.tif 000011
【図４】
2008132014.tif 000012
【図５】
2008132014.tif 000013
【図６】
2008132014.tif 000014
【図７】
2008132014.tif 000015