(57)【要約】【課題】  コースの形状を自動生成するに際して、コースの形状が複雑になり過ぎないようにすること。【解決手段】  ゲーム親局１２の演算装置５２は、コースを選択したあと、コース上に複数の通過点を設定し、各通過点の振幅を、各通過点間の距離に乱数αとコースの難易度に応じて適宜設定される難易度指標値βとを乗じて決定し、コース上の各通過点の角度を各通過点の位置データを基に演算し、通過点の角度が基準値を超えたときには、難しくなり過ぎるため、コース生成の自動計算を最初からやり直し、角度が基準値を超えている通過点がないときには、各通過点の位置データを基にベジェ曲線を用いてコースの曲線を生成し、このコースを複数のポリゴンを構成し、コースのモデルを仮想空間に配置し、仮想空間の所定の視点に基づいて映像を生成し、生成した映像を画面上に表示する。【選択図】        図２
2006116294.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、コースの初期通過点のデータを前記メモリから読み出す工程と、前記初期通過点から新たな通過点を生成する工程と、新たに生成された通過点から更に新たな通過点を生成する演算を複数回繰り返す工程と、新たに生成された通過点が元ある通過点に対する、２次元平面上における振幅を乱数によって決定する工程と、前記コースの通過点の角度を演算する工程と、基準値を超える通過点があるか否かを判定する工程と、を備え、さらに前記基準値を超える通過点がある場合には、前記各工程を繰り返すように構成され、前記基準値を超える通過点がない場合には、各通過点の位置データからコースの曲線を生成させ、この生成の後、当該コースを構成するポリゴンを発生するように構成されてなる画像処理方法。
【請求項２】
前記通過点の生成がフラクタル関数を利用して行われる請求項１記載の方法。
【請求項３】
前記コースの曲線がベジェ曲線によって構成される請求項１記載の方法。
【請求項４】
通過点をＸとし、これに隣接する通過点をｘ−１、ｘ＋１としたとき、通過点ＸがＸ−１とＸ＋１とを結ぶ線分に対する距離を前記振幅とし、この振幅は、前記線分の距離に乱数とコースの難易度に応じて適宜設定される難易度指標値とを乗じて決定される請求項１記載の方法。
【請求項５】
仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、コースの初期通過点のデータを前記メモリから読み出す工程と、前記初期通過点から新たな通過点の２次元座標の位置を、乱数を用いて生成する工程と、通過点の角度に応じて通過点の高さを乱数を用いて生成する工程と、前記コースの周りの景観のモデルの高さを前記コースに対する距離と乱数を用いて生成する工程とを実行するように構成された画像処理方法。
【請求項６】
仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、コースの通過点を設定する工程と、各通過点が前記コースのどの区分に属するかを決定する工程と、各区分毎にコースの昇り又は下りに応じた昇降係数を決定する工程と、コースの種別に応じた種別係数を決定する工程と、を備え、前記通過点の角度と前記昇降係数と前記種別係数と乱数とに基づいて前記コースの各通過点の高さを生成するようにした画像処理方法。
【請求項７】
前記各通過点において加算される高さを、
加算する高さ = f(θ) * dir + 乱数*dir*h
θ：通過点iの角度
乱数： [ -1.0 から +1.0 ]
h： 区間ごとの乱数の要素の高さの係数である前記種別係数
dir： 区間の昇降係数
f(θ)  : θに応じて変化する関数
に基づいて決定するようにした請求項６記載の方法。
【請求項８】
前記演算装置は、隣接する通過点に前記加算される高さを加算し、これを順次繰り返す工程を更に備えた請求項６又は７記載の方法。
【請求項９】
昇り区間の場合には前記θの角度が小さいほど前記f(θ)の値が大きくなるように設定されている請求項７又は８記載の方法。
【請求項１０】
仮想空間に設定されたコースの周りの景観を自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、前記景観が属する２次元平面座標に複数の参照点を設定する工程と、各参照点と前記コースとの前記２次元平面の距離を演算する工程と、前記演算結果と乱数によって前記参照点の高さを決定する工程と、前記参照点の高さに基づいて前記景観を自動生成する工程と、生成された景観を構成するポリゴンを生成させる工程と、前記仮想空間内の所定の仮想視点から見たポリゴンを透視変換して、変換像を表示手段に表示するための処理を行う工程とを、実行するようにした画像処理方法。
【請求項１１】
前記演算装置は、前記コースを複数の区間に分割し、前記演算値が所定の範囲内にあり、かつ当該演算値から前記参照点が属する区間を決定し、又は前記参照点が所定の範囲を超えて、いずれの区分にも属しないと決定する工程と、所定の区間に属する参照点の高さを当該区分に設定された高さと乱数とから決定する工程と、どの区間にも属しない参照点の高さを前記コースの基準高さと乱数とに基づいて決定する工程と、をさらに備える請求項１０記載の方法。
【請求項１２】
どの区間にも属しない参照点の高さhを、
ｈ = 乱数(0.0から1.0)*高さ係数 + 前記基準高さ
から得られる値とし、高さ係数は、山岳の景観であれば平坦の景観よりも大きい値に設定されている、請求項１１記載の方法。
【請求項１３】
仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、
前記コースを複数の区画に分割する工程と、区画毎に難易度のパラメータを設定する工程と、前記メモリに記憶された、前記コースの一部を成すコース部品を、前記区画毎に、前記難易度のパラメータに基づいて選択する工程と、区画毎に選択された前記コース部品を組み合わせて前記コース全体を形成する工程と、を実行するように構成された画像処理方法。
【請求項１４】
前記演算装置は、さらに、生成されたコースを複数の区画に分割する工程と、区画毎に難易度のパラメータを設定する工程と、前記メモリに記憶された、前記コースの一部を成すコース部品を、前記区画毎に、前記難易度のパラメータに基づいて選択する工程と、区画毎に選択された前記コース部品を組み合わせて前記コース全体を形成する工程と、を実行するように構成された画像処理方法。
【請求項１５】
前記コース部品は、難易度毎に分類されている、請求項１３又は１４記載の画像処理方法。
【請求項１６】
前記画像処理装置は、前記区画毎に高低差を設定する工程をさらに実行する請求項１３乃至１５のいずれか１項記載の画像処理方法。
【請求項１７】
前記基準高さが前記コースの最大高さである請求項１０又は１１記載の方法。
【請求項１８】
請求項１乃至１７の何れか一項記載の前記演算装置の各工程をコンピュータに実行させるためのプログラム。
【請求項１９】
請求項１８記載のプログラムが記録された記録媒体。
【請求項２０】
請求項１乃至１５の何れか一項記載の前記演算装置を備えた画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理方法に係り、特に３Dゲーム装置の画像処理に関するものである。さらに、本発明は、画像処理方法をコンピュータに実行させるためのプログラム、及びプログラム記憶媒体に関するものである。
【背景技術】
【０００２】
従来この種のゲーム装置として、レース競技に関係したものがある。３Ｄゲーム機のコントローラは、仮想３次元空間内でオブジェクトをコース上に移動させる画像を生成し、これを仮想視点から見た映像として表示手段に出力する。例えば、車のレースゲームの場合は、仮想空間内のコースを走行する車を追うように視点が移動し、車が走行する様子が表示手段に表示される。
【０００３】
オブジェクトが走行するコースに変化が無いと、遊戯者の興味が低下するので、多くのゲーム装置では遊戯前或いはその途中でコースを複数のものの中から選択できるようになっている。例えば、初級、中級、上級のコースが選択できることである。また、コースの形状、特にカーブの曲率をゲーム機のコントローラが乱数を用いるなどして、遊戯を開始する際にコースを自動的に生成することも行われていた。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、コースの形状として、例えば、カーブの曲率をゲーム機のコントローラが乱数を用いるなどして、遊戯を開始する際にコースを自動的に生成する方法では、コースの形状が急に複雑になることがあり、遊戯者に対する難易度が増してしまう。すなわち、従来技術では、コースの形状に合わせて、コースの高さやコースに合わせてコースの周りの景観（山や谷など）の高さを自動生成することは行われていなかった。
本発明の目的は、コースの形状を自動生成するに際して、コースの形状が複雑になり過ぎないようにすることにある。
また、本発明の他の目的は、コースの形状に合わせて、コースの高さや景観の高さも自動生成することにある。
【課題を解決するための手段】
【０００５】
前記目的を達成するために、本発明は、仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、コースの初期通過点のデータを前記メモリから読み出す工程と、前記初期通過点から新たな通過点を生成する工程と、新たに生成された通過点から更に新たな通過点を生成する演算を複数回繰り返す工程と、新たに生成された通過点が元ある通過点に対する、２次元平面上における振幅を乱数によって決定する工程と、前記コースの通過点の角度を演算する工程と、基準値を超える通過点があるか否かを判定する工程と、を備え、さらに前記基準値を超える通過点がある場合には、前記各工程を繰り返すように構成され、前記基準値を超える通過点がない場合には、各通過点の位置データからコースの曲線を生成させ、この生成の後、当該コースを構成するポリゴンを発生するように構成されてなる画像処理方法を採用したものである。
前記画像処理方法を採用するに際しては、以下の要素を付加することができる。
（１）前記通過点の生成がフラクタル関数を利用して行われる。
（２）前記コースの曲線がベジェ曲線によって構成される。
（３）通過点をＸとし、これに隣接する通過点をｘ−１、ｘ＋１としたとき、通      過点ＸがＸ−１とＸ＋１とを結ぶ線分に対する距離を前記振幅とし、この      振幅は、前記線分の距離に乱数とコースの難易度に応じて適宜設定される      難易度指標値とを乗じて決定される。
【０００６】
上記画像処理方法によれば、コースの振幅を規定し、コースの振幅が所定の範囲内、例えば、基準値に制限するようにしたため、コースの形状が意図せず難度の高いものにならないようにすることができる。
また、本発明は、仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、この演算装置は、前記プログラムに基づいて、コースの初期通過点のデータを前記メモリから読み出す工程と、前記初期通過点から新たな通過点の２次元座標の位置を、乱数を用いて生成する工程と、通過点の角度に応じて通過点の高さを乱数を用いて生成する工程と、前記コースの周りの景観のモデルの高さを前記コースに対する距離と乱数を用いて生成する工程とを実行するように構成された画像処理方法を採用したものである。
上記画像処理方法によれば、コースの通過点の角度に応じてコースの高さを設定するようにしたため、コースの形状が意図せず難度の高いものにならないようにすることができる。
さらに、本発明は、仮想空間にコースを自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、この演算装置は、前記プログラムに基づいて、コースの通過点を設定する工程と、各通過点が前記コースのどの区分に属するかを決定する工程と、各区分毎にコースの昇り又は下りに応じた昇降係数を決定する工程と、コースの種別に応じた種別係数を決定する工程と、を備え、前記通過点の角度と前記昇降係数と前記種別係数と乱数とに基づいて前記コースの各通過点の高さを生成するようにした画像処理方法を採用したものである。
【０００７】
この画像処理方法を採用するに際しては、以下の要素を付加することができる。
【０００８】
（１）前記各通過点において加算される高さを、
加算する高さ = f(θ) * dir + 乱数*dir*h
θ：通過点iの角度
乱数： [ -1.0 から +1.0 ]
h： 区間ごとの乱数の要素の高さの係数である前記種別係数
dir： 区間の昇降係数
f(θ)  : θに応じて変化する関数角
に基づいて決定する。
【０００９】
（２）前記演算装置は、隣接する通過点に前記加算される高さを加算し、これを順次繰り返す工程を更に備えた。
【００１０】
（３）昇り区間の場合には前記θの角度が小さいほど前記f(θ)の値が大きくなるように設定されている。
【００１１】
上記画像処理方法によれば、コースの通過点の角度に応じてコースの高さを設定するようにしたため、コースの形状が意図せず難度の高いものにならないようにすることができる。
【００１２】
また、他の目的を達成するために、本発明は、仮想空間に設定されたコースの周りの景観を自動生成することを、コンピュータによって行う画像処理方法において、前記コンピュータは、この画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じて前記コースを自動生成するデータ処理を実行する演算装置と、を備え、
この演算装置は、前記プログラムに基づいて、前記景観が属する２次元平面座標に複数の参照点を設定する工程と、各参照点と前記コースとの前記２次元平面の距離を演算する工程と、前記演算結果と乱数によって前記参照点の高さを決定する工程と、前記参照点の高さに基づいて前記景観を自動生成する工程と、生成された景観を構成するポリゴンを生成させる工程と、前記仮想空間内の所定の仮想視点から見たポリゴンを透視変換して、変換像を表示手段に表示するための処理を行う工程とを、実行するようにした画像処理方法を採用したものである。
【００１３】
上記画像処理方法を採用するに際しては、以下の要素を付加することができる。
前記演算装置は、前記コースを複数の区間に分割し、前記演算値が所定の範囲内にあり、かつ当該演算値から前記参照点が属する区間を決定し、又は前記参照点が所定の範囲を超えて、いずれの区分にも属しないと決定する工程と、所定の区間に属する参照点の高さを当該区分に設定された高さと乱数とから決定する工程と、どの区間にも属しない参照点の高さを前記コースの基準高さと乱数とに基づいて決定する工程と、をさらに備える。
【００１４】
どの区間にも属しない参照点の高さhを、
ｈ = 乱数(0.0から1.0)*高さ係数 + 前記基準高さ
から得られる値とし、高さ係数は、山岳の景観であれば平坦の景観よりも大きい値に設定されている。
前記基準高さが前記コースの最大高さである。上記画像処理方法によれば、コースの通過点の高さに応じてコース周りの景観の高さを設定するようにしたため、景観のモデリングを省略しても、景観の高さがコースに整合したものになり、コースと景観からなるモデルの品質が向上する。
前記何れかの前記演算装置の各工程をコンピュータに実行させるためのプログラムを構成したり、このプログラムが記録された記録媒体を構成したりすることができる。さらに、前記何れかの前記演算装置を備えた画像処理装置を構成することができる。
【発明の効果】
【００１５】
本発明によれば、コースの形状が意図せず難度の高いものにならないようにすることができる。また、本発明によれば、景観のモデリングを省略しても、景観の高さがコースに整合したものになり、コースと景観からなるモデルの品質を向上させることができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の一実施形態を図面に基づいて説明する。図１は、本発明の一実施例を示す画像処理装置のブロック構成図、図２は、本発明に係る画像処理装置をネットワークゲームシステムのテレビゲーム装置に適用したときのネットワークシステムのブロック図である。
図１において、画像処理装置は、電子遊戯システムの一要素として、仮想空間にコースを自動生成するための画像処理を実行するコンピュータを備え、このコンピュータは、画像処理を実行するためのプログラムが記録されたメモリと、このプログラムに応じてコースを自動生成するデータ処理を実行する演算装置とから構成され、演算装置としてのＣＰＵが中心となって、電子遊戯に伴う画像処理などのための情報処理を実行する。
【００１７】
図１の電子遊戯システムは、ゲーム端末として、ＣＰＵ１０１等を中心に構成される制御部１、遊戯者が制御部１に操作信号を入力するための入力装置２、オペレーティングシステム（以下、「ＯＳ」という。）やアプリケーションプログラム（ゲームプログラム）を記憶し、必要に応じてこれらプログラムを制御部１に入力するための外部記憶装置３、遊戯者に画像や音を提供するための表示装置４ａ、及びスピーカ４ｂ等からなる出力装置４を備えている。また、電話回線等を介して他のコンピュータやゲーム装置とデータの送受信をするための通信装置５を備えている。なお、外部記憶装置３は、図示したＣＤ−ＲＯＭ等に限らず、制御部１からのデータを書き込み保持可能な記録媒体等であっても良い。
【００１８】
ゲームを開始すべく電源が投入されると、図示しないプートプログラムローダは、ＲＯＭ１０２に記憶されているプートプログラム（イニシャルプログラムと呼ばれることもある。）をＣＰＵ１０１にロードし、ＣＰＵ１０１は、プートプログラムを実行する。ＣＰＵ１０１は、このプートプログラムに従って、ＣＤ−ＲＯＭ等に記憶されているＯＳの全部または必要な部分をメインメモリ１０３にロードし、ＯＳを実行する。
【００１９】
ＣＰＵ１０１は、このＯＳの制御の下、ＣＤ−ＲＯＭ等に記憶されているアプリケーションプログラム（以下、単に「プログラム」ということもある。）の全部または必要な部分をメインメモリ１０３にロードすると共に、必要に応じてＣＤ−ＲＯＭ等に記憶されている描画データや画像データをグラフィックメモリ１０４にロードし、また、サウンドデータをサウンドメモリ１０５にロードする。
【００２０】
ＣＰＵ１０１は、ＯＳの制御の下、メインメモリ１０４に記憶されたアプリケーションプログラムを実行する。アプリケーションプログラムの実行に伴うデータは、メインメモリ１０４やバックアップメモリ１０６に必要の都度書き込まれ参照される。バックアップメモリ１０６は、ゲームの中断等で電源が遮断されてもそれまでの状態を保持するために、データを記憶する。なお、本実施の形態において、ＯＳやアプリケーションプログラム等はＣＤ−ＲＯＭから提供されるように構成しているが、例えば、ＲＯＭから供給されるように構成したり、ネットワークを介して他のコンピュータから供給されるように構成したりすることもできる。
【００２１】
ビデオディスプレイプロセッサ（ＶＤＰ：Ｖｉｄｅｏ  Ｄｉｓｐｌａｙ  Ｐｒｏｃｅｓｓｏｒ）１０７は、グラフィックメモリ１０４に記憶されて画像表示に必要な描画データを読み出して、アプリケーションプログラムの実行によるＣＰＵ１０１からの命令やデータに基づき各種情報処理（画像処理）を行って、画像情報として画像データを生成する。各種画像処理としては、例えば、テクスチャマッピング、光源処理、表示優先処理等がある。
【００２２】
生成された画像データを表示装置４ａに表示するために、ＶＤＰ１０７は、エンコーダ１０８に画像データを出力する。なお、生成された画像データは、例えば、フレームバッファメモリ等に書き込み、このフレームバッファメモリから所定のタイミングで読み出すようにしても良い。
【００２３】
サウンドプロセッサ（Ｓｏｕｎｄ  Ｐｒｏｃｅｓｓｏｒ）１０９は、サウンドメモリ１０５に記憶されるサウンドデータを読み出して、アプリケーションプログラムの実行によるＣＰＵ１０１からの命令やデータに基づき、各種情報処理(音声処理)を行う。各種音声処理としては、例えば、エフェクト処理、ミキシング処理等がある。各種音声処理が施されたサウンドデータは、Ｄ／Ａコンバータ１１０によってアナログデータに変換され、スピーカ４ｂに出力される。
【００２４】
バスアービタ（Ｂｕｓ  Ａｒｂｉｔｅｒ）１１１は、データ伝送路（バス）を介して接続される各ユニット間同士の制御を行う。例えば、バスアービタ１１１は、バスを占有するユニットを決定するために、各ユニット間の優先順位を決定したり、占有するユニットのバス占有時間の割り当てを行ったりする。
ネットワークシステムでは、各テレビゲーム装置間で共通のゲームアプリケーションプログラムが実行される。このネットワークシステムは、図２に示すように、テレビゲーム装置である複数の端末装置１０、１０…と、複数のサーバー機を含むゲーム親局１２と、この端末装置１０とゲーム親局１２とを接続するための通信ネットワーク１４を備えている。このシステムにおいて、端末装置１０が特定のゲームを実行するために定められた特定のインターネットプロバイダ１６を介してゲーム親局１２に接続されていて、ゲーム親局１２を通して各ゲーム装置（端末装置）１０、１０間で共通のゲームアプリケーションプログラムを実行する。
サーバーとしてのゲーム親局１２は、電子遊戯システムの一要素として、仮想空間にコースを自動生成するための画像処理を実行するコンピュータを備え、このコンピュータは、画像処理を実行するためのプログラムが記録されたメモリ５０と、このプログラムに応じてコースを自動生成するデータ処理を実行する演算装置５２とから構成され、演算装置５２は、電子遊戯に伴う画像処理などのための情報処理を実行する。
例えば、図３に示すように、各ゲーム装置（端末装置）１０から自身のキャラクタのパラメータ（位置、速度など）に関するデータを通信ネットワーク１４を介してゲーム親局１２が受信したときに、演算装置５２は、メモリ５０に記録されたプログラムに応じてコースを自動生成したり、レースを実行したりするための処理を実行する。そして、レースのパラメータ（順位など）や自動生成したコース及び景観（コースの周りの山や谷などの形態）のパラメータを通信ネットワーク１４を介して、クライアントとしての各ゲーム装置１０に転送する。各ゲーム装置１０では、メモリに記録された車やコースのモデルデータ、ゲーム親局１２から転送されたパラメータを基に複数の車のオブジェクトがコース上を競争する映像を形成するようになっている。
なお、各ゲーム装置１０は、通信ネットワーク１４及び特定インターネットプロバイダ１６ではないインターネットプロバイダ１８を介してサーバー機に接続されていても良い。このシステムにおいて、各ゲーム装置１０は、ゲームアプリケーションプログラムを実行しているときに、遊戯者一人一人の詳細な個人情報を交換できる個人情報処理手段２０を備えている。
演算装置５２は、メモリ５０に記録されたプログラムに応じてコースを自動生成するに際して、図４に示すように、以下の機能を備えて構成されている。
【００２５】
演算装置５２は、メモリ５０のプログラムに基づいて、コースの初期通過点のデータをメモリ５０から読み出し、読み出したデータを基に前記初期通過点から新たな通過点を生成する手段６０と、手段６０で新たに生成された通過点から更に新たな通過点を生成する演算を複数回繰り返す手段６２と、手段６０で新たに生成された通過点が元ある通過点に対する、２次元平面上における振幅を乱数によって決定する手段６４と、前記コースの通過点の角度を演算する手段６６と、基準値を超える通過点があるか否かを判定する手段６８と、を備え、手段６８で前記基準値を超える通過点がある判定されたときには、前記各工程を繰り返すように構成され、手段６８で前記基準値を超える通過点がないと判定されたときには、各通過点の位置データからコースの曲線を生成させ、この生成の後、当該コースを構成するポリゴンを発生する手段７０を備えて構成されている。
【００２６】
また、演算装置５２は、図５に示すように、メモリ５０のプログラムに基づいて、コースの初期通過点のデータをメモリ５０から読み出し、読み出したデータを基に前記初期通過点から新たな通過点の２次元座標の位置を、乱数を用いて生成する手段７２と、通過点の角度に応じて通過点の高さを乱数を用いて生成する手段７４と、前記コースの周りの景観のモデルの高さを前記コースに対する距離と乱数を用いて生成する手段７６とを備えて構成されている。
【００２７】
また、演算装置５２は、図６に示すように、メモリ５０のプログラムに基づいて、コースの通過点を設定する手段７８と、各通過点が前記コースのどの区分に属するかを決定する手段８０と、各区分毎にコースの昇り又は下りに応じた昇降係数を決定する手段８２と、コースの種別に応じた種別係数を決定する手段８４と、を備え、前記通過点の角度と前記昇降係数と前記種別係数と乱数とに基づいて前記コースの各通過点の高さを生成するように構成されている。
さらに、演算装置５４は、図７に示すように、メモリ５０のプログラムに基づいて、仮想空間に設定されたコースの周りの景観が属する２次元平面座標に複数の参照点を設定する手段８６と、各参照点と前記コースとの前記２次元平面の距離を演算する手段８８と、手段８８の演算結果と乱数によって前記参照点の高さを決定する手段９０と、前記参照点の高さに基づいて前記景観を自動生成する手段９２と、生成された景観を構成するポリゴンを生成させる手段９４と、前記仮想空間内の所定の仮想視点から見たポリゴンを透視変換して、変換像を表示手段に表示するための処理を行う手段９６と、を備えて構成されている。
【００２８】
次に、演算装置５２によってコースを自動生成するに際しては、図８のフローチャートに示すように、コースを決定し（ステップＳ１）、決定されたコースに関するパラメータとして、コースの形状（２次元形状）を自動生成し（ステップＳ２）、次に、コースの高さを自動生成し（ステップＳ３）、そのあと、コースの周りを自動生成する（ステップＳ４）。コースに関するパラメータが求められたときには、演算装置５２の演算結果によるパラメータをコースに関するデータとして、ゲーム親局１２から特定インターネットプロバイダ１６、通信ネットワーク１４を介して各ゲーム装置１０にリアルタイムで送信する（ステップＳ５）。
【００２９】
ステップＳ１において、演算装置５２によってコースを決定するに際しては、例えば、図９に示すように、難易度の高いコースＣ１、難易度の中のコースＣ２、難易度の低いコースＣ３の中から１つのコースを自動的に決定することもできるが、ゲーム装置１０からのリクエストによって１つのコースを決定することもできる。この場合、多数のゲーム装置１０からリクエストがあったときには、例えば、多数決によって１つのコースを決定することもできる。
次に、ステップＳ２において、演算装置５２によってコースの形状（2次元形状）を自動生成するときの処理を図１０のフローチャートに従って説明する。
まず、演算装置５２は、ステップＳ１において決定されたコースについて、メモリ５０に記憶されている初期通過点のデータを基に新たな通過点を順次設定する（ステップＳ２０１）。例えば、コースＣ２が選択されたときには、フラクタル関数を用いて、頂点０と頂点４から頂点２を新たな通過点に設定し、頂点０と頂点２から頂点１を新たな通過点に設定し、頂点２と頂点４から頂点３を新たな通過点に設定する。すなわち、頂点０、４や新たに求められた頂点１、２、３に関する位置データを基に、各頂点間に新たな通過点を設定するための処理を実行する。
コース上に新たな通過点が求められたときには、各通過点の振幅を、例えば、乱数を使って決定する（ステップＳ２０２）。この振幅は、通過点をＸとし、これに隣接する通過点をｘ−１、ｘ＋１としたときに、通過点ＸがＸ−１とＸ＋１とを結ぶ線分に対する距離を示しており、この振幅は、図１１に示すように、前記線分の距離に乱数αとコースＣ１、Ｃ２、Ｃ３の難易度に応じて適宜設定される難易度指標値βとを乗じて決定される。
乱数αとしては、０．０〜１．０が用いられ、難易度指標値βとしては、０．０〜１．０のうちコースＣ１、Ｃ２、Ｃ３によって異なる数値が用いられる。すなわち、難易度が高くなる程βが大きくなり、振幅が大きくなるほど難易度が大きくなる。
次に、コース上の各通過点の角度を初期通過点や各通過点の位置データを基に演算する（ステップ２０３）。例えば、図１２に示すように、頂点０から頂点ｎまでの間に存在する頂点１〜頂点ｎ−１の角度を各通過点の角度として演算する。このとき、選択された各コースＣ１、Ｃ２、Ｃ３に対して、各コースＣ１、Ｃ２、Ｃ３の難易度に応じた基準値が、９０度、４５度、３０度に設定されているので、各コースについて算出された角度が基準値を超えているか否かを判定する（ステップＳ２０４）。角度が基準値を超えている通過点があるときには、ステップＳ２０１の処理に戻る。すなわち、振幅が小さいときには、通過点の角度は小さくなるが、通過点の角度が基準値を超えたときには、難しく為り過ぎるため、コース生成の自動計算を最初からやり直す。
一方、角度が基準値を超えている通過点がないときには、図１３に示すように、各通過点の位置データを基にベジェ曲線を用いてコースの曲線を生成する（ステップＳ２０５）。
コースの形状（２次元平面／Ｘ−Ｚ：以下、Ｘは、３次元空間（画面）の横、Ｙは高さ、Ｚは奥行きを示す。）が決定したときには、コースを形成する複数のポリゴンを決定し、この決定に従って、コースのモデルを仮想空間に配置し、仮想空間の所定の視点に基づいて映像を生成し、生成した映像を画面上に表示する。
このように、コースの振幅を規定し、コースの振幅が所定の範囲内、例えば、基準値に制限するようにしたため、コースの形状が意図せず難度の高いものにならないようにすることができる。
なお、新たな通過点を設定するに際して、所定距離未満で２つの通過点が近接して設定された場合、車が他の通過点をスルーして近い通過点にショートカットすることがありうる。そこで、このような場合は、後述の高さ生成の際に、互いに近接する通過点間の高さを所定以上異なるようにする。こうすれば、遊戯者にとってみれば、通過点をスルーするような気持ちにならない。これを可能にするために、各通過地点同士の距離を演算し、これが基準値以下の場合には、近接する２つの通過点の高さの差が所定値以上になるようにする。
次に、ステップＳ３において、演算装置５２によってコースの通過点の高さを自動生成するときの処理を図１４のフローチャートに従って説明する。
【００３０】
演算装置５２は、コース上に存在する各通過点の位置データを基に各通過点がコースのどの区分（区画）に属するかを決定する（ステップＳ３０１）。例えば、コースの全長を０．０から１．０とした場合、０．０から０．２５を区間０とし、０．２５から０．５０を区間１とし、０．５０から０．７５を区間２とし、０．７５から１．０を区間３とする。コース上の区間が決定されたときには、この決定に従って各区分毎にコースの昇り又は下りに応じた昇降係数ｄｉｒを決定する（ステップＳ３０２）。この場合、各区分について昇り、下りの特性が昇降係数ｄｉｒとしてテーブル形式でフラグに対応づけてメモリ５０に記憶されているので、演算装置５２は、各区分の専用フラグをチェックし、各区分がコースの昇りか下りかを判定する。例えば、昇降係数ｄｉｒは、下りのときには−１．０に設定され、昇りのときには＋１．０に設定されている。なお、平坦の区分についても、フラグが設定されている。
【００３１】
次に、演算装置５２は、コースの種別に応じた種別係数（影響度係数）ｈを決定する（ステップＳ３０３）。例えば、平原の場合には、高低差が少ないので、種別係数ｈを０．００１に決定し、山道については、高低差を激しくするために、種別係数ｈを０．２５や０．５に決定する。このあと、演算装置５２は、各通過点の角度と昇降係数ｄｉｒと種別係数ｈと乱数とに基づいてコースの各通過点の高さを生成する（ステップＳ３０４）。
【００３２】
コースの各通過点の高さを生成するに際して、演算装置５２は、各通過点について、一つ前の通過点の高さを加算する処理を実行し、各通過点において加算される高さを、
加算する高さ = f(θ) * dir + 乱数*dir*h
θ：通過点iの角度
乱数： [ -1.0 から +1.0 ]
h： 区間ごとの乱数の要素の高さの係数である前記種別係数
dir： 区間の昇降係数
f(θ)  : θに応じて変化する関数角
に基づいて決定する。
【００３３】
すなわち、演算装置５２は、隣接する通過点に、加算される高さを加算する処理を順次繰り返す。なお、昇り区間の場合には、θの角度が小さいほど、f(θ)の値が大きくなるように設定されている。
【００３４】
このように、コースの通過点の角度に応じてコースの高さを設定するようにしたため、コースの高さが意図せず難度の高いものにならないようにすることができる。また、コースを複数の区間に分け、各区間に昇降係数や種別係数を設定しておくことで、コースの変化をより多彩にすることができる。
次に、ステップＳ４において、演算装置５２によってコースの周りの景観（山の高さ）を自動生成するときの処理を図１５のフローチャートに従って説明する。演算装置５２は、コースの周りの景観（例えば、山の高さ）を自動的に生成するに際して、コースの周りを格子状の複数の格子点（参照点）に分け、各格子点とコースとの距離を演算する（ステップＳ４０１）。例えば、景観が属する２次元平面座標系に複数の格子点（参照点）を設定し、各格子点（参照点）とコースとの距離、あるいは各格子点と各通過点との距離を２次元座標系に従って演算する。そして、演算値を距離データとしてメモリ５０に記録する（ステップＳ４０２）。次に、演算装置５２は、各格子点の座標（位置データ）を基に各格子点がコースのどの区間に属するか否かを判定するとともに、各格子点と全通過点との距離のうち最小値を求め（ステップＳ４０３）、最小値に関する距離データをメモリ５０に記録する（ステップＳ４０４）。次に、最小値が所定の基準値を超えているか否かを判定する（ステップＳ４０５）。すなわち、最小値が所定の基準値以内であれば、該当する格子点はその区間に属すると判定し、最小値が所定の基準値を超えているときには、該当する格子点はどの区間にも属しないと判定する。このあと、演算装置５２は、いずれかの区間に属する格子点の高さを、区間について予めテーブルで設定された高さに基づいて乱数を用いて生成する（ステップＳ４０６）。一方、演算装置５２は、どの区間にも属しないと判定された格子点の高さについても乱数を用いて生成する（ステップＳ４０７）。例えば、どの区間にも属しない参照点の高さhを、
ｈ = 乱数(0.0から1.0)*高さ係数 + 前記基準高さ、
から得られる値として求める。なお、高さ係数は、山岳の景観であれば平坦の景観よりも大きい値に設定されており、前記基準高さは、コースの最大高さである。この場合、コース全体としての基準点がテーブルに設定されており、テーブルの基準点を基に乱数を加味して格子点の高さが決定される。
【００３５】
また、このコースの左右では、上記計算式の係数が異なるようになっている。例えば、コースの左側は山と考えてコースより高い値となるように設定され、コースの右側谷と考えてコースより低い高さとなるように設定されている。これが可能になるように乱数や基準値が変更される。また、演算装置５２は、各格子点がコースの左右のどちらにあるか否かを判定するに際しては、各格子点の座標値と通過点の座標値（仮想空間のＸ−Ｚ座標値）を基に判定する。
コースの周りの景観（格子点）の高さが決定されたときには、演算装置５２は、ダイヤモンドスクウェアの手法によりフラクタル関数によって山谷の形状を形成する。この場合、この凹凸の形状が極端にならないように、形状を平衡化処理する。例えば、凹凸を形成するポリゴン数を減らすなど、山谷の曲線をベジェ曲線によって生成する。そして、山谷を構成するポリゴンを生成し、このポリゴンに関するデータをゲーム親局１２から各ゲーム装置１０に送信する。各ゲーム装置１０は、ゲーム親局１２からのデータに基づいて仮想空間を構成し、所定視点からの映像を自身のモニタに表示する。
このように、コースの通過点の高さに応じてコース周りの景観の高さを設定するようにしたため、景観のモデリングを省略しても、景観の高さがコースに整合したものになり、コースと景観からなるモデルの品質が向上する。
なお、画像処理装置はサーバー及びゲーム端末において構成することができる。また、ネットワークを用いずにゲーム機単体にも本発明を適用することができる。
【００３６】
また、曲線の生成については、既述のものに限らず、スプライン曲線など公知のものを適用できる。
【００３７】
コース生成の他の実施形態について説明する。図１６は、既述の実施形態で生成されたコースが複数の区画（例５区画）に分けられ、各区画について、コース上を仮想の車で運転する際の難易度に関するパラメータを設定できることを示している。さらに、各区画間で高低差ａ→ａ１→ａ２→ａ３が設定可能である。各区画はコースＩＤによって区別され、ＩＤ毎にパラメータ、高低差が、記憶テーブルの形で、コースの生成処理の過程でシステムメモリに保存される。
【００３８】
図１７は、各区画にマッピングされるコース部品の形状を示している。図１７のコース部品は、屈曲の度合いが激しく、難しいものとして分類されている。一方、図１８のものは、形状が比較的曲線状で、易しいコース部品として分類されている。なお、同一形状のコース部品が難易度の高い方と低い方の両方に（複数の難易度に渡って）分類されていてもよい。また、難易度の分類は「難」、「易」の２段階に限らず、「難」、「普通」、「易」の３段階など、適宜決めることができる。
【００３９】
次に、本実施形態に係るコースの生成について、図１９のフローチャートに基づいて説明する。このフローチャートは、記憶媒体に記憶されたゲームプログラムとデータに基づいて、ＣＰＵ１０７によって実行される。
【００４０】
ＣＰＵ１０１は、ユーザから難易度とコース種別の入力チェックがあったか否かをチェックする（１９００）。コース種別とは、山岳路、都市部などコースとしての種類である。ＣＰＵ１０１は、入力された難易度に基づいて、コース全体を何区画に区分することが適当かを判断し、各区画に難易度パラメータを設定し、かつ、コース種別データに基づくコース概略データを記憶媒体から読み込む（１９０２）。
【００４１】
ＣＰＵはコースの各区画の難易度を順番にチェックして、合致する難易度のコース部品をランダムに選択する（１９０４）、これを全ての区画分チェックしたか否かを判定する（１９０６）。すなわち、図１７の各区画のＩＤについて、順番に難易度パラメータを読み込み、難易度に対応するコース部品をコース部品リストからランダムに読み出す。難易度パラメータが「難」を示すものであれば、図１７のグループからランダムにコース部品を選び、難易度パラメータが「易」を示すものであれば、図１８のパラメータからコース部品をランダムに選ぶ。
【００４２】
ＣＰＵは、このチェックの過程で、各区画のＩＤとコース部品ＩＤとを対応させたデータテーブルを作成し、これをシステムメモリに１０２に保存しておく。ＣＰＵはこのデータテーブルを参照して、コース部品を、コース概略データを参照しながら接続してコース全体を生成する（１９０６）。すなわち、ＣＰＵは、コースの終点と次のコースの始点の座標（ローカル座標）を一致させて、これを繰り返してコース全体の形状を形成する。ＣＰＵはコース部品を連結する際、設定された高低差が隣接するコース部品間で発生するようにしている。次いで、ＣＰＵは、コース概略データや区画データ等に含まれる背景指定データに基づき背景を生成し、生成されたコースとともにこれをグローバル座標系にマッピングする（１９１０）。
【００４３】
コース部品の難易度はユーザの設計と入力によって決定される。図１７の例では左の区画から、易→易→難→難→難、と定められているが、これに限定されるものではない。ユーザがどのようなコースを作りたいかによって、「難」と「易」の各パラメータの順番は適宜変わって良い。パラメータの種類も、難と易の二段階だけではなく、既述のように、難、易、普通の３段階、あるいはそれ以上の段階があっても良い。ユーザ（開発者）が全体の難易度を決めて、ＣＰＵがユーザ入力情報に基づいて各区画の難易度を設定し、難易度に合致するコース部品を選択するようにしても良い。
【００４４】
この実施形態によれば、ユーザは、各区画について難易度のパラメータを設定するだけで、コース全体を自動的に設計することが可能である。難易度のパラメータを自由に組み合わせることによって、コース全体の特性をデザインすることができる。
【００４５】
また、エンドユーザが、コースの種類と特性、例えば種類として「山岳」を、特性として「難しい」を選択して、入力手段を介してＣＰＵに指令を与えると、ＣＰＵは、「山岳」用コース概略データ（最初直線→上り→平坦→右側崖→左側湖→直線下り→ゴール、といった、地形の高低差やゲーム的な起伏を考慮して定義されるデータ）と、既述の難易度に合致するコース部品を選択して組み合わせてコースを自動生成することもできる。
【００４６】
コース全体の形状（ローカル座標系の形状）をグローバル座標系にマッピングすれば、自動車レースゲームに使用されるコースが完成する。このコースが実際に走行しやすいか否かは、ユーザがグローバル座標系に存在するコース上を、レースカーを走らせれば判断できる。
【図面の簡単な説明】
【００４７】
【図１】本発明の一実施例を示す画像処理装置のブロック構成図である。
【図２】本発明に係る画像処理装置をネットワークゲームシステムのテレビゲーム装置に適用したときのネットワークシステムのブロック図である。
【図３】サーバーの機能ブロック図である。
【図４】演算装置の機能ブロック図である。
【図５】演算装置の他の機能ブロックである。
【図６】演算装置の他の機能ブロック図である。
【図７】演算装置の他の機能ブロック図である。
【図８】演算装置を用いてコースの形状を自動生成するときの作用を説明するためのフローチャートである。
【図９】難易度に応じたコースの構成図である。
【図１０】演算装置を用いてコースの高さを自動生成するときの作用を説明するためのフローチャートである。
【図１１】コースの難易度に応じて振幅を設定するための処理を説明するための特性図である。
【図１２】コースの角度を示す図である。
【図１３】ベジェ曲線を示す図である。
【図１４】コース上の各種の係数を決定するための処理を説明するためのフローチャートである。
【図１５】コースの周りの景観を自動生成するための処理を説明するためのフローチャートである。
【図１６】コースが複数の区画から形成されている状態を示す図である。
【図１７】「難」として分類されたコース部品の例である。
【図１８】「易」として分類されたコース部品の例である。
【図１９】コース生成の他の実施形態の動作を示すフローチャートである。
【符号の説明】
【００４８】
１  制御部
２  入力装置
３  外部記憶装置
４  出力装置
５  通信装置
１０  ゲーム装置
１２  ゲーム親局
１４  通信ネットワーク
１６  特定インターネットプロバイダ
５０  メモリ
５２  演算装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  メインメモリ
１０４  グラフィックメモリ
１０８  ビデオエンコーダ
１１１  バスアービタ
【図１】
2006116294.tif 000003
【図２】
2006116294.tif 000004
【図３】
2006116294.tif 000005
【図４】
2006116294.tif 000006
【図５】
2006116294.tif 000007
【図６】
2006116294.tif 000008
【図７】
2006116294.tif 000009
【図８】
2006116294.tif 000010
【図９】
2006116294.tif 000011
【図１０】
2006116294.tif 000012
【図１１】
2006116294.tif 000013
【図１２】
2006116294.tif 000014
【図１３】
2006116294.tif 000015
【図１４】
2006116294.tif 000016
【図１５】
2006116294.tif 000017
【図１６】
2006116294.tif 000018
【図１７】
2006116294.tif 000019
【図１８】
2006116294.tif 000020
【図１９】
2006116294.tif 000021