(57)【特許請求の範囲】
【請求項１】
物体を描画するための情報として、前記物体のおおよその形状を表す基準物体を描画するためのデータと、初期値が与えられることにより初期化されて再現性のある乱数を発生する疑似乱数発生手段に与える前記初期値とを伝送し、
前記基準物体を描画するためのデータにより表現される物体領域あるいは物体の部分領域をｎ次元格子（ｎは２以上の整数）に分割し、
ｉ−１（ｉ≦ｎ）次元格子上の各点上で得られた乱数の値に基づく値を、その点を起点としてｉ次元格子方向の乱数を得るために、前記疑似乱数発生手段の初期値として与え、得られた乱数を元に前記ｉ次元格子方向の各点の情報を加工して前記物体を表示することを特徴とする画像生成方法。
【請求項２】
初期値が与えられることにより初期化され、再現性のある乱数を発生する疑似乱数発生器と、
物体のおおよその形状を表す基準物体を描画するためのデータにより表現される物体領域あるいは物体の部分領域をｎ次元格子（ｎは２以上の整数）に分割し、ｉ−１（ｉ≦ｎ）次元格子上の各点上で得られた乱数の値に所定の変換を施した値を、その点を起点としてｉ次元格子方向の乱数を得るために、前記疑似乱数発生手段の初期値として与え、得られた乱数を元に前記ｉ次元格子方向の各点の情報を加工する疑似精細描画情報生成手段と、
前記疑似精細描画情報生成手段から得られるｎ次元格子により前記物体を描画する描画手段と
を備えることを特徴とする画像生成装置。
【請求項３】
順次に親子関係を持った複数のレベルを備え、各レベルが複数のノードで構成される再帰的構造により物体を表現する際に、
前記再帰的構造において、現状態に対する前記ノードで得られた乱数の値に基づく値を、子ノード列で発生する乱数の初期値として与えて乱数列を発生させ、親ノードの乱数値をスタックに退避し、子ノードから親ノードに戻るときには親ノードの乱数値をスタックより戻すことにより、各ノードで再現性のある乱数を発生させ、得られた乱数を元に各ノードにおける情報を加工して物体を表現する画像生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えば、例えば、ビデオゲーム機やパーソナルコンピュータのように限られたハードウェア資源の中で、リアルタイムに３次元物体を生成して表示する場合に適用して好適な画像生成方法、画像生成装置、記録媒体およびその画像生成時に使用する疑似乱数発生装置に関する。
【０００２】
【従来の技術】
家庭用テレビゲーム機やパーソナルコンピュータあるいはグラフィックコンピュータなどにおいて、テレビ受像機やモニタ受像機などに出力して表示する画像データを生成するための画像生成装置は、バスを通じて互いに接続される、汎用メモリ、ＣＰＵやその他の演算ＬＳＩが組み合わされて構成され、描画用の画像データの流れとして、ＣＰＵとフレームバッファの間に専用の描画装置を設けることにより、高速処理を可能にしている。
【０００３】
すなわち、上記画像生成装置においては、ＣＰＵ側では、画像を生成する際に、直接、表示画面に対応する表示メモリとしてのフレームバッファにアクセスするのではなく、座標変換やクリッピング、光源計算等のジオメトリ処理を行ない、３角形・４角形などの基本的な単位図形（ポリゴン）の組合せとして３次元モデルを定義して３次元画像を描画するための描画命令を作成する。そして、ＣＰＵは、その描画命令を外部バスを介して描画装置に送る。
【０００４】
描画命令には、描画しようとするポリゴンの形、位置、向き、色、模様などの情報が含まれる。ポリゴンの形、位置、向きは、その頂点の座標で決まる。
【０００５】
上記画像生成装置において、例えば、３次元のオブジェクト（表示すべき対象物をオブジェクトと称する）を表示する場合は、当該オブジェクトを複数のポリゴンに分解して、各ポリゴンに対応する描画命令をＣＰＵが生成し、その生成した描画命令をバスを通じて描画装置に転送する。描画装置は、当該描画命令を実行して、フレームバッファに表示データを書き込み、目的の３次元オブジェクトを表示する。
【０００６】
【発明が解決しようとする課題】
しかしながら、上述の従来の手法では、多種多様な物体を精細に表現するためには、それぞれの物体に合わせて、小さな多数のポリゴンによりオブジェクトを表現する必要があるため、描画データとしては、それらの非常に多くのポリゴン情報を持つ必要があり、データ量の増大を招く問題があった。
【０００７】
このデータ量の増大を防ぐために、描画情報として伝送するポリゴン情報としては、物体のおおよその形状を表す基準物体を描画するためのデータのみとし、描画装置内で、前記ポリゴン情報を加工して、より精細に表現することが考えられる。
【０００８】
例えば自然石の表面の凹凸を精細に表現する場合、当該表現しようとする微細には凹凸を有する石のおおよその表面形状が四角形であった場合、描画情報として伝送するのは、図２に示す、その四角形の頂点Ａ，Ｂ，Ｃ，Ｄの座標からなるポリゴン情報とする。
【０００９】
そして、描画装置において、この四角形ＡＢＣＤを、辺ＡＢの方向Ｕおよび辺ＡＣの方向Ｖの２方向について分割することにより格子状に分割し、四角形を多数の微小四角形に分割する。そして、各微小四角形の頂点となる各格子点の座標を、四角形ＡＢＣＤの面に対して垂直な方向を想定し、図２で矢印で示すように、その垂直な方向にランダムにずらして設定する。このようにして得られる各微小四角形の頂点を順次に結んで行けば、図２で、破線で示すように、微小な凹凸が四角形ＡＢＣＤ内に表現され、自然石の表面らしさが表現できる。
【００１０】
以上のようにして、伝送するポリゴン情報のデータ量は、少なくても、種々の精細な凹凸などの表現が可能となる。
【００１１】
ところで、前述した各格子点の座標の描画装置における設定方法としては、乱数を用いる方法が考えられる。しかし、一般に乱数は、任意に発生するものであり、再現性がないため、描画装置での描画の都度、物体の微細な形状や色等が変わってしまう。このため、リアルタイムコンピュータグラフィックス装置のように、同一物体に対して何枚もの画像を発生させることを必要とする装置では、そのままでは適用することができない。
【００１２】
この発明は、以上の点にかんがみ、上述したように、少ないデータ量であっても乱数を用いて、より精細な描画できるようにする画像生成方法および装置であって、多種多様な形状を再現性よく表現できるものを提供することを目的とする。
【００１３】
【課題を解決するための手段】
上記課題を解決するため、この発明による画像生成方法（請求項１）は、
物体を描画するための情報として、前記物体のおおよその形状を表す基準物体を描画するためのデータと、初期値が与えられることにより初期化されて再現性のある乱数を発生する疑似乱数発生手段に与える前記初期値とを伝送し、
前記基準物体を描画するためのデータにより表現する物体領域あるいは物体の部分領域を、多数個の基本多角形に分割すると共に、
前記多数個の基本多角形の各頂点の座標を、前記初期値により初期化された前記疑似乱数発生手段からの乱数に基づいて定め、
前記物体を前記多数個の基本多角形により描画することを特徴とする。
【００１４】
また、この発明による画像生成装置（請求項６）は、
初期値が与えられることにより初期化され、再現性のある乱数を発生する疑似乱数発生器と、
物体のおおよその形状を表す基準物体を描画するための入力データにより表現される物体領域あるいは物体の部分領域を、多数個の基本多角形に分割し、前記多数個の基本多角形の各頂点の座標を、前記初期値により初期化された前記疑似乱数発生手段からの乱数に基づいて定める疑似精細描画情報生成手段と、
前記疑似精細描画情報生成手段から得られる前記多数個の基本多角形により前記物体を描画する描画手段と
を備えることを特徴とする。
【００１５】
この発明においては、伝送される描画情報には、描画しようとする物体のおおよその形状を表す基準物体を描画するためのポリゴンデータの他に、初期値が与えられることにより初期化されて再現性のある乱数を発生する疑似乱数発生手段に与える前記初期値が含まれる。したがって、少ないデータから再現性のある多種多様の物体形状を表現することが可能である。
【００１６】
【発明の実施の形態】
以下、この発明による画像処理装置の一実施の形態を、テレビゲーム機の場合について、図を参照しながら説明する。
【００１７】
図３は、この発明の一実施の形態のテレビゲーム機の構成例を示すもので、この例は３次元グラフィックス機能と、動画再生機能とを備えるゲーム機の場合の例である。
【００１８】
図４は、この例のゲーム機の外観を示すもので、この例のゲーム機は、ゲーム機本体１と、ユーザの操作入力部を構成するコントロールパッド２とからなる。コントロールパッド２は、このコントロールパッド２に接続されているケーブル３の先端に取り付けられているコネクタプラグ４を、ゲーム機本体１のコネクタジャック５Ａに結合させることにより、ゲーム機本体１に接続される。この例では、いわゆる対戦ゲーム等のために、２個のコントロールパッド２がゲーム機本体１に対して接続することができるように、２個のコネクタジャック５Ａ，５Ｂがゲーム機本体１に設けられている。
【００１９】
この例のゲーム機は、ゲームプログラムや画像データが書き込まれた補助記憶手段としての、例えばＣＤ−ＲＯＭディスク６をゲーム機本体１に装填することにより、ゲームを楽しむことができる。
【００２０】
次に、図３を参照しながら、この例のゲーム機の構成について説明する。この例のゲーム機は、メインバス１０と、サブバス２０とからなる２つのシステムバスを備える構成を有している。これらメインバス１０と、サブバス２０との間のデータのやり取りは、バスコントローラ３０により制御される。
【００２１】
そして、メインバス１０には、メインＣＰＵ１１と、メインメモリ１２と、画像伸長デコード部１３と、前処理部１４と、描画処理部１５と、メインのＤＭＡコントローラ１６が接続されている。描画処理部１５には、処理用メモリ１７が接続されていると共に、この描画処理部１５は表示データ用のフレームバッファ（フレームメモリ）と、Ｄ／Ａ変換回路を含み、この描画処理部１５からのアナログビデオ信号がビデオ出力端子１８に出力される。図示しないが、このビデオ出力端子１８は、表示装置としての例えばＣＲＴディスプレイに接続される。
【００２２】
サブバス２０には、サブＣＰＵ２１と、サブメモリ２２と、ブートＲＯＭ２３と、サブのＤＭＡコントローラ２４と、音声処理用プロセッサ２５と、入力部２６と、補助記憶装置部２７と、拡張用の通信インターフェース部２８とが接続される。補助記憶装置部２７は、この例ではＣＤ−ＲＯＭデコーダ４１とＣＤ−ＲＯＭドライバ４２を備える。ブートＲＯＭ２３には、ゲーム機としての立ち上げを行うためのプログラムが格納されている。また、音声処理用プロセッサ２５に対しては、音声処理用メモリ２５Ｍが接続されている。そして、この音声処理用プロセッサ２５はＤ／Ａ変換回路を備え、これよりはアナログ音声信号を音声出力端子２９に出力する。
【００２３】
そして、補助記憶装置部２７は、ＣＤ−ＲＯＭドライバ４２に装填されたＣＤ−ＲＯＭディスク６に記録されているアプリケーションプログラム（例えばゲームのプログラム）やデータをデコードする。ＣＤ−ＲＯＭディスク６のアプリケーションプログラムには、ポリゴン描画命令が含まれている。
【００２４】
このポリゴン描画命令には、描画すべき物体の形状を直接的に表現するためのポリゴン描画情報を含む場合の通常命令の他に、この例においては、描画すべき物体のおおよその形状を現す基準物体を描画するためのポリゴン情報と、そのポリゴン情報を加工してさらに微細に表現する疑似微細描画情報を生成する命令と、後述するように、前処理部１４で、その疑似精細描画情報を生成する際に使用する疑似乱数発生器に与える初期値を含む特殊命令がある。この初期値は、一つのオブジェクトに一つではなく、必要に応じて多数個の初期値が付加される。例えば、物体のおおよその形状を表す基準物体を描画するための基本ポリゴンのそれぞれについて初期値が付加されていてもよい。
【００２５】
なお、ポリゴン描画命令の特殊命令は、疑似乱数発生器に与える初期値を含む場合に特殊命令であることを認識するようにすれば、疑似微細描画情報を生成する命令を含める必要はない。
【００２６】
また、ＣＤ−ＲＯＭディスク６には、例えば離散コサイン変換（ＤＣＴ）を用いたＭＰＥＧ２方式により画像圧縮された動画や静止画の画像データや、ポリゴンを修飾するためのテクスチャ画像の画像データも記録されている。
【００２７】
入力部２６は、前述した操作入力手段としてのコントロールパッド２と、ビデオ信号の入力端子と、音声信号の入力端子を備えるものである。
【００２８】
メインＣＰＵ１１は、メインバス１０側の各部の管理および制御を行なう。また、このメインＣＰＵ１１は、物体を多数のポリゴンの集まりとして描画する場合の処理の一部を行う。メインＣＰＵ１１は、後述もするように、１画面分の描画画像を生成するための描画命令列をメインメモリ１２上に作成する。メインＣＰＵ１１とメインバス１０とのデータのやり取りは、データをパケット形式にしてパケット単位に行い、バースト転送を可能にしている。
【００２９】
メインメモリ１２は、動画や静止画の画像データに対しては、圧縮された画像データのメモリ領域と、伸長デコード処理された伸長画像データのメモリ領域とを備えている。また、メインメモリ１２は、描画命令列などのグラフィックスデータのメモリ領域（これをパケットバッファという）を備える。このパケットバッファは、メインＣＰＵ１１による描画命令列の設定と、描画命令列の描画処理部への転送とに使用される。
【００３０】
画像伸長デコード部１３は、ＣＤ−ＲＯＭディスク６から再生され、メインメモリに転送された圧縮動画データやメインメモリ１２上の圧縮されたテクスチャパターンデータの伸長処理を行なうもので、この例では、ＭＰＥＧ２の画像圧縮方式を採用するので、それに対応したデコーダの構成を有している。
【００３１】
前処理部１４は、ＣＰＵを備えるプロセッサの構成とされるもので、メインＣＰＵ１１の処理の一部を分担することができるようにするものである。そして、この例の場合には、後述するように、この前処理部１４において、メインメモリ１２から転送されてくる描画命令に含まれるポリゴンデータを加工して、疑似精細描画情報を生成し、表示のための２次元座標データを含む描画情報に変換する処理も行う。
【００３２】
描画処理部１５は、前処理部１４から転送されてくる描画情報を実行して、その結果をフレームメモリに書き込む。フレームメモリから読み出された画像データは、Ｄ／Ａ変換器を介してビデオ出力端子１８に出力され、画像モニター装置の画面に表示される。
【００３３】
このゲーム機の基本的な処理について以下に説明する。
【００３４】
［ＣＤ−ＲＯＭディスク６からのデータの取り込み］
図３の例のゲーム機に電源が投入され、ゲーム機本体１にＣＤ−ＲＯＭディスク６が装填されると、ブートＲＯＭ２３の、ゲームを実行するためのいわゆる初期化処理をするためのプログラムが、サブＣＰＵ２１により実行される。すると、ＣＤ−ＲＯＭディスク６の記録データが次のようにして取り込まれる。
【００３５】
すなわち、補助記憶装置部２７においては、ＣＤ−ＲＯＭディスク６から、圧縮画像データ、描画命令及びメインＣＰＵ１１が実行するプログラムが、ＣＤ−ＲＯＭドライバ４２、ＣＤ−ＲＯＭデコーダ４１を介して読み出され、サブＤＭＡコントローラ２４によってサブメモリ２２に一旦ロードされる。
【００３６】
そして、このサブメモリ２２に取り込まれたデータは、サブＤＭＡコントローラおよびバスコントローラ３０、さらにはメインＤＭＡコントローラ１６によってメインメモリ１２に転送される。なお、サブＣＰＵ２１は、描画処理部１５のフレームに対して直接的にアクセスできるように構成されており、このサブＣＰＵ２１によっても表示画像内容の変更が、描画処理部１５の制御とは離れて可能とされている。
【００３７】
［圧縮画像データの伸長及び転送］
メインメモリ１２の入力データのうち、圧縮画像データは、この例では、メインＣＰＵ１１がハフマン符号のデコード処理を行った後、再びメインＣＰＵ１１によりメインメモリ１２に書き込まれる。そして、メインＤＭＡコントローラ１６は、このハフマン符号のデコード処理後の画像データをメインメモリ１２から画像伸長部１３に転送する。画像伸長部１３は、逆量子化の処理と、逆ＤＣＴの処理を行って画像データの伸長デコード処理を行う。伸長された画像データは、メインＤＭＡコントローラ１６が、メインメモリ１２に転送する。
【００３８】
メインＣＰＵ１１は、伸長された画像データのマクロブロックと呼ばれる単位データが一定量、メインメモリ１２に蓄積された時点で、当該伸長データを描画処理部１５のフレームメモリに転送する。この際に、伸長画像データがフレームメモリの画像メモリ領域に転送されれば、そのまま背景動画像として画像モニター装置で表示されることになる。また、フレームメモリのテクスチャー領域に転送される場合もある。このテクスチャー領域の画像データは、テクスチャー画像として、ポリゴンの修飾に使用される。
【００３９】
［描画命令列についての処理と転送］
物体の面を構成するポリゴンは、３次元的な奥行きの情報であるＺデータに従って奥行き方向の深い位置にあるポリゴンから順に描画することにより、２次元画像表示面に立体的に画像を表示することができる。メインＣＰＵ１１は、このように奥行き方向の深い位置にあるポリゴンから順に、描画処理部１５で描画が行われるようにするための描画命令列をメインメモリ１２上に作成する。
【００４０】
メインＣＰＵ１１は、入力部２６のコントロールパッドからのユーザーの操作入力に基づいて、物体や視点の動きを計算し、メインメモリ１２上にポリゴン描画命令列を作成する。
【００４１】
この描画命令列が完成すると、メインＤＭＡコントローラ１６は、前処理部１４を通じて、描画命令毎に、メインメモリ１２から描画処理部１５に転送する。この際に、前処理部１４においては、後述のような疑似精細描画情報の生成処理が施される。
【００４２】
描画処理部１５では、送られてきたデータを順次実行して、その結果を、フレームメモリの描画領域に格納する。このポリゴン描画の際、データは、描画処理部１５の勾配計算ユニットに送られ、勾配計算が行なわれる。勾配計算は、ポリゴン描画で多角形の内側をマッピングデータで埋めていく際、マッピングデータの平面の傾きを求める計算である。テクスチャーの場合はテクスチャー画像データでポリゴンが埋められ、また、グーローシェーディングの場合は輝度値でポリゴンが埋められる。
【００４３】
さらに、動画のテクスチャーが可能である。つまり、動画テクスチャーの場合には、前述したように、ＣＤ−ＲＯＭディスクからの圧縮された動画データは、一旦、メインメモリ１２に読み込まれる。そして、この圧縮画像データは、画像伸長部１３に送られる。画像伸長部１３で、画像データが伸長される。このとき、前述したように、伸長処理の一部は、メインＣＰＵ１１が負担する。
【００４４】
そして、伸長された動画データは描画処理部１５のフレームメモリ上のテクスチャー領域に送られる。テクスチャー領域は、この描画処理部１５のフレームメモリ内に設けられているので、テクスチャーパターン自身も、フレーム毎に書き換えることが可能である。このように、テクスチャー領域に動画を送ると、テクスチャーが１フレーム毎に動的に書き換えられて変化する。このテクスチャー領域の動画により、ポリゴンへのテクスチャーマッピングを行えば、動画のテクスチャーが実現される。
【００４５】
［前処理部１４での疑似精細描画情報の生成］
図１は、疑似精細描画情報を生成することを主として、前処理部１４の処理機能を示す機能ブロック図である。すなわち、この場合、前処理部１４は、疑似精細描画情報生成部１４１と、疑似乱数発生部１４２と、描画処理部１５での描画処理に適合した２次元座標への座標変換、透視変換および光源計算を行う変換演算部１４３とからなる。
【００４６】
疑似精細描画情報生成部１４１は、受け取った描画命令が、通常の描画命令であった場合には、その描画命令を変換演算部１４３に供給する。変換演算部１４３は、受け取った描画情報について、座標変換、透視変換、光源計算を行って、描画処理部１５に渡す。
【００４７】
疑似精細描画情報生成部１４１は、受け取った描画命令が、前述した特殊命令であって、それにより直接的に描画される基本多角形をさらに微細に分割して表現すべきものであった場合には、図２に示したように、基本多角形を、方向Ｕおよび方向Ｖの２方向について分割することにより格子状に分割し、多数の微小四角形に分割する。
【００４８】
そして、疑似精細描画情報生成部１４１は、前記特殊命令に含まれる初期値を疑似乱数発生部１４２に供給し、この疑似乱数発生部１４２から対応する乱数を取得する。そして、微小四角形の頂点の各格子点の座標値を、図２に示した基本多角形である四角形ＡＢＣＤの面に対して垂直な方向に、取得した乱数に基づいてずらした座標値に変換する。
【００４９】
そして、このようにして生成された微小四角形の疑似精細描画情報は、変換演算部１４３に供給されて、座標変換、透視変換、光源計算が行われ、描画処理部１５に渡される。描画処理部１５では、前述したように、フレームメモリにオブジェクトの描画を行うと共に、必要に応じてテクスチャマッピングを行い、その結果をＣＲＴディスプレイに送って描画画像を表示する。
【００５０】
疑似乱数発生部１４２に設けられる疑似乱数発生器４０は、初期値を与えることにより、一義的に定まる乱数系列を発生する。すなわち、疑似乱数発生器４１は、初期値が与えられることで、再現性のある乱数系列を発生する。この例の疑似乱数発生器４１は、線形合同法により疑似乱数を発生する。
【００５１】
図５は、この例の疑似乱数発生器４０をハードウエアで実現する場合の構成図である。図示のように、この例の疑似乱数発生器４０は、定数Ａ、定数Ｃを発生する２個の定数発生器４１、４２と、乗算器４３と、加算器４４と、ｍｏｄ．Ｍ（Ｍは定数）演算器４５とからなり、乱数値Ｒを発生する。そして、図示しないが、この乱数値Ｒを保持する。
【００５２】
乗算器４３は、定数発生器４１からの定数Ａと、疑似精細描画情報生成部１４１から送られてくる初期値シード（シードは乱数発生の種）あるいはシードＲ（このＲは前述したように求める乱数値でもある）との乗算演算を行う。加算器４４は、乗算器４３の乗算結果に定数発生器４２からの定数Ｃを加算し、その加算結果をｍｏｄ．Ｍ演算器４５に供給する。ｍｏｄ．Ｍ演算器４５は、加算器４４の加算結果を定数Ｍで割って、余りＲを求め、これを乱数値として出力する。
【００５３】
乗算器４３は、これに初期値シードが供給されたときには、これと定数Ａとの乗算演算を行う。その後は、疑似精細描画情報生成部１４１から乱数の読み出し要求があると、保持している現在の乱数シードＲを疑似精細描画情報生成部１４１に渡すと共に、その現在の乱数シードＲを用いて定数Ａとの乗算演算を行い、次の乱数シードを生成する。すなわち、疑似乱数発生器４０の現在のシードは、現在発生している乱数値とされ、次に発生する乱数は、この現在のシード、すなわち、現在の乱数発生値により一意に決定される。
【００５４】
したがって、疑似乱数発生器４０は、初期値シードとして、定められた値が与えられると、常に同じ乱数系列が発生する。つまり、初期値シードにより再現性のある乱数を発生するものである。
【００５５】
この疑似乱数発生器４０は、ソフトウエアによる演算によっても構成することができ、その場合の演算式は、
Ｒ←（Ａ×Ｒ＋Ｃ）ｍｏｄ．Ｍ
で表される。
【００５６】
この疑似乱数発生器４０では、前記定数Ａ，Ｃを変えることにより、異なる乱数系列が得られる。
【００５７】
［疑似精細描画アルゴリズム１］
次に、図６および図７のフローチャートを参照しながら、疑似精細描画情報生成部１４１の処理動作を説明する。この例は、図２の四角形ＡＢＣＤを前述したように格子状に分割して疑似精細描画情報を生成する場合の例であり、方向Ｖの各分割位置において、方向Ｕに順次に分割して、各格子点を定め、その格子点の座標を疑似乱数発生器４０からの乱数値Ｒによって定めるようにする。この順序は、描画情報の作成時と同じである。また、後述する方向Ｖおよび方向Ｕについての分割単位距離Δｖ、Δｕも、描画情報の作成時と同じである。
【００５８】
まず、ステップＳ１において、メインメモリ１２から転送されてくる描画情報中の基本物体のポリゴンデータを読み込む。例えば図２の四角形ＡＢＣＤからなる物体表面の４頂点Ａ，Ｂ，Ｃ，Ｄの値（ベクトル値）を読み込む。また、この四角形ＡＢＣＤからなる物体表面の情報に付随されている疑似乱数発生器４０の初期値（シード）を読み込む。そして、読み込んだ初期値を疑似乱数発生器４０に与え、疑似乱数発生器４０を初期化する。また、四角形ＡＢＣＤの平面と垂直なベクトルＮを求める。
【００５９】
次に、ステップＳ２に進み、四角形ＡＢＣＤの辺ＡＣ方向Ｖの距離ｖを０に初期化する。そして、次のステップＳ３で方向Ｖについての分割は終了したか否か判断し、終了していれば、この処理ルーチンを終了し、終了してしなければステップＳ４に進み、辺ＡＢ方向Ｕの距離ｕを０に初期化する。
【００６０】
そして、ステップＳ４の次にはステップＳ５に進み、方向Ｕについての分割は終了したか否か判断し、終了していれば、ステップＳ６に進み、方向Ｖの距離ｖを単位量Δｖだけ増加して方向Ｖの次の分割位置にした後、ステップＳ３に戻り、このステップＳ３以降の処理を繰り返す。また、ステップＳ５で、方向Ｕについての分割は終了してしないと判断されたときには、図７のステップＳ１０以降に進む。
【００６１】
ステップＳ１０では、頂点ベクトルＡ，Ｂ，Ｃと、距離ｕ，ｖの値から、現在の格子点位置（ｘ，ｙ，ｚ）を求める。次にステップＳ１１に進み、疑似乱数発生器４０から乱数値Ｒを読み込む。そして、ステップＳ１２に進み、次の演算を行う。
（Ｘ，Ｙ，Ｚ）←（ｘ，ｙ，ｚ）＋Ｒ×Ｎ×ｃ  …  （式１）
ただし、ｃは適当な定数である。
【００６２】
次のステップＳ１３では、（式１）により求めた値（Ｘ，Ｙ，Ｚ）と、既に求めてある隣接した格子点についての値（Ｘ，Ｙ，Ｚ）により、微小四角形ポリゴンを作成し、後段の変換演算部１４３に出力する。次に、ステップＳ１４では、（式１）により求めた値（Ｘ，Ｙ，Ｚ）を、ステップＳ１３での処理に使用するために、メモリに格納する。そして、ステップＳ１５に進み、方向Ｕの距離ｕを単位量Δｕだけ増加して方向Ｕの次の分割位置にした後、ステップＳ１０に戻り、このステップＳ１０〜ステップＳ１５の処理を繰り返す。
【００６３】
疑似精細描画情報生成部１４１は、以上の処理ルーチンを実行することで、図２でそれぞれ矢印で示した各格子点の値（Ｘ，Ｙ，Ｚ）を生成し、変換演算部１４３にそれぞれ供給する。そして、描画処理部１５は、この変換演算部１４３からの座標変換出力を受けて、描画を実行するので、図２の破線で示したように、四角形平面ＡＢＣＤは、凹凸を有する面として描画される。
【００６４】
この凹凸面の生成に使用された乱数値Ｒは、平面ＡＢＣＤに関する付加的な情報としてＣＤ−ＲＯＭ６に記録された初期値が疑似乱数発生器４０に与えられて得られたもので、当該初期値により一義的に再現される乱数値である。そして、格子の分割値Δｖ，Δｕや分割順序が、描画情報の作成時と同じである場合には、疑似精細表面として変形された物体表面の形状は、描画情報の作成者の意図したものとまったく同一とすることができる。
【００６５】
すなわち、格子の分割値Δｖ，Δｕや分割順序が、予め定められた一定のものであれば、疑似乱数発生器４０に与えられた初期値シードに応じた物体表面の変形形状が得られるものである。こうして、少ないデータ量の描画情報から、再現性のある多様な形状が得られるものである。
【００６６】
［疑似精細描画アルゴリズム２］
図６および図７の場合は、四角形平面ＡＢＣＤの全領域について、変形凹凸面を施して表示するものであるが、画面クリッピング等の理由により、四角形平面ＡＢＣＤの一部の描画でよい場合がある。このような一部の領域の精細描画情報のために、図６および図７のルーチンのように、距離ｖ＝０，ｕ＝０の位置の格子から順次に求めるのは、時間が掛かり、効率が悪い。
【００６７】
図８およびその続きである図９は、この問題を解決した疑似精細描画情報生成部１４１の処理ルーチンの例である。
【００６８】
まず、ステップＳ２１において、メインメモリ１２から転送されてくる描画情報中の基本物体のポリゴンデータを読み込む。例えば図２の四角形ＡＢＣＤからなる物体表面の４頂点Ａ，Ｂ，Ｃ，Ｄの値（ベクトル値）を読み込む。また、この四角形ＡＢＣＤからなる物体表面の情報に付随されている疑似乱数発生器４０の初期値（シード）を読み込む。そして、読み込んだ初期値を疑似乱数発生器４０に与え、疑似乱数発生器４０を初期化する。また、四角形ＡＢＣＤの平面と垂直なベクトルＮを求める。この際に、四角形ＡＢＣＤ平面の内で、これから表示しようとする一部領域の情報も取得する。この情報は、メインＣＰＵ１１で演算されて前処理部１４に送られる。
【００６９】
次に、ステップＳ２２に進み、四角形ＡＢＣＤの辺ＡＣ方向Ｖの距離ｖを０に初期化する。そして、次のステップＳ２３で方向Ｖについて、描画が必要となる領域まで達しているか否か判断し、描画が必要となる領域に達していないときにはステップＳ２４に進み、疑似乱数発生器４０より、生成された乱数値を読み込み、また、方向Ｖの距離ｖを単位量Δｖだけ増加して方向Ｖの次の分割位置にした後、ステップＳ２３に戻り、このステップＳ２３以降の処理を繰り返す。ステップＳ２４で、疑似乱数発生器４０から乱数を読み込むと、疑似乱数発生器４０は、その読み込まれた乱数値をシードとして、次の乱数を発生させる。
【００７０】
ステップＳ２３で、方向Ｖについて、描画が必要となる領域の位置に達していると判断したときには、ステップＳ２５に進み、方向Ｖについて、描画が必要となる領域を越えたか否か判断し、越えていれば、この処理ルーチンを終了する。越えていなければ、ステップＳ２５からステップＳ２６に進み、疑似乱数発生器４０から乱数値を読み込み、それをＲ１として、これを保存する。
【００７１】
次に、ステップＳ２６に進み、乱数値Ｒ１に何等かの変換、例えば２進数でのビット変換を施した値を求め、これにより疑似乱数発生器４０を初期化する。そして、図９のステップＳ３０に進む。
【００７２】
ステップＳ３０では、辺ＡＢ方向Ｕの距離ｕを０に初期化する。そして、次のステップＳ３１に進み、方向Ｕについて、描画が必要となる領域まで達しているか否か判断し、描画が必要となる領域に達していないときにはステップＳ３２に進み、疑似乱数発生器４０より、生成された乱数値を読み込み、また、方向Ｕの距離ｕを単位量Δｕだけ増加して方向Ｕの次の分割位置にした後、ステップＳ３１に戻り、このステップＳ３１以降の処理を繰り返す。ステップＳ３２で、疑似乱数発生器４０から乱数を読み込むと、疑似乱数発生器４０は、その読み込まれた乱数値をシードとして、次の乱数を発生させる。
【００７３】
ステップＳ３１で、方向Ｕについて、描画が必要となる領域の位置に達していると判断したときには、ステップＳ３３に進み、方向Ｕについて、描画が必要となる領域を越えたか否か判断し、描画が必要な領域内にあると判断したときには、ステップＳ３４に進む。
【００７４】
ステップＳ３４では、頂点ベクトルＡ，Ｂ，Ｃと、距離ｕ，ｖの値から、現在の格子点位置（ｘ，ｙ，ｚ）を求める。また、疑似乱数発生器４０から乱数値を読み込み、それをＲ２とする。そして、ステップＳ３５に進み、次の演算を行う。
（Ｘ，Ｙ，Ｚ）←（ｘ，ｙ，ｚ）＋Ｒ２×Ｎ×ｃ  …  （式２）
ただし、ｃは適当な定数である。
【００７５】
次のステップＳ３６では、（式２）により求めた値（Ｘ，Ｙ，Ｚ）と、既に求めてある隣接した格子点についての値（Ｘ，Ｙ，Ｚ）により、微小四角形ポリゴンを作成し、後段の変換演算部１４３に出力する。また、（式２）により求めた値（Ｘ，Ｙ，Ｚ）を、ステップＳ３４での処理に使用するために、メモリに格納する。そして、ステップＳ３７に進み、方向Ｕの距離ｕを単位量Δｕだけ増加して方向Ｕの次の分割位置にした後、ステップＳ３３に戻り、このステップＳ３３〜ステップＳ３７の処理を繰り返す。
【００７６】
また、ステップＳ３３において、方向Ｕについて、描画が必要となる領域を越えたと判断したときには、ステップＳ３８に進み、ステップＳ２６で保存した乱数値Ｒ１をシードとして疑似乱数発生器４０を初期化する。そして、ステップＳ３９に進み、方向Ｖの距離ｖを単位量Δｖだけ増加して方向Ｖの次の分割位置にした後、ステップＳ２５に戻り、このステップＳ２５以降の処理を繰り返す。
【００７７】
以上の処理ルーチンを実行することで、四角形平面ＡＢＣＤの一部領域についての精細描画情報の生成を行う場合に、疑似精細描画情報生成部１４１では、効率良く処理を行うことができる。
【００７８】
すなわち、図６および図７の処理ルーチンのように、方向Ｖおよび方向Ｕの各分割位置のそれぞれについて、順次に乱数値を取得するようにする場合には、四角形平面ＡＢＣＤの例えば図１０で斜線で示すような一部領域を描画の必要な領域とするような場合でも、その必要な描画領域に達するまでのすべての格子点における乱数を発生させるようにする必要がある。このため、描画の必要な領域に到達するまでに時間が掛かり、効率が悪い。
【００７９】
これに対して、図８および図９の処理ルーチンの方法の場合には、図１１に示すように、まず、方向Ｖについて、描画の必要な領域まで分割格子位置を移動させて、そのときの疑似乱数発生器４０の乱数値をＲ１として取得し、この格子点位置の方向Ｖについての乱数シードとして保存する。
【００８０】
そして、このシードＲ１を初期値として、方向Ｕについての乱数を疑似乱数発生器４０から発生させると、方向Ｖと方向Ｕとで同じ乱数系列になってしまうので、この乱数シードに変換を施した値Ｒ２を生成し、この値Ｒ２を初期値として疑似乱数発生器４０を初期化し、方向Ｕについては、方向Ｖとは別系列の乱数を発生させるようにする。そして、方向Ｕについての乱数の発生は、図１１に示すように、描画の必要な領域の範囲内のみとし、その範囲での乱数の発生が終了したら、方向Ｖの次の分割格子点位置に移行する。この移行の際に、保存した乱数シードＲ１により疑似乱数発生器４０を初期化して、方向Ｖについての乱数を発生させ、方向Ｖの次の分割格子点位置の乱数を取得し、保存する。
【００８１】
そして、前述と同様にして、方向Ｕについては、保存した乱数シードに変換を施した値を生成し、その値を初期値として疑似乱数発生器４０を初期化し、方向Ｕについては、方向Ｖとは別系列の乱数を発生させ、上述と同様の動作を繰り返す。
【００８２】
したがって、図８および図９に示した処理ルーチンの場合には、一部の描画を行うときに、効率良く乱数の取得が行われ、計算量が節約されるので、描画情報の生成が高速に行われるものである。
【００８３】
なお、この図８および図９に示す処理ルーチンによる方法は、上述のような２次元格子の場合に限らず、３次元以上の多次元格子に対しても拡張することができる。
【００８４】
また、図８および図９の例では、方向Ｖで得られた乱数に、ある変換を施した値を方向Ｕの乱数系列の初期値として用いたが、異なる独立の系列の乱数を発生する複数個の疑似乱数発生器を設け、方向Ｖと方向Ｕとで使用する乱数を異なる疑似乱数発生器の出力とすることにより、方向Ｖと方向Ｕとで、より相関のない値が得られる効果がある。この方法も、３次元以上の多次元格子に対しても拡張することができる。
【００８５】
このように、コンピュータグラフィックス用の画像生成装置に複数個の疑似乱数発生器を設けることにより、多種多様な疑似乱数系列を発生させることが可能になり、描画表現方法や処理効率が向上する。
【００８６】
［疑似精細描画アルゴリズム３］
以上の例は、物体生成領域をｎ次元の格子状の点を代表点として、画像生成を行うアルゴリズムの場合の例である。以下に説明するアルゴリズム３の例は、例えば、図１２に示すように、四角形ＡＢＣＤ平面を再帰的に分割して変形をかけるような表現方法の場合の例である。
【００８７】
再帰的構造は、図１３に示すような木構造により表現できる。すなわち、源（ルート）から順次低いレベルに移行する。各レベルは複数のノードを備えてなる。例えば、図１２の例であれば、四角形ＡＢＣＤがルートである。そして、四角形ＡＢＣＤが４分割されたものがレベル１であり、レベル１の分割後の四角形がさらに４分割されたものがレベル２である。以下、同様にして、図１２の例では、各ノードにおいて４分割が行われ、それぞれ新しく５頂点を生成して、４つの小領域を発生する。
【００８８】
このアルゴリズム３においては、それぞれのノードにおいて、再現性がある５個の乱数が得られれば、乱数で変形した小領域を再帰的に生成することができる。以下に説明するアルゴリズム３は、これを実現するための、木構造における再現性のある乱数を発生させるアルゴリズムである。
【００８９】
ここで、レベルｊ（ｊ＝１，２，…）において左からｉ（ｉ＝１，２，…）番目のノードにおける乱数値をＳｊ，ｉ  とする。また、疑似乱数発生部１４２は、乱数のシードを格納するために、ファーストインラストアウト構造を持つスタックＴを有するものとする。
【００９０】
このときの疑似乱数発生部１４２の処理手順は、図１４に示すようなものとなる。ある処理Ｓ４１のときに、初期値が与えられると、その与えられた初期値をもとに、処理Ｓ４２において疑似乱数発生器４０を初期化する。そして、処理Ｓ４３において、前記ｊ＝１、ｉ＝１として、図１５に示す手順からなる関数Ｒａｎｄａｍ  Ｔｒｅｅを呼ぶ。そして、処理Ｓ４４で、処理を実行する。
【００９１】
次に、図１５の関数Ｒａｎｄａｍ  Ｔｒｅｅの処理ルーチンについて以下に説明する。
【００９２】
この処理ルーチンの最初のステップＳ５１は、レベルｊで左からｉ番目のノードの状態で、この関数が呼ばれたときには、ｊ＝１、ｉ＝１である。このステップＳ５１では、疑似乱数発生器４０に格納されているシードＳｊ，ｉ  を現ノードにおける生成乱数とする。なお、必要に応じて、このシードＳｊ，ｉ  を用いて現ノードにおける乱数を使用した計算を行う。
【００９３】
次のステップＳ５２においては、レベルｊ−１  の親ノードに戻るか否か判断し、戻るのであれば、この関数Ｒａｎｄａｍ  Ｔｒｅｅをリターン（終了）して、親ノードの状態に戻る（ステップＳ５３）。親ノードに戻らないのであれば、ステップＳ５４に進み、同レベルの右隣のノードへ移動するか否か判断する。すなわち、この例では、同レベルでは必ず右隣方向にノードを移動するという規則にしてあるので、順次に右隣に移動する。そして、右隣に移動するのであれば、ステップＳ５５に進んで、疑似乱数発生器４０から次の乱数Ｓｊ，ｉ＋１  を得た後、ステップＳ５１に戻る。
【００９４】
ステップＳ５４で同レベルの右隣に移動するのではないと判断されたときには、子ノードへの移動としてステップＳ５６に進み、現ノードの乱数値、すなわち、シードＳｊ，ｉ  をスタックＴに格納する。そして、乱数系列を変えるために、このシードに何等かの変換、例えば２進数でのビット反転、を施し、その結果得られる値を新しいシードとして、再度、疑似乱数発生器４０を初期化する。次にステップＳ５７で、次のレベルの一番左端の子ノードへ移動するため、前記ｊをインクリメントし、また、前記ｉに１を代入して、自分自身である関数Ｒａｎｄａｍ  Ｔｒｅｅを再帰的に呼ぶ。
【００９５】
ステップＳ５７の処理が終了したら、ステップＳ５８に進み、スタックＴから、格納されていた親ノードの乱数シードを取り出して、疑似乱数発生器４０をこれで初期化した後、ステップＳ５１に戻る。
【００９６】
以上のアルゴリズム３により得られた再現性のある乱数で、物体表面の情報を再帰的に分割して変形するような加工することが可能である。また、特定のノードの乱数値を得る場合でも全探索の必要がなく、効率良く、ノードにおける物体表面の情報を加工することができる。
【００９７】
なお、前述したアルゴリズム１およびアルゴリズム２のｎ次元格子での乱数発生手法を、上述の再帰的構造を持つアルゴリズムの一部として適用することが可能である。すなわち、ｎレベルの木構造を想定し、各レベルにおけるノード数を各次元軸での格子数として扱うことができる。すなわち、この発明による乱数発生手法は、格子構造や木構造を組み合わせた描画表現方法に対しても、そのまま応用可能である。
【００９８】
［疑似乱数発生部１４２の構成例］
［構成例１］
前述したアルゴリズム２における描画すべき領域の乱数を求める場合や、アルゴリズム３における各レベルの左端以外のノードから乱数が必要な場合には、疑似乱数発生部１４２の機能として、指定された数だけ後の乱数値が得られる機能があれば、非常に効率の良い処理が可能である。
【００９９】
図１６は、この要求に応じる疑似乱数発生部１４２の構成例である。すなわち、この例においては、疑似乱数発生器４０に対してカウンタ５０を設ける。このカウンタ５０は、保持するカウント値が０より大きいときには、各カウント値で１回、疑似乱数発生器４０に対して乱数発生要求信号を送る。そして、乱数発生要求を送ったら、次のクロックでカウント値を一つ減らす。つまり、ダウンカウントする。そして、カウント値が０になると、カウンタ５０は、カウントと乱数発生要求信号の発生を停止する。
【０１００】
カウンタ５０には、カウント設定値がプリセットされ、このカウント設定値からダウンカウントを行う。したがって、乱数発生要求信号は、カウント設定値だけ発生する。
【０１０１】
一方、疑似乱数発生器４０は、疑似精細描画情報生成部１４１からの初期値（シード）により初期化され、乱数発生要求信号が到来するごとに、生成した乱数値をシードとして、次の乱数シードを生成し、保持する乱数シードをその新たに生成したものに変更する。また、この例の疑似乱数発生器４０は、疑似精細描画情報生成部１４１から乱数要求信号が到来しても、カウンタ５０のカウント値が０より大きいときには、そのときの乱数値を疑似精細描画情報生成部１４１に渡さず、カウント値が０になるまで待ち、カウント値が０になったときの乱数シードを疑似精細描画情報生成部１４１に渡す。
【０１０２】
したがって、例えば、一部領域の描画を行う場合、必要な描画の領域までの方向Ｖおよび方向Ｕの乱数の個数が既知であれば、カウンタ５０のプリセットカウント設定値を、その個数とすることにより、必要な乱数値を高速に求めることができる。すなわち、図１６の構成の疑似乱数発生部１４２により、予め定めた任意個数先の乱数値を高速に求めることができるものである。
【０１０３】
［構成例２］
前述したアルゴリズム３においては、疑似乱数発生部１４２は、乱数シードを格納するスタックを有するものであった。図１７は、このスタックを内蔵した疑似乱数発生部１４２の構成例である。この例では、シード格納用スタック６１を設けるとともに、スタック操作を可能にするために、スタックポインタ６２が設けられる。
【０１０４】
この例においては、プッシュ要求信号と、ポップ要求信号とが、スタックポインタ６２に供給されるとともに、疑似乱数発生器４０にも供給される構成とされている。
【０１０５】
そして、図１７の疑似乱数発生部１４２に、プッシュ要求信号が入力されると、スタックポインタ６２がディクリメントされ、疑似乱数発生器４０の現在のシードが、スタック６１のスタックポインタが示す格納場所に格納される。
【０１０６】
また、ポップ要求信号が入力されると、スタック６１の、スタックポインタ６２が示す格納場所に格納されている乱数シードが疑似乱数発生器４０に戻されて、疑似乱数発生器４０が初期化される。そして、スタックポインタ６２がインクリメントされる。
【０１０７】
したがって、図１７の構成の疑似乱数発生部１４２により、アルゴリズム３での、再帰的構造を持つ再現可能な乱数の発生を効率良く行うことができる。
【０１０８】
［構成例３］
前述したアルゴリズム３においては、乱数シードをスタックに格納した直後に、異なるパターンの他の疑似乱数を発生させるために、何等かの変換を施すようにしている。図１８の例の疑似乱数発生部１４２は、この変換を自動的に行うシード変換手段６３を備えるものである。
【０１０９】
すなわち、図１８の例のシード変換手段６３は、これにプッシュ要求信号が供給されると、疑似乱数発生器４０から現在の乱数シードを読み出し、読み出した乱数シードに、前述したように、例えば２進数のビット反転の変更を加える。そして、その変更後の乱数シードを、疑似乱数発生器４０の格納部に、現在の乱数シードとして書き込むようにする。したがって、疑似精細描画情報生成部１４１からの乱数要求信号により、何等かの変更を施した後の乱数が直接的に得られる。その他は、図１７の例と同様である。
【０１１０】
この図１８の例によれば、再帰的構造アルゴリズムの処理を、より高速に行うことができる。なお、シード変換手段６３でのシード変換としては、ビット反転ではなく、ビットの並び変え、ある特定のビットパターンとの排他的論理和演算など、種々のものを用いることができる。
【０１１１】
［構成例４］
図１９は、複数通りのシード変換方式を有し、スイッチ回路により、それを選択することができるようにした場合の疑似乱数発生部１４２の例である。
【０１１２】
すなわち、シード変換手段６３に加えて、変換方式を異にするシード変換手段６４を設ける。このシード変換手段６４も、これにプッシュ要求信号が供給されると、疑似乱数発生器４０から現在の乱数シードを読み出して、これに、例えばビットの並び変えの変更を加え、その変更後の乱数シードを、疑似乱数発生器４０の格納部に、現在の乱数シードとして書き込むようにするものである。
【０１１３】
そして、この例の場合には、シード変換手段６３とシード変換手段６４との変更後の出力をスイッチ回路６５で選択するようにするものである。スイッチ回路６５の切り換えは、疑似精細描画情報生成部１４１が行う。
【０１１４】
前述した図１３の木構造で、各ノードから子ノードへ移行するとき、適切なシード変換方式は、使用する物体表現のアルゴリズムにより異なることがあるが、この図１９の例によれば、異なるアルゴリズムに対応して適切なシード変換を選択することが可能である。したがって、より質の良い物体表現が可能になる。
【０１１５】
［構成例５］
図２０の例は、シード変換手段を用いずに、異なる系列の乱数を発生することができる場合の例である。すなわち、この例の疑似乱数発生器４００は、乱数系列Ａと乱数系列Ｂの２通りが、その選択端子ＳＥＬへの選択信号により選択できるものである。この例では、この選択端子ＳＥＬにプッシュ要求信号を供給する。プッシュ要求信号は、要求時は、例えば「１」で、その他のときには「０」である。このため、疑似乱数発生器４００は、プッシュ要求時には、系列Ｂの乱数を発生し、その他のときには、系列Ａの乱数を発生する。
【０１１６】
したがって、疑似乱数発生器４００の乱数シードをスタック６１に格納する際には、異なる乱数系列を使用して現在の乱数シードを変更することになる。
【０１１７】
この例の場合、前述のアルゴリズム３において、子ノードへの移行に関しては、新たなシードが変換されて得られ、また、親ノードと左端の子ノードとの乱数値の関係も、乱数系列Ｂによる相関関係となるので、全体的に品質の良い乱数を得ることができ、特別に、複数のシード変換機能を持たなくても、多様なアルゴリズムに対して適用することが可能である。
【０１１８】
以上のように、この実施の形態の画像生成装置によれば、初期化可能な再現性のある疑似乱数発生手段を内蔵することにより、少ないデータから再現性のある多種多様な形状が得られる。
【０１１９】
また、ｎ次元格子に対して再現性のある疑似乱数を発生させることにより、必要とする領域の乱数系列を少ない計算量で求めることができる。
【０１２０】
また、複数の疑似乱数発生器を用いて、ｎ次元格子に対して品質の高い再現性のある疑似乱数を発生させることができ、品質の高い乱数系列を必要とする領域において、少ない計算量で乱数を発生させることができる。
【０１２１】
また、再帰的構造に対して再現性のある疑似乱数を発生させることにより、必要とする領域の乱数系列を少ない計算量で求めることができる。
【０１２２】
カウント機能を内蔵した疑似乱数発生器を用いることにより、疑似乱数系列において任意個数先の乱数値を高速に求めることができ、再現性のある疑似乱数を領域の一部のみに対して求める計算を高速に行うことができる。
【０１２３】
また、疑似乱数発生器に乱数シードを格納するスタック機能を付加することにより、再帰的構造を持つ再現可能な乱数発生を効率良く行うことができる。
【０１２４】
また、自動的に現在の乱数シードを変更する機能を付加することにより、再帰的構造を持つ再現可能な乱数発生を高速に行うことができる。
【０１２５】
また、乱数シードの変更の方式をいくつか用意することにより、使用するアルゴリズムに対して適切な変更を選択することが可能になり、より良い物体表現の質を得ることができる。
【０１２６】
また、疑似乱数発生器が少なくとも２つの異なる複数の独立の乱数系列を発生する機能を備える場合には、全体で品質の良い乱数を得ることができ、特別の複数のシード変換機能を持たなくても、多様なアルゴリズムに対応することができる。
【０１２７】
なお、以上の構成例２〜構成例５の疑似乱数発生器４０は、構成例１のカウント機能付きのものとすれば、再帰的アルゴリズムで任意個数先の乱数値を高速に得ることが可能である。
【０１２８】
なお、上述の例は、ゲーム機にこの発明を適用した場合について説明したが、この発明は、ゲーム機に限らず、種々のコンピュータグラフィックス用画像生成装置に適用可能である。
【０１２９】
【発明の効果】
以上説明したように、この発明によれば、初期化可能な再現性のある疑似乱数発生手段を内蔵する画像生成装置により、少ないデータから再現性のある多種多様な形状が得られる。このため、画像の描画表現方法や処理効率が向上する。
【図面の簡単な説明】
【図１】この発明による画像生成装置の一実施の形態の要部のブロック図である。
【図２】この発明による画像生成装置の一実施の形態による描画例を説明するための図である。
【図３】この発明による画像生成装置の一実施の形態が適用されるゲーム機の一例のブロック図である。
【図４】この発明による画像生成装置の一実施の形態が適用されるゲーム機の一例の外観を示す図である。
【図５】この発明による画像生成装置の一実施の形態に用いる疑似乱数発生器の構成例を示す図である。
【図６】この発明による画像生成装置の一実施の形態における描画のアルゴリズム１のフローチャートの一部である。
【図７】この発明による画像生成装置の一実施の形態における描画のアルゴリズム１のフローチャートの一部である。
【図８】この発明による画像生成装置の一実施の形態における描画のアルゴリズム２のフローチャートの一部である。
【図９】この発明による画像生成装置の一実施の形態における描画のアルゴリズム２のフローチャートの一部である。
【図１０】アルゴリズム２の利点を説明するための図である。
【図１１】アルゴリズム２の利点を説明するための図である。
【図１２】この発明による画像生成装置の一実施の形態における描画のアルゴリズム３を説明するための図である。
【図１３】再帰的構造を木構造で表した図である。
【図１４】この発明による画像生成装置の一実施の形態における描画のアルゴリズム３のフローチャートの一部である。
【図１５】この発明による画像生成装置の一実施の形態における描画のアルゴリズム３のフローチャートの一部である。
【図１６】この発明による画像生成装置の一実施の形態における疑似乱数発生部の構成例のブロック図である。
【図１７】この発明による画像生成装置の一実施の形態における疑似乱数発生部の構成例のブロック図である。
【図１８】この発明による画像生成装置の一実施の形態における疑似乱数発生部の構成例のブロック図である。
【図１９】この発明による画像生成装置の一実施の形態における疑似乱数発生部の構成例のブロック図である。
【図２０】この発明による画像生成装置の一実施の形態における疑似乱数発生部の構成例のブロック図である。
【符号の説明】
６…ＣＤ−ＲＯＭ、１４…前処理部、１５…描画処理部、４０…疑似乱数発生器、５０…カウンタ、６１…スタック、６２…スタックポインタ、６３…シード変換手段、１４１…疑似精細描画情報生成部、１４２…疑似乱数発生部、１４３…変換演算部
【図１】
0003569089.tif 000002
【図２】
0003569089.tif 000003
【図３】
0003569089.tif 000004
【図４】
0003569089.tif 000005
【図５】
0003569089.tif 000006
【図６】
0003569089.tif 000007
【図７】
0003569089.tif 000008
【図８】
0003569089.tif 000009
【図９】
0003569089.tif 000010
【図１０】
0003569089.tif 000011
【図１１】
0003569089.tif 000012
【図１２】
0003569089.tif 000013
【図１３】
0003569089.tif 000014
【図１４】
0003569089.tif 000015
【図１５】
0003569089.tif 000016
【図１６】
0003569089.tif 000017
【図１７】
0003569089.tif 000018
【図１８】
0003569089.tif 000019
【図１９】
0003569089.tif 000020
【図２０】
0003569089.tif 000021