説明

画像処理方法

【課題】 コースの形状を自動生成するに際して、コースの形状が複雑になり過ぎないようにすること。
【解決手段】 ゲーム親局12の演算装置52は、コースを選択したあと、コース上に複数の通過点を設定し、各通過点の振幅を、各通過点間の距離に乱数αとコースの難易度に応じて適宜設定される難易度指標値βとを乗じて決定し、コース上の各通過点の角度を各通過点の位置データを基に演算し、通過点の角度が基準値を超えたときには、難しくなり過ぎるため、コース生成の自動計算を最初からやり直し、角度が基準値を超えている通過点がないときには、各通過点の位置データを基にベジェ曲線を用いてコースの曲線を生成し、このコースを複数のポリゴンを構成し、コースのモデルを仮想空間に配置し、仮想空間の所定の視点に基づいて映像を生成し、生成した映像を画面上に表示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理方法に係り、特に3Dゲーム装置の画像処理に関するものである。さらに、本発明は、画像処理方法をコンピュータに実行させるためのプログラム、及びプログラム記憶媒体に関するものである。
【背景技術】
【0002】
従来この種のゲーム装置として、レース競技に関係したものがある。3Dゲーム機のコントローラは、仮想3次元空間内でオブジェクトをコース上に移動させる画像を生成し、これを仮想視点から見た映像として表示手段に出力する。例えば、車のレースゲームの場合は、仮想空間内のコースを走行する車を追うように視点が移動し、車が走行する様子が表示手段に表示される。
【0003】
オブジェクトが走行するコースに変化が無いと、遊戯者の興味が低下するので、多くのゲーム装置では遊戯前或いはその途中でコースを複数のものの中から選択できるようになっている。例えば、初級、中級、上級のコースが選択できることである。また、コースの形状、特にカーブの曲率をゲーム機のコントローラが乱数を用いるなどして、遊戯を開始する際にコースを自動的に生成することも行われていた。
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、コースの形状として、例えば、カーブの曲率をゲーム機のコントローラが乱数を用いるなどして、遊戯を開始する際にコースを自動的に生成する方法では、コースの形状が急に複雑になることがあり、遊戯者に対する難易度が増してしまう。すなわち、従来技術では、コースの形状に合わせて、コースの高さやコースに合わせてコースの周りの景観(山や谷など)の高さを自動生成することは行われていなかった。
本発明の目的は、コースの形状を自動生成するに際して、コースの形状が複雑になり過ぎないようにすることにある。
また、本発明の他の目的は、コースの形状に合わせて、コースの高さや景観の高さも自動生成することにある。
【課題を解決するための手段】
【0005】
前記目的を達成するために、本発明は、仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、コースの初期通過点のデータを前記メモリから読み出す工程と、前記初期通過点から新たな通過点を生成する工程と、新たに生成された通過点から更に新たな通過点を生成する演算を複数回繰り返す工程と、新たに生成された通過点が元ある通過点に対する、2次元平面上における振幅を乱数によって決定する工程と、前記コースの通過点の角度を演算する工程と、基準値を超える通過点があるか否かを判定する工程と、を備え、さらに前記基準値を超える通過点がある場合には、前記各工程を繰り返すように構成され、前記基準値を超える通過点がない場合には、各通過点の位置データからコースの曲線を生成させ、この生成の後、当該コースを構成するポリゴンを発生するように構成されてなる画像処理方法を採用したものである。
前記画像処理方法を採用するに際しては、以下の要素を付加することができる。
(1)前記通過点の生成がフラクタル関数を利用して行われる。
(2)前記コースの曲線がベジェ曲線によって構成される。
(3)通過点をXとし、これに隣接する通過点をx−1、x+1としたとき、通 過点XがX−1とX+1とを結ぶ線分に対する距離を前記振幅とし、この 振幅は、前記線分の距離に乱数とコースの難易度に応じて適宜設定される 難易度指標値とを乗じて決定される。
【0006】
上記画像処理方法によれば、コースの振幅を規定し、コースの振幅が所定の範囲内、例えば、基準値に制限するようにしたため、コースの形状が意図せず難度の高いものにならないようにすることができる。
また、本発明は、仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、この演算装置は、前記プログラムに基づいて、コースの初期通過点のデータを前記メモリから読み出す工程と、前記初期通過点から新たな通過点の2次元座標の位置を、乱数を用いて生成する工程と、通過点の角度に応じて通過点の高さを乱数を用いて生成する工程と、前記コースの周りの景観のモデルの高さを前記コースに対する距離と乱数を用いて生成する工程とを実行するように構成された画像処理方法を採用したものである。
上記画像処理方法によれば、コースの通過点の角度に応じてコースの高さを設定するようにしたため、コースの形状が意図せず難度の高いものにならないようにすることができる。
さらに、本発明は、仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、この演算装置は、前記プログラムに基づいて、コースの通過点を設定する工程と、各通過点が前記コースのどの区分に属するかを決定する工程と、各区分毎にコースの昇り又は下りに応じた昇降係数を決定する工程と、コースの種別に応じた種別係数を決定する工程と、を備え、前記通過点の角度と前記昇降係数と前記種別係数と乱数とに基づいて前記コースの各通過点の高さを生成するようにした画像処理方法を採用したものである。
【0007】
この画像処理方法を採用するに際しては、以下の要素を付加することができる。
【0008】
(1)前記各通過点において加算される高さを、
加算する高さ = f(θ) * dir + 乱数*dir*h
θ:通過点iの角度
乱数: [ -1.0 から +1.0 ]
h: 区間ごとの乱数の要素の高さの係数である前記種別係数
dir: 区間の昇降係数
f(θ) : θに応じて変化する関数角
に基づいて決定する。
【0009】
(2)前記演算装置は、隣接する通過点に前記加算される高さを加算し、これを順次繰り返す工程を更に備えた。
【0010】
(3)昇り区間の場合には前記θの角度が小さいほど前記f(θ)の値が大きくなるように設定されている。
【0011】
上記画像処理方法によれば、コースの通過点の角度に応じてコースの高さを設定するようにしたため、コースの形状が意図せず難度の高いものにならないようにすることができる。
【0012】
また、他の目的を達成するために、本発明は、仮想空間に設定されたコースの周りの景観を自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、前記景観が属する2次元平面座標に複数の参照点を設定する工程と、各参照点と前記コースとの前記2次元平面の距離を演算する工程と、前記演算結果と乱数によって前記参照点の高さを決定する工程と、前記参照点の高さに基づいて前記景観を自動生成する工程と、生成された景観を構成するポリゴンを生成させる工程と、前記仮想空間内の所定の仮想視点から見たポリゴンを透視変換して、変換像を表示手段に表示するための処理を行う工程とを、実行するようにした画像処理方法を採用したものである。
【0013】
上記画像処理方法を採用するに際しては、以下の要素を付加することができる。
前記演算装置は、前記コースを複数の区間に分割し、前記演算値が所定の範囲内にあり、かつ当該演算値から前記参照点が属する区間を決定し、又は前記参照点が所定の範囲を超えて、いずれの区分にも属しないと決定する工程と、所定の区間に属する参照点の高さを当該区分に設定された高さと乱数とから決定する工程と、どの区間にも属しない参照点の高さを前記コースの基準高さと乱数とに基づいて決定する工程と、をさらに備える。
【0014】
どの区間にも属しない参照点の高さhを、
h = 乱数(0.0から1.0)*高さ係数 + 前記基準高さ
から得られる値とし、高さ係数は、山岳の景観であれば平坦の景観よりも大きい値に設定されている。
前記基準高さが前記コースの最大高さである。上記画像処理方法によれば、コースの通過点の高さに応じてコース周りの景観の高さを設定するようにしたため、景観のモデリングを省略しても、景観の高さがコースに整合したものになり、コースと景観からなるモデルの品質が向上する。
前記何れかの前記演算装置の各工程をコンピュータに実行させるためのプログラムを構成したり、このプログラムが記録された記録媒体を構成したりすることができる。さらに、前記何れかの前記演算装置を備えた画像処理装置を構成することができる。
【発明の効果】
【0015】
本発明によれば、コースの形状が意図せず難度の高いものにならないようにすることができる。また、本発明によれば、景観のモデリングを省略しても、景観の高さがコースに整合したものになり、コースと景観からなるモデルの品質を向上させることができる。
【発明を実施するための最良の形態】
【0016】
以下、本発明の一実施形態を図面に基づいて説明する。図1は、本発明の一実施例を示す画像処理装置のブロック構成図、図2は、本発明に係る画像処理装置をネットワークゲームシステムのテレビゲーム装置に適用したときのネットワークシステムのブロック図である。
図1において、画像処理装置は、電子遊戯システムの一要素として、仮想空間にコースを自動生成するための画像処理を実行するコンピュータを備え、このコンピュータは、画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じてコースを自動生成するデータ処理を実行する演算装置とから構成され、演算装置としてのCPUが中心となって、電子遊戯に伴う画像処理などのための情報処理を実行する。
【0017】
図1の電子遊戯システムは、ゲーム端末として、CPU101等を中心に構成される制御部1、遊戯者が制御部1に操作信号を入力するための入力装置2、オペレーティングシステム(以下、「OS」という。)やアプリケーションプログラム(ゲームプログラム)を記憶し、必要に応じてこれらプログラムを制御部1に入力するための外部記憶装置3、遊戯者に画像や音を提供するための表示装置4a、及びスピーカ4b等からなる出力装置4を備えている。また、電話回線等を介して他のコンピュータやゲーム装置とデータの送受信をするための通信装置5を備えている。なお、外部記憶装置3は、図示したCD−ROM等に限らず、制御部1からのデータを書き込み保持可能な記録媒体等であっても良い。
【0018】
ゲームを開始すべく電源が投入されると、図示しないプートプログラムローダは、ROM102に記憶されているプートプログラム(イニシャルプログラムと呼ばれることもある。)をCPU101にロードし、CPU101は、プートプログラムを実行する。CPU101は、このプートプログラムに従って、CD−ROM等に記憶されているOSの全部または必要な部分をメインメモリ103にロードし、OSを実行する。
【0019】
CPU101は、このOSの制御の下、CD−ROM等に記憶されているアプリケーションプログラム(以下、単に「プログラム」ということもある。)の全部または必要な部分をメインメモリ103にロードすると共に、必要に応じてCD−ROM等に記憶されている描画データや画像データをグラフィックメモリ104にロードし、また、サウンドデータをサウンドメモリ105にロードする。
【0020】
CPU101は、OSの制御の下、メインメモリ104に記憶されたアプリケーションプログラムを実行する。アプリケーションプログラムの実行に伴うデータは、メインメモリ104やバックアップメモリ106に必要の都度書き込まれ参照される。バックアップメモリ106は、ゲームの中断等で電源が遮断されてもそれまでの状態を保持するために、データを記憶する。なお、本実施の形態において、OSやアプリケーションプログラム等はCD−ROMから提供されるように構成しているが、例えば、ROMから供給されるように構成したり、ネットワークを介して他のコンピュータから供給されるように構成したりすることもできる。
【0021】
ビデオディスプレイプロセッサ(VDP:Video Display Processor)107は、グラフィックメモリ104に記憶されて画像表示に必要な描画データを読み出して、アプリケーションプログラムの実行によるCPU101からの命令やデータに基づき各種情報処理(画像処理)を行って、画像情報として画像データを生成する。各種画像処理としては、例えば、テクスチャマッピング、光源処理、表示優先処理等がある。
【0022】
生成された画像データを表示装置4aに表示するために、VDP107は、エンコーダ108に画像データを出力する。なお、生成された画像データは、例えば、フレームバッファメモリ等に書き込み、このフレームバッファメモリから所定のタイミングで読み出すようにしても良い。
【0023】
サウンドプロセッサ(Sound Processor)109は、サウンドメモリ105に記憶されるサウンドデータを読み出して、アプリケーションプログラムの実行によるCPU101からの命令やデータに基づき、各種情報処理(音声処理)を行う。各種音声処理としては、例えば、エフェクト処理、ミキシング処理等がある。各種音声処理が施されたサウンドデータは、D/Aコンバータ110によってアナログデータに変換され、スピーカ4bに出力される。
【0024】
バスアービタ(Bus Arbiter)111は、データ伝送路(バス)を介して接続される各ユニット間同士の制御を行う。例えば、バスアービタ111は、バスを占有するユニットを決定するために、各ユニット間の優先順位を決定したり、占有するユニットのバス占有時間の割り当てを行ったりする。
ネットワークシステムでは、各テレビゲーム装置間で共通のゲームアプリケーションプログラムが実行される。このネットワークシステムは、図2に示すように、テレビゲーム装置である複数の端末装置10、10…と、複数のサーバー機を含むゲーム親局12と、この端末装置10とゲーム親局12とを接続するための通信ネットワーク14を備えている。このシステムにおいて、端末装置10が特定のゲームを実行するために定められた特定のインターネットプロバイダ16を介してゲーム親局12に接続されていて、ゲーム親局12を通して各ゲーム装置(端末装置)10、10間で共通のゲームアプリケーションプログラムを実行する。
サーバーとしてのゲーム親局12は、電子遊戯システムの一要素として、仮想空間にコースを自動生成するための画像処理を実行するコンピュータを備え、このコンピュータは、画像処理を実行するためのプログラムが記録されたメモリ50と、このプログラムに応じてコースを自動生成するデータ処理を実行する演算装置52とから構成され、演算装置52は、電子遊戯に伴う画像処理などのための情報処理を実行する。
例えば、図3に示すように、各ゲーム装置(端末装置)10から自身のキャラクタのパラメータ(位置、速度など)に関するデータを通信ネットワーク14を介してゲーム親局12が受信したときに、演算装置52は、メモリ50に記録されたプログラムに応じてコースを自動生成したり、レースを実行したりするための処理を実行する。そして、レースのパラメータ(順位など)や自動生成したコース及び景観(コースの周りの山や谷などの形態)のパラメータを通信ネットワーク14を介して、クライアントとしての各ゲーム装置10に転送する。各ゲーム装置10では、メモリに記録された車やコースのモデルデータ、ゲーム親局12から転送されたパラメータを基に複数の車のオブジェクトがコース上を競争する映像を形成するようになっている。
なお、各ゲーム装置10は、通信ネットワーク14及び特定インターネットプロバイダ16ではないインターネットプロバイダ18を介してサーバー機に接続されていても良い。このシステムにおいて、各ゲーム装置10は、ゲームアプリケーションプログラムを実行しているときに、遊戯者一人一人の詳細な個人情報を交換できる個人情報処理手段20を備えている。
演算装置52は、メモリ50に記録されたプログラムに応じてコースを自動生成するに際して、図4に示すように、以下の機能を備えて構成されている。
【0025】
演算装置52は、メモリ50のプログラムに基づいて、コースの初期通過点のデータをメモリ50から読み出し、読み出したデータを基に前記初期通過点から新たな通過点を生成する手段60と、手段60で新たに生成された通過点から更に新たな通過点を生成する演算を複数回繰り返す手段62と、手段60で新たに生成された通過点が元ある通過点に対する、2次元平面上における振幅を乱数によって決定する手段64と、前記コースの通過点の角度を演算する手段66と、基準値を超える通過点があるか否かを判定する手段68と、を備え、手段68で前記基準値を超える通過点がある判定されたときには、前記各工程を繰り返すように構成され、手段68で前記基準値を超える通過点がないと判定されたときには、各通過点の位置データからコースの曲線を生成させ、この生成の後、当該コースを構成するポリゴンを発生する手段70を備えて構成されている。
【0026】
また、演算装置52は、図5に示すように、メモリ50のプログラムに基づいて、コースの初期通過点のデータをメモリ50から読み出し、読み出したデータを基に前記初期通過点から新たな通過点の2次元座標の位置を、乱数を用いて生成する手段72と、通過点の角度に応じて通過点の高さを乱数を用いて生成する手段74と、前記コースの周りの景観のモデルの高さを前記コースに対する距離と乱数を用いて生成する手段76とを備えて構成されている。
【0027】
また、演算装置52は、図6に示すように、メモリ50のプログラムに基づいて、コースの通過点を設定する手段78と、各通過点が前記コースのどの区分に属するかを決定する手段80と、各区分毎にコースの昇り又は下りに応じた昇降係数を決定する手段82と、コースの種別に応じた種別係数を決定する手段84と、を備え、前記通過点の角度と前記昇降係数と前記種別係数と乱数とに基づいて前記コースの各通過点の高さを生成するように構成されている。
さらに、演算装置54は、図7に示すように、メモリ50のプログラムに基づいて、仮想空間に設定されたコースの周りの景観が属する2次元平面座標に複数の参照点を設定する手段86と、各参照点と前記コースとの前記2次元平面の距離を演算する手段88と、手段88の演算結果と乱数によって前記参照点の高さを決定する手段90と、前記参照点の高さに基づいて前記景観を自動生成する手段92と、生成された景観を構成するポリゴンを生成させる手段94と、前記仮想空間内の所定の仮想視点から見たポリゴンを透視変換して、変換像を表示手段に表示するための処理を行う手段96と、を備えて構成されている。
【0028】
次に、演算装置52によってコースを自動生成するに際しては、図8のフローチャートに示すように、コースを決定し(ステップS1)、決定されたコースに関するパラメータとして、コースの形状(2次元形状)を自動生成し(ステップS2)、次に、コースの高さを自動生成し(ステップS3)、そのあと、コースの周りを自動生成する(ステップS4)。コースに関するパラメータが求められたときには、演算装置52の演算結果によるパラメータをコースに関するデータとして、ゲーム親局12から特定インターネットプロバイダ16、通信ネットワーク14を介して各ゲーム装置10にリアルタイムで送信する(ステップS5)。
【0029】
ステップS1において、演算装置52によってコースを決定するに際しては、例えば、図9に示すように、難易度の高いコースC1、難易度の中のコースC2、難易度の低いコースC3の中から1つのコースを自動的に決定することもできるが、ゲーム装置10からのリクエストによって1つのコースを決定することもできる。この場合、多数のゲーム装置10からリクエストがあったときには、例えば、多数決によって1つのコースを決定することもできる。
次に、ステップS2において、演算装置52によってコースの形状(2次元形状)を自動生成するときの処理を図10のフローチャートに従って説明する。
まず、演算装置52は、ステップS1において決定されたコースについて、メモリ50に記憶されている初期通過点のデータを基に新たな通過点を順次設定する(ステップS201)。例えば、コースC2が選択されたときには、フラクタル関数を用いて、頂点0と頂点4から頂点2を新たな通過点に設定し、頂点0と頂点2から頂点1を新たな通過点に設定し、頂点2と頂点4から頂点3を新たな通過点に設定する。すなわち、頂点0、4や新たに求められた頂点1、2、3に関する位置データを基に、各頂点間に新たな通過点を設定するための処理を実行する。
コース上に新たな通過点が求められたときには、各通過点の振幅を、例えば、乱数を使って決定する(ステップS202)。この振幅は、通過点をXとし、これに隣接する通過点をx−1、x+1としたときに、通過点XがX−1とX+1とを結ぶ線分に対する距離を示しており、この振幅は、図11に示すように、前記線分の距離に乱数αとコースC1、C2、C3の難易度に応じて適宜設定される難易度指標値βとを乗じて決定される。
乱数αとしては、0.0〜1.0が用いられ、難易度指標値βとしては、0.0〜1.0のうちコースC1、C2、C3によって異なる数値が用いられる。すなわち、難易度が高くなる程βが大きくなり、振幅が大きくなるほど難易度が大きくなる。
次に、コース上の各通過点の角度を初期通過点や各通過点の位置データを基に演算する(ステップ203)。例えば、図12に示すように、頂点0から頂点nまでの間に存在する頂点1〜頂点n−1の角度を各通過点の角度として演算する。このとき、選択された各コースC1、C2、C3に対して、各コースC1、C2、C3の難易度に応じた基準値が、90度、45度、30度に設定されているので、各コースについて算出された角度が基準値を超えているか否かを判定する(ステップS204)。角度が基準値を超えている通過点があるときには、ステップS201の処理に戻る。すなわち、振幅が小さいときには、通過点の角度は小さくなるが、通過点の角度が基準値を超えたときには、難しく為り過ぎるため、コース生成の自動計算を最初からやり直す。
一方、角度が基準値を超えている通過点がないときには、図13に示すように、各通過点の位置データを基にベジェ曲線を用いてコースの曲線を生成する(ステップS205)。
コースの形状(2次元平面/X−Z:以下、Xは、3次元空間(画面)の横、Yは高さ、Zは奥行きを示す。)が決定したときには、コースを形成する複数のポリゴンを決定し、この決定に従って、コースのモデルを仮想空間に配置し、仮想空間の所定の視点に基づいて映像を生成し、生成した映像を画面上に表示する。
このように、コースの振幅を規定し、コースの振幅が所定の範囲内、例えば、基準値に制限するようにしたため、コースの形状が意図せず難度の高いものにならないようにすることができる。
なお、新たな通過点を設定するに際して、所定距離未満で2つの通過点が近接して設定された場合、車が他の通過点をスルーして近い通過点にショートカットすることがありうる。そこで、このような場合は、後述の高さ生成の際に、互いに近接する通過点間の高さを所定以上異なるようにする。こうすれば、遊戯者にとってみれば、通過点をスルーするような気持ちにならない。これを可能にするために、各通過地点同士の距離を演算し、これが基準値以下の場合には、近接する2つの通過点の高さの差が所定値以上になるようにする。
次に、ステップS3において、演算装置52によってコースの通過点の高さを自動生成するときの処理を図14のフローチャートに従って説明する。
【0030】
演算装置52は、コース上に存在する各通過点の位置データを基に各通過点がコースのどの区分(区画)に属するかを決定する(ステップS301)。例えば、コースの全長を0.0から1.0とした場合、0.0から0.25を区間0とし、0.25から0.50を区間1とし、0.50から0.75を区間2とし、0.75から1.0を区間3とする。コース上の区間が決定されたときには、この決定に従って各区分毎にコースの昇り又は下りに応じた昇降係数dirを決定する(ステップS302)。この場合、各区分について昇り、下りの特性が昇降係数dirとしてテーブル形式でフラグに対応づけてメモリ50に記憶されているので、演算装置52は、各区分の専用フラグをチェックし、各区分がコースの昇りか下りかを判定する。例えば、昇降係数dirは、下りのときには−1.0に設定され、昇りのときには+1.0に設定されている。なお、平坦の区分についても、フラグが設定されている。
【0031】
次に、演算装置52は、コースの種別に応じた種別係数(影響度係数)hを決定する(ステップS303)。例えば、平原の場合には、高低差が少ないので、種別係数hを0.001に決定し、山道については、高低差を激しくするために、種別係数hを0.25や0.5に決定する。このあと、演算装置52は、各通過点の角度と昇降係数dirと種別係数hと乱数とに基づいてコースの各通過点の高さを生成する(ステップS304)。
【0032】
コースの各通過点の高さを生成するに際して、演算装置52は、各通過点について、一つ前の通過点の高さを加算する処理を実行し、各通過点において加算される高さを、
加算する高さ = f(θ) * dir + 乱数*dir*h
θ:通過点iの角度
乱数: [ -1.0 から +1.0 ]
h: 区間ごとの乱数の要素の高さの係数である前記種別係数
dir: 区間の昇降係数
f(θ) : θに応じて変化する関数角
に基づいて決定する。
【0033】
すなわち、演算装置52は、隣接する通過点に、加算される高さを加算する処理を順次繰り返す。なお、昇り区間の場合には、θの角度が小さいほど、f(θ)の値が大きくなるように設定されている。
【0034】
このように、コースの通過点の角度に応じてコースの高さを設定するようにしたため、コースの高さが意図せず難度の高いものにならないようにすることができる。また、コースを複数の区間に分け、各区間に昇降係数や種別係数を設定しておくことで、コースの変化をより多彩にすることができる。
次に、ステップS4において、演算装置52によってコースの周りの景観(山の高さ)を自動生成するときの処理を図15のフローチャートに従って説明する。演算装置52は、コースの周りの景観(例えば、山の高さ)を自動的に生成するに際して、コースの周りを格子状の複数の格子点(参照点)に分け、各格子点とコースとの距離を演算する(ステップS401)。例えば、景観が属する2次元平面座標系に複数の格子点(参照点)を設定し、各格子点(参照点)とコースとの距離、あるいは各格子点と各通過点との距離を2次元座標系に従って演算する。そして、演算値を距離データとしてメモリ50に記録する(ステップS402)。次に、演算装置52は、各格子点の座標(位置データ)を基に各格子点がコースのどの区間に属するか否かを判定するとともに、各格子点と全通過点との距離のうち最小値を求め(ステップS403)、最小値に関する距離データをメモリ50に記録する(ステップS404)。次に、最小値が所定の基準値を超えているか否かを判定する(ステップS405)。すなわち、最小値が所定の基準値以内であれば、該当する格子点はその区間に属すると判定し、最小値が所定の基準値を超えているときには、該当する格子点はどの区間にも属しないと判定する。このあと、演算装置52は、いずれかの区間に属する格子点の高さを、区間について予めテーブルで設定された高さに基づいて乱数を用いて生成する(ステップS406)。一方、演算装置52は、どの区間にも属しないと判定された格子点の高さについても乱数を用いて生成する(ステップS407)。例えば、どの区間にも属しない参照点の高さhを、
h = 乱数(0.0から1.0)*高さ係数 + 前記基準高さ、
から得られる値として求める。なお、高さ係数は、山岳の景観であれば平坦の景観よりも大きい値に設定されており、前記基準高さは、コースの最大高さである。この場合、コース全体としての基準点がテーブルに設定されており、テーブルの基準点を基に乱数を加味して格子点の高さが決定される。
【0035】
また、このコースの左右では、上記計算式の係数が異なるようになっている。例えば、コースの左側は山と考えてコースより高い値となるように設定され、コースの右側谷と考えてコースより低い高さとなるように設定されている。これが可能になるように乱数や基準値が変更される。また、演算装置52は、各格子点がコースの左右のどちらにあるか否かを判定するに際しては、各格子点の座標値と通過点の座標値(仮想空間のX−Z座標値)を基に判定する。
コースの周りの景観(格子点)の高さが決定されたときには、演算装置52は、ダイヤモンドスクウェアの手法によりフラクタル関数によって山谷の形状を形成する。この場合、この凹凸の形状が極端にならないように、形状を平衡化処理する。例えば、凹凸を形成するポリゴン数を減らすなど、山谷の曲線をベジェ曲線によって生成する。そして、山谷を構成するポリゴンを生成し、このポリゴンに関するデータをゲーム親局12から各ゲーム装置10に送信する。各ゲーム装置10は、ゲーム親局12からのデータに基づいて仮想空間を構成し、所定視点からの映像を自身のモニタに表示する。
このように、コースの通過点の高さに応じてコース周りの景観の高さを設定するようにしたため、景観のモデリングを省略しても、景観の高さがコースに整合したものになり、コースと景観からなるモデルの品質が向上する。
なお、画像処理装置はサーバー及びゲーム端末において構成することができる。また、ネットワークを用いずにゲーム機単体にも本発明を適用することができる。
【0036】
また、曲線の生成については、既述のものに限らず、スプライン曲線など公知のものを適用できる。
【0037】
コース生成の他の実施形態について説明する。図16は、既述の実施形態で生成されたコースが複数の区画(例5区画)に分けられ、各区画について、コース上を仮想の車で運転する際の難易度に関するパラメータを設定できることを示している。さらに、各区画間で高低差a→a1→a2→a3が設定可能である。各区画はコースIDによって区別され、ID毎にパラメータ、高低差が、記憶テーブルの形で、コースの生成処理の過程でシステムメモリに保存される。
【0038】
図17は、各区画にマッピングされるコース部品の形状を示している。図17のコース部品は、屈曲の度合いが激しく、難しいものとして分類されている。一方、図18のものは、形状が比較的曲線状で、易しいコース部品として分類されている。なお、同一形状のコース部品が難易度の高い方と低い方の両方に(複数の難易度に渡って)分類されていてもよい。また、難易度の分類は「難」、「易」の2段階に限らず、「難」、「普通」、「易」の3段階など、適宜決めることができる。
【0039】
次に、本実施形態に係るコースの生成について、図19のフローチャートに基づいて説明する。このフローチャートは、記憶媒体に記憶されたゲームプログラムとデータに基づいて、CPU107によって実行される。
【0040】
CPU101は、ユーザから難易度とコース種別の入力チェックがあったか否かをチェックする(1900)。コース種別とは、山岳路、都市部などコースとしての種類である。CPU101は、入力された難易度に基づいて、コース全体を何区画に区分することが適当かを判断し、各区画に難易度パラメータを設定し、かつ、コース種別データに基づくコース概略データを記憶媒体から読み込む(1902)。
【0041】
CPUはコースの各区画の難易度を順番にチェックして、合致する難易度のコース部品をランダムに選択する(1904)、これを全ての区画分チェックしたか否かを判定する(1906)。すなわち、図17の各区画のIDについて、順番に難易度パラメータを読み込み、難易度に対応するコース部品をコース部品リストからランダムに読み出す。難易度パラメータが「難」を示すものであれば、図17のグループからランダムにコース部品を選び、難易度パラメータが「易」を示すものであれば、図18のパラメータからコース部品をランダムに選ぶ。
【0042】
CPUは、このチェックの過程で、各区画のIDとコース部品IDとを対応させたデータテーブルを作成し、これをシステムメモリに102に保存しておく。CPUはこのデータテーブルを参照して、コース部品を、コース概略データを参照しながら接続してコース全体を生成する(1906)。すなわち、CPUは、コースの終点と次のコースの始点の座標(ローカル座標)を一致させて、これを繰り返してコース全体の形状を形成する。CPUはコース部品を連結する際、設定された高低差が隣接するコース部品間で発生するようにしている。次いで、CPUは、コース概略データや区画データ等に含まれる背景指定データに基づき背景を生成し、生成されたコースとともにこれをグローバル座標系にマッピングする(1910)。
【0043】
コース部品の難易度はユーザの設計と入力によって決定される。図17の例では左の区画から、易→易→難→難→難、と定められているが、これに限定されるものではない。ユーザがどのようなコースを作りたいかによって、「難」と「易」の各パラメータの順番は適宜変わって良い。パラメータの種類も、難と易の二段階だけではなく、既述のように、難、易、普通の3段階、あるいはそれ以上の段階があっても良い。ユーザ(開発者)が全体の難易度を決めて、CPUがユーザ入力情報に基づいて各区画の難易度を設定し、難易度に合致するコース部品を選択するようにしても良い。
【0044】
この実施形態によれば、ユーザは、各区画について難易度のパラメータを設定するだけで、コース全体を自動的に設計することが可能である。難易度のパラメータを自由に組み合わせることによって、コース全体の特性をデザインすることができる。
【0045】
また、エンドユーザが、コースの種類と特性、例えば種類として「山岳」を、特性として「難しい」を選択して、入力手段を介してCPUに指令を与えると、CPUは、「山岳」用コース概略データ(最初直線→上り→平坦→右側崖→左側湖→直線下り→ゴール、といった、地形の高低差やゲーム的な起伏を考慮して定義されるデータ)と、既述の難易度に合致するコース部品を選択して組み合わせてコースを自動生成することもできる。
【0046】
コース全体の形状(ローカル座標系の形状)をグローバル座標系にマッピングすれば、自動車レースゲームに使用されるコースが完成する。このコースが実際に走行しやすいか否かは、ユーザがグローバル座標系に存在するコース上を、レースカーを走らせれば判断できる。
【図面の簡単な説明】
【0047】
【図1】本発明の一実施例を示す画像処理装置のブロック構成図である。
【図2】本発明に係る画像処理装置をネットワークゲームシステムのテレビゲーム装置に適用したときのネットワークシステムのブロック図である。
【図3】サーバーの機能ブロック図である。
【図4】演算装置の機能ブロック図である。
【図5】演算装置の他の機能ブロックである。
【図6】演算装置の他の機能ブロック図である。
【図7】演算装置の他の機能ブロック図である。
【図8】演算装置を用いてコースの形状を自動生成するときの作用を説明するためのフローチャートである。
【図9】難易度に応じたコースの構成図である。
【図10】演算装置を用いてコースの高さを自動生成するときの作用を説明するためのフローチャートである。
【図11】コースの難易度に応じて振幅を設定するための処理を説明するための特性図である。
【図12】コースの角度を示す図である。
【図13】ベジェ曲線を示す図である。
【図14】コース上の各種の係数を決定するための処理を説明するためのフローチャートである。
【図15】コースの周りの景観を自動生成するための処理を説明するためのフローチャートである。
【図16】コースが複数の区画から形成されている状態を示す図である。
【図17】「難」として分類されたコース部品の例である。
【図18】「易」として分類されたコース部品の例である。
【図19】コース生成の他の実施形態の動作を示すフローチャートである。
【符号の説明】
【0048】
1 制御部
2 入力装置
3 外部記憶装置
4 出力装置
5 通信装置
10 ゲーム装置
12 ゲーム親局
14 通信ネットワーク
16 特定インターネットプロバイダ
50 メモリ
52 演算装置
101 CPU
102 ROM
103 メインメモリ
104 グラフィックメモリ
108 ビデオエンコーダ
111 バスアービタ

【特許請求の範囲】
【請求項1】
仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、コースの初期通過点のデータを前記メモリから読み出す工程と、前記初期通過点から新たな通過点を生成する工程と、新たに生成された通過点から更に新たな通過点を生成する演算を複数回繰り返す工程と、新たに生成された通過点が元ある通過点に対する、2次元平面上における振幅を乱数によって決定する工程と、前記コースの通過点の角度を演算する工程と、基準値を超える通過点があるか否かを判定する工程と、を備え、さらに前記基準値を超える通過点がある場合には、前記各工程を繰り返すように構成され、前記基準値を超える通過点がない場合には、各通過点の位置データからコースの曲線を生成させ、この生成の後、当該コースを構成するポリゴンを発生するように構成されてなる画像処理方法。
【請求項2】
前記通過点の生成がフラクタル関数を利用して行われる請求項1記載の方法。
【請求項3】
前記コースの曲線がベジェ曲線によって構成される請求項1記載の方法。
【請求項4】
通過点をXとし、これに隣接する通過点をx−1、x+1としたとき、通過点XがX−1とX+1とを結ぶ線分に対する距離を前記振幅とし、この振幅は、前記線分の距離に乱数とコースの難易度に応じて適宜設定される難易度指標値とを乗じて決定される請求項1記載の方法。
【請求項5】
仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、コースの初期通過点のデータを前記メモリから読み出す工程と、前記初期通過点から新たな通過点の2次元座標の位置を、乱数を用いて生成する工程と、通過点の角度に応じて通過点の高さを乱数を用いて生成する工程と、前記コースの周りの景観のモデルの高さを前記コースに対する距離と乱数を用いて生成する工程とを実行するように構成された画像処理方法。
【請求項6】
仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、コースの通過点を設定する工程と、各通過点が前記コースのどの区分に属するかを決定する工程と、各区分毎にコースの昇り又は下りに応じた昇降係数を決定する工程と、コースの種別に応じた種別係数を決定する工程と、を備え、前記通過点の角度と前記昇降係数と前記種別係数と乱数とに基づいて前記コースの各通過点の高さを生成するようにした画像処理方法。
【請求項7】
前記各通過点において加算される高さを、
加算する高さ = f(θ) * dir + 乱数*dir*h
θ:通過点iの角度
乱数: [ -1.0 から +1.0 ]
h: 区間ごとの乱数の要素の高さの係数である前記種別係数
dir: 区間の昇降係数
f(θ) : θに応じて変化する関数
に基づいて決定するようにした請求項6記載の方法。
【請求項8】
前記演算装置は、隣接する通過点に前記加算される高さを加算し、これを順次繰り返す工程を更に備えた請求項6又は7記載の方法。
【請求項9】
昇り区間の場合には前記θの角度が小さいほど前記f(θ)の値が大きくなるように設定されている請求項7又は8記載の方法。
【請求項10】
仮想空間に設定されたコースの周りの景観を自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、前記景観が属する2次元平面座標に複数の参照点を設定する工程と、各参照点と前記コースとの前記2次元平面の距離を演算する工程と、前記演算結果と乱数によって前記参照点の高さを決定する工程と、前記参照点の高さに基づいて前記景観を自動生成する工程と、生成された景観を構成するポリゴンを生成させる工程と、前記仮想空間内の所定の仮想視点から見たポリゴンを透視変換して、変換像を表示手段に表示するための処理を行う工程とを、実行するようにした画像処理方法。
【請求項11】
前記演算装置は、前記コースを複数の区間に分割し、前記演算値が所定の範囲内にあり、かつ当該演算値から前記参照点が属する区間を決定し、又は前記参照点が所定の範囲を超えて、いずれの区分にも属しないと決定する工程と、所定の区間に属する参照点の高さを当該区分に設定された高さと乱数とから決定する工程と、どの区間にも属しない参照点の高さを前記コースの基準高さと乱数とに基づいて決定する工程と、をさらに備える請求項10記載の方法。
【請求項12】
どの区間にも属しない参照点の高さhを、
h = 乱数(0.0から1.0)*高さ係数 + 前記基準高さ
から得られる値とし、高さ係数は、山岳の景観であれば平坦の景観よりも大きい値に設定されている、請求項11記載の方法。
【請求項13】
仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、
前記コースを複数の区画に分割する工程と、区画毎に難易度のパラメータを設定する工程と、前記メモリに記憶された、前記コースの一部を成すコース部品を、前記区画毎に、前記難易度のパラメータに基づいて選択する工程と、区画毎に選択された前記コース部品を組み合わせて前記コース全体を形成する工程と、を実行するように構成された画像処理方法。
【請求項14】
前記演算装置は、さらに、生成されたコースを複数の区画に分割する工程と、区画毎に難易度のパラメータを設定する工程と、前記メモリに記憶された、前記コースの一部を成すコース部品を、前記区画毎に、前記難易度のパラメータに基づいて選択する工程と、区画毎に選択された前記コース部品を組み合わせて前記コース全体を形成する工程と、を実行するように構成された画像処理方法。
【請求項15】
前記コース部品は、難易度毎に分類されている、請求項13又は14記載の画像処理方法。
【請求項16】
前記画像処理装置は、前記区画毎に高低差を設定する工程をさらに実行する請求項13乃至15のいずれか1項記載の画像処理方法。
【請求項17】
前記基準高さが前記コースの最大高さである請求項10又は11記載の方法。
【請求項18】
請求項1乃至17の何れか一項記載の前記演算装置の各工程をコンピュータに実行させるためのプログラム。
【請求項19】
請求項18記載のプログラムが記録された記録媒体。
【請求項20】
請求項1乃至15の何れか一項記載の前記演算装置を備えた画像処理装置。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2006−116294(P2006−116294A)
【公開日】平成18年5月11日(2006.5.11)
【国際特許分類】
【出願番号】特願2005−261384(P2005−261384)
【出願日】平成17年9月8日(2005.9.8)
【出願人】(000132471)株式会社セガ (811)
【Fターム(参考)】