(57)【特許請求の範囲】
【請求項１】
入力装置からの操作信号に基づいて仮想空間内での車のタイヤの回転をシミュレートして表示装置に表示させる画像処理方法において、
操作信号に基づいて前記車のタイヤの回転数を算出する工程と、
前記算出した回転数と、遊技者に逆回転する映像を与えない回転数として予め定められた最大回転数Ｒmaxとを比較する工程と、
前記比較の結果、前記算出した回転数が最大回転数Ｒｍａｘ以上である場合に、前記車のタイヤの回転数を最大回転数Ｒｍａｘに決定する工程と、
テクスチャを前記タイヤに貼り付ける工程と、
前記決定した回転数に基づき、前記テクスチャを回転させる工程と、
を備えることを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は画像処理装置に係わり、詳しくはゲーム装置に関するものであり、さらに詳しくは、ドライビング（カーレース）ゲームのように、自動車などのオブジェクト（対象体）をプレイヤの操作に応答してモニタ上を移動させるゲ−ムプログラムを搭載したゲーム装置に関する。
【０００２】
【従来の技術】
ゲーム装置はコンピュータ技術の発達に伴い家庭用、業務用を問わず、より鮮明で、よりリアルな画像のものが求められている。ゲーム装置は一般に、予め記憶したゲ−ムプログラムを実行するコンピュータ装置を内蔵したゲーム装置本体と、ゲ−ムで表現させるオブジェクトの移動を指令する操作信号をコンピュータ装置に与える操作装置と、コンピュータ装置でゲ−ムプログラムが実行されることによるゲ−ム展開に伴う画像を表示するディスプレイと、そのゲ−ム展開に伴う音響を発生させる音響装置とを備えている。
【０００３】
そして、近年のゲーム装置は、画面をより高品位で迫力があるものにするために、仮想の３次元座標空間内に画像データを定義してオブジェクト（キャラクタ）、そして背景等を配置し、これらを所定の視点から見た映像をディスプレイに表示するようになっている。
【０００４】
このような構成のゲーム装置の一分野として、ドライビングゲーム（カーレースゲーム）を扱うゲーム装置が存在する。ドライビングゲ−ムでは車の動きを極力リアルにシミュレート（模擬）することが求められているし、かつ重要でもある。
【０００５】
従来、このシミュレーションは、重心位置などの１つの質点に車を置き換えた単点モデルを採用している。車（のタイヤ）と地面との当たり（衝突、あるいはコリジョンとも云う。）具合は、その１点でのみ判定し、サスペンションなどの計算は行わずにシミュレーションの簡略化を図っている。このため車のピッチ、ロール、ヨー方向の動きは画面上で全くないか、またはステアリング角が一定値以上になるとドリフトさせるなど、単にある一定条件下での単調な動きに止まっている。
【０００６】
このような単点モデルに拠るシミュレーションは処理が簡単であり、製作者の意図する車の動きを容易に出せるものの、シミュレートされる車の動きにどうしても不自然さが伴い、ゲ−ムとしてはリアリティに欠け、ゲーム装置の付加価値に乏しいという問題がある。
【０００７】
そこで、車を１つの質点と考えるのではなく、４つのタイヤが路面に接してそれぞれ路面から力を受け、その力がサスペンションを介して車体に作用し、その結果、車の動きが決定されるという本格的なシミュレーションをリアルタイムに行い、車の動きを非常にリアルに表現することを可能にしたゲーム装置も考えられている。
【０００８】
【発明が解決しようとする課題】
カーレースゲームを例にすると、対象体の挙動を本格的にシミュレートしようとすると、ハンドルによって選択あるいは指向された方向以外の方向にも通常の運動力学の法則にそって動きを与えることが必要である。例えば、車にスピン、テールスライド、あるいは４輪ドリフト等の動きを与えることが本格的なシミュレーションを実行する上で好ましい。
【０００９】
この際、実際の車のように、４輪の各車輪毎に加わる力等を演算しながら車全体の挙動をシミュレートすることが望ましいと云えるが、これでは、どうしてもＣＰＵに対する計算負荷が増大し、勢いこの計算を確実に行おうとすると他の画像処理が十分実行されないという問題がある。勿論、計算能力を高めたＣＰＵによってこれらの不都合を無くすようにすることも可能であるが、これでは製造コストが増すばかりでなく、計算に要する時間も長くなることがある。また、４輪の各車輪毎に加わる力等を演算するようにするためのプログラム作成に手間を要するという問題もある。
【００１０】
また、遊戯者や操作者からの操作に迅速に応答しなければならない画像処理装置、特にゲーム装置にとっては、計算に要する時間が長くなることは不都合であり、ひいては、ゲーム装置が遊技者や操作者に趣味感や興味感が損なわれるという問題がある。
【００１１】
さらに、従来、この種のゲーム装置においては、対象体である車同士の衝突判定や衝突判定後の各種画像処理をするにあたり、これらの処理を迅速かつ的確に行う点の配慮はされていなかった。
【００１２】
この発明は、このような課題を解決するために、ＣＰＵに与える演算負荷を増すること無く、車両などの対象体の挙動をより実際的にシミュレートして表示することとが可能な画像処理装置を提供することを第１の目的とするものである。また、第２の目的は、対象体の挙動を的確に制御できるモデルを適用した画像処理装置を提供することにある。さらに、第３の目的は、これらの目的を達成することにより、趣味感や興味感に優れたゲーム装置を提供することにある。さらに、第４の目的は衝突判定あるいは衝突判定における画像処理を迅速かつ的確に行える画像処理装置を提供するにある。
【００１３】
【課題を解決するための手段】
前記第２の目的、又は、これに加えて第１の目的を達成するために、請求項４記載の発明は、画面にある対象体の移動に関する操作情報を出力する操作手段と、この操作情報に基づいて前記対象体の挙動をシミュレートし、これを表示手段に出力するシミュレート手段と、を備える画像処理装置において、前記シミュレート手段は、前記対象体が成す挙動に応じて、この対象体を複数の部分からなるモデルとするモデル化手段と、各部分にこの対象体の挙動計算に必要な特性値を与える特性値付与手段とを備えることを特徴とする。また、請求項１記載の発明は、入力装置からの操作信号に基づいて仮想空間内での対象体の挙動をシミュレートして表示装置に表示させる画像処理方法において、複数の部分からなるモデルで構成された前記対象体について、該モデルにおける部分毎に前記対象体の挙動計算に必要な特性値を計算するステップと、前記操作信号と前記計算された特性値とに基づいて前記対象体が特殊挙動を必要とするか否かを判定するステップと、前記対象対が特殊挙動を必要とすると判定された場合に、前記操作信号と前記計算された特性値とに基づいて、前記対象体の特殊挙動の種類を決定するステップと、を備えることを特徴とする。請求項２記載の発明は、前記操作信号と前記決定された特殊挙動の種類に基づいて前記対象体の全体挙動を計算するステップをさらに有することを特徴とする。また、請求項３記載の発明は、入力装置からの操作信号に基づいて仮想空間内での対象体の挙動をシミュレートして表示装置に表示させる画像処理方法において、複数の部分からなるモデルが適用された前記対象体について、該モデルにおける部分毎に前記対象体の挙動計算に必要な特性値を計算するステップと、前記操作信号と前記計算された特性値とに基づいて前記対象体の特殊挙動を制御するステップと、を備えることを特徴とする。
【００１４】
請求項５記載の発明は、前記対象体がプログラム上の車であり、前記モデル化手段は、この対象体の滑動挙動に対して、この対象体を進行方向に沿って均等に２分割するモデルを形成することを特徴とする。請求項６記載の発明は、前記対象体がプログラム上の車であり、前記モデル化手段は、この対象体の揺動挙動に対して、この車の重心と前後輪とを結合する二つの多角形からなるモデルを形成することを特徴とする。
【００１５】
請求項７記載の発明は、前記特性値付与手段が前記各部分に仮想的なベクトルを与え、前記シミュレート手段は、このベクトルの合成ベクトルに基づいて車の挙動を制御することを特徴とする。請求項８記載の発明は、前記シミュレート手段が、前記ベクトルの変化に伴う車体の揺動方向の姿勢変化をシミュレートすることを特徴とする。請求項９記載の発明は、前記合成ベクトルをロール方向とピッチング方向とに分解し、各方向における姿勢変化を抑制する抑制手段をさらに備えることを特徴とする。
【００１６】
また、請求項１０記載の発明は、第１の目的を達成するために、画面にある対象体の移動に関する操作情報を出力する操作手段と、この操作情報に基づいて前記対象体の挙動をシミュレートし、これを表示手段に出力するシミュレート手段と、を備える画像処理装置において、前記シミュレート手段は、前記対象体に対して、この対象体の挙動を決定するための二つの特性値を与える特性値付与手段を備え、この特性値に応じてこの対象対の挙動をシミュレートすることを特徴とする。
【００１７】
さらに、請求項１１記載の発明は、前記請求項４記載の発明と同様な目的を達成するために、画面にある対象体の移動に関する操作情報を出力する操作手段と、この操作情報に基づいて前記対象体の挙動をシミュレートし、これを表示手段に出力するシミュレート手段と、を備える画像処理装置において、前記シミュレート手段は、前記対象体を前記操作手段によって選択された方向と予め定められたこれ以外の方向に向けて移動させる移動方向制御手段と、この対象体に関する衝突を判定する衝突判定手段と、を備え、この衝突判定が肯定されたときに、前記移動方向制御手段は、前記対象体を非選択方向に向けて移動させる制御を実行することを特徴とする。
【００１８】
請求項１２記載の発明は、前記シミュレート手段が、さらに、前記対象体に対する衝突点を演算する衝突点演算手段を備え、前記移動方向制御手段は、この衝突点が前記対象体に対して成す位置に応じて、前記対象体の移動方向を制御することを特徴とする。
【００１９】
請求項１３記載の発明は、前記シミュレート手段が、前記衝突点が前記対象体に対して所定の角度範囲にあるか否かを判定する判定手段を備え、前記移動方向制御手段は、この衝突点がこの所定角度内に在るときに、この対象体の移動方向を前記非選択方向にすることを特徴とする。請求項１４記載の発明は、前記非選択方向が、仮想的な３次元空間における前記対象体の高さ方向であることを特徴とする。
【００２０】
請求項１５記載の発明は、前記シミュレート手段が、対象体が移動する方向を算出するとともに、この移動方向を前記移動方向制御手段に出力する移動方向算出手段を備え、前記移動方向制御手段はこの移動方向に基づいて、前記対象体の移動方向を制御することを特徴とする。請求項１６記載の発明は、前記衝突判定手段が、複数の対象体同士の衝突を判定する手段であって、前記移動方向算出手段は、この複数の対象体が互いになす角度を算出し、この角度を前記移動方向制御手段に出力することを特徴とする。
【００２１】
さらに、第３の目的を達成するために、請求項１７に記載の発明は、既述の画像処理装置と、画像処理結果を表示する表示手段とを備えるゲーム装置に相当するものである。
【００２２】
さらに、第４の目的を達成するために、請求項１８記載の発明は、画面上に出現する対象体に対する衝突を判定し、この衝突判定結果に基づいてこの対象体の挙動をシミュレートするシミュレート手段を備える画像処理装置において、このシミュレート手段は、前記対象体の移動方向を算出する移動方向算出手段を備え、得られた移動方向に基づいてこの対象体に対する衝突を判定することを特徴とする。請求項１９記載の発明は、前記移動方向算出手段が移動する複数の対象体が互いに成す角度を前記移動方向として算出し、前記シミュレート手段はこの角度に基づいて対象体同士の衝突を判定することを特徴とする。また、請求項２０記載の発明は、入力装置からの操作信号に基づいて仮想空間内での車のタイヤの回転をシミュレートして表示装置に表示させる画像処理方法において、前記車のタイヤの回転が逆回転して見えないように前記車のタイヤの回転数を制御することを特徴とする。請求項２１記載の発明は、前記画像処理方法は、前記操作信号に基づいて算出される車のタイヤの回転数と、前記車のタイヤの回転が逆回転する映像を与えない回転数とを比較することにより、前記車のタイヤの回転数を決定することを特徴とする。
【００２３】
【作用】
請求項４記載の発明において、操作手段は、画面にある対象体の移動に関する操作情報を出力し、シミュレート手段は、この操作情報に基づいて対象体の挙動をシミュレートし、シミュレート結果を表示手段に出力する。シミュレート手段は、このシミュレートを行うに際し、対象体が成す挙動に応じて、この対象体を複数の部分からなるモデルとなるようにモデル化し、各部分にこの対象体の挙動計算に必要な特性値を与えながら、対象体の挙動をシミュレートする。
【００２４】
したがって、請求項４記載の発明によれば、対象体に目的とする挙動に適した複数の部分からなるモデルが適用され、このモデルに於ける各部分に対象体の挙動計算に必要な物理量を与えているために、対象体の挙動をよりリアルに、すなわち実際的シミュレートでき、しかも対象体がこの挙動を的確に再現できるようにする。そして、このモデルにおける複数の部分をより少なくなるようにすることにより必要な特性値の数を低減し、以てシミュレート手段に与える演算負荷を低減しながら対象体が目的とする挙動を表すように制御される。
【００２５】
請求項５記載の発明によれば、対象体がプログラム上の車とされ、この対象体は、進行方向に沿って均等に２分割され、各部分の例えば重心位置に滑動挙動の再現に必要な特性値である、例えばタイヤのグリップ力が与えられる。シミュレート手段は、この特性値に基づいて対象体の滑動挙動をシミュレートするから、少ない特性値によって滑動挙動を的確に表現することができる。請求項６記載の発明の作用も請求項５記載の発明の作用に類似するものであって、各多角形の例えば重心位置に揺動挙動（ロール方向の揺動、あるいはピッチ方向の揺動等）の再現に必要な特性値である、例えばベクトルを与える。そして、請求項７記載の発明は、請求項６記載の発明における各多角形に与えられたベクトルを合成しているから、この合成ベクトルに基づいて車の揺動を的確に制御する。
【００２６】
特に、請求項８記載の発明のように、シミュレート手段が合成ベクトルの変化を捉えることにより、ベクトルの変化を車体の揺動方向の姿勢変化に反映しながら車の挙動をシミュレートする。さらに、請求項９記載の発明においては、シミュレート手段が、合成ベクトルをロール方向とピッチング方向とに分解してこれを抑制手段に出力し、抑制手段ではこの結果を車体のロール方向、ピッチ方向の姿勢変化の抑制に反映させる。したがって、仮想的なサスペンション装置が実現される。
【００２７】
請求項１０記載の発明において、シミュレート手段は、対象体に対して、この対象体の挙動を決定するための二つの特性値を与える。シミュレート手段は、この特性値に応じてこの対象対の挙動をシミュレートする結果、シミュレートに必要なデータ数が低減される。
【００２８】
請求項１１記載の発明において、シミュレート手段は、対象体を操作手段によって選択された方向と予め定められたこれ以外の方向に向けて移動させる。シミュレート手段は、この対象体に関する衝突を判定し、この判定結果を移動方向制御手段に出力する。移動方向制御手段は、この判定が肯定されたとき対象体を非選択方向に向けて移動させる制御を実行する。したがって、対象体に対する衝突判定に基づいて対象体を予め定められた非選択方向に移動させるようにしているため、対象体の複数箇所における挙動計算を衝突の都度行い、その結果として対象体を非選択方向に移動させる制御と比較すると、シミュレート手段に与える演算負荷を低減することができるとともに、衝突があると確実に対象体を非選択方向に移動させる。よって、シミュレート手段に与える演算負荷を低減しながら、対象体に非選択方向に移動する挙動を与えることができる。
【００２９】
請求項１２記載の発明において、衝突点演算手段は対象体に対する衝突点を演算し、この結果を移動方向制御手段に出力する。移動方向制御手段は、この衝突点が対象体に対して成す位置を捉え、この位置情報を対象体の移動方向制御に反映させる。請求項１３記載の発明は、判定手段は、衝突点が対象体に対して所定の角度範囲にあるか否かを判定し、この判定結果を移動方向制御手段に出力する。この移動方向制御手段は、衝突点がこの所定角度内に在るときに、対象体の移動方向を非選択方向にする。したがって、衝突点の位置や角度の違いを対象体を非選択方向に移動させる制御の有無等に反映させることができる。ここで、請求項１４記載の発明によれば、非選択方向が、仮想的な３次元空間における対象体の高さ方向に設定される。
【００３０】
そして、請求項１５記載の発明において、移動方向算出手段は、対象体が移動する方向を算出し、これを移動方向制御手段に出力する。移動方向制御手段はこの移動方向に基づいて、対象体の移動方向を制御する。請求項１６記載の発明において、移動方向算出手段は、複数の対象体が互いになす角度を算出し、この角度を移動方向制御手段に出力する。したがって、移動方向制御手段は、この計算された移動方向に基づいて、非選択方向と選択方向のどちらに対象体を移動するか、あるいは各方向に複数の態様がある場合、どの態様を選択するか等対象体の移動方向を対象体のシミュレートに反映できて対象体のシミュレートをより多彩にし、使用者の趣味感、興味感や臨場感を向上することができる。
【００３１】
そして、請求項１７記載のゲーム装置では、既述の画像処理装置を備えることにより、シミュレート手段におけるシミュレートをより迅速に実行するため、趣味感や興味感を高めることができる。
【００３２】
そして、請求項１８、１９記載の発明によれば、移動方向算出手段は、対象体の移動方向、例えば複数の対象体が互いに成す角度を算出し、これをシミュレート手段に出力し、シミュレート手段はこの移動方向に基づいてこの対象体に対する衝突を判定する。したがって、例えば、対象体が互いに衝突を生じない方向に進んでいる場合には、このことを迅速に検出して対象体を迅速にシミュレートする。また、対象体の衝突判定に、３次元座標空間内での対象体が互いに成す角度を利用するようにして、正確な衝突判定を可能にする。
【００３３】
【実施例】
以下、本発明の実施例について図面を参照して説明する。この実施例は、本発明を、図１に示す対象体としての車１０Ａ（いわゆる「フォーミュラーカー」と称されるものであって、大きな径を持つ車輪が車体から突出しているものであり、前車の後輪に後車の前輪が衝突すると後車の前輪が前車の後輪に乗り上げて、乗り上げた車輪側の車体を大きく傾ける動きが予想されるもの。）を多数、一画面に出現させて、車の順位を競う競技をシミュレートするドライビングゲームに適用したものとして説明される。
【００３４】
図２は、本発明に係るゲーム装置の一実施例を示すブロック図である。このゲーム装置は基本的要素としてゲーム装置本体１０、入力装置１１、出力装置１２、ＴＶモニタ１３、及びスピーカ１４を備えている。
【００３５】
入力装置１１は、ハンドル、アクセル、ブレーキ、シフトレバー、ビューチェンジ（視点変更）スイッチなどを有し、出力装置１３はハンドルキックバック機構、各種ランプ類などを有している。このハンドルキックバック機構は、後述する車の挙動にあわせてハンドルに所定の反力を与える。
【００３６】
ＴＶモニタ１３はドライビングゲ−ムの画像を表示するもので、このＴＶモニタの代わりにプロジェクタを使ってもよい。ビューチェンジスイッチは、視点を変更するスイッチである。このスイッチの操作により、例えば、運転席からの視点又は自車を斜め後方より観た視点がプレーヤーに提供される。
【００３７】
ゲーム装置本体１０は、ＣＰＵ（中央演算処理装置）１０１を有するとともに、ＲＯＭ１０２、ＲＡＭ１０３、サウンド装置１０４、入出力インターフェース１０６、スクロールデータ演算装置１０７、コ・プロセッサ（補助演算処理装置）１０８、地形デ−タＲＯＭ１０９、ジオメタライザ１１０、形状デ−タＲＯＭ１１１、描画装置１１２、テクスチャデ−タＲＯＭ１１３、テクスチャマップＲＡＭ１１４、フレームバッファ１１５、画像合成装置１１６、そして、Ｄ／Ａ変換器１１７を備えている。
【００３８】
ＣＰＵ１０１は、バスラインを介して所定のプログラムなどを記憶したＲＯＭ１０２、デ−タを記憶するＲＡＭ１０３、サウンド装置１０４、入出力インターフェース１０６、スクロールデータ演算装置１０７、コ・プロセッサ１０８、及びジオメタライザ１１０に接続されている。ＲＡＭ１０３はバッファ用として機能させるもので、ジオメタライザ１１０に対する各種コマンドの書込み（オブジェクトの表示など）、変換マトリクス演算時のマトリクス書込みなどが行われる。
【００３９】
入出力インターフェース１０６は入力装置１１及び出力装置１２に接続されており、これにより入力装置１１のハンドルなどの操作信号がデジタル量としてＣＰＵ１０１に取り込まれるとともに、ＣＰＵ１０１などで生成された信号を出力装置１２に出力できる。サウンド装置１０４は電力増幅器１０５を介してスピーカ１４に接続されており、サウンド装置１０４で生成された音響信号が電力増幅の後、スピーカ１４に与えられる。
【００４０】
ＣＰＵ１０１は本実施例では、ＲＯＭ１０２に内蔵したプログラムに基づいて入力装置１１からの操作信号及び地形デ−タＲＯＭ１０９からの地形デ−タ、そして形状データＲＯＭ１１１からの形状データ（「自車、敵車等のオブジェクト」、及び、「移動路、地形、空、観客、構造物等の背景」等の３次元データ）を読み込んで、地形と車との当たり（衝突）判定、車全体の挙動計算、ボディの挙動（サスペンションの挙動に類似したもので、後に詳しく説明する。）計算、及び車同士の衝突判定などの車のシミュレーションを少なくとも行うようになっている。
【００４１】
ＣＰＵ１０１は、一般に右手座標系と呼ばれる３次元座標系（グローバル座標系）を採用しており、Ｚ方向を画面奥に据えたときＹ方向は画面下、Ｘ方向は画面右に向かって伸びる仮想空間座標系を採用している。ＣＰＵは、地形データＲＯＭ１０９の地形の形状データと形状データＲＯＭ１１１の車等の形状データを読み込み、入力信号に応じた処理をこれらデータに与えて、既述の座標系において複数の車を配置して走行する画像を構成する。この車は遊戯者が操作できる自車とゲーム装置側で制御される他車（既述のように、敵車、と云っても良い。）とから構成される。
【００４２】
車の挙動計算は、入力装置１１からのプレーヤの操作信号により仮想空間での車の動きをシミュレートするもので、３次元空間での座標値が決定された後、この座標値を視野座標系に変換するための変換マトリクスと、形状デ−タ（車、地形など）とがジオメタライザ１１０に指定される。コ・プロセッサ１０８には衝突判定のために車を楕円モデルで定義したデータを記憶するＲＯＭ１０９が接続され、したがって、予め定めたデ−タがコ・プロセッサ１０８（及びＣＰＵ１０１）に渡される。
【００４３】
コ・プロセッサ１０８は、主として、対象体としての車における４輪と地形との衝突判定、車同士の衝突の判定、及び必要に応じて車と構造物との衝突判定を行うものであり、そして、この判定や車の挙動計算時に、主に、浮動小数点の演算を引き受けるようにもなっている。この結果、コ・プロセッサ１０８により車に関する当たり判定（衝突判定）が実行されて、その判定結果がＣＰＵ１０１に与えられるようにされているから、ＣＰＵの計算負荷を低減して、この当たり判定がより迅速に実行される。
【００４４】
ジオメタライザ１１０は形状デ−タＲＯＭ１１１及び描画装置１１２に接続されている。形状デ−タＲＯＭ１１１には、複数のポリゴンの組み合わせからなる自車や敵車等のキャラクター、あるいは地形、空等の背景の図形や形状（ボディ座標系）が定義されている。（ここで、ポリゴン数を適宜選択可能である。）この定義は、例えば、使用するポリゴン群の各頂点の座標値のリスト（座標値リスト：この座標値は３次元データから構成される。）と、さらにポリゴン面１面毎に、頂点リストから任意の４点を頂点番号で指定したポリゴン面のリストと、各ポリゴンの表示順を決定するための基準位置を表すもの、ポリゴンの片面を表示するか両面を表示するかを指定する属性、そして、ポリゴンに２次元の絵（「ビットマップデータ」、あるいは「テクスチャ」とも云う。）を張り付ける要素等のポリゴンの面属性のリスト等から構成されている。
【００４５】
ＣＰＵ１０１はＲＯＭ１１１のデータに基づいてこれらのキャラクター等が複数のポリゴン（多角形であって、主として４頂点を有する四角形、あるいはその内の２頂点が一致した３角形）からなる立体として、これを３次元座標系（ワールド座標系）へ配置するモデリング変換を行う。次いで、ＣＰＵ１０１は、既述の視点に基づいて視点変換を実行し、さらに、３次元クリッピングを行う。
【００４６】
このためにＣＰＵ１０１は、既述の座標値のリストと、ポリゴン面のリストと、そして、ポリゴン面属性のリスト等をＲＯＭ１０２から読み込む。そして、ＣＰＵ１０１は、これらのデータをジオメタライザに渡す。ジオメタライザ１１０はＣＰＵ１０１から送られてくる変換マトリクスで指定されたデ−タを透視変換して、さらに２次元クリッピングを実行し、３次元仮想空間でのワールド座標系から視野座標系に変換したデ−タを得る。
【００４７】
描画装置１１２は変換した視野座標系の形状デ−タにテクスチャを貼り合わせ、フレームバッファ１１５に出力する。このテクスチャの貼り付けを行うため、描画装置１１２はテクスチャデ−タＲＯＭ１１３及びテクスチャマップＲＡＭ１１４に接続されるとともに、フレームバッファ１１５に接続されている。
【００４８】
地形データＲＯＭ１０９には、車と地形との当たり判定や車同士の当たり判定を実行する上で足りる、比較的粗く（簡単に）設定された形状データが格納されている。例えば、衝突判定に際しての車の形状は、楕円として定義されている。これに対して、形状データＲＯＭ１１１には、車、背景等の画面を構成する形状に関して、より緻密に設定されたデータが格納されている。
【００４９】
スクロールデ−タ演算装置１０７は文字などのスクロール画面のデ−タを演算するもので、この演算装置１０７と前記フレームバッファ１１５とが画像合成装置１１６及びＤ／Ａ変換器１１７を介してＴＶモニタ１３に至る。これにより、フレームバッファ１１５に一時記憶された車、地形（背景）などのポリゴン画面（シミュレーション結果）とスピード値、ラップタイムなどの文字情報のスクロール画面とが指定されたプライオリティにしたがって合成され、最終的なフレーム画像デ−タが生成される。この画像デ−タはＤ／Ａ変換器１１７でアナロク信号に変換されてＴＶモニタ１３に送られ、ドライビングゲ−ムの画像がリアルタイムに表示される。
【００５０】
続いて、このゲーム装置の動作を図３以降をも参照しながら説明する。これらの図は、ＣＰＵ１０１により実行される車の挙動計算を示す。この実施例における車の挙動計算は、地形と車両の当り具合を判定して車を地形の上に置きならがら、地形上を車を走行させる処理と、仮想的に設定されたサスペンション装置によってボディの揺動挙動（ロール方向、ピッチ方向）を計算する処理（以上、この二つの処理を「通常走行処理」として一緒に説明する。）と、スピン、テールスライドやドリフト走行等の滑動挙動や、車が横転するかあるいは横転しようとする挙動のような通常走行以外の特殊な挙動（換言すれば、ハンドルによって選択され、あるいは指向された方向以外の方向への挙動）のための計算が含まれる。本実施例においては、この計算がＣＰＵに大きな計算負荷を与えることなく実現される。
【００５１】
先ず、ゲーム装置が起動すると、ＣＰＵ１０１は例えば一定時間ｔ毎のタイマ割込み処理によって図３に示す処理を開始する。まず、プレーヤが入力装置１１を操作することによる、車の運転に関わる操作情報、例えばハンドルの切角（舵角）、アクセル開度、ブレーキの操作状況等を入出力インターフェイス１０６を介してデジタル量として読み込む（ステップ３００）。
【００５２】
これに次ぐ、ＣＰＵ１０１の処理は、大別して、それらの操作情報に基づいて車の動きのシミュレーション（模擬運転）を実行する挙動計算処理と描画処理とから構成される。この挙動計算処理は、通常走行挙動処理と特殊挙動処理とから構成される。通常走行挙動及び特殊挙動の具体的内容は、先に説明されている。特殊挙動処理は、既述のように、滑動挙動処理と横転挙動処理から構成される。ここで、説明された車の各挙動処理の詳細は、後述される。
【００５３】
ステップ４００は通常走行挙動処理を実行する。ステップ５００は車の運転状況が既述の滑動運動（滑動挙動）を必要とするか否か、例えば車が高速走行をしているが故、カーブやコーナーを曲がり難い状況が生じたか否かを判断する。滑動運動が必要と判断された場合（ステップ６００）は、ステップ７００において、滑動運動のための挙動計算が実行される。滑動運動が必要ないと判断された場合はステップ８００に移行し、横転挙動処理が必要か否かが判断される。ここで云う横転挙動とは、先に説明されているとおり、遊戯者側の車の前輪が敵車の後輪に乗り上げて車が横転しようとする挙動であるとする。
【００５４】
ここで、横転挙動が必要ない判断された場合は、ステップ１１００の処理に移行し、一方、その必要性が肯定された場合は、ステップ１０００の横転挙動演算処理に移行する。ステップ１１００は、描画処理に該当するものであり、ＣＰＵ１０１は３次元の各形状データを視野座標系に透視変換するための透視変換マトリクスを作成し、このマトリクスを形状データとともにＲＡＭ１０３を介してジオメタライザに指定する。
【００５５】
図４は、前記滑動挙動要求判断処理（ステップ５００）を詳細に説明するフローチャートである。このフローチャートを説明する前に、車の滑動挙動を制御する上で本発明によって提供される基本的なモデルについて説明する。一般に車両の滑動運動は、車両の進行方向に対して交差する方向の力が加わった場合に生ずる。例えば、カーブでは車に遠心力が与えられ、これが車をスピンあるいはテールスライド（ドリフト）させる原因となる。
【００５６】
そこで、図５に示すように、この実施例においては、滑動挙動制御に当たり、車１０Ａを進行方向に沿って均等に２分割し、各部分の重心位置Ｊ1，Ｊ2に滑動挙動の基礎となる物理量を与え、この物理量に応じて車の滑動挙動を制御する。したがって、４輪毎に加わる力を演算する場合に比べて、計算に必要な物理量の数を低減させながら、実際の車の挙動に近づけた滑動挙動を再現できる。
【００５７】
この実施例において、車に対して、その重心を通るＸ，Ｙ，Ｚ軸の３次元ボディ座標系を図６のように定め、Ｘ軸周りの前後方向回転をピッチ運動、Ｙ軸周りの回転運動をヨー運動、Ｚ軸周りの横方向回転をロール運動とそれぞれ定める。重心の位置座標を（Ｐｘ，Ｐｙ，Ｐｚ）、重心位置での各方向の速度をＶｘ，
Ｖｙ，Ｖｚ、ピッチ角度をＲｘ，ピッチ角速度をＷｘ，ヨー角度をＲｙ，ヨー角速度をＷｙ，ロール角度をＲｚ，ロール角速度をＷｚとする。
【００５８】
続けて、滑動要求判断処理の具体的内容が図４に基づいて説明される。ステップ５０２において左側ブロックの重心Ｊ2に於けるグリップ（タイヤが路面を噛む力：ＧL）が演算される。ステップ５０４において、同様にして、右側ブロックのグリップ（ＧR）が演算される。これらのグリップは、アクセル開度から求められる車の速度（Ｖ）と、ハンドル装置の操舵角（θ）と、そしてタイヤの所定の基準点に対する高さ（Ｈ）等から演算される。
【００５９】
ＧR（ＧL）＝ ｆ（Ｖ，θ，Ｈ）
ＣＰＵ１０１はこられのグリップを順次計算し、ＲＡＭの所定記憶領域に順次更新記憶する。なお、グリップの演算に当たってタイヤの高さを演算するのは、図７（１）に示すように、車１０Ａを進行方向後方より見たとき、右側タイヤ１０Rと左側タイヤ１０Lとが矢示に沿った挙動を順次採り、タイヤと基準位置１００Ａとの間の距離が順次プラス側に大きくなる場合は（ＨL1＜ＨL2，ＨR1＜ＨR2）、タイヤが地形からの反力をより受ける傾向となってグリップが増加する傾向となり、一方、図７（２）に示すように、その距離が順次マイナス側に大きくなる場合は（ＨL1＞ＨL2，ＨR1＞ＨR2）、タイヤが地形から受ける反力が順次小さくなる傾向となってグリップが順次低下するので、これをグリップの演算に反映させるためである。よって、グリップの演算では、「Ｈ」の値或いは「Ｈ」の変化率等が入力として使用される。
【００６０】
次いでステップ５０６において、ＣＰＵ１０１はニュートラル位置に対するハンドル操舵方向を判定する。この判定は公知の角度センサからの入力に基づいて実行される。操舵方向が右方向である場合は、ＣＰＵは１０１はＲＡＭ１０３内の作業エリアから左側ブロックのグリップ値（ＧL）を読み込み、操舵方向が左方向である場合は、ＣＰＵは左側ブロックのグリップ値（ＧR）を読み込む（ステップ５０８，５１０）。そして、操舵位置がニュートラルである場合は、滑動挙動が生じないとして、滑動要求判断処理フラグ（Ｆ）に滑動要求が否定される”０”を設定する。
【００６１】
ステップ５１４では、右側グリップ（ＧR），左側グリップ（ＧL）と仮想的に設定される摩擦係数（μ）とを比較し、グリップ値が摩擦係数以上であればタイヤが地形に対して滑っていないとして既述のステップ５１２に移行し、グリップ値が摩擦係数より小さい場合にはタイヤが地形に対して滑っているとしてステップ５１６に移行し、滑動要求判断処理フラグ（Ｆ）に滑動要求を肯定する”１”を設定する。
【００６２】
ＣＰＵ１０１は既述のステップ６００（図３参照）において、滑動要求判断処理フラグ（Ｆ）の内容を読み込み、Ｆ＝「０」の場合はステップ８００に示す横転挙動判定処理に移行し、Ｆ＝「１」の場合はステップ７００に示す滑動挙動計算処理に移行する。ＣＰＵは、既述の摩擦係数（μ）をハンドルの操舵角、アクセル開度（車速）とによって求めることができる遠心力、そして車速等とから適宜摩擦係数（μ）を演算する。路面の状況（仮想的に路面をドライとするか、あるいはウエットとするか。）が適当に想定されることにより、ＣＰＵは摩擦係数を適宜変更する。
【００６３】
図８は、滑動挙動計算処理のサブルーチンであり、ステップ７０２において、ＣＰＵ１０１は、操舵角（θ）と、グリップと摩擦係数との差分の絶対値
｜ＧR(ＧL)−μ）｜とに基づいて、これらが共に所定値を越える場合は、滑動要求量が大きいとして車をスピンさせる動作の処理に移行する。一方、ステップ７０２の処理において、前記絶対値が所定値以下である場合は、車の後部（テール）をスライドさせるテールスライド走行処理に移行する。
【００６４】
テールスライド走行処理（ステップ７０４）において、ＣＰＵは、操舵角と車速等に基づいて、車両の進行方向に直角方向に設定された横速度とヨー角速度（あるいはこれらの加速度、又は速度と加速度の両方）とを車に与え、先のステップ４００で演算された車の通常走行処理結果（これについては、後述する。）と合わせて車の全体挙動演算を行う。一方、スピン走行処理（ステップ７０６）においては、ＣＰＵ１０１は、形状データＲＯＭ１１１に記憶してある一連のスピン挙動のデータを順次読み出し、これを順次グローバル座標系にモデリング変換する。
【００６５】
なお、図４に示す滑動要求判断処理において、ハンドルに操舵角が発生した場合にステップ５０２とステップ５０４の計算を行い、ハンドルに操舵角が発生しない場合は、ステップ５１２に移行するようにしても良い。
【００６６】
次に、通常走行処理を図９に基づいて説明する。ＣＰＵ１０１は前回（最新）の挙動計算により求められていた速度ｖ、操舵角、車両位置を含むデ−タから、車Ｃの新しい位置を演算する（ステップ４０２）。次いで、ステップ４０４で、新しく演算された車Ｃの位置に所定の長さを加えて各タイヤＴｎ（ｎ＝１〜４：４輪）の位置Ｐｎ（ｎ＝１〜４：４輪）を演算する（図１０参照）。
【００６７】
さらに、ステップ４０６で、図１１に示すように、地面に相当する線ＸとタイヤＴｎの下端Ｐｎに相当する点との間の距離ｄｎ（ｎ＝１〜４：４輪）を演算すると、この距離ｄｎが地面下に潜ったタイヤＴｎの深さあるいは地面とタイヤとの間の距離となる。ステップ４０８では、この距離ｄｎ分車のボディ座標を移動させて車のタイヤの先端が丁度地表面に位置するように移動させる。
【００６８】
以後の処理は、車のロール方向あるいはピッチ方向の姿勢を制御するための仮想的なサスペンションに相当する。この仮想的なサスペンションの制御に当たっては、図１２に示すように、車体をその重心ＣＰと左右の前輪ＦＴL，ＦＴRとを結んだＡブロック（ＣＰ−ＦＴL−ＦＴR）、車体をその重心ＣＰと左右の後輪
ＬＴL，ＬＴRとを結んだＢブロック（ＣＰ−ＬＴL−ＬＴR）からなる２ブロックに分けたモデルとし、それぞれのブロック毎に、サスペンション制御のためのベクトル計算を実行する。したがって、４輪毎に仮想的なサスペンションを与えたモデルに比較してＣＰＵに与える計算負荷は低減される。
【００６９】
図１３に示すように、図９に示す通常走行挙動計算処理におけるステップ４１０において、Ａブロックの重心位置に与えられるベクトル（ＦＵ）を計算し、ステップ４１２ではＢブロックの重心位置に与えられるベクトル（ＲＵ）を計算する。このベクトルは、ハンドルの舵角、車の正負の加速度、車の速度、そして路面状況等に基づいて演算される。
【００７０】
ステップ４１４ではこれらのベクトルを加算して平均し、平均化ベクトル
(CU=(FU+RU)/2)を両ブロックの連結点であって、車のモデルにおいて重心位置とされるＣＰに与える（図１３参照）。このＣＰにおけるベクトル（ＣＵ）は、ＡブロックとＢブロックとに加わるベクトルを合成し、その平均に等しいから、車全体の挙動を決定するものとして取り扱うことができる。ステップ４１６では、このベクトルＣＵをＸ軸方向とＺ軸方向の成分（ＣＵX，ＣＵZ）とに分解する。
【００７１】
図１４は車を平面方向から見た剛性モデルを示した模式図であり、Ｚ軸方向とＸ軸方向に仮想のサスペンション装置（バネ）が設定されている。図６にも示すように、Ｚ軸方向を車の進行方向とすると、ベクトルＣＵZはＸ軸回りに与えられる力であるからピッチング方向に加わる力であり、ＣＵXはＺ軸回りに与えられる力であるからロール方向に加わる力である。
【００７２】
ＣＰＵ１０１は、各方向成分のベクトルの値に応じて車体の挙動姿勢を制御した画像を構成する。ＣＰＵはＲＡＭの所定記憶領域にＣＵXとＣＵZの値を順次更新記憶させることができる。ＲＡＭに記憶されているＣＵXとＣＵZの値をカレント値と云うものとする。
【００７３】
次の処理は、計算によって得られたＣＵXとＣＵZをカレント値に一致させる。ＣＵXの計算値と最近（前回のタイミング）のカレント値との差がロール運動を与え、ＣＵZの計算値と最近（前回のタイミング）のカレント値との差がピッチング挙動を与えることになるため、仮想のサスペンション装置はロール方向及びピッチング方向の挙動を減衰させる作用を持つ。
【００７４】
ここで説明する仮想のサスペンション装置は、計算されたＣＵXと
ＣＵX(CURRENT)と比較し、両者の差に基づいてロール方向の加速度を決定し、又、計算されたＣＵZとＣＵZ(CURRENT)と比較し、両者の差に基づいてピッチング方向の加速度を決定してこれらをＲＡＭの作業エリアに順次更新記憶させて車体の姿勢制御に反映させる。この際、仮想のサスペンション装置は、これらの加速度の値に後述の処理を与えて車体の挙動を安定化させる。
【００７５】
ステップ４１８において、ＣＵX＞ＣＵX(CURRENT)と判断された際は、ベクトルの変化に伴って出現するロール角加速度のカレント値からサスペンション定数（SUSTYPE：この係数の値によってサスペンションの減衰特性が決定される。）を順次減じ、これを新たなロール角速度とする。すなわち、ステップ４２０において、ＡSP(X)←ＡSP(X)−SUSTYPEとする。ここで、ＡSP(X)は、ロール方向の加速度を示す。
【００７６】
一方、ＣＵX＜ＣＵX(CURRENT)と判断された際は、ステップ４２２に移行し、ベクトルの変化に伴って出現するロール角加速度のカレント値にサスペンション定数（SUSTYPE）を順次加算し、これを新たなロール角速度とする。すなわち、ＡSP(X)←ＡSP(X)＋SUSTYPEとする。すなわち、ステップ４２０及びステップ４２２の処理において、ＣＵX(CURRENT)に対するＣＵXのベクトルの大きさの変化に起因する加速度に対して、これを打ち消す方向に加速度を与えることにより（あるいは一連の処理タイミングにおいてベクトルの変化を加速度変化として車体の挙動制御に反映させる際、加速度が一定になるようにして）、車体の挙動変化を減衰（安定）させようとする仮想的なサスペンションが提供される。
【００７７】
そして、ＣＵX＝ＣＵX(CURRENT)となった際、ロール方向の姿勢安定は完了したとして次にステップに移行する。ステップ４２４乃至ステップ４２８は、Ｚ軸方向であるピッチング方向の加速度ＡSP(Z)の値を制御しようとするもので、その内容はステップ４１８乃至４２２の処理と同様である。ステップ４１８乃至４２８によって、ロール方向とピッチング方向の車体の姿勢が安定化された後リターンする。
【００７８】
したがって、図９に示すルーチンによれば、車のロール方向やピッチ方向の揺動運動が制御されるに際し、揺れる方向が異なる二つの揺動運動がともに十分反映される三角形のモデルを前輪側と後輪側の二つに設定して（ＡブロックとＢブロック）、これを揺動運動に伴う車体の姿勢制御を実行しているため、少ないデータ数に依りながら、車体の姿勢制御を確実かつ的確に再現することが可能となる。しかも、この揺動運動の制御に当たり、車体に加わるベクトルを使用していることから、車の姿勢制御をより実際的にシミュレートすることができる。このことは先の図４に示すルーチンにおいても同様であり、滑動挙動を制御するモデルにタイヤのグリップ値や摩擦係数を使用していることから、車の滑動挙動をより実際的にシミュレートすることができる。
【００７９】
また、図９に示すルーチンによれば、ＡブロックのベクトルとＢブロックのベクトルを加算平均化し、これを車の重心点に適用しているために、さらに車の姿勢制御をより少ないデータ数で実際的にシミュレートすることが可能となる。
【００８０】
次に、横転挙動判定処理について説明する。この処理では、自車１０Ａの左前輪（１２Ｌ）が自車の前を走る敵車の右後輪に乗り上げた場合、図１５の（１）→（２）→（３）→（４）に示すように自車が左側の車輪を持ち上げ、残りの右側の車輪で所定時間走行する挙動を自車と前者の車輪の衝突判定によって実現し、車の各輪毎に与えられる力の計算に基づいてこのような挙動演算を適用するものでないから、ＣＰＵに与える計算負荷を低減できる。
【００８１】
この実施例では、既述のように車同士の衝突判定に際して車を楕円で近似するモデルが使用されている。このモデルは既述の地形データＲＯＭ１０９のボディ座標系に定義されており、コ・プロセッサ１０８はこのモデルをグローバル座標系に配置して車同士の衝突判定を行う。
【００８２】
自車と他車或いは他の固定物等との衝突判定モデルの設計に際して、車を円としたモデルと仮定すると、車のように縦、横、高さの比が異なる場合、例えば、車の進行方向に円の直径を合わせると車の側面の衝突判定ラインが車の側面を越えて設定され、また、車の進行方向とは直角方向に衝突判定ラインが設定されると、車の進行方向の衝突判定ラインが車の内部に設定され、衝突判定結果が不自然にならざろう得ない。
【００８３】
そこで、車体の長さ、幅、高さは通常互いに異なるので、車を矩形で近似してコリジョン判定をするのが良い筈である。しかし、矩形では、エッジ、コーナーまでの距離が側面や角などでまちまちであるから、すなわち、直方体の周辺部（境界）は場合分けを必要とする複数の関数によって定義されるから、図１６に示すように、車の動きがコリジョンブロック（衝突計算用に近似したモデル）
Ｃ1，Ｃ2の回転を必要とするような場合、計算が複雑になる。
【００８４】
そこで、本実施例では、コリジョンブロックを車の長さ、及び幅に相当する半径を持った楕円ＥＬ1，ＥＬ2（図１７参照）で近似してこれをＸ、Ｚ軸上に配置して衝突の判定に使用することとする。この楕円ＥＬ1，楕円ＥＬ2の表面（周辺或いは境界）の位置データは、中心点０1，０2の回りのそれぞれ単一の関数Ｆ1，Ｆ2として各々与えられる。
【００８５】
先ず、コリジョン判定に際し、横転挙動判断を示す図１８のステップ８０２において、図１９に示すように、楕円ＥＬ1，ＥＬ2同士の接点（衝突点）Ｓ1はそれぞれの中心点Ｏ1，Ｏ2を結んだ直線上にあると仮定し、その直線の単位ベクトルｎを、関数Ｆ1（Ｆ2）を使って演算する。次いで、ステップ８０４にて、車の回転の逆行列を演算し、ステップ８０６でその逆行列に単位ベクトルを掛け、新しいベクトルをｎ’を作る（図１７参照）。ここで、逆行列を演算するのはハンドル角、速度等に対応した楕円ＥＬ1，楕円ＥＬ2の３次元回転を計算上で座標系の初期（基準）位置に戻すためである。
【００８６】
次いで、ステップ８０８で、Ｘ，Ｚ軸上の座標とベクトルｎ’との内積を演算し、車の中心Ｏ1，Ｏ2からコリジョン楕円表面へのベクトルＰを求める。実際の演算では、ベクトルｎ’は単位ベクトルなので、関数Ｆ1（Ｆ2）で決まるＸ，Ｚ軸上の点（ａ，ｃ）とｎ’の各成分（ｎx，ｎz）を乗ずれば（掛ければ）よい。つまり、  Ｐ＝（ａ・ｎx，ｃ・ｎz）となる。また、ステップ８０２乃至８０８の処理は、コリジョンの判定対象となっている楕円ＥＬ1，楕円ＥＬ2各々に対して行われる。
【００８７】
そして、ステップ８１０で、それぞれのコリジョン楕円ＥＬ1，ＥＬ2のベクトルＰの絶対値である半径ｒ1，ｒ2（図１９参照）を加算した値が、それぞれの中心点Ｏ1，Ｏ2を結んだ距離Ｌよりも長いかまたは短いかに応じて衝突状態か否かを判定する。すなわち、Ｌ＞ｒ1＋ｒ2のときはＥＬ1とＥＬ2とが衝突状態にはないと判定され、Ｌ≦ｒ1＋ｒ2の場合、例えば、自車の前を走る敵車と自車との組み合わせからなる、ＥＬ1とＥＬ2との間に衝突状態が発生したと判定される。
【００８８】
ステップ８１０において、衝突判定の結果が肯定された場合は、ステップ８１２に移行し、二つの車（自車と敵車）のそれぞれについて車のワールド座標系における進行方向が演算される。ＣＰＵはＲＡＭ内に車のワールド座標を順次記憶しており、複数の座標値から車の進行方向のベクトルを計算する。ＣＰＵは車同士の進行方向が互いに成す角度を、このベクトルから演算する。一方、ステップ８１０において、衝突判定が否定された場合、すなわち、衝突が無いと判断された場合は、横転挙動判定フラグＦ1に横転挙動を必要としない”０”を設定する（ステップ８１１）。
【００８９】
ステップ８１４では、互いに走行する車が成す角度、図１９に示すように、自車（ＥＬ1）が進行する方向Ｄ（ＥＬ1）と敵車（ＥＬ2）が進行する方向
Ｄ（ＥＬ2）とが成す角度（θ）、が所定値以内、例えば４５度以内であるか否かを判定し、この角度を越える場合は自車の前輪が前車（敵車）の後輪に乗り上げる衝突が生じ得ないとして、既述のフラグＦ1＝”０”とし、既述の横転動を伴わない通常の衝突判定後動作に移行する（ステップ８１６）。ステップ８１４の処理があることにより、後述のステップ８１８及びステップ８２０の処理を経ることなく通常衝突判定後動作に迅速に移行することができる。また、衝突判定が肯定された後の衝突判定後動作として、通常動作（ステップ８１６）と図３の横転挙動（ステップ１０００）の二つを展開できることになり、対象体に対する衝突後のシミュレーションをより多彩に展開でき、ゲーム装置としての趣味感や臨場感、あるいは興味感を向上することができる。ここで、通常衝突判定後動作は、形状ＲＯＭ１１１に予め格納されている車の一連の図形（スピン、クラッシュ等）から構成され、既述のような横転挙動は含まれない。
【００９０】
一方、ステップ８１４において、所定角度範囲である場合は、さらに横転挙動が必要であるか否かの判断が実行される。先ず、ステップ８１８において、図２０に示すように、既述の衝突判定モデルにおけるベクトルＰが成す角度（自車のモデルの角度をθRとし、他車のモデルに於ける角度θTとする。）を求める。次のステップ８２０では、この角度が前車において前輪の設置範囲にあるか、そして後車の後輪の設置範囲にあるかが判定される。図２１はこの判定のモデル図であって、ステップ８２０では、楕円で近似された自車モデル（ＥＬ2）におけるθRが実際の車の図形１０Ａにおける左右の前輪の設置範囲にあるか、すなわち、（θ1≦θR≦θ2）OR（θ3≦θR≦θ4）であるかが判定される。なお、図２１において、角度（θ）は車の進行方向に沿った基準線Ｍに対する角度を云う。
【００９１】
そして、ステップ８２０では、楕円で近似された他車モデル（ＥＬ1）におけるθFが実際の車の図形における左右の後輪の設置範囲にあるか、すなわち、
（θ5≦θF≦θ6）OR（θ7≦θF≦θ8）であるかが判定される。
【００９２】
ステップ８２０において、（θ1≦θR≦θ2）AND（θ7≦θF≦θ8）、又は、（θ3≦θR≦θ4）AND（θ5≦θF≦θ6）の場合は、自車の右前輪が前車の左後輪が乗り上げ、又は自車の左前輪が前車の右前輪に乗り上げているとして、既述の横転挙動判定フラグＦ1に横転挙動を必要とする”１”をたてて図３のルーチンにリターンする（ステップ８２２）。ステップ８２０において、角度範囲がこれ以外の場合は、ステップ８１６に移行する。
【００９３】
図３に示すステップ９００において、ＣＰＵ１０１はＲＡＭの所定記憶エリアに設定された前記横転挙動判定フラグ（Ｆ1）の内容を読み込み、Ｆ1＝「１」の場合はステップ１０００の横転挙動計算処理に移行し、Ｆ1＝「０」の時はステップ１１００に移行する。
【００９４】
ステップ１０００に云う横転挙動とは、図１５を参照して既に説明したように、自車が衝突側の車輪を持ち上げて他の側の車輪で片側行を所定時間継続し、この時間経過後は衝突前の状態に復帰すること（（４）の状態から（１）の状態に順に復帰すること。）を内容とする挙動を云う。図１５に示すよう、車の衝突側の車輪を地形から最大高さＨの位置になるような画像が得られる。ここで、Ｈの値は自車（ＥＬ2と）前車（ＥＬ1）のタイヤの回転速度等に応じて、回転速度が大きいときにはＨの高さを大きくする。また、最低値を決め、自車と前車との回転速度に応じて付加高さを加えるようにしても良い。またさらに、必要に応じて片側輪走行状態の継続時間を調整しても良い。
【００９５】
なお、図２１において、衝突点が成す角度θT，θRを楕円モデルの元で計算したが、一点鎖線で示すように、車１０Ａに対する矩形モデルの元でこの角度を計算するようことを妨げるものではない。
【００９６】
図２２はタイヤの回転数を制御する処理ルーチンを示す。ＣＰＵ１０１は、この処理動作を一定時間毎のタイマ割り込み処理によって実行する。この実施例のゲーム装置本体１０は、遊戯者に対して、タイヤが回転するように見せてゲームの臨場感を向上するため、図２３に示すように、タイヤ１２Ａに模様２３０等に相当するテクスチャーを張り付け、これを実線で示すように回転させるようにしている。しかしながら、人間の視覚の生理として、タイヤの回転数が増大すると破線のように逆回転する映像を遊戯者に与えゲームとしての臨場感を損なうことになる。そこで、図２２は、このような事態を避ける処理を提供する。
【００９７】
ステップ２０００では、ＣＰＵ１０１はアクセル開度とギヤ情報（何速のギヤが選択されているか、マニュアルシフト、オートマティックトランスミッションにおいて同様）を入力装置１１から読み込む。ステップ２００２において、ＣＰＵはこの入力情報に基づいてタイヤの回転数（Ｒ）を演算する。ステップ２００４において、ＣＰＵは、この回転数（Ｒ：rpm）と図２３で示される実線方向への回転であって、破線で示される回転動を遊戯者に与えない最大回転数（Ｒmax）とを比較する。
【００９８】
Ｒ＜Ｒmaxのときは、図２３のような逆回転の映像を遊戯者に与えたないとしてリターンし、Ｒ≧Ｒmaxのときはこのことを防止するためにステップ２００６に移行して、タイヤの回転数をＲmaxに固定する。但し、グローバル座標系における車の速度計算に当たっては、図２２の処理を適用することなくタイヤの回転速度がアクセル開度及びギヤ情報に基づいて決定される。
【００９９】
なお、この実施例において、揺動運動をロール方向（左右の振動）及びピッチ方向（前後の振動）としたが、これに限ることなくバウンディングを含めても良い。また、衝突結果挙動として、横転挙動を発生させたが、本実施例で説明した他の挙動をこの衝突結果挙動に含めても良い。また、図４の滑動要求判断処理ルーチンにおいて、左右のグリップ力の相加平均あるいは相乗平均を挙動制御に用いても良い。このことは既述のＡブロックとＢブロックのベクトル計算にも適用することができる。また、図４の処理において、ハンドルに操舵角が発生していないときは、車の重心点についてのみ与えられて物理量を以て車の挙動計算を行うようにしても良い。
【０１００】
図１８のフローチャートにおいて、二つの対象体の進行方向、例えば二つの対象体が互いに成す角度（ステップ８１２、ステップ８１４）をステップ８１０の衝突判定に反映させることができる。この態様としては、例えば対象体が互いに成す角度が所定値以内の場合は、衝突が起こり得ないとして、ステップ８０２乃至８０８の処理を省略したり、あるいは、この方向や角度を、３次元空間内での対象体に衝突判定処理を行うに際し、この処理に使用される各種特性値に対する補正値として与える等である。よって、このような実施態様により、二つの対象体の衝突判定を正確にそして迅速に実行することができる。また、図１８の処理において”No”の場合、ステップ８１１に移行させても良い。
【０１０１】
なお、図２４は、対象体としての衝突判定モデルの他の実施例を示すものである。この実施例では、このモデルは二つの楕円体ＥＬをそれぞれの長手方向が平行になるように配置し、その長手方向を車の幅方向にしたものである。このモデルにおいては、二つの楕円が合成された形状の輪郭形状をもって衝突判定の境界としている。一点鎖線で囲む部分は一つの車輪として考えられる。したがって、このモデルは、本実施例で使用する車輪が車体より大きく突出した車により近いモデルになる。このことにより、衝突判定をモデル化して実行したとしても、車輪の部分で生じる衝突を正確に把握することができる。
【０１０２】
【発明の効果】
請求項１記載の発明によれば、対象体に目的とする挙動に適した複数の部分からなるモデルが適用され、このモデルに於ける各部分に対象体の挙動計算に必要な物理量を与えているために、対象体の挙動をよりリアルに、すなわち実際的シミュレートでき、しかも対象体がこの挙動を的確に再現できるようにする。そして、このモデルにおける複数の部分をより少なくなるようにすれば、必要な特性値の数を低減し、以てシミュレート手段に与える演算負荷を低減しながら対象体が目的とする挙動を表すように制御できる。
【０１０３】
請求項２記載の発明によれば、少ない特性値によって対象体の滑動挙動を的確に表現することができる。請求項３記載の発明によれば、各多角形の例えば重心位置に揺動挙動の再現に必要な特性値である、例えばベクトルを与え、そして、請求項４記載の発明は、各多角形に与えられたベクトルを合成しているから、この合成ベクトルに基づいて車の揺動を的確に制御することができる。
【０１０４】
特に、請求項５記載の発明のように、シミュレート手段が合成ベクトルの変化を捉えることにより、ベクトルの変化を車体の揺動方向の姿勢変化に反映しながら車の挙動を的確にシミュレートする。さらに、請求項６記載の発明によれば、シミュレート手段が、合成ベクトルをロール方向とピッチング方向とに分解してこれを抑制手段に出力し、抑制手段ではこの結果を車体のロール方向、ピッチ方向の姿勢変化の抑制に反映させるため、仮想的なサスペンション装置が実現され、実際的な車のシミュレーションが提供される。
【０１０５】
請求項７記載の発明によれば、シミュレート手段は、対象体に対して、この対象体の挙動を決定するための二つの特性値を与えているため、シミュレートに必要なデータ数を低減できる。
【０１０６】
請求項８記載の発明によれば、衝突判定によって対象体を予め定められた非選択方向に移動させるようにしているため、対象体の複数箇所における挙動計算を衝突の都度行い、その結果として対象体を非選択方向に移動させる制御と比較すると、シミュレート手段に与える演算負荷を低減することができるとともに、衝突があると確実に対象体を非選択方向に移動させる。よって、シミュレート手段に与える演算負荷を低減しながら、対象体に非選択方向に移動する挙動を与えることができる。
【０１０７】
請求項９記載の発明によれば、衝突点が対象体に対して成す位置情報を対象体の移動方向制御に反映させることができるために、この位置の如何によって非選択方向への移動の出現の有無を調整することができ、故に実際の対象体の挙動に合わせることができる。
【０１０８】
請求項１０記載の発明によれば、衝突点が対象体に対して所定の角度範囲にあるかに応じて、対象体を非選択方向に移動させる制御の有無等を決定することができ、実際的なシミュレーションを遊戯者や操作者に提供することができる。請求項１１記載の発明によれば、対象体を仮想的な３次元空間における高さ方向に移動させることができ、実際的なシミュレーションが可能となる。
【０１０９】
請求項１２そして１３記載の発明によれば、計算された移動方向を対象体のシミュレートに反映させるので、対象体をより多彩にシミュレートし、使用者に与える趣味感、興味感や臨場感を向上することができる。
【０１１０】
さらに、請求項１４記載の発明によれば、趣味感や興味感を高めたゲーム装置を提供することができる。そして、請求項１５及び１６記載の発明によれば、衝突判定における画像処理を迅速、かつ正確に実施できる画像処理装置を提供することができる。
【図面の簡単な説明】
【図１】本発明の対象体の一例を示す平面図であるである。
【図２】本発明の一実施例に係わるゲーム装置のブロック構成図である。
【図３】同ブロック構成図におけるＣＰＵのメイン処理を示すフローチャートである。
【図４】図３の処理における滑動要求判断処理を示すサブルーチンである。
【図５】滑動挙動計算のためのモデル図である。
【図６】車の挙動を説明するためのモデル図である。
【図７】タイヤの高さ変化を示す概念図である。
【図８】滑動挙動計算処理を示すサブルーチンである。
【図９】通常走行挙動計算処理を示すサブルーチンである。
【図１０】  タイヤの位置計算のためのモデル図である。
【図１１】図１０と同じモデル図である。
【図１２】仮想的なサスペンションのための制御動作を説明するモデル図である。
【図１３】同モデル図である。
【図１４】サスペンションのモデル図である。
【図１５】車体の横転挙動のモデル図である。
【図１６】車同士の衝突判定を示すモデル図である。
【図１７】同モデル図である。
【図１８】図３の横転挙動制御処理のサブルーチンである。
【図１９】楕円モデルの衝突判定のためのモデル図である。
【図２０】衝突点の角度範囲を示すモデル図である。
【図２１】同モデル図である。
【図２２】タイヤの回転数制御を説明するフローチャートである。
【図２３】タイヤの回転数制御を説明するモデル図である。
【図２４】対象体に対する衝突判定モデルの他の例を示す。
【符号の説明】
１０  ゲーム装置本体
１１  入力装置
１２  出力装置
１３  Ｔｖモニタ（表示手段）
【図１】
0003783735.tif 000002
【図２】
0003783735.tif 000003
【図３】
0003783735.tif 000004
【図４】
0003783735.tif 000005
【図５】
0003783735.tif 000006
【図６】
0003783735.tif 000007
【図７】
0003783735.tif 000008
【図８】
0003783735.tif 000009
【図９】
0003783735.tif 000010
【図１０】
0003783735.tif 000011
【図１１】
0003783735.tif 000012
【図１２】
0003783735.tif 000013
【図１３】
0003783735.tif 000014
【図１４】
0003783735.tif 000015
【図１５】
0003783735.tif 000016
【図１６】
0003783735.tif 000017
【図１７】
0003783735.tif 000018
【図１８】
0003783735.tif 000019
【図１９】
0003783735.tif 000020
【図２０】
0003783735.tif 000021
【図２１】
0003783735.tif 000022
【図２２】
0003783735.tif 000023
【図２３】
0003783735.tif 000024
【図２４】
0003783735.tif 000025