(57)【特許請求の範囲】
【請求項１】
ミップマップを格納したテクスチャ記憶部から最適なサイズのテクスチャを取得する描画処理装置において、
画素（Ｘ，Ｙ）に対するテクスチャ座標（Ｕ，Ｖ）の変化量（ｄｕ／ｄｘ）と、変化量（ｄｖ／ｄｙ）とを比較し、大きい方の値を選択する第１の選択部と、
前記画素（Ｘ，Ｙ）に対するテクスチャ座標（Ｕ，Ｖ）の変化量（ｄｕ／ｄｙ）と、変化量（ｄｖ／ｄｘ）とを比較し、大きい方の値を選択する第２の選択部と、
前記第１の選択部によって選択された値と前記第２の選択部によって選択された値とをそれぞれ直角三角形の直角に交わる２辺とみなし、前記直角三角形の斜辺の値を実質的に演算する演算部と、
を有することを特徴とする描画処理装置。
【請求項２】
前記演算部は、前記第１の選択部によって選択された値と前記第２の選択部によって選択された値との大小関係を決定する大小比較部を有することを特徴とする請求項１記載の描画処理装置。
【請求項３】
前記演算部は、前記大小比較部によって決定された大きい方の値を固定値とみなし、小さい方の値を変数値とみなして一次式で構成される近似式を演算して前記斜辺の値を演算することを特徴とする請求項２記載の描画処理装置。
【請求項４】
前記演算部は、前記固定値に対する前記変数値の割合に応じて前記近似式の係数を別個に選択することを特徴とする請求項３記載の描画処理装置。
【請求項５】
前記係数を記憶する記憶部をさらに有することを特徴とする請求項４記載の描画処理装置。
【請求項６】
小数部（ｌｏｇ2（１＋ａ））と整数部（ｂ）との和で表される前記テクスチャの縮小率の演算式を求める際に、ａに対応する前記小数部（ｌｏｇ2（１＋ａ））を予め記憶しておく記憶部と、
前記演算部により演算された前記斜辺の値を（（１＋ａ）×２b）に当てはめて前記ａと前記整数部（ｂ）とを判定する判定部と、
前記判定部によって判定された前記整数部（ｂ）と、前記記憶部に記憶された前記小数部（ｌｏｇ2（１＋ａ））とを加算する加算部と、を備える対数演算部をさらに有することを特徴とする請求項１記載の描画処理装置。
【請求項７】
ミップマップを格納したテクスチャ記憶部から最適なサイズのテクスチャを取得するコンピュータが実行する描画処理方法において、
画素（Ｘ，Ｙ）に対するテクスチャ座標（Ｕ，Ｖ）の変化量（ｄｕ／ｄｘ）、変化量（ｄｖ／ｄｘ），変化量（ｄｕ／ｄｙ）、変化量（ｄｖ／ｄｙ）における、
｛（ｄｕ／ｄｘ）2＋（ｄｕ／ｄｙ）2｝1/2と｛（ｄｖ／ｄｘ）2＋（ｄｖ／ｄｙ）2｝1/2とのうちの大きい方の値を選択する第１のステップと、
｛（ｄｕ／ｄｘ）2＋（ｄｖ／ｄｘ）2｝1/2と｛（ｄｕ／ｄｙ）2＋（ｄｖ／ｄｙ）2｝1/2とのうちの大きい方の値を選択する第２のステップと、
前記第１のステップによって選択された値と前記第２のステップによって選択された値とのうち大きい方の値を、前記テクスチャの画素サイズと描画画像の画素サイズとの比率とする第３のステップと、
を実質的に含むことを特徴とする描画処理方法。
【請求項８】
ミップマップを格納したテクスチャ記憶部から最適なサイズのテクスチャを取得する描画処理プログラムにおいて、
コンピュータを、
画素（Ｘ，Ｙ）に対するテクスチャ座標（Ｕ，Ｖ）の変化量（ｄｕ／ｄｘ）と、変化量（ｄｖ／ｄｙ）とを比較し、大きい方の値を選択する第１の選択手段、
前記画素（Ｘ，Ｙ）に対するテクスチャ座標（Ｕ，Ｖ）の変化量（ｄｕ／ｄｙ）と、変化量（ｄｖ／ｄｘ）とを比較し、大きい方の値を選択する第２の選択手段、
前記第１の選択手段によって選択された値と前記第２の選択手段によって選択された値とをそれぞれ直角三角形の直角に交わる２辺とみなし、前記直角三角形の斜辺の値を実質的に演算する演算手段、
として機能させることを特徴とする描画処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は描画処理装置、描画処理方法および描画処理プログラムに関し、特に、ミップマップを格納したテクスチャ記憶部から最適なサイズのテクスチャを取得する描画処理装置、描画処理方法および描画処理プログラムに関する。
【背景技術】
【０００２】
コンピュータグラフィックの３次元描画において写実的な描画を行うために、絵や写真の２次元画像（テクスチャ）を３次元図形の表面に貼り付けることで、質感等の表現力を向上させる手法であるテクスチャマッピング方法が知られている（例えば、特許文献１〜３、非特許文献１参照）。
【０００３】
３次元描画では、描画図形が遠くにあることを表現するために小さく描画したり傾いていることを表現したりするために、図形を変形させて描画する場合がある（例えば、特許文献１参照）。この場合、描画図形と貼り付けるテクスチャのサイズとが一致しないためエイリアシング（aliasing）が発生する。エイリアシングを防ぐために、もとのテクスチャのサイズを縦、横ともに１／２に縮小したテクスチャを繰り返し作成したミップマップ（Mip（Multum In Parvo） Map）を予めテクスチャ記憶部に格納して、最適なサイズのテクスチャを取得するためのＬｏＤ（Level of Detail：縮小率）演算を行う（例えば、非特許文献１参照）。
【０００４】
このテクスチャのＬｏＤは、元の画像がテクスチャマッピングされるときにどの程度縮小しているかを示すものであり、元画像が１／１、１／２、１／４、・・・と縮小しているときＬｏＤとの関係は、次式（１）のようになる（例えば、特許文献１参照）。
【０００５】
１／１：ＬｏＤ＝０
１／２：ＬｏＤ＝１
１／４：ＬｏＤ＝２
１／８：ＬｏＤ＝３
：
１／ρ：ＬｏＤ＝ｌｏｇ2（ρ）・・・（１）
また、ρは、次式（２）で表される。
【０００６】
【数１】
0005050786.tif 000002
【０００７】
ここで、「ｍａｘ［］」は、「括弧（［］）内のカンマで区切られた数式のうちの大きいほうを選択する」という意味であり、括弧内の（ｄｕ／ｄｘ）、（ｄｖ／ｄｘ）、（ｄｕ／ｄｙ）、（ｄｖ／ｄｙ）は、それぞれＸＹ座標における画素（Ｘ，Ｙ）に対するテクスチャ座標（Ｕ，Ｖ）の変化量（変位量）を示しており、例えば変化量（ｄｕ／ｄｘ）は、画素（Ｘ，Ｙ）の画素のＸ軸方向の辺素ｄｘが、テクスチャ座標（Ｕ，Ｖ）では、Ｕ軸方向にｕだけ変化していることを示している。従って、ＸＹ座標でのｄｘの変化量は、上記式（２）の括弧内のカンマで区切られた左側の数式となる。ｄｙの変化量は、上記式（２）の括弧内のカンマで区切られた右側の数式となる。
【特許文献１】特開２０００−１５５８５０号公報
【特許文献２】特開２００１−１９５６０２号公報
【特許文献３】特表２００２−５０４２５１号公報
【非特許文献１】Mark Segal., Kurt Akeley., "The OpenGL Graphics System: A Specification". Version2.1- December1, 2006. P173, Scale Factor and Level of Detail. [retrieved on 2007/11/5] Retrieved from the Internet: <URL: http://www.opengl.org/registry/doc/glspec21.20061201.pdf>
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、式（２）では、括弧内の値がどちらかに切り替わる付近では正常なＬｏＤが得られずに、描画した画像に歪みが生じるという問題があった。
画像に歪みが生じる例を示す。
【０００９】
図９は、従来の描画方法による図形を示す図である。
図９では、トンネル画像９１の中心に視点がある図形を示している。トンネル画像９１の中心に視点があるので中心からトンネル画像９１の側面は等距離である。トンネル画像９１の奥側（画像の中心）になるほど遠近法にて小さくなるためＬｏＤが大きくなる。すなわち、トンネル画像９１を構成するテクスチャ９２の外側は、ＬｏＤ＝０のテクスチャであり、テクスチャ９２は、ＬｏＤ＝１のテクスチャであり、テクスチャ９３は、ＬｏＤ＝２のテクスチャであり、テクスチャ９４は、ＬｏＤ＝３のテクスチャであり、テクスチャ９５は、ＬｏＤ＝４のテクスチャである。
【００１０】
トンネルの側面は中心から等距離なのでＬｏＤで選択されたミップマップの色は同心円を描くはずだが、式（２）に示す「ｍａｘ［］」での値がどちらかに切り替わる付近（図９中、太線で囲んだ部分）では歪みが生じてしまう。
【００１１】
また、式（１）、（２）では、平方根の演算があるため、ハードウェアでの処理が膨大になるという問題があった。
本発明はこのような点に鑑みてなされたものであり、歪みの少ない画像を得ることができる描画処理装置、描画処理方法および描画処理プログラムを提供することを目的とする。
【００１２】
また、他の目的として演算を容易にすることができる描画処理装置、描画処理方法および描画処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明では上記問題を解決するために、下記の描画処理装置が提供される。
本発明に係る描画処理装置は、ミップマップを格納したテクスチャ記憶部から最適なサイズのテクスチャを取得する装置である。
【００１４】
第１の選択部は、画素（Ｘ，Ｙ）に対するテクスチャ座標（Ｕ，Ｖ）の変化量（ｄｕ／ｄｘ）と、変化量（ｄｖ／ｄｙ）とを比較し、大きい方の値を選択する。
第２の選択部は、前述した画素（Ｘ，Ｙ）に対するテクスチャ座標（Ｕ，Ｖ）の変化量（ｄｕ／ｄｙ）と、変化量（ｄｖ／ｄｘ）とを比較し、大きい方の値を選択する。
【００１５】
演算部は、第１の選択部によって選択された値と第２の選択部によって選択された値とをそれぞれ直角三角形の直角に交わる２辺とみなし、この直角三角形の斜辺の値を実質的に演算する。
【００１６】
このような描画処理装置によれば、第１の選択部により、変化量（ｄｕ／ｄｘ）、変化量（ｄｖ／ｄｙ）の大きい方の値が選択される。また、第２の選択部により、変化量（ｄｕ／ｄｙ）、変化量（ｄｖ／ｄｘ）の大きい方の値が選択される。そして、演算部により、第１の選択部によって選択された値と第２の選択部によって選択された値とがそれぞれ直角三角形の直角に交わる２辺とみなされ、この直角三角形の斜辺の値が実質的に演算される。
【００１７】
また、上記課題を解決するために、ミップマップを格納したテクスチャ記憶部から最適なサイズのテクスチャを取得するコンピュータが実行する描画処理方法において、画素（Ｘ，Ｙ）に対するテクスチャ座標（Ｕ，Ｖ）の変化量（ｄｕ／ｄｘ）、変化量（ｄｖ／ｄｘ），変化量（ｄｕ／ｄｙ）、変化量（ｄｖ／ｄｙ）における、｛（ｄｕ／ｄｘ）2＋（ｄｕ／ｄｙ）2｝1/2と｛（ｄｖ／ｄｘ）2＋（ｄｖ／ｄｙ）2｝1/2とのうちの大きい方の値を選択する第１のステップと、｛（ｄｕ／ｄｘ）2＋（ｄｖ／ｄｘ）2｝1/2と｛（ｄｕ／ｄｙ）2＋（ｄｖ／ｄｙ）2｝1/2とのうちの大きい方の値を選択する第２のステップと、第１のステップによって選択された値と第２のステップによって選択された値とのうち大きい方の値を、テクスチャの画素サイズと描画画像の画素サイズとの比率とする第３のステップと、を実質的に含むことを特徴とする描画処理方法が提供される。
【００１８】
このような描画処理方法によれば、演算を容易にすることができる。
【発明の効果】
【００１９】
本発明によれば、歪みの少ない図形を描画することができる。また、演算を容易にすることができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
まず、本発明の概要について説明し、その後、実施の形態を説明する。
図１は、本発明の概要を示す図である。
【００２１】
描画処理装置１は、第１の選択部２と、第２の選択部３と、演算部４とを有している。
以下、テクスチャを貼り付ける図形が写像される座標をＸＹ座標とする単位画素（Ｘ，Ｙ）のＸ軸方向の辺素ｄｘの、図形に貼り付けるテクスチャのＵＶ座標系を構成するＵ軸方向の変化量を変化量（ｄｕ／ｄｘ）、Ｖ軸方向の変化量を変化量（ｄｖ／ｄｘ）とし、単位画素（Ｘ，Ｙ）のＹ軸方向の辺素ｄｙの、Ｕ軸方向の変化量を変化量（ｄｕ／ｄｙ）、Ｖ軸方向の変化量を変化量（ｄｖ／ｄｙ）とする。
【００２２】
第１の選択部２は、変化量（ｄｕ／ｄｘ）と変化量（ｄｖ／ｄｙ）とを比較し、大きい方の値を選択する。
第２の選択部３は、変化量（ｄｕ／ｄｙ）と変化量（ｄｖ／ｄｘ）とを比較し、大きい方の値を選択する。
【００２３】
演算部４は、第１の選択部２によって選択された値と第２の選択部３によって選択された値とをそれぞれ直角三角形の直角に交わる２辺とみなし、この直角三角形の斜辺の値を実質的に演算する。斜辺の値は、平方根の演算を行って求めてもよいが、近似式を用いて求めるのが好ましい。これにより容易に演算することができる。
【００２４】
このような描画処理装置１によれば、第１の選択部２により、変化量（ｄｕ／ｄｘ）および変化量（ｄｖ／ｄｙ）の大きい方の値が選択される。また、第２の選択部３により、変化量（ｄｕ／ｄｙ）および変化量（ｄｖ／ｄｘ）の大きい方の値が選択される。そして、演算部４により、第１の選択部２によって選択された値と第２の選択部３によって選択された値とがそれぞれ直角三角形の直角に交わる２辺とみなされ、この直角三角形の斜辺の値が実質的に演算される。
【００２５】
このような演算手段によって、演算された斜辺の値を用いてＬｏＤを演算することによって、最適なサイズのテクスチャを容易に取得することができる。
以下、本発明の実施の形態を説明する。
【００２６】
図２は、描画装置の構成を示すブロック図である。
描画処理装置１０は、ＣＰＵ（Central Processing Unit）２０と、ＧＰＵ（Graphics Processing Unit）３０と、外部メモリ４０と、モニタ（スクリーン）５０とを有している。
【００２７】
ＣＰＵ２０は、描画したい３次元の物体データの頂点座標（３次元座標）と対応するパラメータとをＧＰＵ３０に送信する。
ＧＰＵ３０は、ジオメトリ３１と、ラスタ化部３２と、ＬｏＤ演算部３３と、テクスチャ取得用アドレス生成部３４と、ピクセルブレンダ３５とを有している。
【００２８】
ジオメトリ３１は、ＣＰＵ２０からの頂点座標と対応するパラメータとを受信する。
ジオメトリ３１では、視点の角度にて物体がモニタ５０に投影される画像の頂点座標と対応するパラメータとを算出し、ラスタ化部３２へ送信する。
【００２９】
ラスタ化部３２は、受信した頂点座標に基づいてラスタライズ（rasterize）して各座標（ＸＹ座標およびＵＶ座標）を求め、求めた座標のうち、ＸＹ座標およびＵＶ座標をＬｏＤ演算部３３に送信し、ＵＶ座標をテクスチャ取得用アドレス生成部３４に送信し、ＸＹ座標をピクセルブレンダ３５に送信する。
【００３０】
ＬｏＤ演算部３３は、ＸＹ座標およびＵＶ座標からＬｏＤを求め、テクスチャ取得用アドレス生成部３４に送信する。
テクスチャ取得用アドレス生成部３４は、ＵＶ座標とＬｏＤとに基づいて、テクスチャを取得するためのアドレスを生成し、外部メモリ４０に送信する。
【００３１】
外部メモリ４０は、フレームバッファ４１とテクスチャ記憶部４２とを有している。
テクスチャ記憶部４２は、アドレスを受信するとテクスチャを構成するテクセルを生成し、ピクセルブレンダ３５に送信する。
【００３２】
ピクセルブレンダ３５は、テクセルをさまざまな設定にて加工（色を変化させたり、他の色とブレンドしたり）することができ、加工したテクセルをＸＹ座標に対応するフレームバッファ４１に書き込む。
【００３３】
モニタ５０はフレームバッファ４１に記憶されている内容を画素表示する。これにより、画像が得られる。
以上のような構成によって、本実施の形態の処理機能を実現することができる。
【００３４】
次に、ＬｏＤ演算部３３の構成について詳しく説明する。
ＬｏＤ演算部３３は、従来の（正常なＬｏＤ演算が行われていない）式（２）の「ｍａｘ［］」の切り替わりを補うために、「ｍａｘ［］」内の２つの値の大きい方を選択するのではなく、２つの値を直交する２辺とする直角三角形の斜辺の値ρ１を求め、ｌｏｇ2（ρ１）を本実施の形態のＬｏＤとする演算を行う。すなわち、直交する２辺を次式（３）、（４）、
【００３５】
【数２】
0005050786.tif 000003
【００３６】
【数３】
0005050786.tif 000004
【００３７】
と定義すると、直角三角形の斜辺の値ρ１は次式（５）で表される。
【００３８】
【数４】
0005050786.tif 000005
【００３９】
また、式（５）に、式（３）、（４）を代入すると次式（６）が得られる。
【００４０】
【数５】
0005050786.tif 000006
【００４１】
このとき、図９に示したように、トンネル画像９１の図形のように奥まっていくほど（紙面中央部に向かうほど）変化量が大きくなっていく。これに対して、筒状の外周面に沿う方向は変化量があまり大きくない。そこで、ｕ，ｖのうち変化量の小さい方を無視することで式（６）から次式（７）、（８）が得られる。
【００４２】
【数６】
0005050786.tif 000007
【００４３】
【数７】
0005050786.tif 000008
【００４４】
式（７）と式（８）との大きい方の値を選択する。
ρｕｖ＝ｍａｘ［ρｕ，ρｖ］・・・（９）
式（２）を式（３）と式（４）とを使用して次式（１０）とする。
【００４５】
ρｘｙ＝ｍａｘ［ρｘ，ρｙ］・・・（１０）
従来の歪みはＬｏＤが小さいことで生じている。次式（１１）に示すように、式（９）と式（１０）とにおいて、それぞれ大きい方の値を選択することで、歪みのない画像では式（１０）が使用され、歪みがある画像では式（９）が使用されることで、歪みを補正することができる。
【００４６】
ρ１＝ｍａｘ［ρｘｙ，ρｕｖ］・・・（１１）
但し、ρｘｙとρｕｖとを求めて直接比較しなくても、変化量（ｄｕ／ｄｘ）と変化量（ｄｖ／ｄｙ）との大小と、変化量（ｄｕ／ｄｙ）と変化量（ｄｖ／ｄｘ）との大小を比較することで、式（３）、（４）、（７）、（８）のうち最も大きい値を判断することができるため、斜辺の値ρ１を容易に演算することができる。
【００４７】
図３は、ＬｏＤ演算部の演算アルゴリズムを示すフローチャートである。
まず、変化量（ｄｕ／ｄｙ）が変化量（ｄｖ／ｄｘ）より大きいか否かを判断する（ステップＳ１）。
【００４８】
変化量（ｄｕ／ｄｙ）が変化量（ｄｖ／ｄｘ）より大きい場合（ステップＳ１のＹｅｓ）、変化量（ｄｕ／ｄｘ）が変化量（ｄｖ／ｄｙ）より大きいか否かを判断する（ステップＳ２）。
【００４９】
変化量（ｄｕ／ｄｘ）が変化量（ｄｖ／ｄｙ）より大きい場合（ステップＳ２のＹｅｓ）、ρ１＝ρｕとする（ステップＳ３）。
また、変化量（ｄｕ／ｄｘ）が変化量（ｄｖ／ｄｙ）以下の場合（ステップＳ２のＮｏ）、ρ１＝ρｙとする（ステップＳ４）。
【００５０】
一方、ステップＳ１にて変化量（ｄｕ／ｄｙ）が変化量（ｄｖ／ｄｘ）以下の場合（ステップＳ１のＮｏ）、変化量（ｄｕ／ｄｘ）が変化量（ｄｖ／ｄｙ）より大きいか否かを判断する（ステップＳ５）。
【００５１】
変化量（ｄｕ／ｄｘ）が変化量（ｄｖ／ｄｙ）より大きい場合（ステップＳ５のＹｅｓ）、ρ１＝ρｘとする（ステップＳ６）。
また、変化量（ｄｕ／ｄｘ）が変化量（ｄｖ／ｄｙ）以下の場合（ステップＳ５のＮｏ）、ρ１＝ρｖとする（ステップＳ７）。
【００５２】
次に、このような演算アルゴリズムを実現するＬｏＤ演算部３３の構成を説明する。
図４は、ＬｏＤ演算部の構成を示すブロック図である。
ＬｏＤ演算部３３は、変化量測定部３３１と、比較部３３２、３３３と、大小比較部３３４と、演算部３３５と、対数演算部３３６とを有している。
【００５３】
変化量測定部３３１は、画素（Ｘ，Ｙ）に対するテクスチャ座標（Ｕ，Ｖ）の変化量（ｄｕ／ｄｘ）、変化量（ｄｖ／ｄｘ）、変化量（ｄｕ／ｄｙ）、変化量（ｄｖ／ｄｙ）を求める。
【００５４】
比較部３３２は、変化量（ｄｕ／ｄｘ）と変化量（ｄｖ／ｄｙ）とを比較し、大きい方の値（以下、値αと言う）を出力する。
比較部３３３は、変化量（ｄｕ／ｄｙ）と変化量（ｄｖ／ｄｘ）とを比較し、大きい方の値（以下、値βと言う）を出力する。
【００５５】
これにより、図３に示すステップＳ１、Ｓ２およびステップＳ５に対応する動作が実行され、斜辺の値ρ１を求めるために必要な、変化量（ｄｕ／ｄｘ）、変化量（ｄｖ／ｄｘ）、変化量（ｄｕ／ｄｙ）、変化量（ｄｖ／ｄｙ）のいずれか２つに該当する値αおよび値βが求まる。
【００５６】
大小比較部３３４は、値αと値βとを比較し、大きい方の値（以下、値γと言う）と、小さい方の値（以下、値δと言う）とを区別してそれぞれ出力する。
演算部３３５は、大小比較部３３４にて定まった値γと値δとを入力として斜辺の値ρ１を求める。
【００５７】
対数演算部３３６は、演算部３３５にて求まった斜辺の値ρ１を用いてｌｏｇ2（ρ１）を演算してＬｏＤを求める。
次に、演算部３３５について詳しく説明する。まず、演算部３３５の演算方法を説明し、その後、演算部３３５の構成を説明する。
【００５８】
前述したように、斜辺の値ρ１の値は、ρｕ、ρｙ、ρｘ、ρｖのいずれかの値になるが、このままでは、いずれの値を演算するにしても平方根の演算となる。そこで、演算部３３５は、演算を簡単にするために、値γを固定値とみなし、値δを変数とみなした一次式で構成される折れ線近似の演算を行う。具体的には、次式（１２）の近似を行う。
【００５９】
【数８】
0005050786.tif 000009
【００６０】
図５は、近似式における係数の求め方を説明する図である。
本実施の形態では、値γに対する値δの割合にて異なる係数１および係数２を選択し、式（１２）に代入することで、斜辺の値ρ１を求める。具体的には、値γに対する値δの割合に応じた領域を用意する。次に、値γに対する値δの割合に応じて、値δが属する領域を判断する。そして、値δが属する領域毎に、最適な近似を行うための係数１および係数２を求める。
【００６１】
図５では、一例として領域を４つ（２2）に区切り、値δが値γの１／４未満であれば、領域＃１に属すると判断する。値δが値γの１／４以上、かつ、２／４未満であれば、領域＃２に属すると判断する。値δが値γの２／４以上、かつ、３／４未満であれば、領域＃３に属すると判断する。値δが値γの３／４以上、かつ、１未満であれば、領域＃４に属すると判断する。そして、各領域の係数１および係数２を演算や予め用意されたテーブルからの選択等で求める。これにより、領域毎に、最適な近似式を選択することができる。
【００６２】
このように、値γに対する値δの割合に応じて異なる近似式を採用することにより、精度の高い近似を行うことができる。
次に、演算部３３５の構成を説明する。
【００６３】
図６は、演算部の構成を示すブロック図である。
演算部３３５は、係数選択部３３５ａと、記憶部３３５ｂと、ρ１演算部３３５ｃとを有している。
【００６４】
なお、図６に示す演算部３３５は、図５に対応する構成をなしている。
係数選択部３３５ａは、値γに対する値δの割合にて係数を選択するアドレス（選択アドレス）を生成する。本実施の形態では、値δが値γの１／４未満であれば、領域＃１を指定する選択アドレスを生成する。値δが値γの１／４以上、かつ、２／４未満であれば、領域＃２を指定する選択アドレスを生成する。値δが値γの２／４以上、かつ、３／４未満であれば、領域＃３を指定する選択アドレスを生成する。値δが値γの３／４以上、かつ、１未満であれば、領域＃４を指定する選択アドレスを生成する。
【００６５】
記憶部３３５ｂは、係数選択テーブル３３５１と、セレクタ３３５２とを有している。
係数選択テーブル３３５１は、領域毎に異なる値を備える係数１と係数２との組合せを一組とする係数ブロックｂ１〜ｂ４を有している。すなわち、係数選択テーブル３３５１に記憶する係数ブロックの数は、区切られた領域の数に等しい。
【００６６】
ここで、係数ブロックｂ１〜ｂ４は、係数１としてそれぞれ異なる値の係数１−１〜係数１−４を有し、係数２としてそれぞれ異なる値の係数２−１〜係数２−４を有している。
【００６７】
セレクタ３３５２は、選択アドレスに基づいて、係数ブロックｂ１〜ｂ４のうち、いずれか１つを選択する。具体的には、領域＃１を指定する選択アドレスであれば、係数ブロックｂ１を選択する。領域＃２を指定する選択アドレスであれば、係数ブロックｂ２を選択する。領域＃３を指定する選択アドレスであれば、係数ブロックｂ３を選択する。領域＃４を指定する選択アドレスであれば、係数ブロックｂ４を選択する。
【００６８】
そして、選択した係数ブロックが有する係数１と係数２とをρ１演算部３３５ｃに出力する。
ρ１演算部３３５ｃは、得られた係数１、係数２および値γ、値δを用いて式（１２）に代入して斜辺の値ρ１を求める。
【００６９】
次に、対数演算部３３６について詳しく説明する。まず、対数演算部３３６の演算方法を説明し、その後、対数演算部３３６の構成を説明する。
得られた斜辺の値ρ１は、次式（１３）に置き換えることができる。
【００７０】
ρ１＝（１＋ａ）×２b・・・（１３）
また、前述したように、ＬｏＤは、次式（１４）にて求めることができる。
ＬｏＤ＝ｌｏｇ2（ρ１）・・・（１４）
ここで、式（１４）に式（１３）を代入すると、次式（１５）のように表すことができる。
【００７１】
ＬｏＤ＝ｌｏｇ2（（１＋ａ）×２b）＝ｌｏｇ2（１＋ａ）＋ｂ・・・（１５）
式（１５）の「ｂ」は、ＬｏＤの整数部であり、「ｌｏｇ2（１＋ａ）」は、ＬｏＤの小数部である。
【００７２】
対数演算部３３６は、式（１５）のこの整数部と小数部とを求めることで、ＬｏＤを演算する。
次に、対数演算部３３６の構成について詳しく説明する。
【００７３】
図７は、対数演算部の構成を示すブロック図である。
対数演算部３３６は、桁上げ判定部３３６ａと、記憶部３３６ｂと、加算部３３６ｃとを有している。
【００７４】
桁上げ判定部３３６ａは、斜辺の値ρ１から式（１３）に示す「ａ」と「ｂ」とを求める。ここで、式（１３）は２進数において、「（１＋ａ）」を「ｂ」で桁上げしていることを示しているので、桁上げ判定部３３６ａは、何ビット桁上げしているかを判定する。そして、求めた「ａ」を記憶部３３６ｂに送り、「ｂ」を加算部３３６ｃに送る。
【００７５】
ここで、これまでの斜辺の値ρ１の演算に固定小数点を使用している場合は、斜辺の値ρ１の、小数点から最上位の‘１’までのビット数が「ｂ」となる。
一方、これまでの斜辺の値ρ１の演算に浮動小数点を使用している場合は、斜辺の値ρ１の指数部から容易に値が求まる。‘１’が検出されると、それ以降が「ａ」である。
【００７６】
記憶部３３６ｂは、定数記憶テーブル３３６１と、セレクタ３３６２とを有している。
定数記憶テーブル３３６１は、「ａ」の値に対応する「ｌｏｇ2（１＋ａ）」の値（定数）を複数記憶している。図７では、「ｌｏｇ2（１＋ａ）」として４つの値（「ｌｏｇ2（１＋ａ）＃１」、「ｌｏｇ2（１＋ａ）＃２」、「ｌｏｇ2（１＋ａ）＃３」、「ｌｏｇ2（１＋ａ）＃４」）を記憶している。なお、記憶する定数の数は、「ａ」のビット数と、実現する精度とに応じて決定することができる。例えば「ａ」が８ビットであれば、定数記憶テーブル３３６１が記憶する「ｌｏｇ2（１＋ａ）」の個数は、最大で２8＝２５６個になる。
【００７７】
セレクタ３３６２は、桁上げ判定部３３６ａから送られてくる「ａ」に対応する、定数記憶テーブル３３６１が記憶している「ｌｏｇ2（１＋ａ）」を選択して加算部３３６ｃに送る。
【００７８】
加算部３３６ｃは、桁上げ判定部３３６ａが出力する「ｂ」と、記憶部３３６ｂが出力する「ｌｏｇ2（１＋ａ）」とを加算してＬｏＤを求め、得られたＬｏＤをテクスチャ取得用アドレス生成部３４に出力する。
【００７９】
図８は、本実施の形態の描画装置による描画図形を示す図である。
以上述べたように、本実施の形態の描画処理装置１０によれば、演算部３３５が、２つの値γおよび値δを直交する２辺とする直角三角形の斜辺の値ρ１を実質的に求める演算を行うようにしたので、図８に示すように、描画されたトンネル画像５１のテクスチャ５２〜５５の歪みを補正することができる。また、演算部３３５では平方根の演算を行うことなく斜辺の値ρ１を求め、対数演算部３３６では対数の演算を行うことなくＬｏＤを求めるようにしたので、ＬｏＤ演算部３３の小型化を図ることができる。
【００８０】
また、比較部３３２、３３３にて変化量を比較することで、演算を容易にすることができる。
また、記憶部３３５ｂが、領域毎の係数を予めテーブル化して記憶しておくことにより、容易にρ演算部３３５が演算を行うことができる。
【００８１】
また、係数ブロックの個数が少なければ、ＲＯＭ（Read Only Memory）等を用いることなく、本実施の形態のように小規模なセレクタ３３５２で記憶部３３５ｂを構成することができる。
【００８２】
なお、図５では、領域を４つに区切った例について説明したが、本発明はこれに限らず、領域の数を増やすことで近似式の精度を高めることができる。領域の数を増やす場合、記憶部３３５ｂの構成を変更することで、容易に対応することができる。
【００８３】
また、区切る領域の数は特に限定されないが、２のべき乗であるのがより好ましい。これにより、ＬｏＤ演算部３３をハードウェアで構成した場合、ビットシフトで対応することができるため、装置の小型化を図ることができる。
【００８４】
以上、本発明の描画処理装置、描画処理方法および描画処理プログラムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【００８５】
また、本発明は、前述した実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、描画処理装置１０（特に、ＬｏＤ演算部３３）が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。
【００８６】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００８７】
描画処理プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【図面の簡単な説明】
【００８８】
【図１】本発明の概要を示す図である。
【図２】描画装置の構成を示すブロック図である。
【図３】ＬｏＤ演算部の演算アルゴリズムを示すフローチャートである。
【図４】ＬｏＤ演算部の構成を示すブロック図である。
【図５】近似式における係数の求め方を説明する図である。
【図６】演算部の構成を示すブロック図である。
【図７】対数演算部の構成を示すブロック図である。
【図８】本実施の形態の描画装置による描画図形を示す図である。
【図９】従来の描画方法による図形を示す図である。
【符号の説明】
【００８９】
１、１０  描画処理装置
２  第１の選択部
３  第２の選択部
４、３３５  演算部
２０  ＣＰＵ
３０  ＧＰＵ
３１  ジオメトリ
３２  ラスタ化部
３３  ＬｏＤ演算部
３４  テクスチャ取得用アドレス生成部
３５  ピクセルブレンダ
４０  外部メモリ
４１  フレームバッファ
４２  テクスチャ記憶部
５０  モニタ
３３１  変化量測定部
３３２、３３３  比較部
３３４  大小比較部
３３５ａ  係数選択部
３３５ｂ、３３６ｂ  記憶部
３３５ｃ  ρ１演算部
３３６  対数演算部
３３６ａ  桁上げ判定部
３３６ｃ  加算部
３３５１  係数選択テーブル
３３５２、３３６２  セレクタ
３３６１  定数記憶テーブル
ｂ１〜ｂ４  係数ブロック
【図１】
0005050786.tif 000010
【図２】
0005050786.tif 000011
【図３】
0005050786.tif 000012
【図４】
0005050786.tif 000013
【図５】
0005050786.tif 000014
【図６】
0005050786.tif 000015
【図７】
0005050786.tif 000016
【図８】
0005050786.tif 000017
【図９】
0005050786.tif 000018