(57)【要約】【課題】従来の画像生成装置では、多角形に貼る２次元画像の解像度が多角形内の画素によって異なる場合、処理する画素が変わる度に必要な解像度の２次元画像をＤＲＡＭからＳＲＡＭへ転送しなければならず、処理速度が低下する【解決手段】ミップマップ生成部１５は、入力された２次元画像を縦方向及び横方向それぞれ複数の画素からなるブロックに分割し、各ブロック毎に原画像と同一の解像度からその解像度よりも小なる互いに異なる複数の解像度までの複数の解像度レベルのミップマップを生成し、ＳＤＲＡＭ１４に格納する。ＳＤＲＡＭ１４には、ミップマップブロック１個に複数の解像度レベルがまとめて配置される。多角形演算部２０は、多角形に貼り付けるミップマップの解像度レベルが多角形内の画素によって異なる場合であっても、ＳＤＲＡＭ１４から連続して読み出すことができる。【選択図】　　　　　　図１
2004078296.tif 000002
【特許請求の範囲】
【請求項１】
３次元空間中に配置した物体を基本形状である多角形の集まりとして定義し、格子状に並んだ複数の画素で構成される画面上の各画素位置に対応した、視点からの距離を表す奥行き値及び輝度値を格納するバッファを用いて、奥行き値に基づいて陰面消去し、かつ、前記多角形の表面に貼り付ける画像を生成する画像生成装置において、
入力された２次元画像を縦方向及び横方向それぞれ複数の画素からなるブロックに分割し、各ブロックに互いに異なるブロック番号を付し、かつ、各ブロック毎に原画像と同一の解像度から該原画像の解像度よりも小なる互いに異なる複数の解像度までの複数の解像度レベルのミップマップを生成するミップマップ生成手段と、
前記ミップマップ生成手段から出力される前記複数の解像度レベルのミップマップを前記ブロック毎に格納し、読み出されるメモリ手段と、
前記多角形の画面上の位置や視点からの距離を示す奥行き値、輝度及び貼り付ける２次元画像の画素位置の対応情報を少なくとも含む多角形データを入力する入力手段と、
前記多角形データに基づき、その多角形を構成する画素の画面上の画素位置と奥行き値から貼り付ける前記ミップマップのブロック番号、ブロック内位置、解像度レベルを算出し、算出したミップマップを前記メモリ手段から読み出す多角形演算手段と、
前記多角形演算手段により演算されて前記多角形データの各画素毎に演算されて必要な画素位置に、算出された前記ミップマップが前記２次元画像として貼り付けられた画面の各画素の輝度を出力する画像出力手段と
を有することを特徴とする画像生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像生成装置に係り、特に３次元空間中に配置した物体を基本形状である多角形の集まりとして定義し、格子状に並んだ複数の画素で構成される画面上の各画素位置に対応した、視点からの距離を表す奥行き値及び輝度値を格納するバッファを用いて、奥行き値に基づいて陰面消去した画像を生成する画像生成装置に関する。
【０００２】
【従来の技術】
コンピュータグラフィックス（ＣＧ）における一般的な画像生成方法は、３次元空間中に配置した物体を基本形状である多角形の集まりとして定義し、格子状に並んだ複数の画素で構成される画面上の各画素位置に対応した、視点からの距離を表す奥行き値及び輝度値を格納するバッファを用いて、奥行き値に基づいて陰面消去した画像を生成する。生成されたこの画像は、３次元空間に定めた視点位置、光源位置に基づく、視点から見た画像である。また、物体をより実際に近く表現するため、テクスチャマッピングやミップマッピングと呼ばれる手法が採用されている。
【０００３】
ここで、テクスチャマッピングとは、テクスチャソース画像として別に用意した２次元画像（絵柄）、すなわち、テクスチャパターンを、物体を構成する多角形の表面に張り付ける技術である。また、ミップマッピングとは、物体の視点からの距離が変化した場合に、多角形に張り付ける絵柄が不自然にならないように、画素データを補間するようにしたテクスチャマッピングの手法の一つである。
【０００４】
【発明が解決しようとする課題】
ところで、物体を構成する各画素で貼るミップマップの解像度（レベル）が物体毎に一定であれば都合が良いが、物体が奥行き方向に長かったりすると、解像度が高いままだと貼った絵柄に折り返し歪が発生し、解像度が低いままだと貼った絵柄の解像度低下を招く。
【０００５】
物体を構成する各画素毎の奥行き値に基づいて貼るミップマップの解像度（レベル）を変化させると、折り返し歪や解像度低下は防げるが、物体を構成する各画素毎の奥行き値に基づいて求まるレベルは整数ではないので、レベル１．５と求まった場合、レベル１とレベル２のミップマップをメモリからリードし、双方の画素の色を混合して物体に貼る色を求める。
【０００６】
ここで、従来はミップマッピングの場合、多角形に貼る２次元画像は、データ量が大きいため、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）といった大容量メモリに解像度毎（レベル毎）に格納されていることが多い。従って、上記のレベル１．５と求まった場合、ＤＲＡＭに格納されたレベル１とレベル２のミップマップをリードする場合、従来はまずＤＲＡＭのレベル１が格納されているアドレスをリード後、レベル２が格納されているアドレスをリードすることとなる。
【０００７】
また、ある一つのレベルをリードする場合でも、多角形の頂点と２次元画像の画素位置の対応関係によっている連続アドレスのアクセスになるとは限らないので、２次元画像の必要な解像度の必要な部分だけを、ＤＲＡＭより容量は小さいが不連続アドレスのデータ転送が高速に行えるスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）に転送し、ＳＲＡＭに格納された画像を多角形に貼るといったことが行われている。
【０００８】
しかしながら、従来の画像生成装置では、多角形に貼る２次元画像の解像度が多角形内の画素によって異なる場合、処理する画素が変わる度に必要な解像度の２次元画像をＤＲＡＭからＳＲＡＭへ転送しなければならず、処理速度が低下するという問題がある。
【０００９】
本発明は以上の点に鑑みなされたもので、多角形に貼る２次元画像の解像度が多角形内の画素によって異なる場合でも、処理速度が低下しない画像生成装置を提供することを目的とする。
【００１０】
【課題を解決するための手段】
本発明は上記の目的を達成するため、３次元空間中に配置した物体を基本形状である多角形の集まりとして定義し、格子状に並んだ複数の画素で構成される画面上の各画素位置に対応した、視点からの距離を表す奥行き値及び輝度値を格納するバッファを用いて、奥行き値に基づいて陰面消去し、かつ、多角形の表面に貼り付ける画像を生成する画像生成装置において、入力された２次元画像を縦方向及び横方向それぞれ複数の画素からなるブロックに分割し、各ブロックに互いに異なるブロック番号を付し、かつ、各ブロック毎に原画像と同一の解像度から原画像の解像度よりも小なる互いに異なる複数の解像度までの複数の解像度レベルのミップマップを生成するミップマップ生成手段と、ミップマップ生成手段から出力される複数の解像度レベルのミップマップをブロック毎に格納し、読み出されるメモリ手段と、多角形の画面上の位置や視点からの距離を示す奥行き値、輝度及び貼り付ける２次元画像の画素位置の対応情報を少なくとも含む多角形データを入力する入力手段と、多角形データに基づき、その多角形を構成する画素の画面上の画素位置と奥行き値から貼り付けるミップマップのブロック番号、ブロック内位置、解像度レベルを算出し、算出したミップマップをメモリ手段から読み出す多角形演算手段と、多角形演算手段により演算されて多角形データの各画素毎に演算されて必要な画素位置に、算出されたミップマップが２次元画像として貼り付けられた画面の各画素の輝度を出力する画像出力手段とを有する構成としたものである。
【００１１】
この発明では、多角形に２次元画像を貼り付けるとき、多角形の頂点と２次元画像の画素位置の対応を予め指示しておくと共に、多角形に貼り付ける２次元画像としてのミップマップを各ブロック毎に複数の解像度レベルでメモリ手段に格納しておくようにしたため、多角形を構成する画素の画面上の画素位置と視点からの距離を表す奥行き値とから貼り付けるミップマップのブロック番号とブロック内位置と解像度レベルを算出し、多角形に貼り付けるその算出したミップマップの解像度レベルが多角形内の画素によって異なる場合であっても、メモリ手段から連続して読み出すことができる。
【００１２】
また、上記の目的を達成するため、本発明はミップマップ生成手段を、生成したミップマップの最大レベルを多角形演算手段に出力し、多角形演算手段が生成していないメモリ手段におけるミップマップ格納場所を読み出さないように制御することを特徴とする。この発明では、多角形に貼り付けるミップマップの原画が高解像度でない場合、必要以上に低い解像度レベルのミップマップを生成しないようにできる。
【００１３】
【発明の実施の形態】
次に、本発明の実施の形態について図面と共に説明する。図１は本発明になる画像生成装置の一実施の形態のブロック図を示す。同図において、多角形に張り付ける２次元画像の画像データは、画像入力部１１を通してＳＲＡＭ１２に格納される。ＳＲＡＭ１２の容量一杯に画像データが蓄積されると、画像入力部１１がＤＲＡＭコントローラ１３に書き込みアドレス、書き込みリクエストを出力するので、ＤＲＡＭコントローラ１３はそれに従って、ＳＲＡＭ１２から画像データを読み出してシンクロナスＤＲＡＭ（ＳＤＲＡＭ）１４に転送する。
【００１４】
ミップマップ生成部１５は、リードアドレス及びリードリクエストをＤＲＡＭコントローラ１３へ出力すると、ＳＤＲＡＭ１４に格納された画素データが読み出されてＳＲＡＭ１６に格納される。ミップマップ生成部１５は、ＳＲＡＭ１６に格納されている画素データからミップマップを生成し、ＳＲＡＭ１７に格納する。ＳＲＡＭ１７へのデータ格納後、ミップマップ生成部１５は書き込みアドレス、書き込みリクエストをＤＲＡＭコントローラ１３へ出力するので、ＤＲＡＭコントローラ１３はそれに従って、ＳＲＡＭ１７からミップマップのデータをＳＤＲＡＭ１４に供給する。
【００１５】
多角形に張り付ける２次元画像は、縦横複数の画素からなるブロックに分割し、ブロック毎にミップマップを作成する。図２は横１９２０画素、縦１０８０画素からなる画像を、横８画素、縦８画素からなるブロックに分割し、横２４０個、縦１３５個からなるブロックを、左端最上部のブロックをブロック番号０、ブロック番号０のブロックの右隣のブロックをブロック番号１、以下、右側に位置するブロック順に昇順でブロック番号を付して、１行目右端のブロックのブロック番号は２３９とし、続いて左端２行目のブロックはブロック番号２４０とし、以下同様にして、右側に位置するブロック順及び下側に位置するブロック順に昇順でブロック番号を付す。これにより、最終行の右端の最後のブロックのブロック番号は３２３９９となる。
【００１６】
図３に示すように、横８画素、縦８画素の計６４画素からなるミップマップの原画像をレベルＬ０としたとき、原画像の１／２の解像度の横４画素、縦４画素の計１６画素からなる画像はレベルＬ１、原画像の１／４の解像度の横２画素、縦２画素の計４画素からなる画像はレベルＬ２、原画像の１／８の解像度の１画素の画像はレベルＬ３となる。また、あるレベル以上の２次元画像データ（ミップマップ）は、複数ブロックで重複して持つようにされている。
【００１７】
図４はミップマップの画像を格納するＳＤＲＡＭ１４の格納例を示す。１つのブロックのミップマップは、ＳＤＲＡＭ１４の連続するアドレスＡＤ〜ＡＤ＋１１に格納される。ここで、上記のように、レベルＬ０からレベルＬ３までのミップマップは、ブロックの画像で構成されるが、レベルＬ４のミップマップは、横１６画素、縦１６画素（１６×１６画素）の画像から生成される。例えば、ブロック番号０、１、２４０、２４１からなる４ブロックのレベルＬ４のミップマップは、ブロック番号０、１、２４０、２４１に対応する１６画素×１６画素の画像から生成され、ブロック番号０、１、２４０、２４１のレベルＬ４のミップマップの格納場所に重複して格納される。また、レベルＬ５のミップマップは、３２画素×３２画素、レベルＬ６のミップマップは、６４画素×６４画素により生成される。また、レベルＬ１４のミップマップは、１画素（Ｌ１４＿０）から構成されているので、３２ビットである。
【００１８】
図４の場合、Ｌ０＿０〜Ｌ０＿６３がレベルＬ０のミップマップの格納場所、Ｌ１＿０〜Ｌ１＿１５がレベルＬ１のミップマップの格納場所、Ｌ２＿０〜Ｌ２＿３がレベルＬ２のミップマップの格納場所、Ｌ３＿０がレベルＬ３のミップマップの格納場所、以下、レベルＬ４〜Ｌ１３のミップマップの格納場所が続き、最後のＬ１４＿０がレベルＬ１４のミップマップの格納場所を示す。
【００１９】
ここで、原画を８画素×８画素のブロックに分割した場合、原画１ブロックに対するミップマップ１ブロックは、Ｌ０＿０〜Ｌ１４＿０から構成される。１画素は原画・ミップマップ共に赤（Ｒ）８ビット、緑（Ｇ）８ビット、青（Ｂ）８ビット、α（Ａ）８ビットの計３２ビットから構成されているので、原画１ブロックは２０４８ビット（＝３２ビット×８×８）であり、ミップマップ１ブロックは３０７２ビット（＝３２ビット×８×１２）である。図４に示すＳＤＲＡＭ１４のＡＤ〜ＡＤ＋１１のアドレスには、ミップマップ１ブロックが格納される。
【００２０】
なお、上記の赤（Ｒ）、緑（Ｇ）及び青（Ｂ）は、絵柄として貼る２次元画像の三原色信号情報であり、また上記のα値は、２次元画像の不透明度を示す。このα値は８ビットであるので、０〜２５５の値をとり、α＝０のときは透明、α＝２５５のときは不透明を示す。例えば、透明のアクリルでできた物体にフィルムを貼る場合、セロファン等透明なフィルムを貼る場合はα＝０とされ、紙などの不透明なフィルムを貼る場合はα＝２５５とされ、半透明なフィルムを貼る場合はα＝１２８とされる。
【００２１】
図４の場合、レベルＬ１４までの格納場所が用意されているが、多角形に貼り付ける画像が高解像度で無い場合、高いレベルのミップマップは生成しない。よって、図１に示すように、ミップマップ生成部１５は生成したミップマップの最大レベルを多角形演算部２０に出力し、ＳＤＲＡＭ１４における多角形演算部２０が生成していないミップマップ格納場所をリードしないようにする。
【００２２】
図１の多角形入力部１８は、多角形頂点の画面上の位置や視点からの距離を表す奥行き値、輝度、α値、多角形頂点と貼り付ける２次元画像の画素位置の対応といった多角形データを入力として受け、それをＳＲＡＭ１９に格納する。ＳＲＡＭ１９に多角形データが溜まると、多角形入力部１８はＤＲＡＭコントローラ１３にＳＲＡＭ１９の書き込みアドレス、書き込みリクエストを出力するので、ＤＲＡＭコントローラ１３はそれに従い、ＳＲＡＭ１９の多角形データを読み出してＳＤＲＡＭ１４へ転送する。
【００２３】
多角形演算部２０がリードアドレス、リードリクエストをＤＲＡＭコントローラへ出力すると、ＤＲＡＭコントローラ１３はそれに従い、ＳＤＲＡＭ１４から多角形データを読み出して、ＳＲＡＭ２１へ転送する。多角形演算部２０は、ＳＲＡＭ２１に格納された多角形データから、多角形に含まれる各画素について、画面上の位置、視点からの距離を表す奥行き値、輝度、α値、貼り付けるミップマップのブロック番号、ブロック内位置、レベルを算出する。このとき算出したレベルは、ミップマップ生成部１５から入力されたミップマップ最大レベルでクリップする（ミップマップ最大レベルを超えないようにする）。
【００２４】
多角形演算部２０は、貼り付けるミップマップがＳＲＡＭ２２に無い場合、貼り付けるミップマップのブロック番号からＳＤＲＡＭ１４のリードアドレスを計算し、ＤＲＡＭコントローラ１３にそのリードアドレスをリードリクエストと共に出力する。ＤＲＡＭコントローラ１３はそれに従い、ＳＤＲＡＭ１４からミップマップを読み出して、ＳＲＡＭ２２へ転送する。そして、ブロック内位置、レベルからＳＲＡＭ２２のアドレスを計算し、必要なミップマップを読み出す。
【００２５】
これと並行して、多角形演算部２０は、画素の画面上の位置からＳＤＲＡＭ１４のリードアドレスを計算する。計算したリードアドレスのデータ（奥行き値、輝度、α値）がＳＲＡＭ２３に無い場合、現在、ＳＲＡＭ２３に格納されているデータをＳＤＲＡＭ１４に書き戻した後、リードアドレスで示されたデータをＳＤＲＡＭ１４からＳＲＡＭ２３へ転送する。なお、ＳＤＲＡＭ１４に格納された奥行き値、輝度、α値は、描画開始前に初期化されている。
【００２６】
続いて、多角形演算部は、画素の画面上の位置からＳＲＡＭ２３のアドレスを計算し、画素位置に対応する奥行き値、輝度、α値をＳＲＡＭ２３から読み出し、それらと多角形データから算出した奥行き値、輝度、α値と、ミップマップの輝度、α値とから画素の輝度を計算し、多角形データから算出した奥行き値がＳＲＡＭ２３から読み出した奥行き値より小さい場合、多角形データから算出した奥行き値と先に計算した輝度をＳＲＡＭ２３に書き込む。
【００２７】
画素出力部２５は、多角形演算部２０がすべての多角形データ処理を終了したら、ＳＤＲＡＭ１４に格納されている画面の各画素の輝度を、ＤＲＡＭコントローラ１３を使ってＳＲＡＭ２４へ転送し、そのＳＲＡＭ２４から読み出して出力する。
【００２８】
このようにして、本実施の形態によれば、多角形内に貼り付ける２次元画像の解像度が多角形内の画素によって異なる場合でも、ミップマップブロック１個にレベルＬ０〜Ｌ１４をまとめてＳＤＲＡＭ１４内に配置しているので、異なったレベルのミップマップを連続転送でき、ＳＤＲＡＭ１４の転送能力をフルに活用して、２次元画像を貼り付けることができる。
【００２９】
【発明の効果】
以上説明したように、本発明によれば、多角形に貼り付ける２次元画像としてのミップマップを各ブロック毎に複数の解像度レベルでメモリ手段に格納しておくことにより、多角形を構成する画素の画面上の画素位置と視点からの距離を表す奥行き値とから貼り付けるミップマップのブロック番号とブロック内位置と解像度レベルを算出し、多角形に貼り付けるその算出したミップマップの解像度レベルが多角形内の画素によって異なる場合であっても、メモリ手段から連続して読み出すことができるため、メモリ手段の転送能力をフルに活用することができ、処理速度の低下を防止できる。
【図面の簡単な説明】
【図１】本発明の一実施の形態のブロック図である。
【図２】ブロック分割の説明図である。
【図３】ミップマップの説明図である。
【図４】ミップマップを図１中のＳＤＲＡＭに格納するときの説明図である。
【符号の説明】
１１　画像入力部
１２、１６、１７、１９、２１、２２、２３、２４　スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）
１３　ＤＲＡＭコントローラ
１４　シンクロナス・ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）
１５　ミップマップ生成部
１８　多角形入力部
２０　多角形演算部
２５　画像出力部
【図１】
2004078296.tif 000003
【図２】
2004078296.tif 000004
【図３】
2004078296.tif 000005
【図４】
2004078296.tif 000006