(57)【特許請求の範囲】
【請求項１】
仮想３次元空間内を移動する複数のオブジェクトを描画するための３次元画像処理プログラムであって、
前記オブジェクトの移動後の仮想３次元空間内における位置座標を算出する位置座標算出手段と、
算出された移動後のオブジェクトの位置座標を、前記オブジェクトが表示される表示領域内に納めるように変更する位置座標変更手段と、
前記表示領域内の前記オブジェクトを描画する描画手段としてビデオゲーム装置を機能させ、
前記表示領域は直方体形状であり、
前記位置座標変更手段は、前記表示領域の各辺の少なくとも一辺の長さを減算することによって前記オブジェクトの位置座標を前記表示領域内に納めるように変更し、
前記オブジェクトの位置座標は整数値によって表され、
前記位置座標変更手段は、前記位置座標の下位ビットを取得するマスク処理によって前記オブジェクトを前記表示領域内に納めることを特徴とする３次元画像処理プログラム。
【請求項２】
形状が異なる複数のテクスチャを記憶するテクスチャ記憶手段としてビデオゲーム装置をさらに機能させ、
前記描画手段は、前記テクスチャに基づいて前記オブジェクトを描画することを特徴とする請求項１記載の３次元画像処理プログラム。
【請求項３】
前記テクスチャは雪を表すテクスチャを含むことを特徴とする請求項２記載の３次元画像処理プログラム。
【請求項４】
前記ビデオゲーム装置は、分岐処理を含む種々の処理を実行可能な演算処理装置と、描画処理装置とを備え、
前記描画処理装置を前記位置座標算出手段及び前記位置座標変更手段として機能させることを特徴とする請求項１〜３のいずれかに記載の３次元画像処理プログラム。
【請求項５】
仮想３次元空間内を移動する複数のオブジェクトを描画する３次元画像処理方法であって、
ビデオゲーム装置が、前記オブジェクトの移動後の仮想３次元空間内における位置座標を算出する位置座標算出ステップと、
ビデオゲーム装置が、算出された移動後のオブジェクトの位置座標を、前記オブジェクトが表示される表示領域内に納めるように変更する位置座標変更ステップと、
ビデオゲーム装置が、前記表示領域内の前記オブジェクトを描画する描画ステップとを含み、
前記表示領域は直方体形状であり、
前記位置座標変更ステップは、前記表示領域の各辺の少なくとも一辺の長さを減算することによって前記オブジェクトの位置座標を前記表示領域内に納めるように変更し、
前記オブジェクトの位置座標は整数値によって表され、
前記位置座標変更ステップは、前記位置座標の下位ビットを取得するマスク処理によって前記オブジェクトを前記表示領域内に納めることを特徴とする３次元画像処理方法。
【請求項６】
仮想３次元空間内を移動する複数のオブジェクトを描画するビデオゲーム装置であって、
前記オブジェクトの移動後の仮想３次元空間内における位置座標を算出する位置座標算出手段と、
算出された移動後のオブジェクトの位置座標を、前記オブジェクトが表示される表示領域内に納めるように変更する位置座標変更手段と、
前記表示領域内の前記オブジェクトを描画する描画手段とを備え、
前記表示領域は直方体形状であり、
前記位置座標変更手段は、前記表示領域の各辺の少なくとも一辺の長さを減算することによって前記オブジェクトの位置座標を前記表示領域内に納めるように変更し、
前記オブジェクトの位置座標は整数値によって表され、
前記位置座標変更手段は、前記位置座標の下位ビットを取得するマスク処理によって前記オブジェクトを前記表示領域内に納めることを特徴とするビデオゲーム装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、仮想３次元空間内を移動する複数のオブジェクトを表示するための３次元画像処理プログラム、３次元画像処理方法及びビデオゲーム装置に関するものである。
【０００２】
【従来の技術】
近年、キャラクタ等のオブジェクトをモニタ画面内に作成される仮想３次元空間において表示するようにした種々のビデオゲームが普及している。かかるビデオゲームとして、スキー、サーフィン、アイススケート、スノーボード等の各種スポーツを題材としたものが知られている。このようなスポーツを題材にしたビデオゲームにおいては、リアル感を出すために各スポーツ特有の状況を可能な限り再現することが求められ、ユーザの欲求を満足させる必要がある。例えば、スキー及びスノーボードを題材としたビデオゲームにおいては競技中の降雪状況が再現される。
【０００３】
図６は、降雪状況を再現するための従来の３次元画像処理の一例を示すフローチャートである。図６に示す従来の３次元画像処理は、分岐処理を含む種々の処理を実行可能な演算処理装置と、描画処理専用に設けられた描画処理装置とを備えるビデオゲーム装置を用いて行われる処理である。
【０００４】
ステップＳ１０１において、演算処理装置は雪粒子のパラメータの初期化を行う。ステップＳ１０２において、演算処理装置は、ワールド座標系からカメラ座標系に変換するためのカメラ行列を算出する。なお、このカメラ行列を算出する計算ルーチンはビデオゲーム装置の既存のライブラリを用いることで算出することができる。
【０００５】
ステップＳ１０３において、演算処理装置はループカウンタｉに１を代入する。ステップＳ１０４において、演算処理装置は、雪粒子の初期位置座標に移動速度と外力とを加えることによって移動後の雪粒子の新しい位置座標を算出する。ステップＳ１０５において、演算処理装置は、移動後の雪粒子の位置座標をワールド座標系からカメラ座標系に変換する。ステップＳ１０６において、演算処理装置は、雪粒子を表示可能な表示領域内に移動後の雪粒子の位置座標があるか否かを判断し、移動後の雪粒子の位置座標が表示領域の範囲内にある場合（ステップＳ１０６でＹＥＳ）、ステップＳ１０８に移行し、移動後の雪粒子の位置座標が表示領域の範囲内にない場合（ステップＳ１０６でＮＯ）、ステップＳ１０７に移行する。
【０００６】
ステップＳ１０７において、演算処理装置は、移動後の雪粒子の位置座標が表示領域外にあると判断された場合、雪粒子の情報を再構築する。ステップＳ１０８において、描画処理装置は雪粒子の描画処理を行う。ステップＳ１０９において、演算処理装置は、ループカウンタｉを１だけインクリメントする。
【０００７】
ステップＳ１１０において、演算処理装置は、ループカウンタｉがあらかじめ設定された雪粒子の数以下であるか否かを判断する。すなわち、ステップＳ１０４からステップＳ１０９までの処理を雪粒子の数の回数だけ繰り返すことによって全ての雪粒子を描画する。ここで、ループカウンタｉが雪粒子の数以下である判断されれば（ステップＳ１１０でＹＥＳ）、まだ描画されていない雪粒子があるためステップＳ１０４に戻り、ループカウンタｉが雪粒子の数より大きいと判断されれば（ステップＳ１１０でＮＯ）、全ての雪粒子が描画されたためステップＳ１１１に移行する。ステップＳ１１１において、演算処理装置は雪粒子のパラメータを更新する。ステップＳ１１２において、演算処理装置はゲーム進行処理を行う。そして、ゲーム進行処理が行われた後、ステップＳ１０２に戻ることとなる。
【０００８】
図７は、従来の３次元画像処理で雪粒子を描画した場合に表示されるゲーム画面の一例を示す画面図である。図７に示すゲーム画面４００には、ユーザによって操作されるスノーボーダーを模したキャラクタ４０１と、キャラクタ４０１が滑走するコース４０２と、降雪状況を再現するための雪粒子４０３とが表示されている。上記のように３次元画像処理が行われることによって、雪粒子４０３がゲーム画面４００に表示され、降雪状況が再現される。
【０００９】
【発明が解決しようとする課題】
上記図６に示す従来の３次元画像処理のフローチャートにおけるステップＳ１０８の処理は、描画処理専用の描画処理装置によって行われる処理であり、その他のステップＳ１０１〜Ｓ１０７及びステップＳ１０９〜Ｓ１１２の処理は、分岐処理を含む種々の処理を実行可能な演算処理装置によって行われる処理である。そのため、上記従来の３次元画像処理で降雪状況を再現する場合、分岐処理等の複雑な演算を行うため描画処理に時間がかかるとともに、演算処理装置の処理に要する負担が大きいため、図７のゲーム画面４００に示すように、再現することができる雪の量も少なく限られている。特に、多量の雪が降っている状況を再現する場合、従来の３次元画像処理では表示することができる雪粒子の数に限りがあり、リアル感のある降雪状況の再現が困難である。そのため、従来のビデオゲームにおける降雪状況の再現では、ユーザに充分なリアル感を与えることができず、興趣に欠けるものであった。
【００１０】
本発明は、上記の問題を解決するためになされたもので、ビデオゲーム装置の演算処理装置の処理に要する負担を軽減し、多数のオブジェクトを描画することができる３次元画像処理プログラム、３次元画像処理方法及びビデオゲーム装置を提供することを目的とするものである。
【００１１】
【課題を解決するための手段】
請求項１に記載の本発明は、仮想３次元空間内を移動する複数のオブジェクトを描画するための３次元画像処理プログラムであって、
前記オブジェクトの移動後の仮想３次元空間内における位置座標を算出する位置座標算出手段と、
算出された移動後のオブジェクトの位置座標を、前記オブジェクトが表示される表示領域内に納めるように変更する位置座標変更手段と、
前記表示領域内の前記オブジェクトを描画する描画手段としてビデオゲーム装置を機能させ、
前記表示領域は直方体形状であり、
前記位置座標変更手段は、前記表示領域の各辺の少なくとも一辺の長さを減算することによって前記オブジェクトの位置座標を前記表示領域内に納めるように変更し、
前記オブジェクトの位置座標は整数値によって表され、
前記位置座標変更手段は、前記位置座標の下位ビットを取得するマスク処理によって前記オブジェクトを前記表示領域内に納めることを特徴とする。
【００１２】
請求項１に記載の本発明に従えば、仮想３次元空間内を移動する複数のオブジェクトを描画するための３次元画像処理プログラムは、仮想３次元空間内におけるオブジェクトの移動後の位置座標を算出する位置座標算出手段と、位置座標算出手段によって算出された移動後のオブジェクトの位置座標が所定の表示領域内に納まるように当該オブジェクトの位置座標を変更する位置座標変更手段と、位置座標変更手段によって表示領域内に納まるように変更されたオブジェクトを描画する描画手段としてビデオゲーム装置を機能させる。
【００１３】
すなわち、仮想３次元空間内を移動するオブジェクトの移動後の仮想３次元空間内における位置座標が算出され、算出された移動後のオブジェクトの位置座標が、オブジェクトが表示される表示領域内に納まるように変更され、位置座標が表示領域内に納まるように変更されたオブジェクトが描画される。
【００１４】
したがって、最初にオブジェクトの初期のパラメータが設定され、オブジェクトの移動後の仮想３次元空間内における位置座標が算出され、算出された移動後のオブジェクトの位置座標が、オブジェクトが表示される表示領域内に納まるように変更され、移動後のオブジェクトの位置座標が表示領域内にあるか否かの分岐処理を必要としないため、例えば、ビデオゲーム装置が分岐処理を含む種々の処理を実行可能な汎用の演算処理装置を備える場合、演算処理装置の処理に要する負担を軽減することができ、多数のオブジェクトを描画することができる。
【００１５】
また、オブジェクトが表示可能な表示領域は直方体形状であり、位置座標変更手段は、直方体形状の表示領域を構成する各辺の少なくとも一辺の長さを減算することによってオブジェクトの位置座標を表示領域内に納めるように変更する。
【００１６】
すなわち、オブジェクトが表示可能な直方体形状の表示領域の各辺の少なくとも一辺の長さを減算することによって、表示領域から外れた移動後のオブジェクトの位置座標が表示領域内に戻されるため、従来のようにオブジェクトの位置座標が表示領域内にあるか否かの分岐処理を用いずにオブジェクトを表示領域内に納めることができる。
【００１７】
また、オブジェクトの位置座標は整数値によって表され、位置座標変更手段は、オブジェクトの位置座標の下位ビットを取得するマスク処理によってオブジェクトを表示領域内に納める。
【００１８】
すなわち、オブジェクトの位置座標は整数値によって表されるため、オブジェクトの移動後の位置座標の算出にビット演算を用いることが可能となり、オブジェクトの位置座標に浮動小数値を用いる場合に比べて演算速度を速くすることができ、さらに、オブジェクトの移動後の位置座標をマスク処理することによって、下位ビットのみを取り出して直方体形状の表示領域の各辺の少なくとも一辺の長さを減算するため、従来のようにオブジェクト位置座標が表示領域内にあるか否かの分岐処理を必要とせずに簡略な演算処理を用いてオブジェクトを表示領域内に納めることができる。
【００１９】
請求項２に記載の本発明は、形状が異なる複数のテクスチャを記憶するテクスチャ記憶手段としてビデオゲーム装置をさらに機能させ、
前記描画手段は、前記テクスチャに基づいて前記オブジェクトを描画することを特徴とする。
【００２０】
請求項２に記載の本発明に従えば、形状が異なる複数のテクスチャを記憶するテクスチャ記憶手段としてビデオゲーム装置をさらに機能させ、描画手段は、テクスチャに基づいてオブジェクトを描画する。
【００２１】
すなわち、テクスチャ記憶手段に記憶されているオブジェクトのテクスチャに基づいてオブジェクトが描画されるため、形状が異なる複数種類のテクスチャを記憶しておくことで、１つのオブジェクトを基準に種々のオブジェクトを表現することができ、ビデオゲームを多様化させることができる。
【００２２】
請求項３に記載の本発明は、前記テクスチャは雪を表すテクスチャを含むことを特徴とする。
【００２３】
請求項３に記載の本発明に従えば、オブジェクトを表すテクスチャは雪を表すテクスチャを含む。
【００２４】
すなわち、雪を表すテクスチャでオブジェクトを描画することで降雪状況をビデオゲームで再現することができ、さらに、形状が異なる複数の雪のテクスチャを記憶しているため、このテクスチャを変えることで様々な形状の雪を表現することができ、同じ処理で多様な降雪状況を再現することができるのでリアル感が増すこととなる。
【００２５】
請求項４に記載の本発明は、前記ビデオゲーム装置は、分岐処理を含む種々の処理を実行可能な演算処理装置と、描画処理装置とを備え、
前記描画処理装置を前記位置座標算出手段及び前記位置座標変更手段として機能させることを特徴とする。
【００２６】
請求項４に記載の本発明に従えば、ビデオゲーム装置は、分岐処理を含む種々の処理を実行可能な演算処理装置と、描画処理装置とを備え、描画処理装置を位置座標算出手段及び位置座標変更手段として機能させる。
【００２７】
描画処理装置は、高速に演算処理を行うために分岐処理等の複雑な演算処理機能を省いており、単純な演算処理機能のみを有している。すなわち、オブジェクトの移動後の仮想３次元空間内における位置座標を算出する処理と、算出された移動後のオブジェクトの位置座標を、オブジェクトが表示される表示領域内に納めるように変更する処理とは分岐処理がないため、分岐処理ができる演算処理装置ではなく、分岐処理はできないが演算処理装置より高速に演算を行うことができる描画処理装置によって演算処理を実行することができ、演算処理装置の処理に要する負担を軽減することができる。
【００２８】
請求項５に記載の本発明は、仮想３次元空間内を移動する複数のオブジェクトを描画する３次元画像処理方法であって、
ビデオゲーム装置が、前記オブジェクトの移動後の仮想３次元空間内における位置座標を算出する位置座標算出ステップと、
ビデオゲーム装置が、算出された移動後のオブジェクトの位置座標を、前記オブジェクトが表示される表示領域内に納めるように変更する位置座標変更ステップと、
ビデオゲーム装置が、前記表示領域内の前記オブジェクトを描画する描画ステップとを含み、
前記表示領域は直方体形状であり、
前記位置座標変更ステップは、前記表示領域の各辺の少なくとも一辺の長さを減算することによって前記オブジェクトの位置座標を前記表示領域内に納めるように変更し、
前記オブジェクトの位置座標は整数値によって表され、
前記位置座標変更ステップは、前記位置座標の下位ビットを取得するマスク処理によって前記オブジェクトを前記表示領域内に納めることを特徴とする。
【００２９】
請求項５に記載の本発明に従えば、仮想３次元空間内を移動する複数のオブジェクトを描画する３次元画像処理方法は、ビデオゲーム装置が、オブジェクトの移動後の仮想３次元空間内における位置座標を算出する位置座標算出ステップと、ビデオゲーム装置が、位置座標算出ステップにおいて算出された移動後のオブジェクトの位置座標が所定の表示領域内に納まるように当該オブジェクトの位置座標を変更する位置座標変更ステップと、ビデオゲーム装置が、位置座標変更ステップにおいて表示領域内に納まるように変更されたオブジェクトを描画する描画ステップとを含む。
【００３０】
すなわち、仮想３次元空間内を移動するオブジェクトの移動後の仮想３次元空間内における位置座標が算出され、算出された移動後のオブジェクトの位置座標が、オブジェクトが表示される表示領域内に納まるように変更され、位置座標が表示領域内に納まるように変更されたオブジェクトが描画される。
【００３１】
したがって、最初にオブジェクトの初期のパラメータが設定され、オブジェクトの移動後の仮想３次元空間内における位置座標が算出され、算出された移動後のオブジェクトの位置座標が、オブジェクトが表示される表示領域内に納まるように変更され、移動後のオブジェクトの位置座標が表示領域内にあるか否かの分岐処理を必要としないため、例えば、ビデオゲーム装置が分岐処理を含む種々の処理を実行可能な汎用の演算処理装置を備える場合、演算処理装置の処理に要する負担を軽減することができ、多数のオブジェクトを描画することができる。
【００３２】
また、オブジェクトが表示可能な表示領域は直方体形状であり、位置座標変更手段は、直方体形状の表示領域を構成する各辺の少なくとも一辺の長さを減算することによってオブジェクトの位置座標を表示領域内に納めるように変更する。
【００３３】
すなわち、オブジェクトが表示可能な直方体形状の表示領域の各辺の少なくとも一辺の長さを減算することによって、表示領域から外れた移動後のオブジェクトの位置座標が表示領域内に戻されるため、従来のようにオブジェクトの位置座標が表示領域内にあるか否かの分岐処理を用いずにオブジェクトを表示領域内に納めることができる。
【００３４】
また、オブジェクトの位置座標は整数値によって表され、位置座標変更手段は、オブジェクトの位置座標の下位ビットを取得するマスク処理によってオブジェクトを表示領域内に納める。
【００３５】
すなわち、オブジェクトの位置座標は整数値によって表されるため、オブジェクトの移動後の位置座標の算出にビット演算を用いることが可能となり、オブジェクトの位置座標に浮動小数値を用いる場合に比べて演算速度を速くすることができ、さらに、オブジェクトの移動後の位置座標をマスク処理することによって、下位ビットのみを取り出して直方体形状の表示領域の各辺の少なくとも一辺の長さを減算するため、従来のようにオブジェクト位置座標が表示領域内にあるか否かの分岐処理を必要とせずに簡略な演算処理を用いてオブジェクトを表示領域内に納めることができる。
【００３６】
請求項６に記載の本発明は、仮想３次元空間内を移動する複数のオブジェクトを描画するビデオゲーム装置であって、
前記オブジェクトの移動後の仮想３次元空間内における位置座標を算出する位置座標算出手段と、
算出された移動後のオブジェクトの位置座標を、前記オブジェクトが表示される表示領域内に納めるように変更する位置座標変更手段と、
前記表示領域内の前記オブジェクトを描画する描画手段とを備え、
前記表示領域は直方体形状であり、
前記位置座標変更手段は、前記表示領域の各辺の少なくとも一辺の長さを減算することによって前記オブジェクトの位置座標を前記表示領域内に納めるように変更し、
前記オブジェクトの位置座標は整数値によって表され、
前記位置座標変更手段は、前記位置座標の下位ビットを取得するマスク処理によって前記オブジェクトを前記表示領域内に納めることを特徴とする。
【００３７】
請求項６に記載の本発明に従えば、仮想３次元空間内を移動する複数のオブジェクトを描画するビデオゲーム装置は、オブジェクトの移動後の仮想３次元空間内における位置座標を算出する位置座標算出手段と、位置座標算出手段によって算出された移動後のオブジェクトの位置座標が所定の表示領域内に納まるように当該オブジェクトの位置座標を変更する位置座標変更手段と、位置座標変更手段によって表示領域内に納まるように変更されたオブジェクトを描画する描画手段とを備える。
【００３８】
すなわち、仮想３次元空間内を移動するオブジェクトの移動後の仮想３次元空間内における位置座標が算出され、算出された移動後のオブジェクトの位置座標が、オブジェクトが表示される表示領域内に納まるように変更され、位置座標が表示領域内に納まるように変更されたオブジェクトが描画される。
【００３９】
したがって、最初にオブジェクトの初期のパラメータが設定され、オブジェクトの移動後の仮想３次元空間内における位置座標が算出され、算出された移動後のオブジェクトの位置座標が、オブジェクトが表示される表示領域内に納まるように変更され、移動後のオブジェクトの位置座標が表示領域内にあるか否かの分岐処理を必要としないため、例えば、ビデオゲーム装置が分岐処理を含む種々の処理を実行可能な汎用の演算処理装置を備える場合、演算処理装置の処理に要する負担を軽減することができ、多数のオブジェクトを描画することができる。
【００４０】
また、オブジェクトが表示可能な表示領域は直方体形状であり、位置座標変更手段は、直方体形状の表示領域を構成する各辺の少なくとも一辺の長さを減算することによってオブジェクトの位置座標を表示領域内に納めるように変更する。
【００４１】
すなわち、オブジェクトが表示可能な直方体形状の表示領域の各辺の少なくとも一辺の長さを減算することによって、表示領域から外れた移動後のオブジェクトの位置座標が表示領域内に戻されるため、従来のようにオブジェクトの位置座標が表示領域内にあるか否かの分岐処理を用いずにオブジェクトを表示領域内に納めることができる。
【００４２】
また、オブジェクトの位置座標は整数値によって表され、位置座標変更手段は、オブジェクトの位置座標の下位ビットを取得するマスク処理によってオブジェクトを表示領域内に納める。
【００４３】
すなわち、オブジェクトの位置座標は整数値によって表されるため、オブジェクトの移動後の位置座標の算出にビット演算を用いることが可能となり、オブジェクトの位置座標に浮動小数値を用いる場合に比べて演算速度を速くすることができ、さらに、オブジェクトの移動後の位置座標をマスク処理することによって、下位ビットのみを取り出して直方体形状の表示領域の各辺の少なくとも一辺の長さを減算するため、従来のようにオブジェクト位置座標が表示領域内にあるか否かの分岐処理を必要とせずに簡略な演算処理を用いてオブジェクトを表示領域内に納めることができる。
【００４４】
【発明の実施の形態】
以下、本発明の一実施の形態によるビデオゲーム装置について図面を参照しながら説明する。
【００４５】
図１は本発明の一実施の形態のビデオゲーム装置の構成を示すブロック図である。なお、以下の説明では、ビデオゲーム装置の一例として家庭用ビデオゲーム機を家庭用テレビジョンに接続することによって構成される家庭用ビデオゲーム装置について説明するが、本発明はこの例に特に限定されず、モニタが一体に構成された業務用ビデオゲーム装置、ビデオゲームプログラムを実行することによってビデオゲーム装置として機能するパーソナルコンピュータ等にも同様に適用することができる。
【００４６】
図１に示すビデオゲーム装置は家庭用ゲーム機１００及び家庭用テレビジョン２００を備える。家庭用ゲーム機１００には、ビデオゲームプログラム及びゲームデータが記録されたコンピュータ読み出し可能な記録媒体３００が装填され、ビデオゲームプログラム及びゲームデータが適宜読み出されてゲームが実行される。
【００４７】
家庭用ゲーム機１００は、ＣＰＵ（Central Processing Unit）１、バスライン２、グラフィックスデータ生成プロセッサ３、インターフェース回路（Ｉ／Ｆ）４、メインメモリ５、ＲＯＭ（Read Only Memory）６、伸張回路７、パラレルポート８、シリアルポート９、描画プロセッサ１０、音声プロセッサ１１、デコーダ１２、インターフェース回路１３、バッファ１４〜１６、記録媒体ドライブ１７、メモリ１８及びコントローラ１９を含む。家庭用テレビジョン２００はテレビジョンモニタ２１、増幅回路２２及びスピーカ２３を含む。
【００４８】
ＣＰＵ１はバスライン２およびグラフィックスデータ生成プロセッサ３に接続されている。バスライン２はアドレスバス、データバス及びコントロールバス等を含み、ＣＰＵ１、インターフェース回路４、メインメモリ５、ＲＯＭ６、伸張回路７、パラレルポート８、シリアルポート９、描画プロセッサ１０、音声プロセッサ１１、デコーダ１２及びインターフェース回路１３を相互に接続している。
【００４９】
描画プロセッサ１０はバッファ１４に接続される。音声プロセッサ１１はバッファ１５及び増幅回路２２に接続される。デコーダ１２はバッファ１６及び記録媒体ドライブ１７に接続される。インターフェース回路１３はメモリ１８及びコントローラ１９に接続される。
【００５０】
家庭用テレビジョン２００のテレビジョンモニタ２１は描画プロセッサ１０に接続される。スピーカ２３は増幅回路２２に接続される。なお、業務用ビデオゲーム装置の場合、テレビジョンモニタ２１、増幅回路２２及びスピーカ２３は、家庭用ゲーム機１００を構成する各ブロックとともに１つの筺体に収納される場合がある。
【００５１】
また、ビデオゲーム装置がパーソナルコンピュータやワークステーション等を核として構成されている場合、テレビジョンモニタ２１等はコンピュータ用のディスプレイに対応する。また、伸張回路７、描画プロセッサ１０及び音声プロセッサ１１等は、それぞれ記録媒体３００に記録されているプログラムデータの一部又はコンピュータの拡張スロットに搭載される拡張ボード上のハードウエアに対応する。また、インターフェース回路４、パラレルポート８、シリアルポート９及びインターフェース回路１３は、コンピュータの拡張スロットに搭載される拡張ボード上のハードウエアに対応する。また、バッファ１４〜１６はそれぞれメインメモリ５又は拡張メモリの各記憶エリアに対応する。
【００５２】
次に、図１に示す各構成要素について説明する。グラフィックスデータ生成プロセッサ３はＣＰＵ１のいわばコプロセッサとしての役割を果たす。すなわち、グラフィックスデータ生成プロセッサ３は座標変換や光源計算、例えば固定小数点形式の行列やベクトルの演算を並列処理によって行う。
【００５３】
グラフィックスデータ生成プロセッサ３が行う主な処理としては、ＣＰＵ１から供給される画像データの２次元又は仮想３次元空間内における各頂点の座標データ、移動量データ、回転量データ等に基づいて、所定の表示エリア上における処理対象画像のアドレスデータを求めてＣＰＵ１に返す処理、仮想的に設定された光源からの距離に応じて画像の輝度を計算する処理等がある。
【００５４】
インターフェース回路４は周辺デバイス、例えばマウスやトラックボール等のポインティングデバイス等のインターフェース用に用いられる。メインメモリ５はＲＡＭ（Random Access Memory）等で構成される。ＲＯＭ６にはビデオゲーム装置のオペレーティングシステムとなるプログラムデータが記憶されている。このプログラムはパーソナルコンピュータのＢＩＯＳ(Basic Input Output System)に相当する。
【００５５】
伸張回路７は動画に対するＭＰＥＧ(Moving Picture Experts Group)規格や静止画に対するＪＰＥＧ(Joint Photographic Experts Group)規格に準拠したイントラ符号化によって圧縮された圧縮画像に対して伸張処理を施す。伸張処理はデコード処理(VLC：Variable Length Codeによってエンコードされたデータのデコード)、逆量子化処理、ＩＤＣＴ(Inverse Discrete Cosine Transform)処理、イントラ画像の復元処理等を含む。
【００５６】
描画プロセッサ１０は所定時間Ｔ（例えば、１フレームでＴ＝1／60秒）ごとにＣＰＵ１が発行する描画命令に基づいてバッファ１４に対する描画処理を行う。
【００５７】
バッファ１４は例えばＲＡＭで構成され、表示エリア(フレームバッファ)と非表示エリアとに分けられる。表示エリアはテレビジョンモニタ２１の表示面上に表示するデータの展開エリアで構成される。非表示エリアはスケルトンを定義するデータ、ポリゴンを定義するモデルデータ、モデルに動きを行わせるアニメーションデータ、各アニメーションの内容を示すパターンデータ、テクスチャデータ及びカラーパレットデータ等の記憶エリアで構成される。
【００５８】
ここで、テクスチャデータは２次元の画像データである。カラーパレットデータはテクスチャデータ等の色を指定するためのデータである。ＣＰＵ１は、これらのデータを記録媒体３００から一度に又はゲームの進行状況に応じて複数回に分けて、予めバッファ１４の非表示エリアに記録する。
【００５９】
また、描画命令としては、ポリゴンを用いて立体的な画像を描画するための描画命令、通常の２次元画像を描画するための描画命令がある。ここで、ポリゴンは多角形の２次元仮想図形であり、例えば、三角形や四角形が用いられる。
【００６０】
ポリゴンを用いて立体的な画像を描画するための描画命令は、ポリゴン頂点座標データのバッファ１４の表示エリア上における記憶位置を示すポリゴン頂点アドレスデータ、ポリゴンに貼り付けるテクスチャのバッファ１４上における記憶位置を示すテクスチャアドレスデータ、テクスチャの色を示すカラーパレットデータのバッファ１４上における記憶位置を示すカラーパレットアドレスデータ及びテクスチャの輝度を示す輝度データのそれぞれに対して行われるものである。
【００６１】
上記のデータのうち表示エリア上のポリゴン頂点アドレスデータは、グラフィックスデータ生成プロセッサ３がＣＰＵ１からの仮想３次元空間上におけるポリゴン頂点座標データを移動量データ及び回転量データに基づいて座標変換することによって２次元上でのポリゴン頂点座標データに置換されたものである。輝度データはＣＰＵ１からの上記座標変換後のポリゴン頂点座標データによって示される位置から仮想的に配置された光源までの距離に基づいてグラフィックスデータ生成プロセッサ３によって決定される。
【００６２】
ポリゴン頂点アドレスデータはバッファ１４の表示エリア上のアドレスを示す。描画プロセッサ１０は３個のポリゴン頂点アドレスデータで示されるバッファ１４の表示エリアの範囲に対応するテクスチャデータを書き込む処理を行う。
【００６３】
ゲーム空間内におけるキャラクタ等の物体は、複数のポリゴンで構成される。ＣＰＵ１は各ポリゴンの仮想３次元空間上の座標データを対応するスケルトンのベクトルデータと関連させてバッファ１４に記憶する。そして、後述するコントローラ１９の操作によって、テレビジョンモニタ２１の表示画面上でキャラクタを移動させる等の場合において、キャラクタの動きを表現したり、キャラクタを見ている視点位置を変えるときに、以下の処理が行われる。
【００６４】
すなわち、ＣＰＵ１はグラフィックスデータ生成プロセッサ３に対してバッファ１４の非表示エリア内に保持している各ポリゴンの頂点の３次元座標データと、スケルトンの座標及びその回転量のデータから求められた各ポリゴンの移動量データ及び回転量データとを与える。
【００６５】
グラフィックスデータ生成プロセッサ３は各ポリゴンの頂点の３次元座標データと各ポリゴンの移動量データ及び回転量データとに基づいて各ポリゴンの移動後及び回転後の３次元座標データを順次求める。
【００６６】
このようにして求められた各ポリゴンの３次元座標データのうち水平及び垂直方向の座標データは、バッファ１４の表示エリア上のアドレスデータ、すなわちポリゴン頂点アドレスデータとして描画プロセッサ１０に供給される。
【００６７】
描画プロセッサ１０は３個のポリゴン頂点アドレスデータによって示されるバッファ１４の表示エリア上に予め割り当てられているテクスチャアドレスデータによって示されるテクスチャデータを書き込む。これによって、テレビジョンモニタ２１の表示画面上には、多数のポリゴンにテクスチャの貼り付けられた物体が表示される。
【００６８】
通常の２次元画像を描画するための描画命令は、頂点アドレスデータ、テクスチャアドレスデータ、テクスチャデータの色を示すカラーパレットデータのバッファ１４上における記憶位置を示すカラーパレットアドレスデータ及びテクスチャの輝度を示す輝度データに対して行われる。これらのデータのうち頂点アドレスデータは、ＣＰＵ１からの２次元平面上における頂点座標データをＣＰＵ１からの移動量データ及び回転量データに基づいてグラフィックスデータ生成プロセッサ３が座標変換することによって得られる。
【００６９】
音声プロセッサ１１は記録媒体３００から読み出されたＡＤＰＣＭ（Adaptive Differential Pulse Code Modulation）データをバッファ１５に記憶させ、バッファ１５に記憶されたＡＤＰＣＭデータが音源となる。
【００７０】
また、音声プロセッサ１１は、例えば、周波数４４．１ｋＨｚのクロック信号に基づき、バッファ１５からＡＤＰＣＭデータを読み出す。音声プロセッサ１１は、読み出したＡＤＰＣＭデータに対してピッチの変換、ノイズの付加、エンベロープの設定、レベルの設定及びリバーブの付加等の処理を施す。
【００７１】
記録媒体３００から読み出される音声データがＣＤ−ＤＡ(Compact Disk Digital Audio)等のＰＣＭ（Pulse Code Modulation）データの場合、音声プロセッサ１１はこの音声データをＡＤＰＣＭデータに変換する。また、ＰＣＭデータに対するプログラムによる処理は、メインメモリ５上において直接行われる。メインメモリ５上において処理されたＰＣＭデータは、音声プロセッサ１１に供給されてＡＤＰＣＭデータに変換される。その後、上述した各種処理が施され、音声がスピーカ２３から出力される。
【００７２】
記録媒体ドライブ１７としては、例えば、ＤＶＤ−ＲＯＭドライブ、ＣＤ−ＲＯＭドライブ、ハードディスクドライブ、光ディスクドライブ、フレキシブルディスクドライブ、シリコンディスクドライブ、カセット媒体読み取り機等が用いられる。この場合、記録媒体３００としては、ＤＶＤ−ＲＯＭ、ＣＤ−ＲＯＭ、ハードディスク、光ディスク、フレキシブルディスク、半導体メモリ等が用いられる。
【００７３】
記録媒体ドライブ１７は記録媒体３００から画像データ、音声データ及びプログラムデータを読み出し、読み出したデータをデコーダ１２に供給する。デコーダ１２は記録媒体ドライブ１７からの再生したデータに対してＥＣＣ(Error Correction Code)によるエラー訂正処理を施し、エラー訂正処理を施したデータをメインメモリ５又は音声プロセッサ１１に供給する。
【００７４】
メモリ１８としては、例えばカード型のメモリが用いられる。カード型のメモリは、例えばゲームを中断した場合において中断時点での状態を保持する等のように、中断時点での各種ゲームパラメータを保持するため等に用いられる。
【００７５】
コントローラ１９はユーザが種々の操作指令を入力するために使用する操作装置であり、ユーザの操作に応じた操作信号をＣＰＵ１に送出する。コントローラ１９には、第１ボタン１９ａ、第２ボタン１９ｂ、第３ボタン１９ｃ、第４ボタン１９ｄ、上方向キー１９Ｕ、下方向キー１９Ｄ、左方向キー１９Ｌ、右方向キー１９Ｒ、Ｌ１ボタン１９Ｌ１、Ｌ２ボタン１９Ｌ２、Ｒ１ボタン１９Ｒ１、Ｒ２ボタン１９Ｒ２、スタートボタン１９ｅ、セレクトボタン１９ｆ、左スティック１９ＳＬ及び右スティック１９ＳＲが設けられている。
【００７６】
上方向キー１９Ｕ、下方向キー１９Ｄ、左方向キー１９Ｌ及び右方向キー１９Ｒは、例えば、キャラクタやカーソルをテレビジョンモニタ２１の画面上で上下左右に移動させるコマンドをＣＰＵ１に与えるために使用される。
【００７７】
スタートボタン１９ｅは記録媒体３００からゲームプログラムをロードするようにＣＰＵ１に指示するため等に使用される。セレクトボタン１９ｆは記録媒体３００からメインメモリ５にロードされるゲームプログラムに関する各種選択をＣＰＵ１に指示するため等に使用される。
【００７８】
左スティック１９ＳＬ及び右スティック１９ＳＲを除くコントローラ１９の各ボタン及び各キーは、外部からの押圧力によって中立位置から押圧されるとオンになり、押圧力が解除されると上記中立位置に復帰してオフになるオンオフスイッチで構成される。
【００７９】
左スティック１９ＳＬ及び右スティック１９ＳＲは、いわゆるジョイスティックとほぼ同一構成のスティック型コントローラである。このスティック型コントローラは直立したスティックを有し、このスティックの所定位置を支点として前後左右を含む３６０°方向に亘って傾倒可能な構成になっている。左スティック１９ＳＬ及び右スティック１９ＳＲは、スティックの傾倒方向及び傾倒角度に応じて、直立位置を原点とする左右方向のｘ座標及び前後方向のｙ座標の値を操作信号としてインターフェース回路１３を介してＣＰＵ１に送出する。
【００８０】
なお、第１ボタン１９ａ、第２ボタン１９ｂ、第３ボタン１９ｃ、第４ボタン１９ｄ、Ｌ１ボタン１９Ｌ１、Ｌ２ボタン１９Ｌ２、Ｒ１ボタン１９Ｒ１及びＲ２ボタン１９Ｒ２は、記録媒体３００からロードされるゲームプログラムに応じて種々の機能に使用される。
【００８１】
次に、上記のビデオゲーム装置の概略動作について説明する。記録媒体３００が記録媒体ドライブ１７に装填されている場合、電源スイッチ（図示省略）がオンされてビデオゲーム装置に電源が投入されると、ＲＯＭ６に記憶されているオペレーティングシステムに基づいて、記録媒体３００からゲームプログラムを読み出すように、ＣＰＵ１は記録媒体ドライブ１７に指示する。これによって、記録媒体ドライブ１７は記録媒体３００から画像データ、音声データ及びプログラムデータを読み出す。読み出された画像データ、音声データ及びプログラムデータはデコーダ１２に供給され、デコーダ１２によってエラー訂正処理が各データに施される。
【００８２】
デコーダ１２によってエラー訂正処理が施された画像データは、バスライン２を介して伸張回路７に供給される。伸張回路７によって上述した伸張処理が行われた画像データは描画プロセッサ１０に供給され、描画プロセッサ１０によってバッファ１４の非表示エリアに書き込まれる。デコーダ１２によってエラー訂正処理が施された音声データは、メインメモリ５又は音声プロセッサ１１を介してバッファ１５に書き込まれる。デコーダ１２によってエラー訂正処理が施されたプログラムデータはメインメモリ５に書き込まれる。
【００８３】
以降、ＣＰＵ１は、メインメモリ５に記憶されているゲームプログラム及びユーザがコントローラ１９を用いて指示する内容に基づいてビデオゲームを進行させる。すなわち、ユーザがコントローラ１９を用いて指示する内容に基づいて、ＣＰＵ１は画像処理の制御、音声処理の制御及び内部処理の制御等を適宜行う。
【００８４】
画像処理の制御として、例えば、キャラクタに指示されるアニメーションに該当するパターンデータから各スケルトンの座標の計算又はポリゴンの頂点座標データの計算、得られた３次元座標データや視点位置データのグラフィックスデータ生成プロセッサ３への供給、グラフィックスデータ生成プロセッサ３が求めたバッファ１４の表示エリア上のアドレスデータや輝度データを含む描画命令の発行等が行われる。
【００８５】
音声処理の制御として、例えば、音声プロセッサ１１に対する音声出力コマンドの発行、レベル、リバーブ等の指定が行われる。内部処理の制御として、例えばコントローラ１９の操作に応じた演算等が行われる。
【００８６】
次に、記録媒体３００に記録されているゲームプログラムに基づいて実行されるビデオゲームについて説明する。本実施の形態におけるビデオゲームは、スノーボードを題材としたものである。ユーザによって操作されるスノーボーダーを模したキャラクタが仮想３次元空間内に設けられたコース上を滑走することによってビデオゲームが進行する。また、このビデオゲームでは、スノーボードの競技中の降雪状況が再現され、仮想３次元空間内を移動する多数の雪粒子が表示されるようになっている。スノーボードの競技中の降雪状況を再現することによって、ユーザは、降雪状況において滑走する実際のスノーボード競技のような臨場感を味わうことができる。なお、以下の説明では仮想３次元空間内を移動する複数のオブジェクトを雪粒子とする。
【００８７】
図２は図１に示すビデオゲーム装置の主要機能を示すブロック図である。図２に示すように、ビデオゲーム装置は、機能的には、演算処理部３１、描画演算処理部３２、描画処理部３３、データ記憶部３４、プログラム記憶部３５、表示部３６及び操作部３７を含む。
【００８８】
演算処理部３１は、例えばＣＰＵ１で実現され、ＣＰＵ１がメインメモリ５に記憶されている３次元画像処理プログラムを実行することによって、ゲーム進行処理部４１として機能する。
【００８９】
ゲーム進行処理部４１は、ユーザの操作によるコントローラ１９からの入力信号に基づいてキャラクタの動作を制御するとともに、ビデオゲームの進行に関する種々の処理を行う。
【００９０】
描画演算処理部３２は、例えばグラフィックスデータ生成プロセッサ３で実現され、ＣＰＵ１がメインメモリ５に記憶されている３次元画像処理プログラムを実行することによって、位置座標算出部４２、位置座標変更部４３として機能する。
【００９１】
位置座標算出部４２は、オブジェクトである雪粒子の移動後の仮想３次元空間内における位置座標を算出する。なお、雪粒子の位置座標は整数値によって表される。
【００９２】
位置座標変更部４３は、位置座標算出部４２で算出された移動後の雪粒子の位置座標を、雪粒子が表示される表示領域である表示ボックス内に納めるように変更する。この表示ボックスは中心に仮想カメラ視点が設けられた直方体形状であり、本実施の形態では一辺の長さがｌの立方体形状である。表示ボックスは、中心に仮想カメラ視点が設けられているため、キャラクタの移動に応じて仮想３次元空間内を移動する。なお、表示ボックスの一辺の長さｌはビット演算するために２のｎ乗の値をとる。表示ボックスの一辺の長さｌが短い場合、仮想カメラの画角が大きくなると雪粒子を表示する表示ボックスと、雪粒子を表示しない３次元仮想空間との境界が明らかとなってしまい違和感のあるゲーム画面となってしまう。そこで、違和感のないゲーム画面を表示するためには表示ボックスの一辺の長さｌを１０２４（２ｎ＝２１０）ビットにすることが好ましい。
【００９３】
また、位置座標変更部４３は、表示ボックスの各辺の少なくとも一辺の長さを減算することによって移動後の雪粒子の位置座標を表示ボックス内に納める。つまり、位置座標変更部４３は、移動後の雪粒子の位置座標の下位のビットを取り出すマスク処理を行うことによって移動後の雪粒子を表示ボックス内に納める。
【００９４】
描画処理部３３は、例えば描画プロセッサ１０で実現され、雪粒子を表すテクスチャに基づいて表示ボックス内の雪粒子を描画する。
【００９５】
データ記憶部３４は、例えばメインメモリ５で実現され、雪粒子情報記憶部４４を含む。
【００９６】
雪粒子情報記憶部４４は雪粒子に関する情報を記憶しており、仮想３次元空間上の初期位置座標、雪粒子の移動速度、雪粒子の大きさ及び形状の異なる雪粒子を表す複数種類のテクスチャ等を記憶する。
【００９７】
プログラム記憶部３５は、例えば記録媒体ドライブ１７等で実現され、コンピュータ読み取り可能な記録媒体４５が装着される。記録媒体４５は記録媒体３００で実現され、ビデオゲームプログラムとして３次元画像処理プログラムを記憶している。また、ビデオゲームプログラムは、キャラクタの動作を制御するための制御プログラム及び表示されるキャラクタ及びオブジェクトに関する表示データを含む。なお、記録媒体４５から３次元画像処理プログラムが読み取られ、当該プログラムがメインメモリ５に記録されている場合、メインメモリ５がプログラム記憶部３５として機能する。
【００９８】
表示部３６は例えばテレビジョンモニタ２１等で実現される。操作部３７は例えばコントローラ１９等で実現される。
【００９９】
なお、本実施の形態において、位置座標算出部４２は位置座標算出手段に相当し、位置座標変更部４３は位置座標変更手段に相当し、描画処理部３３は描画処理手段に相当し、雪粒子情報記憶部４４はテクスチャ記憶手段に相当し、ＣＰＵ１は演算処理装置に相当し、グラフィックスデータ生成プロセッサ３は描画処理装置に相当する。
【０１００】
図３は、本実施の形態におけるテクスチャの一例を示す図である。図３（ａ）は円形状の雪粒子Ａ１を表すテクスチャであり、図３（ｂ）は円形の外周部分に凹凸を設けた略円形状の雪粒子Ａ２を表すテクスチャであり、それぞれビットマップイメージとして記憶されている。雪粒子情報記憶部４４は、オブジェクトの形状が異なる複数のテクスチャを記憶しており、本実施の形態では、図３（ａ）及び図３（ｂ）に示すような２種類の形状の雪粒子のビットマップイメージがテクスチャデータとして記憶されている。なお、雪粒子情報記憶部４４に記憶されている雪粒子のテクスチャの数としては上記の２種類に限らず、１種類のみを記憶しておいてもよく、また、上記の２種類のテクスチャとは異なる他の形状のテクスチャを３種類以上記憶しておいてもよい。雪粒子のテクスチャを１種類のみ記憶しておく場合、テクスチャデータを記憶するための記憶領域を低減することができ、雪粒子のテクスチャを３種類以上記憶しておく場合、様々な形状の雪粒子を描画することができるため、さらにリアル感が増す降雪状況を再現することができる。
【０１０１】
図４は、図１に示すビデオゲーム装置による３次元画像処理の一例を示すフローチャートである。なお、図４に示す３次元画像処理は、ＣＰＵ１等が記録媒体３００に記憶されている３次元画像処理プログラム等を実行することによって行われる処理である。
【０１０２】
なお、以下の処理に用いる変数において、snow_maxは表示される雪粒子の数を表し、snow[１〜snow_max]は雪粒子の情報を表し、雪粒子の情報（snow）はt(x，y，z)、v(x、y、z)、size及びtex_idのパラメータで構成される。t(x、y、z)は仮想３次元空間内の雪粒子の初期位置座標を表し、v(x，y，z)は雪粒子の移動速度を表し、sizeは雪粒子の大きさを表し、tex_idは雪粒子のテクスチャの種類を表す。v_max(x，y，z)は雪粒子の移動速度の最大値を表し、tex_id_maxはテクスチャの種類の最大値を表し、tex_bitmap[１〜tex_id_max]はビットマップイメージを表し、size_maxは雪粒子の大きさの最大値を表している。cam(x，y，z)は仮想カメラの位置座標を表し、look(x，y，z)は仮想カメラの注視座標を表し、cam_mtxはワールド座標系から仮想カメラ視点から見たカメラ座標系に変換するための４×４のカメラ行列を表している。pow(x，y，z)は風の強さ等の外力を表し、pow_total(x，y，z)は外力の積算値を表している。field_length(x，y，z)は表示ボックスの一辺の長さを表し、ｘ，ｙ，ｚはそれぞれ２の階乗の値をとる。field_length_mask(x，y，z)は下位ビットを取り出すためのビットマスク用の値であり、field_length_mask(x，y，z)＝field_length(x，y，z)−１である。
【０１０３】
ステップＳ１においてＣＰＵ１は雪粒子の初期化を行う。具体的には、snow[１〜snow_max].t(x，y，z)に０〜｛field_length(x，y，z)−１｝の乱数値を代入し、snow[１〜snow_max].v(x，z)に‐v_max(x，z)〜v_max(x，z)の乱数値を代入し、snow[１〜snow_max].v(y)に１〜v_max(y)の乱数値を代入し、snow[１〜snow_max].sizeに１〜size_maxの乱数値を代入し、snow[１〜snow_max].tex_idに１〜tex_id_maxの乱数値を代入する。さらに、pow(x，y，z)にゲーム開始時に設定される風の強さ等の外力の初期値を代入し、pow_total(x，y，z)に０を代入し、clockに０を代入する。
【０１０４】
ステップＳ２において、ＣＰＵ１は、ワールド座標系からカメラ座標系に変換するためのカメラ行列cam_mtxを算出する。ワールド座標系とは、３次元仮想空間内においてオブジェクトが配置される座標系のことであり、カメラ座標系とは、仮想カメラ視点の位置を０として視線方向をｚ軸とした座標系のことである。３次元仮想空間を表示しようとする場合、ワールド座標系からカメラ座標系に変換する必要がある。そこで、ワールド座標系からカメラ座標系に変換するためのカメラ行列cam_mtxを算出する。仮想カメラの位置座標cam(x，y，z)と仮想カメラの注視座標look(x，y，z)とからカメラ行列cam_mtxを算出する。なお、このカメラ行列cam_mtxを算出する計算ルーチンはビデオゲーム装置の既存のライブラリを用いることで算出される。
【０１０５】
ステップＳ３においてＣＰＵ１はループカウンタｉに１を代入する。ステップＳ４において、グラフィックスデータ生成プロセッサ３は、雪粒子の移動後の位置座標を算出する。すなわち、グラフィックスデータ生成プロセッサ３は、雪粒子の初期位置座標snow[i].t(x，y，z)に雪粒子の移動量（移動速度snow[i].v(x，y，z)に時刻clockを乗算した値）と外力pow_total(x，y，z)とを加えることによって移動後の雪粒子の新しい位置座標t'(x，y，z)を算出する。この移動後の雪粒子の新しい位置座標t'(x，y，z)の算出方法としては下記の（１）式によって表される。
【０１０６】
t'(x，y，z)＝snow[i].t(x，y，z)＋snow[i].v(x，y，z)×clock＋pow_total(x，y，z)・・・・（１）
なお、上記（１）式におけるt'(x，y，z)は計算用の一時ワークであり、メインメモリ５に記憶される。
【０１０７】
ステップＳ５において、グラフィックスデータ生成プロセッサ３は、移動後の雪粒子の位置座標t'(x，y，z)を仮想カメラの表示ボックス内に納めるように座標をマスク処理する。このマスク処理は下記の（２）式によって表される。
【０１０８】
t'(x，y，z)＝｛（t'(x，y，z)−cam(x，y，z)）ＡＮＤfield_length_mask(x，y，z)｝−（field_length(x，y，z)／２）・・・・（２）
なお、上記（２）式における“ＡＮＤ”は、t'(x，y，z)−cam(x，y，z)とfield_length_mask(x，y，z)との論理積を表すビット演算子である。
【０１０９】
このように、仮想３次元空間内における移動後の雪粒子の位置座標から仮想３次元空間内における仮想カメラ視点の位置を表すカメラ座標を減算した値とマスク処理用に１だけ減算された表示ボックスの一辺の長さとの論理積を求めることで雪粒子の移動後の位置座標をマスク処理し、雪粒子の位置座標の下位ビットのみを取得することができ、表示ボックス内から出た雪粒子を表示ボックス内に戻すことができ、常に一定の量の雪粒子を表示することが可能となる。
【０１１０】
ステップＳ６において、グラフィックスデータ生成プロセッサ３は、移動後の雪粒子の位置座標t'(x，y，z)をワールド座標系からカメラ座標系に変換する。すなわち、グラフィックスデータ生成プロセッサ３は、移動後の雪粒子の位置座標t'(x，y，z)をカメラ行列cam_mtxで回転のみの座標変換を行う。この座標変換は移動後の雪粒子の位置座標t'(x，y，z)とカメラ行列cam_mtxとの内積を求めることによって行われ、下記の（３）式によって表される。
【０１１１】
t'(x，y，z)＝t'(x，y，z)・cam_mtx・・・・（３）
なお、上記（３）式における“・”は内積を表す演算子である。
【０１１２】
ステップＳ７において、グラフィックスデータ生成プロセッサ３は雪粒子の描画処理を行う。この描画処理は、snow[i].tex_idで示されるテクスチャデータをメインメモリ５から読み出し、描画プロセッサ１０に登録し、スプライト表示座標の左上端座標と右下端座標とを描画プロセッサ１０に登録することによって行われる。スプライト表示座標の左上端座標はt'(x，y，z)−snow[i].sizeで表され、右下端座標はt'(x，y，z)＋snow[i].sizeで表される。描画プロセッサ１０は、テクスチャデータ及びスプライト表示座標の左上端座標と右下端座標とをバッファ１４の表示エリア上に書き込み、これによって、テレビジョンモニタ２１の表示画面上に雪粒子が表示される。
【０１１３】
ステップＳ８において、ＣＰＵ１は、ループカウンタｉを１だけインクリメントする。
【０１１４】
ステップＳ９において、ＣＰＵ１は、ループカウンタｉがsnow_max以下であるか否かを判断する。すなわち、ステップＳ４からステップＳ８までの処理を雪粒子の数であるsnow_maxの回数だけ繰り返すことによって全ての雪粒子を描画する。ここで、ループカウンタｉがsnow_max以下である判断されれば（ステップＳ９でＹＥＳ）、まだ描画されていない雪粒子があるためステップＳ４に戻り、ループカウンタｉがsnow_maxより大きいと判断されれば（ステップＳ９でＮＯ）、全ての雪粒子が描画されたためステップＳ１０に移行する。
【０１１５】
ステップＳ１０において、ＣＰＵ１は雪粒子のパラメータを更新する。ここで、更新されるパラメータは、仮想カメラの位置座標cam(x，y，z)、仮想カメラの注視座標look(x，y，z)、外力pow(x，y，z)及び時刻clockである。仮想カメラの位置座標cam(x，y，z)及び仮想カメラの注視座標look(x，y，z)は、仮想カメラの移動に応じて移動後のそれぞれの座標に更新される。外力pow(x，y，z)は、風向きが変わった場合に再設定が行われる。時刻clockは、時間を進めるためにclock＝clock＋１として設定される。
【０１１６】
ステップＳ１１において、ＣＰＵ１はゲーム進行処理を行う。ゲーム進行処理は雪粒子の描画以外の処理であり、例えば、コントローラ１９からの入力信号に応じたキャラクタの移動等の処理が行われる。そして、ゲーム進行処理が行われた後、ステップＳ２に戻ることとなる。
【０１１７】
上記図４に示す３次元画像処理のフローチャートにおけるステップＳ３からステップＳ７までの処理は、描画処理専用の描画処理装置（本実施の形態ではグラフィックスデータ生成プロセッサ３）によって行われる処理であり、その他のステップＳ１、ステップＳ２及びステップＳ８からステップＳ１１の処理は、分岐処理を含む種々の処理を実行可能な演算処理装置（本実施の形態ではＣＰＵ１）によって行われる処理である。図６のフローチャートで示される従来の３次元画像処理では、ステップＳ１０１〜Ｓ１１２までの処理のうちのステップＳ１０８以外の主な処理が演算処理装置によって行われており、ステップＳ１０６に示す分岐処理等の複雑な演算を行うため描画処理に時間がかかるとともに、演算処理装置の処理に要する負担が大きくなっている。一方、本発明に係る３次元画像処理では、描画処理装置が行うことができない分岐処理を行わないため、描画処理装置での演算処理が可能となっており、主な処理を描画処理装置によって行うことが可能となっている。描画処理装置は、分岐処理等の複雑な演算処理はできないけれども、演算処理装置よりも高速に演算処理することが可能であり、本発明に係る３次元画像処理では、演算処理装置よりも高速な演算処理が可能な描画処理装置を用いて演算処理を行うことによって、従来の３次元画像処理よりも演算処理にかかる時間を短縮することができる。このように、主な処理に描画処理装置を用いて上記のような３次元画像処理が行われ、降雪状況が再現されることで、主な処理に演算処理装置を用いて３次元画像処理を行うより高速に雪粒子を描画することができ、且つ演算処理装置の処理に要する負担を軽減することができるため、多数の雪粒子を描画することができる。
【０１１８】
図５は、本実施の形態における３次元画像処理で行き粒子を描画した場合に表示されるゲーム画面の一例を示す画面図である。図５に示すゲーム画面４１０には、ユーザによって操作されるスノーボーダーを模したキャラクタ４０１と、キャラクタ４０１が滑走するコース４０２と、雪粒子４０３とが表示されている。図５に示すように本実施の形態における３次元画像処理で雪粒子を描画した場合、ＣＰＵ１より高速な演算処理が可能なグラフィックスデータ生成プロセッサ３によって演算が行われるため、ＣＰＵ１の処理に要する負担が軽減され、多数の雪粒子を表示することができる。そのため、スノーボードの競技中に多量の雪が降る降雪状況を再現することができ、ユーザは臨場感を味わうことができ、興趣に富むビデオゲームとなる。
【０１１９】
次に、降雪状況を再現する場合の本実施の形態の３次元画像処理（図４のフローチャートに示す）における演算処理装置（ＣＰＵ１）及び描画処理装置（グラフィックスデータ生成プロセッサ３）にかかる負荷と、従来の３次元画像処理（図６のフローチャートに示す）における演算処理装置及び描画処理装置にかかる負荷とを比較してみる。本実施の形態における３次元画像処理及び従来の３次元画像処理では、ともにsnow_max＝10000とし、10000個の雪粒子を描画する場合の演算処理装置及び描画処理装置にかかる負荷を比較する。本実施の形態における３次元画像処理によって10000個の雪粒子を描画した場合、演算処理装置にかかる負荷は１％未満であり、描画処理装置にかかる負荷は７％であった。また、従来の３次元画像処理によって10000個の雪粒子を描画した場合、演算処理装置にかかる負荷は７０％であり、描画処理装置にかかる負荷は４％であった。通常、演算処理装置にかかる負荷としては１０％以下が理想とされている。従来の３次元画像処理では、分岐処理等の複雑な演算処理を演算処理装置によって行っているため、演算処理装置に７０％もの負荷がかかっており、いかに大きな負荷がかかっているかがわかる。一方、本実施の形態における３次元画像処理では、主な演算処理を描画処理装置によって行っているため、演算処理装置にかかる負荷はわずか１％未満であり、さらに、主な演算処理を描画処理装置によって行っているにもかかわらず、描画処理装置にかかる負荷は従来の３次元画像処理に比べて３％しか増加しておらず、本実施の形態における３次元画像処理が従来の３次元画像処理に比べていかに演算処理装置の処理に要する負担を軽減することができるかがわかる。
【０１２０】
なお、本実施の形態では、ビット演算するために雪粒子の位置座標は整数値を用いたが、本発明は特にこれに限定されず、雪粒子の位置座標に浮動小数値を用いてもよい。雪粒子の位置座標に浮動小数値を用いる場合の処理について説明する。雪粒子の位置座標に浮動小数値を用いる場合、図４に示すフローチャートのステップＳ５の処理で用いた（２）式を下記の（４）式に替える。
【０１２１】
t'(x，y，z)＝｛（t'(x，y，z)−cam(x，y，z)）ＭＯＤfield_length(x，y，z)｝−（field_length(x，y，z)／２）・・・・（４）
なお、上記（４）式における“ＭＯＤ”は除算を行った余りの値を表す剰余演算子であり、例えば、ｘ＝ａＭＯＤｂであれば、ｘの値はａをｂで割った余りとなる。
【０１２２】
上記に示す（４）式を図４に示すフローチャートのステップＳ５の処理で用いることによって、雪粒子を表示ボックス内に納めることができるため、field_length(x，y，z)のｘ、ｙ、ｚのそれぞれは２の階乗の値にする必要がなく、浮動小数値を用いることも可能となる。また、field_length_mask(x，y，z)も不要となる。ただし、浮動小数値を用いる場合、除算演算を行うため、ビット演算に比べて演算速度は遅くなってしまう。
【０１２３】
本実施の形態において、雪粒子の情報snow[１〜snow_max]は初期位置座標t(x，y，z)、移動速度v(x、y、z)、雪粒子の大きさsize及びテクスチャの種類tex_idのパラメータで構成されるとしたが、本発明は特にこれに限定されず、他のパラメータを持たせてもよい。例えば、雪粒子の情報snow[１〜snow_max]のパラメータとして雪粒子の縦方向及び横方向の大きさsize_x size_y、雪粒子の回転速度rot_speed及び雪粒子の色に関する情報ｒ，ｇ，ｂ等をさらに持たせる。これらのパラメータは、図４に示すフローチャートにおけるステップＳ１において、適当な乱数値が代入され、ステップＳ７における処理で用いられる。
【０１２４】
size_x size_yで表される変数は、雪粒子の縦、横の大きさを変えて再現する場合に用いることができる。図４に示すフローチャートにおけるステップＳ７において、スプライト表示座標の左上端座標ｘはｘ＝t'(x)−snow[i].size_xで表され、左上端座標ｙはｙ＝t'(y)−snow[i].size_yで表され、右下端座標ｘはｘ＝t'(x)＋snow[i].size_xで表され、右下端座標ｙはｙ＝t'(y)＋snow[i].size_yで表される。このように、スプライト表示座標の左上端座標ｘ，ｙ及び右下端座標ｘ，ｙを設定することによって、図３（ａ）に示すような円形状の雪粒子のビットマップイメージを種々の形状に変形することができ、例えば、楕円形状の雪粒子を描画することができる。
【０１２５】
rot_speedで表される変数は、雪粒子の回転を再現する場合に用いることができる。図４に示すフローチャートにおけるステップＳ７において、グラフィックスデータ生成プロセッサ３は、時刻clockにおける回転値rotateを下記の（５）式を用いることによって算出することができる。
【０１２６】
rotate＝rot_speed×clock・・・・（５）
このように、雪粒子のビットマップイメージを回転値rotate分だけ回転させて描画することによって雪粒子が回転して落ちていく表現ができる。
【０１２７】
ｒ，ｇ，ｂで表される変数は、雪粒子の色を変化させる場合に用いることができる。ｒはＲ（Red）成分のパラメータを表し、ｇはＧ（Green）成分のパラメータを表し、ｂはＢ（Blue）成分のパラメータを表す。図４に示すフローチャートにおけるステップＳ７において、グラフィックスデータ生成プロセッサ３は、テクスチャデータにｒ，ｇ，ｂの変数で表される成分を加算又は減算することによって雪粒子のテクスチャデータの色を変化させて描画する。このように、雪粒子のテクスチャデータの色を変化させて描画することによって、種々の色の雪粒子を表現することができ、例えば、赤い雪、青い雪及び黒い雪等を降らせることも可能となる。
【０１２８】
また、本実施の形態では、オブジェクトを雪粒子として説明したが、本発明は特にこれに限定されず、例えば、オブジェクトを雨粒子としてもよい。この場合、雨粒子を表すビットマップイメージをテクスチャデータとして記憶しておき、雨粒子の移動速度v(x，y，z)を雪粒子の移動速度に比べて速くすることで降雨状況を再現することができる。また、オブジェクトを砂粒子にすることによって、砂嵐等を再現することができ、さらに、オブジェクトを埃粒子にすることによって、埃が舞っている状況を再現することができる。
【０１２９】
また、本実施の形態では、図４に示す３次元画像処理のフローチャートにおけるステップＳ３からステップＳ７までの処理は、描画処理専用の描画処理装置（本実施の形態ではグラフィックスデータ生成プロセッサ３）によって行われる処理であるとしたが、本発明は特にこれに限定されず、図４に示す３次元画像処理のフローチャートにおけるステップＳ３からステップＳ７までの処理を演算処理装置（本実施の形態ではＣＰＵ１）によって行ってもよい。この場合、演算処理装置に要する負担は大きくなるが、分岐処理を行わないため、従来の３次元画像処理に比べて処理時間を短縮することができる。
【０１３０】
また、本実施の形態では、スノーボードを題材としたビデオゲームとして説明したが、本発明は特にこれに限定されず、例えば、スキー、野球、サッカー等の屋外で行われるスポーツを題材としたビデオゲームにも適用することができ、さらに、アクションゲーム、シミュレーションゲーム、シューティングゲーム、ロールプレイングゲーム及び格闘ゲーム等の他のビデオゲームにも適用することができる。
【０１３１】
【発明の効果】
請求項１に記載の本発明によれば、最初にオブジェクトの初期のパラメータが設定され、オブジェクトの移動後の仮想３次元空間内における位置座標が算出され、算出された移動後のオブジェクトの位置座標が、オブジェクトが表示される表示領域内に納まるように変更され、移動後のオブジェクトの位置座標が表示領域内にあるか否かの分岐処理を必要としないため、例えば、ビデオゲーム装置が分岐処理を含む種々の処理を実行可能な汎用の演算処理装置を備える場合、演算処理装置の処理に要する負担を軽減することができ、多数のオブジェクトを描画することができる。
【０１３２】
また、オブジェクトが表示可能な直方体形状の表示領域の各辺の少なくとも一辺の長さを減算することによって、表示領域から外れた移動後のオブジェクトの位置座標が表示領域内に戻されるため、従来のようにオブジェクトの位置座標が表示領域内にあるか否かの分岐処理を用いずにオブジェクトを表示領域内に納めることができる。
【０１３３】
また、オブジェクトの位置座標は整数値によって表されるため、オブジェクトの移動後の位置座標の算出にビット演算を用いることが可能となり、オブジェクトの位置座標に浮動小数値を用いる場合に比べて演算速度を速くすることができ、さらに、オブジェクトの移動後の位置座標をマスク処理することによって、下位ビットのみを取り出して直方体形状の表示領域の各辺の少なくとも一辺の長さを減算するため、従来のようにオブジェクト位置座標が表示領域内にあるか否かの分岐処理を必要とせずに簡略な演算処理を用いてオブジェクトを表示領域内に納めることができる。
【０１３４】
請求項２に記載の本発明によれば、テクスチャ記憶手段に記憶されているオブジェクトのテクスチャに基づいてオブジェクトが描画されるため、形状が異なる複数種類のテクスチャを記憶しておくことで、１つのオブジェクトを基準に種々のオブジェクトを表現することができ、ビデオゲームを多様化させることができる。
【０１３５】
請求項３に記載の本発明によれば、雪を表すテクスチャでオブジェクトを描画することで降雪状況をビデオゲームで再現することができ、さらに、形状が異なる複数の雪のテクスチャを記憶しているため、このテクスチャを変えることで様々な形状の雪を表現することができ、同じ処理で多様な降雪状況を再現することができるのでリアル感が増すこととなる。
【０１３６】
請求項４に記載の本発明によれば、描画処理装置は、高速に演算処理を行うために分岐処理等の複雑な演算処理機能を省いており、単純な演算処理機能のみを有している。すなわち、オブジェクトの移動後の仮想３次元空間内における位置座標を算出する処理と、算出された移動後のオブジェクトの位置座標を、オブジェクトが表示される表示領域内に納めるように変更する処理とは分岐処理がないため、分岐処理ができる演算処理装置ではなく、分岐処理はできないが演算処理装置より高速に演算を行うことができる描画処理装置によって演算処理を実行することができ、演算処理装置の処理に要する負担を軽減することができる。
【０１３７】
請求項５に記載の本発明によれば、最初にオブジェクトの初期のパラメータが設定され、オブジェクトの移動後の仮想３次元空間内における位置座標が算出され、算出された移動後のオブジェクトの位置座標が、オブジェクトが表示される表示領域内に納まるように変更され、移動後のオブジェクトの位置座標が表示領域内にあるか否かの分岐処理を必要としないため、例えば、ビデオゲーム装置が分岐処理を含む種々の処理を実行可能な汎用の演算処理装置を備える場合、演算処理装置の処理に要する負担を軽減することができ、多数のオブジェクトを描画することができる。
【０１３８】
また、オブジェクトが表示可能な直方体形状の表示領域の各辺の少なくとも一辺の長さを減算することによって、表示領域から外れた移動後のオブジェクトの位置座標が表示領域内に戻されるため、従来のようにオブジェクトの位置座標が表示領域内にあるか否かの分岐処理を用いずにオブジェクトを表示領域内に納めることができる。
【０１３９】
また、オブジェクトの位置座標は整数値によって表されるため、オブジェクトの移動後の位置座標の算出にビット演算を用いることが可能となり、オブジェクトの位置座標に浮動小数値を用いる場合に比べて演算速度を速くすることができ、さらに、オブジェクトの移動後の位置座標をマスク処理することによって、下位ビットのみを取り出して直方体形状の表示領域の各辺の少なくとも一辺の長さを減算するため、従来のようにオブジェクト位置座標が表示領域内にあるか否かの分岐処理を必要とせずに簡略な演算処理を用いてオブジェクトを表示領域内に納めることができる。
【０１４０】
請求項６に記載の本発明によれば、最初にオブジェクトの初期のパラメータが設定され、オブジェクトの移動後の仮想３次元空間内における位置座標が算出され、算出された移動後のオブジェクトの位置座標が、オブジェクトが表示される表示領域内に納まるように変更され、移動後のオブジェクトの位置座標が表示領域内にあるか否かの分岐処理を必要としないため、例えば、ビデオゲーム装置が分岐処理を含む種々の処理を実行可能な汎用の演算処理装置を備える場合、演算処理装置の処理に要する負担を軽減することができ、多数のオブジェクトを描画することができる。
【０１４１】
また、オブジェクトが表示可能な直方体形状の表示領域の各辺の少なくとも一辺の長さを減算することによって、表示領域から外れた移動後のオブジェクトの位置座標が表示領域内に戻されるため、従来のようにオブジェクトの位置座標が表示領域内にあるか否かの分岐処理を用いずにオブジェクトを表示領域内に納めることができる。
【０１４２】
また、オブジェクトの位置座標は整数値によって表されるため、オブジェクトの移動後の位置座標の算出にビット演算を用いることが可能となり、オブジェクトの位置座標に浮動小数値を用いる場合に比べて演算速度を速くすることができ、さらに、オブジェクトの移動後の位置座標をマスク処理することによって、下位ビットのみを取り出して直方体形状の表示領域の各辺の少なくとも一辺の長さを減算するため、従来のようにオブジェクト位置座標が表示領域内にあるか否かの分岐処理を必要とせずに簡略な演算処理を用いてオブジェクトを表示領域内に納めることができる。
【図面の簡単な説明】
【図１】  本発明の一実施の形態のビデオゲーム装置の構成を示すブロック図である。
【図２】  図１に示すビデオゲーム装置の主要機能を示すブロック図である。
【図３】  本実施の形態におけるテクスチャの一例を示す図である。
【図４】  図１に示すビデオゲーム装置による３次元画像処理の一例を示すフローチャートである。
【図５】  本実施の形態における３次元画像処理で行き粒子を描画した場合に表示されるゲーム画面の一例を示す画面図である。
【図６】  降雪状況を再現するための従来の３次元画像処理の一例を示すフローチャートである。
【図７】  従来の３次元画像処理で雪粒子を描画した場合に表示されるゲーム画面の一例を示す画面図である。
【符号の説明】
１  ＣＰＵ
２  バスライン
３  グラフィックスデータ生成プロセッサ
４，１３  インターフェース回路
５  メインメモリ
６  ＲＯＭ
７  伸張回路
８  パラレルポート
９  シリアルポート
１０  描画プロセッサ
１１  音声プロセッサ
１２  デコーダ
１４〜１６  バッファ
１７  記録媒体ドライバ
１８  メモリ
１９  コントローラ
２１  テレビジョンモニタ
３１  演算処理部
３２  描画演算処理部
３３  描画処理部
３４  データ記憶部
３５  プログラム記憶部
３６  表示部
３７  操作部
４１  ゲーム進行処理部
４２  位置座標算出部
４３  位置座標変更部
４４  雪粒子情報記憶部
４５  記録媒体
【図１】
0003686920.tif 000002
【図２】
0003686920.tif 000003
【図３】
0003686920.tif 000004
【図４】
0003686920.tif 000005
【図５】
0003686920.tif 000006
【図６】
0003686920.tif 000007
【図７】
0003686920.tif 000008