JP2004054621A - Picture processor and its method - Google Patents

Picture processor and its method Download PDF

Info

Publication number
JP2004054621A
JP2004054621A JP2002211506A JP2002211506A JP2004054621A JP 2004054621 A JP2004054621 A JP 2004054621A JP 2002211506 A JP2002211506 A JP 2002211506A JP 2002211506 A JP2002211506 A JP 2002211506A JP 2004054621 A JP2004054621 A JP 2004054621A
Authority
JP
Japan
Prior art keywords
map
data
vector
map data
absolute value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2002211506A
Other languages
Japanese (ja)
Inventor
Hitoshi Ishikawa
石川 仁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2002211506A priority Critical patent/JP2004054621A/en
Publication of JP2004054621A publication Critical patent/JP2004054621A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Generation (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide a picture processor and its method capable of obtaining an optimum color intermediate value as the result of color calculation by simple processing while preventing the increase of hardware. <P>SOLUTION: The picture processor is provided with a map storage part 12 for storing color calculating map data including 1st vector data, acquiring a map address MA 15, acquiring 2nd vector data VCT different from the 1st vector data included in the stored map data, calculating the absolute value of an inner product of the 2nd vector data and the 1st vector data for the near-by data of the map address, and outputting the necessary texel map data together with the calculated absolute value of the inner product, a map data processing part 13 for filtering the map data outputted from the map storage part 12 and outputting the filtered map data MD13 and a plotting part 15 for performing color calculation on the basis of the map data MD13 outputted from the map data processing part 13 and performing plotting processing including prescribed filtering processing. <P>COPYRIGHT: (C)2004,JPO

Description

【0001】
【発明の属する技術分野】
本発明は、色計算用のパラメータをマップに保持し、描画的にマップ内パラメータを取得して色計算を行う画像処理装置およびその方法に関するものである。
【0002】
【従来の技術】
昨今のコンピュータシステムにおける演算速度の向上や描画機能の強化とも相俟って、コンピュータ資源を用いて図形や画像の作成や処理を行う「コンピュータ・グラフィックス(CG)」技術が盛んに研究・開発され、さらに実用化されている。
【0003】
たとえば、3次元グラフィックスは、3次元オブジェクトが所定の光源によって照らされたときの光学現象を数学モデルで表現して、このモデルに基づいてオブジェクト表面に陰影や濃淡を付けたり、さらには模様を貼り付けたりして、よりリアルで3次元的な2次元高精細画像を生成するものである。
このようなコンピュータ・グラフィックスは、科学、工学、製造などの開発分野でのCAD/CAM、その他の各種応用分野においてますます盛んに利用されるようになってきている。
【0004】
3次元グラフィックスは、一般には、フロントエンドとして位置づけられる「ジオメトリ・サブシステム」と、バックエンドとして位置づけられる「ラスタ・サブシステム」とにより構成される。
【0005】
ジオメトリ・サブシステムとは、ディスプレイ・スクリーン上に表示する3次元オブジェクトの位置や姿勢などの幾何学的な演算処理を行う過程のことである。
ジオメトリ・サブシステムでは、一般にオブジェクトは多数のポリゴンの集合体として扱われ、ポリゴン単位で、「座標変換」、「クリッピング」、「光源計算」などの幾何学的な演算処理が行われる。
【0006】
一方、ラスタ・サブシステムは、オブジェクトを構成する各ピクセル(pixel)を塗りつぶす過程のことである。
ラスタライズ処理は、たとえばポリゴンの頂点毎に求められた画像パラメータを基にして、ポリゴン内部に含まれるすべてのピクセルの画像パラメータを補間することによって実現される。
ここで言う画像パラメータには、いわゆるRGB形式などで表される色(描画色)データ、奥行き方向の距離を表すz値などがある。
また、最近の高精細な3次元グラフィックス処理では、遠近感を醸し出すためのf(fog:霧)や、物体表面の素材感や模様を表現してリアリティを与えるテクスチャt(texture)なども、画像パラメータの1つとして含まれている。
【0007】
ここで、ポリゴンの頂点情報からポリゴン内部のピクセルを発生する処理では、よくDDA(Digital Differential Analyzer)と呼ばれる線形補間手法を用いて実行される。
DDAプロセスでは、頂点情報からポリゴンの辺方向へのデータの傾きを求め、この傾きを用いて辺上のデータを算出した後、続いてラスタ走査方向(X方向)の傾きを算出し、この傾きから求めたパラメータの変化分を走査の開始点のパラメータ値に加えていくことで、内部のピクセルを発生していく。
【0008】
【発明が解決しようとする課題】
ところで、各ピクセルの描画色の計算、すなわち色計算には表面の材質が大きく影響を及ぼす。平坦で均質な素材の表面の色計算は比較的容易であるが、たとえば動物の毛皮などの色計算は容易ではない。何故ならば、表面形状が複雑で、毛の密度によっては皮膚の色の影響を受けたり、毛の流れによって色も変化するからである。
【0009】
動物の毛皮を描画する最も基本的な方法として、毛を1本1本描画する方法がある。
しかしながら、この方法は、毛を1本1本描画するために必要な計算量が膨大となってしまうという根本的な問題がある。
さらに、毛は半透明物質として描画するため、プリミティブ単位あるいはピクセル単位で奥行き方向にソート(zソート)する必要がある。これにも膨大な計算量を要する。
【0010】
Kajiyaは、3次元マップを用い視線方向にテクセルを走査することによって、毛皮の質感を表現できることを示した(Kajiya,J.T and Timothy L. Kay.Rendering Fur with Three Dimentional Textures,SIGGRAPH 89,pp.271−280、参照)。
しかしながら、この方法は、視線方向のテクセルの走査に描画時間が多く必要である。また、3次元マップを保持するための大容量のメモリ領域が必要となる。
【0011】
Go1dmanは、ダルメシアンのような非常に短い毛の生え方がポアソン(Poisson)分布に従うと仮定することによって、確率的な見え方を計算し、高速に毛皮の質感を描画する方法を開発した(Goldman,D.B., Fake Fur Rendering,SIGGRAPH 97,pp.127−134 、参照)  。
この方法は、視線方向のテクセルの走査が必要なく、大容量のメモリも必要がない。
しかしながら、この方法は、短い毛が1ピクセル中に十分に多く存在する場合にのみ有効であり、たとえばダルメシアンより長い毛であったり、1ピクセル中にそれほど多く毛が存在しないような場合には用いることができない。
【0012】
Lengyelは、毛皮を同心の複数の半透明層(以下、シェル(shell)という)として描画する方法を提案した(Lengyel,E.J., Real−Time Fur, Eurographics Rendering Workshop 2000, pp.243−256 、および、Lengyel,E.J., Real−Time Fur over Arbitrary Surfaces ,ACM 2001 Symposium on Interactive 3D Graphics(http://research.microsoft.com/ 〜jdl/) 参照)。
これは、シェルを内側から複数回描画し、重ね合わせて行くことで、毛皮を高速に描画できる。各シェルの色計算には、事前に毛のモデルから作成した3次元マップを用いる。
【0013】
彼らはまた、nVidiaのGeForceにおける頂点シェーダ、ピクセルシェーダへの実装を行い、この方法が実際に、有効であることを示した。
【0014】
この方法では、Praunのラップドテクスチャ(lapped texture)の手法(Praun,E., Lapped Textrures, SIGGRAPH 2000,pp.465−470、参照)を用い、同じマップを繰り返し表面に貼り付けることで、必要なマップの総量を減らしている。
しかし、この方法では、依然として擬似的な3次元マップであり、シェルの数だけのマップはやはり必要となってしまうという問題がある。
【0015】
また、シェルを用いた描画の本質的な問題として、エッジ近傍での画質の劣化がある。エッジ近傍では、毛の描画色か徐々に薄く見えるようになる。また、シェルの描画順がエッジ近傍では正しくないため、正しい色が得られない。
このエッジ近傍での画質上の問題点を、Lengyelは皮膚上のメッシュの境界線上に、皮膚面に垂直にひれ状のプリミティブ(フィン:fin)を用いることで解決している。
フィン(fin)は、メッシュの境界上のどこにでも存在し、メッシュの境界がエッジに近い場合のみフィンを描画するようにしている。フィンの描画には、前述の3次元マップとは別のマップ(フィンテクスチャ(fin  texture))を用いる。
【0016】
Lengyelは、メッシュの全ての境界線上に異なるフィンテクスチャを用意するのではなく、1種類のフィンテクスチャを使いまわすことで、必要なメモリ量を節約している。
しかしながら、Lengyelが試みているのは、毛が全体的には皮膚面に対して垂直に立っている場合のみである。
この場合であれば、フィンテクスチャは1種類で済むが、たとえば毛が皮膚面に沿っているような場合には、視線と毛の方向との関係から様々なフィンテクスチャを選択する必要が生じる。
したがって、フィンテクスチャに必要なメモリ量は増大する。
【0017】
また、フィンは半透明のプリミティブとして描画するため、正確な色計算のためには本来はzソートを行わなければならないが、これについてLengyelは特に述べていない。
【0018】
上記のような課題があるものの、シェルを用いた毛皮の描画は高速であり、単純形状の物体であれば、フィンの描画を除けば、半透明物体の重ねあわせに合うソーティングも必要ないという長所がある。
【0019】
ところで、従来、マップを用いた多くの手法においては、マップのテクセル自体が無効であるということはなかった。
しかしながら、毛のような線状物をマップを用いて表現する場合、図19に示すようにテクセルには、毛に関わるテクセル(有効なテクセル)T11,T21と毛に関わらないテクセル(無効なテクセル)T12,T22が存在する。
【0020】
一方、通常テクスチャマップでマップデータを取得する際、下記の数1のように近傍テクセルのマップデータをフィルタ処理して算出する場合がある。
数1は、4近傍のフィルタ処理を行う場合を示すが、一般にはこれより多次元のフィルタ処理を行う場合がある。
【0021】
【数1】

Figure 2004054621
【0022】
ここで、d11〜d22は近傍テクセルのマップデータであり、dが最終出力のマップデータである。a11〜a22はマップアドレスの小数部の値により算出される定数である。
【0023】
従来のテクスチャマッピングでは、テクセル内のマップデータは色情報を格納することが普通である。
一方、バンプマッピングのように法線ベクトルや線状物体の方向ベクトルを格納する場合もある。
図19の例においては、各テクセルに透過度αおよび線状物体の方向ベクトル<t>を格納している。α=0のとき該当テクセルは完全に透明であることを示しており、α=1は不透明であることを示す。
たとえば、線状物体の方向ベクトル<t>が与えられたとき、その色の拡散成分cはkajiyaにより提案されたライティング式を用いて以下の数2のように計算される。なお、数2において、<1>は光源ベクトル、cdは光源色と物体の拡散色成分の積を示す。
【0024】
【数2】
Figure 2004054621
【0025】
数3は、図19に示すように、マップデータとして透過度α、方向ベクトル<t>が格納されている場合、数1と同様にフィルタリングを行ったものである。
【0026】
【数3】
Figure 2004054621
【0027】
ここで、c11〜c22はそれぞれ<t11>〜<t12>を数2に適用して、求めた拡散色cに相当する。
なお、上記は色計算後にフィルタを行う場合であるが、たとえば方向ベクトルの段階でフィルタを行うと、以下の数4のようになる。
【0028】
【数4】
Figure 2004054621
【0029】
ところで、数3の処理は、色を計算した後にフィルタ処理を行うため、4つの色計算部が必要となる。一般に色計算は複雑な演算を伴うため、これはハードウエアコストが増大するという欠点がある。
一方、数4の処理は、マップに保持されているベクトルをそのままフィルタ、すなわち補間するため、従来のハードウエアとほぼ同じ構成で実現できる。
しかしながら、ベクトルの段階で補間する場合、画質の劣化を伴う場合がある。これについて以下に説明する。
【0030】
図20は、2つの方向ベクトル<t11>および<t12>が、光源ベクトル<1>の反対側に存在する場合を示す図である。またここでは、これらのベクトルが隣り合うテクセルT11、T12に保持されているとする。
マップアドレスによっては、テクセルT11とT12の中間の値を取りたい場合が考えられる。この場合の色をどのように計算するかが問題となる。
ベクトルの補間を行う場合、図20に示すように、<t11>と<t12>の間のベクトル<t’>が算出される。これを用いて色を計算することになる。
【0031】
図21は、kajiyaのライティング式(数2)の場合の色計算の様子を模式的に示す図である。
図21に示すように、<t11>、<t12>はいずれも<1>から同じ程度の角度を成しているため、ほぼ同じ拡散色を得る。
しかしながら、これらを補間した<t’>は、<1>との成す角度が非常に小さくなるため、これらの色よりも暗い色を得ることになる。
本来は、テクセルT11およびT12で計算した色の中間くらいの色が得られれば良いが、これはベクトルの線形補間では得ることができない。
【0032】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、ハードウェアの増大を防止しつつ、簡単な処理で色計算の結果、最適な色の中間値をとることが可能な画像処理装置およびその方法を提供することにある。
【0033】
【課題を解決するための手段】
上記目的を達成するため、本発明の第1の観点に係る画像処理装置は、第1のベクトルデータを含む色計算用のマップデータを保持し、別途与えられる第2のベクトルデータと上記第1のベクトルデータとの内積の絶対値を計算し、計算した内積の絶対値とともに対応するマップデータを出力するマップ保持部と、上記マップ保持部により出力されたマップデータに対して所定のフィルタ処理を行うマップデータ処理部と、上記マップデータ処理部により出力されたマップデータに基づいて色計算を行い所定の描画処理を行う描画手段とを有する。
【0034】
好適には、上記マップ保持部は、マップアドレスを取得し、マップアドレスの近傍データについて、上記第2のベクトルデータと上記第1のベクトルデータとの内積の絶対値を計算する。
【0035】
好適には、上記マップデータ処理部は、マップデータに対して線形補間を行う。
【0036】
好適には、上記描画手段は、複数の半透明層であるシェルを重ね合わせた描画対象物の方向を示すベクトルを求め、求めたベクトルに基づいてフィルタカーネルを変更し、描画対象物の向かっている方向にピクセルの情報を膨らませて、各シェル間で連続性を持たせるフィルタ処理を行う。
【0037】
本発明の第2の観点に係る画像処理方法は、第1のベクトルデータを含む色計算用のマップデータを保持する第1のステップと、別途与えられる第2のベクトルデータと上記第1のベクトルデータとの内積の絶対値を計算する第2のステップと、上記第2のステップで計算した内積の絶対値を含むマップデータの対して所定のフィルタ処理を行う第3のステップと、上記第3のステップで出力されたマップデータに基づいて色計算を行い所定の描画処理を行う第4のステップとを有する。
【0038】
本発明によれば、第1のベクトルデータを含む色計算用のマップデータがマップ保持部に保持される。
マップ保持部においては、別途与えられる第2のベクトルデータと記第1のベクトルデータとの内積の絶対値が計算される。そして、マップ保持部から計算した内積の絶対値とともに対応するマップデータがマップデータ処理部に出力される。
マップデータ処理部においては、マップ保持部により出力されたマップデータに対して所定のフィルタ処理、たとえば線形補間処理が施され描画手段に出力される。
そして、描画手段において、マップデータ処理部により出力されたマップデータに基づいて色計算が行われ所定の描画処理が行われる。
【0039】
【発明の実施の形態】
以下、本発明の実施形態を、毛皮のような線状物質の描画を例として図面に関連付けて説明する。
【0040】
図1は、本発明に係る画像処理装置の一実施形態を示すブロック構成図である。
【0041】
本実施形態に係る画像処理装置10は、2次元マップを用いた毛皮のような線状物質の描画が可能である。
具体的には、画像処理装置10は、たとえば毛皮を半透明層(シェル:shell)として重ね合わせて描画する。このとき、本画像処理装置10は、3次元マップを用いず、単一の2次元マップを用いて描画する。
また、本画像処理装置10におけるマップのサンプリング方法は、Lengyelの方法のように、毛皮を高さ方向にスライスして、それぞれを別々のシェルに対応するマップとみなすのではなく、毛の全体を皮膚面に相当する2次元マップ上に投影する。
そして、本画像処理装置10では、1枚のマップに投影により見える毛全体の情報が格納される。
本画像処理装置10では、このように、表現したい毛をなるべく分断しないようにサンプリングすることで、少ないメモリ容量で高画質な表現を可能としている。
【0042】
また、本実施形態に係る画像処理装置10は、Lengyelの方法のように、高品質な毛皮の表現を行うために、描画パイプラインを通してシェルの複数描画を行うのではなく、描画パイプラインのみではなく、メモリに局所的な処理を補助的に利用することによって、描画パイプラインからの情報を削減することが可能に構成される。
また、画像処理装置10では、エッジ近傍の画質の改善のために、フィルタ処理を用いている。
描画ハードウェアは、メモリの局所的な処理をより多く用意できる可能性がある。本実施形態に係る画像処理装置10は、このような処理を通常の描画処理と並行して行うことにより、高品質な画像を高速に描画しようというものである。
【0043】
本実施形態に係る画像処理は、描画前処理および描画時処理から構成される。描画前処理は毛のモデル作成やマップ作成処理を含み、描画前に一度だけ行う。描画時処理は描画前に作成されたマップを用いて、リアルタイムで行う処理である。
以下に、本実施形態に係る画像処理装置10の具体的な構成および処理内容について詳述する。
【0044】
本画像処理装置10は、図1に示すように、マップ作成部11、マップ保持部12、マップデータ処理部13、オブジェクト発生部14、描画部15、メモリ16、およびフィルタ処理部17を有している。
描画前処理はマップ作成部11およびマップ保持部12で行われ、描画後処理は、オブジェクト発生部13、描画部15、メモリ16、およびフィルタ処理部17により行われる。
また、オブジェクト発生部14によりシェル発生手段が構成され、描画部15およびフィルタ処理部17により描画手段が構成される。
【0045】
本実施形態において利用するバッファは以下のとおりである。これらは図1のメモリ16に保持される。
すなわち、利用するバッファは、一時計算用フレームバッファfbuf1, fbuf2、一時計算用デプスバッファzbuf、一時計算用インデックスバッファibuf、一時計算用カウンタバッファcbuf、最終出力用フレームバッファFBUF、および最終出力用デプス(z)バッファZBUFである。
メモリ16は、シェルの各層の描画前に、各バッファを以下のように初期化する。
【0046】
【数5】
Figure 2004054621
【0047】
具体的には、メモリ16は、一時計算用カウンタバッファcbuf、一時計算用フレームバッファfbuf1, fbuf2を0に初期化し、一時計算用デプスバッファzbufを最終出力用フレームバッファFBUFの内容に初期化する。
【0048】
また、描画時処理は、たとえば皮膚の描画、シェルの描画、フィルタ処理、合成処理から構成される。
最初に皮膚を不透明物体としてフレームバッファfbuf1 、zバッファZBUF1 に描画する。続いて、シェルを複数回重ね描きすることにより毛皮を表現する。
各シェルの描画はフレームバッファfbuf1 、zバッファZBUF1 とは異なる一時的なフレームバッファfbuf2 、zバッファZBUF2 に描画する。ここでフィルタ処理を行った後、フレームバッファfbuf1 、zバッファZBUF1 と合成を行う。
【0049】
マップ作成部11は、描画前処理としての毛のモデル作成および2次元マップ作成を行い、作成した2次元マップをマップ保持部12に格納する。
マップ作成部11は、毛のモデル作成にあたっては、所定の毛データを受けて、図2に示すように、毛は折れ線として、2軸を2次のテクスチャ空間のs,t軸とし、s,t軸と直交するh軸を更に持つ3次元空間上に作成する。
マップ作成部11は、2次元マップ作成にあたっては、作成したモデルに基づいて、図3に示すように、h軸の上方から(s、t)平面に投影することで作成する。
マップ作成部11は、生成した2次元マップには、シェルの描画時に必要なパラメータ(Kd、Ks、Ka、Tt、cov、shininess)、および0〜1に正規化された高さ(h)情報を含ませる。
ここでKd、Ks、Kaはそれぞれ拡散(diffuse)、鏡面(specular)、周囲(ambient)の反射係数、shininessは鏡面(specular)の指数値であり、Ttは毛の方向ベクトル(s、t、h)であり、たとえば第1のベクトルに相当する。また、covはテクセルに毛が占める面積を表している。
【0050】
上述したように、マップ作成部11は、作成したモデルに基づいて、図3に示すように、h軸の上方から(s、t)平面に投影することで2次元マップを作成する。この場合、同一テクセルに複数の毛がかかる場合、一番上に存在する毛のみをテクセルに反映することとして処理することが可能である。
しかし、これでは、細い毛を描画するときに不都合が生じることから、本実施形態に係るマップ作成部11は、同一テクセルに複数の毛のパラメータを書き込む。
各テクセルにN個の毛の情報を書き込む場合、たとえば下記の数6のように計算を行う。
なお、ここでは、より下の毛の情報は添え字を小さく、上の毛の情報は添え字を大きくなるように、ソーティングが成されているとする。また、上の毛の見え方が最も影響すると思われることから、hは最も上の毛の高さを利用することとしている。
【0051】
【数6】
Figure 2004054621
【0052】
ただし、/は文字上に付されるバーの代わりに用いた記号であり、ベクトルを示す。
【0053】
マップ保持部12は、たとえばSRAM等のメモリにより構成され、マップ作成部11で作成され、各種パラメータや高さ情報が付加された2次元マップを保持する。
マップ保持部12は、描画時に保持する各種パラメータや高さ情報が付加された2次元マップデータがオブジェクト発生部14により読み出される。
また、マップ保持部12は、図4に示すように、描画部15からマップアドレスMA15を取得し(ST1)、保持したマップデータに含まれるベクトルとは別に第2のベクトルデータVCTを取得し(ST2)、マップアドレスの近傍データ(フィルタ処理に必要なテクセルのマップデータ)について、取得したベクトルデータVCTとマップ内マップデータに含まれるベクトルデータとの内積の絶対値を計算し(ST3)、フィルタ処理に必要なテクセルのマップデータを、算出した内積の絶対値とともに、たとえば4つのマップデータMD12A〜MD12Dとしてマップデータ処理部13に出力する。
【0054】
なお、本実施形態では、図1およびステップST2に示すように、ベクトルはマップデータの要求時に常に入力されるように構成されているが、その限りではなく、たとえばマップ保持部12の内部レジスタ121に情報を設定するように構成することも可能である。
また、マップ保持部12はベクトルをそのまま出力したとしてもフィルタ処理以前にベクトルの内積の絶対値を取り、これを基にフィルタ処理を行うことにより、同様の効果を得ることが可能である。
【0055】
一般に、色計算式は内積の絶対値の単調関数となる場合が多い。Phongのライティング式では、数7に示すように、拡散成分cdは、法線ベクトル<n>と光源ベクトル<l>の内積の絶対値に比例する。また、反射成分csは、法線ベクトルとハーフベクトル<h>の内積の絶対値のべき乗で表せる。
なお、記号^はべき乗を表している。
【0056】
【数7】
Figure 2004054621
【0057】
また、Kajiyaのライティング式をよりハードウエア化に適するように簡易化されたライティング式がLengylから提案されている。これは以下のように表せる。
【0058】
【数8】
Figure 2004054621
【0059】
これらいずれも、内積の絶対値に対して単調であり、かつこの値を用いて色計算を行うことが可能である。
したがって、これらのいずれの場合にも、本実施形態に係る画像処理装置10の手法は有効である。
以後は、フィルタ処理部は、メモリ保持部から与えられたマップデータをフィルタ処理を行う。
【0060】
マップデータ処理部13は、描画部15により供給されるマップアドレスの小数部DCM15、およびマップ保持部12により供給されたマップデータMD12A〜MD12Dよりマップデータに対してフィルタ処理、具体的には線形補間して、フィルタ処理後のマップデータMD13を描画部15に出力する。
【0061】
オブジェクト発生部14は、描画処理時に、マップ保持部12に保持された2次元マップを読み出し、2次元マップデータMPD12に基づいて毛皮に関する同心の複数のシェルを発生して、データD14として描画部15に供給する。
また、オブジェクト発生部14は、シェルを後記する理由により、視線の裏側の面は外側から内側に向かってシェルを発生し、視線の表側の面は内側に向かって表側にシェルを発生する。
オブジェクト発生部14の処理の概要は、下記の数9に示すように、皮膚面の描画、裏側の描画、表側の描画である。
【0062】
数9に表したofs [ ] にはシェルが皮膚面からどれだけ膨らんでいるかを示す値であり、ofs [ 0 ]が最もふくらみが小さく、添え字が増すにつれてofs の値は増加する。ofs [ 0 ]は最も奥にあることを意味する。
また数9中、draw_obj (ofs, face) はオブジェクトを、頂点ofs だけ法線方向に膨らませて発生する処理を示している。
faceは裏面あるいは表面を指定し、それぞれ視線に対して裏側の面、表側の面のみを発生する。
【0063】
【数9】
Figure 2004054621
【0064】
さらに具体的には、オブジェクト発生部14は、皮膚は毛皮とは異なり、不透明物体としてフレームバッファfbuf1 、zバッファzbuf1 に対して描画する。
このとき、zテストおよびz値更新を可として描画する。
シェルの描画処理は、ジオメトリ処理/頂点単位処理/ピクセル単位処理に分けて考えることができるが、オブジェクト発生部14においては、ジオメトリ処理および頂点単位処理を行う。
【0065】
ジオメトリ処理では、膨らませ度合いの異なるシェルを順番に発生する。また、発生したシェル毎に、各種パラメータを指定する。また、テクスチャの拡張係数も指定する。
【0066】
ここで、本実施形態に係るオブジェクト発生部14において採用する基本的なシェルの発生方法について説明する。
【0067】
本方法では2次元のマップを用いて描画を行う。そのため単純に描画すると厚みのない毛皮となってしまう。
そこで、シェルを用いて、同一マップを繰り返し描画することで厚みを持たせるようにシェルを発生する。
【0068】
図5は、3つのシェルに同一のマップを用いた場合を表現した図である。
図5に示すように、シェルSHLの重なりが厚みを表現できる。ここでは3つのシェルSHL1〜SHL3が存在しているが、マップとしては一種類のみを利用する。
また、視線に対して表側の面を描画する場合は、下側から上側へと順番にシェルを発生し、重ね描きすることで、厚みを表現することができる。
なお、エッジ近傍では視線に対して裏側の面も描画する必要がでてくる。この場合のシェルの発生方法については後述する。
【0069】
実際に発生している毛の場合、外側のシェルには毛の先端側のみが、内側のシェルには毛の末端側のみが現れるはずである。これを表現するために、各シェルに高さの上下限値(hmax/hmin)を設定する。
この場合、外側のシェルほど、より高い上下限値(hmax/hmin)を持つように設定する。
その理由は、シェル描画時に、テクセルに含まれる高さ値hと上下限値(hmax/hmin)を比較し、上限値が下限値以上(hmax>=h>hmim)の場合にのみ描画し、これ以外の場合には描画しないようにするためである。
このようにすると、図6に示すように、離散的ではあるが、高さ方向に傾きのある毛を描画することができる。
なお、離散的であるということは、後段のフィルタ処理により解決される。
【0070】
さらに、オブジェクト発生部14は、エッジ近傍への対応として以下の処理を行う。
オブジェクト発生部14は、図7に示すように、シェルを視線EYに対して表側と裏側に分離して描画するようにシェルを発生する。
最初に視線EYの裏側のシェルを外側から内側の向かって順番に描画する。この段階で、図7ではA、Bという順番で描画される。
続いて、表側のシェルを内側から外側に向かって順番に描画する。これにより、図7において、A、Bに続いてC、Dという順番で描画され、正しい順番で色を重ねることができる。
【0071】
次に、シェルへのマップの割り当て方法について説明する。
本実施形態では、2次元マップを用いるため、情報の欠如が生じる場合がある。
図8に示すように、毛同士が重なっている場合、下側の毛の高さ情報は失われてしまう。
このように、下側の毛の高さ情報が失われると、毛皮を視線を変化させて見た場合の可視性の変化(下側の毛が見えたり見えなかったりする)が上手く表現できなくなる。
この問題への解決するために、本実施形態では、図9(A),(B)に示すように、複数のマップを用いる。
1枚のマップに共存できない情報であっても、異なるマップには存在できるため、上記の問題を解決できる。
検討した範囲では、3〜5種類程度のマップを用意し、図10に示すように、各層LYR1.LYR2,・・毎に微妙に高さを変えて描画すると、毛皮として十分な画質を得ている。
図10の例では、第1層LYR1にマップA〜Eの5種類のマップが含まれ、第2層LYR2にマップA〜Eの5種類のマップが含まれている。
そして、描画対象のシェルを構成するマップが含まれる層番号(層番号LYR1、あるいはLYR2等)がデータD15として描画部15に供給される。
複数種類のマップを持つのではなく、1枚のマップでも同様の効果を出すことが可能である。これはマップを引くときのテクスチャアドレスに一定の(種類に応じた)オフセットを加えることで実現できる。この方法であれば、1種類のマップだけで描画できるため、メモリ容量の上で有利である。
【0072】
次に、セルフシャドウの効果の指定について説明する。
毛皮の色は根元の方ほど暗い色となる。これは入出力光が、より上の毛皮により減衰するためである。この減衰の効果はBanksによって、数10のように毛の密度pと光の通過する距離dの関数として与えられている(Banks,D.,C.,Illumination In Diverse Codimentions,SIGGRAPH 94,pp.327−334 参照)。
【0073】
【数10】
Figure 2004054621
【0074】
光の通過する距離dは光の入射角により変化するため、数10は光の入射角によって減衰の割合が変化することを示している。
ここではより簡略化して、各シェルで−定の減衰率(att)を持つと考える。上側のシェルは1に近いatt値を持ち、下側のシェルは0に近いatt値を持つものとする。これは光の入射角による減衰の割合の変化を無視しているが、画質的に大きな影響はない。
【0075】
次に、テクスチャ拡張係数の指定について説明する。
ベクトル計算に用いるテクスチャ拡張係数szoom、tzoom(テクスチャのs方向、t方向の視野座標系における拡大縮小の割合)を求める。
この場合、均質にテクスチャが貼られてる場合であれば、三角形毎にこの値を求める必要はなく、シェル描画時に一度だけ指定すれば良い。
【0076】
また、オブジェクト発生部14は、頂点単位の処理としては頂点の移動、テクスチャ座標の移動を行う。
三角形単位での頂点位置の移動を行うことで、シェルを作成する。頂点における法線Nおよびオフセットnofsを用いて、頂点位置を以下の数11のように変更する。
【0077】
【数11】
Figure 2004054621
【0078】
テクスチャ座標の移動に関しては、テクスチャアドレスのオフセットを下記の数12のように変更することで、異なるマップを用いた場合と同等の効果を与えるようにしている。
【0079】
【数12】
Figure 2004054621
【0080】
描画部15は、オブジェクト発生部14によりオブジェクトデータであるシェルデータ(プリミティブデータ)D14に基づいて、描画対象のシェルを構成するマップのマップアドレスMA15(および/またはベクトルデータVCT)をマップ保持部12に出力し、また、マップアドレスの小数部DCM13をマップデータ処理部13に供給する。
描画部15は、マップデータ処理部13から供給されたマップデータMD13、およびオブジェクト発生部14によりオブジェクトデータであるシェルデータ(プリミティブデータ)D14に基づいて、方向ベクトル <t> のウィンドウ座標系でのベクトル<tw>を求め、これからフィルタカーネル用のインデックス(index )を求める。
描画部15は、オブジェクト発生部14が発生したプリミティブをラスタライズした後、以下の数13に示すように色、フィルタカーネル用のインデックス(index )を計算し信号S15としてフィルタ処理部17に出力する。
なお、描画部15は、数13に示すように、色計算にあたって、エッジ部での透過度を調整する。
【0081】
【数13】
Figure 2004054621
【0082】
atblはカーネルにおける有効な要素kとした場合、1/kが格納されている。これはカーネルによってピクセルを膨らませる場合、それに応じて透過度を小さくする必要があるためである。
また、a を|cos(<n>, <e>) |により除算する。
また、x, yの最大/最小値を保持するのは、必ずしも必要ではないが、後述のフィルタ処理部17において、フィルタを行う範囲を限定するために有効である。
【0083】
ここで、描画部15におけるウィンドウ座標系での2次元ベクトル<tw>の求める処理について説明する。
【0084】
基本的に、<tw>の方向にピクセルを拡大する。
以下では、図11に示すように、元となるピクセルから<tw>の方向に伸びる直線から、距離W以内の範囲のピクセルを有効である場合のフィルタを考える。
この領域を判定する方法を、以下で考える。もととなるピクセルから対象となるピクセルへのベクトルを<g> とする。
図12に示す通り、元のピクセルから<tw>の方向に伸びる直線と、対象となるピクセルとの距離は|g |sin(<g>, <tw>)となる。
なお、図13では、もとのピクセルを白丸PXL1、対象となるピクセルPXL2として示している。
これらから、以下の数14のような方策で、対象となるピクセルを選択すれば良いことになる。
【0085】
【数14】
Figure 2004054621
【0086】
この式で定義される領域は、無限の長さを持つが、実装上はカーネルサイズが有限であるために、定義領域も有限となる。
図13に示すように、<t> をウィンドウ座標系での2次元ベクトル<tw>に変換する。
変換には、射影行列Pとしたとき(P−1 を用いて、以下のように行うことができる。
【0087】
【数15】
Figure 2004054621
【0088】
描画部15は、基本的にはピクセル単位の処理を行うが、ピクセル単位の処理としては、色の計算、透過度の計算を行う。また、フィルタ処理に用いるためのベクトルの計算を行う。
以下に、色の計算、透過度の計算、ベクトルの計算の各処理についてさらに詳細に説明する。
【0089】
まず、色の計算について説明する。
色計算には、たとえばLengyel(Lengyel,E.J., Real−Time Fur, Eurographics Rendering Workshop 2000, pp.243−256 )に提案された簡易化された、数16に示すような、ライティング式を用いる。
【0090】
【数16】
Figure 2004054621
【0091】
ここで、/Tはマップから取得した毛の方向ベクトル/Tt(各要素がs,t,hで表される)を、接空間の基底ベクトル(/N,/PU,/PV)を用いて、下記の数17に基づいて視野座標系に変換したものである。
Cdl,Csl,Calは、それぞれ拡散(diffuse),鏡面(specular),周辺(ambient)の光源色を示す。またattはセルフシャドウの効果を導入するための減衰率である。また、/Tt・s、/Tt・t、/Tt・hは、それぞれ/Ttのs,t,h,成分を表す。
【0092】
【数17】
Figure 2004054621
【0093】
次に、透過度の計算について説明する。
透過度αは、マップから取得したcovを以下の数18のように変調して用いる。ここでcovは毛がテクセルに占める割合を表している。
【0094】
【数18】
Figure 2004054621
【0095】
ここで、/nは法線ベクトル、/eは視線ベクトルである。afは、上述したように、シェルに指定された上下限値(hmax/hmin)とh値との関係によって、描画するかどうかを制御するためのフラグである。
また、cos(/n,/e)による除算は、以下のような理由による。
2次元のマップ上には、たとえば図14に示すように、毛が描画される。
図15(A)に示すように、このマップを正面から見た場合の毛の太さが正しいものとすると、図15(B)に示すように、これを横方向に傾いて見た場合はより細く見える。その結果、エッジ近傍での毛の色は薄くなってしまう。上記のcosによる除算は、エッジ部分で正しい画質を得るために必要となる。
【0096】
また、描画部15は、zバッファzbuf2 を用いてzテストを行いながら、色と透過度をフレームバッファfbuf2 に、z値をzバッファzbuf2 に出力する。zテストは、描画ピクセルのZ値がzバッファzbuf2 の内容よりも手前にあるときに成功する。
【0097】
フィルタ処理部17は、描画部15により信号S15として供給されたN×Nのフィルタカーネル用インデックスvld[index][N][N]を用いて、下記の数19に示すように、フィルタ処理を行い、各シェルの描画およびフィルタ処理が完了した後、zバッファzbuf2 とzバッファzbuf1 によりzテストを行い、zバッファzbuf2 の方が手前にある場合に、zバッファzbuf2 とzバッファzbuf1 の内容をアルファブレンド処理する。
フィルタ処理部17は、方向ベクトルに基づいてフィルタカーネルを変更し、描画対象物の向かっている方向にピクセルの情報を膨らませて、各シェル間で連続性を持たせるフィルタ処理を行う。
なお、画面の必要領域は、フィルタ処理部17により与えられる数11における描画時にxmax, xmin, ymax, yminを保持することにより判断できる。
また、フィルタ処理部17は、フィルタ処理を行う領域の範囲を記憶しておき、当該記憶した領域に対してのみフィルタ処理を行うように構成することも可能である。
また、フィルタ処理部17は、フィルタ処理を行う回数を、層描の都度ではなく、途中の数回のみ行うように構成することも可能である。
【0098】
【数19】
Figure 2004054621
【0099】
なお、数19で用いるフィルタカーネルの内容vld []、および数13で用いるatbl[]については、たとえば下記のように事前に計算すると、線状物体がより滑らかに結合するようになる。
【0100】
【数20】
Figure 2004054621
【0101】
これは図11に示すように、カーネルの中心を通り<tw>の方向に伸びる直線から、距離W の範囲にある部分を選択するものである。
最初に<tw>=(tx,ty)で各index に対応する<tw>を求めている。index は0〜 INDEX_NUM−1 の値をとり、x軸の正の方向から反時計周りに一回りするようにしている。
<g>=(i−KERNEL _SIZE/2…) で、カーネル中心から要素(i,j) に向かうベクトル<g> を求めている。同時に<g> の大きさをgnorm としている。<g> はその後、正規化される。
if(gnorm* …) 以下で、直線からの距離がW よりも小さい範囲のピクセルの有効フラグを1としている。W 以上の範囲のピクセルの有効フラグは0とする。これは図12に示すように、要素(i,j) の直線からの距離はgnorm*sin(<tw>,<g>)で表されるので、この値とW との大小比較で求めることができる。
数13で用いるatblの値をここで求めることができる。すなわち、このカーネルを用いてフィルタ処理を行うと、1ピクセルがどれだけの面積に広げられるかがわかっている(カーネル内の有効ピクセル数で表される)ため、この逆数を事前に計算し、テーブルとして所持しておく。数9において、フィルタ後に透過度にatblの値を乗ずる。
【0102】
本実施形態では、毛をシェル毎に分断するため、図6に示すように、特にエッジ付近で不連続性が目立つ。
本来は図16に示すように、連続して表現されるべきものである。
そこで、図17に示すように、画面上でフィルタ処理を施すことにより、擬似的に連続性を保つことができる。
このフィルタは、毛が向かっている方向に細長い形状にピクセルの情報を膨らませるものである。これを行うために、毛がどちらに向かっているかを示すベクトル<t>を、上述した数19のように、ウィンドウ座標系で与える必要がある。
【0103】
次に、図1の構成の画像処理装置の動作を説明する。
【0104】
まず、描画前処理として、マップ作成部11において、毛のモデル作成および2次元マップ作成が行われ、作成した2次元マップがマップ保持部12に格納される。
なお、生成した2次元マップには、シェルの描画時に必要なパラメータ(Kd、Ks、Ka、Tt、cov、shininess)、および0〜1に正規化された高さ(h)情報が含まれている。
【0105】
そして、オブジェクト発生部14において、描画処理時に、マップ保持部12に保持された2次元マップが読み出され、2次元マップデータに基づいて毛皮に関する同心の複数のシェルが発生されて、データD14として描画部15に供給される。
オブジェクト発生部14においては、視線の裏側の面は外側から内側に向かってシェルが発生され、視線の表側の面は内側に向かって表側にシェルが発生される。
【0106】
描画部15においては、オブジェクト発生部14によりオブジェクトデータであるシェルデータ(プリミティブデータ)D14に基づいて、描画対象のシェルを構成するマップのマップアドレスMA15がマップ保持部12に供給され、マップアドレスの小数部DCM15がマップデータ処理部13に出力される。
【0107】
マップアドレスMA15を受けたマップ保持部12においては、保持したマップデータに含まれる第1のベクトルとは別に第2のベクトルデータVCTが指定され、マップアドレスの近傍データ(フィルタ処理に必要なテクセルのマップデータ)について、指定されたベクトルデータVCTとマップ内マップデータに含まれるベクトルデータとの内積の絶対値が計算される。
そして、マップ保持部からは、フィルタ処理に必要なテクセルのマップデータが、算出した内積の絶対値とともに、マップデータMD12A〜MD12Dとしてマップデータ処理部13に出力される。
【0108】
マップデータ処理部13においては、描画部15により供給されるマップアドレスの小数部DCM15、およびマップ保持部12により供給された複数のマップデータMD12A〜12Dを受けて、マップデータに対してフィルタ処理、具体的には線形補間が施される。マップデータ処理部13からはフィルタ処理後のマップデータMD13が描画部15に出力される。
【0109】
描画部15においては、マップデータ処理部13により供給された2次元マップデータ、およびオブジェクト発生部14によりオブジェクトデータであるシェルデータに基づいて、ベクトル <t> のウィンドウ座標系でのベクトル<tw>が求められる。
そして、求めたウィンドウ座標系でのベクトル<tw>に基づいてフィルタカーネル用のインデックス(index )が求められる。
描画部15においては、オブジェクト発生部14が発生したプリミティブがラスタライズされた後、数13に示すように色、フィルタカーネル用のインデックス(index )が計算され信号S13としてフィルタ処理部17に出力される。
なお、描画部15においては、色計算にあたって、エッジ部での透過度が調整される。
フィルタ処理部17において、求めたベクトルに基づいてフィルタカーネルが変更されて、描画対象物の向かっている方向にピクセルの情報を膨らませて、各シェル間で連続性を持たせるフィルタ処理が行われる。
【0110】
以上説明したように、本実施形態によれば、第1のベクトルデータを含む色計算用パラメータ保持する複数のマップデータを生成するマップ作成部11と、生成された複数のマップデータを保持し、マップアドレスMA15を取得し、保持したマップデータに含まれる第1のベクトルとは別に第2のベクトルデータVCTを取得し、マップアドレスの近傍データ(フィルタ処理に必要なテクセルのマップデータ)について、取得した第2のベクトルデータVCTとマップ内マップデータに含まれる第1のベクトルデータとの内積の絶対値を計算し、フィルタ処理に必要なテクセルのマップデータを、算出した内積の絶対値とともに、マップデータMD12A〜MD12Dとして出力するマップ保持部12と、マップ保持部12から出力されたマップデータに対してフィルタ処理(線形補間処理)を行い、マップデータMD13を出力するマップデータ処理部13と、マップデータ処理部13により出力されたマップデータに基づいて色計算を行い所定のフィルタ処理を含む描画処理を行う描画部15とを設けたので、ハードウェアの増大を防止しつつ、簡単な処理で色計算の結果、最適な色の中間値をとることができる。その結果、画質の劣化を防止できる利点がある。
【0111】
図18は、本実施形態における色計算の様子を示す図である。数2に示す拡散成分は、光源ベクトル<l>と方向ベクトル<t>の内積の絶対値に単調であるため、本実施形態のように、テクセルT11およびT12における内積の絶対値の補間を行った結果を用いて、色計算を行うと、図18に示すように、T11およびT12における色の中間の値を良好にとることができる。
さらに、図1を見ると明らかなように、色計算部を複数保持する必要もないため、ハードウェアコストも増大することもない。
【0112】
また、本実施形態において、描画対象物を複数のシェルとして重ね合わせて描画する画像処理装置において、2次元マップデータ、およびオブジェクト発生部14によりオブジェクトデータであるシェルデータに基づいて、ベクトル <t>のウィンドウ座標系でのベクトル<tw>を求め、これからフィルタカーネル用のインデックス(index )を求め、フィルタ処理部17に出力する描画部15と、描画部15により供給されたN×Nのフィルタカーネル用インデックスvld[index][N][N]を用いて、フィルタ処理を行い、各シェルの描画およびフィルタ処理が完了した後、zバッファzbuf2 とzバッファzbuf1 によりzテストを行い、zバッファzbuf2 の方が手前にある場合に、zバッファzbuf2 とzバッファzbuf1 の内容をアルファブレンド処理するフィルタ処理部17とを設けたので、シェルの描画によっても連続性を維持することが可能で、画質の劣化を防止でき、平坦で均質な素材のオブジェクトはもとより、複雑な形状のオブジェクトも高品位に描画することができる。
本実施形態によれば、たとえば鹿のように、比較的短毛であり毛が皮膚面に沿っているような場合の、毛皮の質感を、2次元のマップを用いて高速に描画することが可能である。
【0113】
また、本実施形態によれば、色計算にあって、エッジ部での透過度を調整することから、エッジ部分で高い画質を得ることが可能となる。
【0114】
【発明の効果】
以上説明したように、本発明によれば、ハードウェアの増大を防止しつつ、簡単な処理で色計算の結果、最適な色の中間値をとることができる。その結果、画質の劣化を防止できる利点がある。
【図面の簡単な説明】
【図1】本発明に係る画像処理装置の一実施形態を示すブロック構成図である。
【図2】本実施形態に係る毛のモデル作成について説明するための図である。
【図3】本実施形態に係る2次元マップの作成について説明するための図である。
【図4】本実施形態に係るマップ保持部の具体的な処理を説明するためのフローチャートである。
【図5】3つのシェルに同一のマップを用いた場合を表現した図である。
【図6】離散的に高さ方向に傾きのある毛を描画した場合を示す図である。
【図7】本実施形態に係るシェルの視線に対して表側と裏側に分離して描画する方法を説明するための図である。
【図8】毛同士が重なった状態で、毛の高さ情報が失われることを説明するための図である。
【図9】毛の高さ情報を失わせない方法を説明するための図である。
【図10】複数種のマップを用意し、各層毎に微妙に高さを変えて描画する方法を説明するための図である。
【図11】ウィンドウ座標の方向ベクトルを求める方法を説明するための図である。
【図12】ウィンドウ座標の方向ベクトルを求める方法を説明するための図である。
【図13】ウィンドウ座標の方向ベクトルを求める方法を説明するための図である。
【図14】毛の描画状態を示す図である。
【図15】エッジ部分の透過度を調整する理由を説明するための図である。
【図16】毛が連続的に描画される理想状態を示す図である。
【図17】
本実施形態に係るフィルタ処理を説明するための図である。
【図18】本実施形態における色計算の様子を示す図である。
【図19】各テクセルに線状物体の方向ベクトルを格納していることを説明するための図である。
【図20】2つの方向ベクトルが光源ベクトルの反対側に位置する場合を示す図である。
【図21】Kajiyaのライティング式の場合の色計算の様子を示す図であって、従来の課題を説明するための図である。
【符号の説明】
10…画像処理装置、11…マップ作成部、12…マップ保持部、13…マップデータ処理部、14…オブジェクト発生部、15…描画部、16…メモリ、17…フィルタ処理部。[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to an image processing apparatus and method for storing parameters for color calculation in a map, acquiring parameters in the map in a drawing manner, and performing color calculation.
[0002]
[Prior art]
The computer graphics (CG) technology, which creates and processes graphics and images using computer resources, has been actively researched and developed in conjunction with the recent increase in computational speed and the enhancement of drawing functions in computer systems. It has been put to practical use.
[0003]
For example, three-dimensional graphics expresses an optical phenomenon when a three-dimensional object is illuminated by a predetermined light source by using a mathematical model, and based on this model, shades, shades, and even patterns on the object surface. By pasting, a more realistic three-dimensional two-dimensional high-definition image is generated.
Such computer graphics have been increasingly used in CAD / CAM and other various application fields in development fields such as science, engineering, and manufacturing.
[0004]
The three-dimensional graphics generally includes a “geometry subsystem” positioned as a front end and a “raster subsystem” positioned as a back end.
[0005]
The geometry subsystem is a process of performing a geometric operation such as a position and a posture of a three-dimensional object displayed on a display screen.
In the geometry subsystem, an object is generally treated as an aggregate of a large number of polygons, and geometric calculation processing such as “coordinate conversion”, “clipping”, and “light source calculation” is performed in units of polygons.
[0006]
On the other hand, the raster subsystem is a process of painting each pixel constituting an object.
The rasterizing process is realized by, for example, interpolating the image parameters of all the pixels included in the polygon based on the image parameters obtained for each vertex of the polygon.
The image parameters referred to here include color (rendering color) data expressed in a so-called RGB format and the like, z values indicating a distance in the depth direction, and the like.
In recent high-definition three-dimensional graphics processing, f (fog: fog) for creating perspective and texture t (texture) for expressing reality by expressing the texture and pattern of the surface of an object, It is included as one of the image parameters.
[0007]
Here, the process of generating pixels inside the polygon from the vertex information of the polygon is often performed using a linear interpolation method called DDA (Digital Differential Analyzer).
In the DDA process, the inclination of data in the direction of the side of the polygon is obtained from the vertex information, the data on the side is calculated using this inclination, and then the inclination in the raster scanning direction (X direction) is calculated. The internal pixel is generated by adding the parameter change obtained from the above to the parameter value of the scanning start point.
[0008]
[Problems to be solved by the invention]
Incidentally, the calculation of the drawing color of each pixel, that is, the color calculation has a great influence on the surface material. The color calculation of the surface of a flat and homogeneous material is relatively easy, but the color calculation of eg animal fur is not easy. This is because the surface shape is complicated, the skin color is affected by the hair density, and the color is also changed by the hair flow.
[0009]
As the most basic method of drawing animal fur, there is a method of drawing hair one by one.
However, this method has a fundamental problem that the amount of calculation required to draw hair one by one becomes enormous.
Further, since hair is drawn as a translucent substance, it is necessary to sort (z-sort) in the depth direction in primitive units or pixel units. This also requires a huge amount of calculation.
[0010]
Kajiya has shown that a texture of fur can be expressed by scanning a texel in a line-of-sight direction using a three-dimensional map (Kajiya, J. T and Timothy L. Kay. Rendering Full with Three Dimensional Graphics, IGRP, 89, 1989). 271-280).
However, this method requires a long drawing time for scanning the texel in the line of sight. Further, a large-capacity memory area for holding the three-dimensional map is required.
[0011]
Goldman has developed a method of calculating a stochastic appearance and rapidly drawing the texture of fur by assuming that a very short hair growth like Dalmatian follows a Poisson distribution (Goldman). , DB, Fake Fur Rendering, SIGGRAPH 97, pp. 127-134).
This method does not require scanning of texels in the line of sight, and does not require a large-capacity memory.
However, this method is effective only when there are sufficiently many short hairs in one pixel, and is used, for example, when the hair is longer than Dalmatian or when there is not much hair in one pixel. I can't.
[0012]
Lengyel has proposed a method of drawing fur as a plurality of concentric translucent layers (hereinafter, referred to as shells) (Lengiel, EJ, Real-Time Fur, Eurographics Rendering Workshop 2000, pp. 243--). 256, and Lengyel, EJ, Real-Time Full over Arbitrary Surfaces, ACM 2001 Symposium on Interactive 3D Graphics (http://research.micros.com/.
This means that the fur can be drawn at high speed by drawing the shell several times from the inside and superimposing them. For calculating the color of each shell, a three-dimensional map created in advance from a hair model is used.
[0013]
They also implemented an implementation on the vertex shader, pixel shader in nVidia's GeForce, and showed that this method was indeed valid.
[0014]
In this method, the same map is repeatedly attached to the surface by using the method of Praun's wrapped texture (see Praun, E., Lapped Textures, SIGGRAPH 2000, pp. 465-470). The total amount of maps has been reduced.
However, this method still has a problem in that the map is still a pseudo three-dimensional map, and maps as many as the number of shells are still required.
[0015]
Further, as an essential problem of drawing using a shell, there is deterioration in image quality near an edge. In the vicinity of the edge, the drawing color of the hair becomes gradually faint. Further, since the drawing order of the shell is not correct near the edge, a correct color cannot be obtained.
Lengiel solves the problem of the image quality near the edge by using a fin-shaped primitive (fin: fin) perpendicular to the skin surface on the boundary of the mesh on the skin.
Fins are present anywhere on the boundary of the mesh, and are drawn only when the boundary of the mesh is close to the edge. In drawing the fins, a map (fin texture) different from the above-described three-dimensional map is used.
[0016]
Lengiel saves the required amount of memory by reusing one type of fin texture instead of preparing different fin textures on every boundary of the mesh.
However, Lengyel attempts only when the hair is generally standing perpendicular to the skin surface.
In this case, only one type of fin texture is needed. For example, when the hair is along the skin surface, various fin textures need to be selected from the relationship between the line of sight and the direction of the hair.
Therefore, the amount of memory required for the fin texture increases.
[0017]
In addition, since fins are drawn as translucent primitives, z-sorting must be performed for accurate color calculation, but Lengyel does not particularly mention this.
[0018]
Despite the problems described above, fur drawing using a shell is fast, and for objects with simple shapes, there is no need for sorting that matches the superimposition of translucent objects, except for drawing fins. There is.
[0019]
By the way, conventionally, in many methods using a map, the texel itself of the map has not been invalidated.
However, when a linear object such as hair is represented using a map, the texels shown in FIG. 19 include texels (valid texels) T11 and T21 related to hair and texels not related to hair (invalid texel). ) T12 and T22 exist.
[0020]
On the other hand, when the map data is acquired by the normal texture map, there is a case where the map data of the neighboring texel is calculated by filtering as shown in Expression 1 below.
Equation (1) shows a case where filter processing near four is performed. Generally, multidimensional filter processing may be performed more than this.
[0021]
(Equation 1)
Figure 2004054621
[0022]
Here, d11 to d22 are map data of neighboring texels, and d is map data of the final output. a11 to a22 are constants calculated based on the value of the decimal part of the map address.
[0023]
In the conventional texture mapping, map data in a texel usually stores color information.
On the other hand, a normal vector or a direction vector of a linear object may be stored as in bump mapping.
In the example of FIG. 19, the transmittance α and the direction vector <t> of the linear object are stored in each texel. When α = 0, it indicates that the corresponding texel is completely transparent, and when α = 1, it indicates that it is opaque.
For example, when a direction vector <t> of a linear object is given, the diffusion component c of the color is calculated as in the following Expression 2 using the lighting formula proposed by kajiya. In Equation 2, <1> indicates a light source vector, and cd indicates a product of a light source color and a diffuse color component of an object.
[0024]
(Equation 2)
Figure 2004054621
[0025]
As shown in FIG. 19, when the transparency α and the direction vector <t> are stored as the map data as shown in FIG. 19, filtering is performed in the same manner as in Expression 1.
[0026]
[Equation 3]
Figure 2004054621
[0027]
Here, c11 to c22 correspond to the diffusion colors c obtained by applying <t11> to <t12> to Equation 2, respectively.
Note that the above is a case where filtering is performed after color calculation. For example, if filtering is performed at the stage of the direction vector, the following Expression 4 is obtained.
[0028]
(Equation 4)
Figure 2004054621
[0029]
By the way, in the processing of Expression 3, since the filtering processing is performed after calculating the colors, four color calculation units are required. In general, color calculation involves complicated calculations, which has the disadvantage of increasing hardware costs.
On the other hand, the processing of Expression 4 can be realized with almost the same configuration as that of the conventional hardware because the vector stored in the map is directly filtered or interpolated.
However, when interpolating at the vector stage, image quality may be degraded. This will be described below.
[0030]
FIG. 20 is a diagram illustrating a case where two direction vectors <t11> and <t12> exist on the opposite side of the light source vector <1>. Here, it is assumed that these vectors are held in adjacent texels T11 and T12.
Depending on the map address, there may be a case where it is desired to take an intermediate value between texels T11 and T12. The problem is how to calculate the color in this case.
When performing vector interpolation, as shown in FIG. 20, a vector <t ′> between <t11> and <t12> is calculated. This will be used to calculate the color.
[0031]
FIG. 21 is a diagram schematically showing a state of color calculation in the case of the kajiya lighting equation (Equation 2).
As shown in FIG. 21, since both <t11> and <t12> form the same angle from <1>, almost the same diffused color is obtained.
However, <t ′> obtained by interpolating them has a very small angle with <1>, so that a color darker than these colors is obtained.
Originally, it suffices to obtain a color approximately halfway between the colors calculated by texels T11 and T12, but this cannot be obtained by linear interpolation of vectors.
[0032]
The present invention has been made in view of the above circumstances, and an object of the present invention is to provide an image capable of obtaining an optimum color intermediate value as a result of color calculation by simple processing while preventing an increase in hardware. An object of the present invention is to provide a processing apparatus and a method thereof.
[0033]
[Means for Solving the Problems]
In order to achieve the above object, an image processing apparatus according to a first aspect of the present invention holds map data for color calculation including first vector data, and stores second vector data provided separately and the first vector data. A map holding unit that calculates the absolute value of the inner product with the vector data of the map data and outputs the corresponding map data together with the calculated absolute value of the inner product, and performs a predetermined filtering process on the map data output by the map holding unit. A map data processing unit for performing a color calculation based on the map data output from the map data processing unit and performing a predetermined drawing process.
[0034]
Preferably, the map holding unit acquires a map address, and calculates an absolute value of an inner product of the second vector data and the first vector data for data near the map address.
[0035]
Preferably, the map data processing section performs linear interpolation on the map data.
[0036]
Preferably, the drawing means obtains a vector indicating a direction of a drawing target in which a plurality of translucent shells are superimposed, changes a filter kernel based on the obtained vector, and Filter processing is performed to expand the information of the pixels in the direction in which they exist and provide continuity between the shells.
[0037]
An image processing method according to a second aspect of the present invention includes a first step of holding map data for color calculation including first vector data, a step of separately providing second vector data and the first vector. A second step of calculating the absolute value of the inner product with the data, a third step of performing a predetermined filtering process on the map data including the absolute value of the inner product calculated in the second step, and And a fourth step of performing a predetermined drawing process by performing a color calculation based on the map data output in the step.
[0038]
According to the present invention, map data for color calculation including the first vector data is held in the map holding unit.
The map holding unit calculates the absolute value of the inner product of the separately provided second vector data and the first vector data. Then, corresponding map data is output to the map data processing unit together with the absolute value of the inner product calculated from the map holding unit.
In the map data processing section, a predetermined filter process, for example, a linear interpolation process is performed on the map data output from the map holding section, and the map data is output to the drawing section.
In the drawing means, color calculation is performed based on the map data output by the map data processing unit, and a predetermined drawing process is performed.
[0039]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, an embodiment of the present invention will be described with reference to the drawings, taking drawing of a linear substance such as fur as an example.
[0040]
FIG. 1 is a block diagram showing an embodiment of the image processing apparatus according to the present invention.
[0041]
The image processing device 10 according to the present embodiment can draw a linear substance such as fur using a two-dimensional map.
More specifically, the image processing apparatus 10 draws, for example, a superimposed fur as a translucent layer (shell). At this time, the image processing apparatus 10 draws using a single two-dimensional map without using a three-dimensional map.
Further, the method of sampling the map in the image processing apparatus 10 does not slice the fur in the height direction and treats each fur as a map corresponding to a separate shell, as in the method of Lengyel. Projection is performed on a two-dimensional map corresponding to the skin surface.
Then, in the image processing apparatus 10, information on the entire hair which is visible by projection is stored in one map.
In this way, the image processing apparatus 10 enables high-quality image expression with a small memory capacity by sampling the hair to be expressed as little as possible.
[0042]
In addition, the image processing apparatus 10 according to the present embodiment does not draw a plurality of shells through a drawing pipeline in order to express high-quality fur, as in the method of Lengiel, but only with the drawing pipeline. Instead, information from the drawing pipeline can be reduced by using processing local to the memory in an auxiliary manner.
Further, the image processing apparatus 10 uses filter processing to improve the image quality near the edges.
The drawing hardware may be able to provide more local processing of the memory. The image processing apparatus 10 according to the present embodiment intends to draw a high-quality image at high speed by performing such processing in parallel with normal drawing processing.
[0043]
The image processing according to this embodiment includes pre-drawing processing and drawing-time processing. The pre-drawing process includes hair model creation and map creation, and is performed only once before drawing. The drawing process is a process performed in real time using a map created before drawing.
Hereinafter, a specific configuration and processing contents of the image processing apparatus 10 according to the present embodiment will be described in detail.
[0044]
As shown in FIG. 1, the image processing apparatus 10 includes a map creating unit 11, a map holding unit 12, a map data processing unit 13, an object generating unit 14, a drawing unit 15, a memory 16, and a filter processing unit 17. ing.
The pre-drawing process is performed by the map creating unit 11 and the map holding unit 12, and the post-drawing process is performed by the object generating unit 13, the drawing unit 15, the memory 16, and the filter processing unit 17.
The object generating unit 14 forms a shell generating unit, and the drawing unit 15 and the filter processing unit 17 form a drawing unit.
[0045]
The buffers used in this embodiment are as follows. These are held in the memory 16 of FIG.
That is, the buffers used are temporary calculation frame buffers fbuf1, fbuf2, temporary calculation depth buffer zbuf, temporary calculation index buffer ibuf, temporary calculation counter buffer cbuf, final output frame buffer FBUF, and final output depth ( z) Buffer ZBUF.
The memory 16 initializes each buffer before drawing each layer of the shell as follows.
[0046]
(Equation 5)
Figure 2004054621
[0047]
Specifically, the memory 16 initializes the temporary calculation counter buffer cbuf and the temporary calculation frame buffers fbuf1 and fbuf2 to 0, and initializes the temporary calculation depth buffer zbuf to the contents of the final output frame buffer FBUF.
[0048]
The drawing process includes, for example, drawing of a skin, drawing of a shell, filtering, and combining.
First, the skin is rendered as an opaque object in the frame buffer fbuf1 and the z buffer ZBUF1. Subsequently, the fur is represented by repeatedly drawing the shell a plurality of times.
Drawing of each shell is performed on a temporary frame buffer fbuf2 and a z-buffer ZBUF2 different from the frame buffer fbuf1 and the z-buffer ZBUF1. After performing the filter processing here, synthesis is performed with the frame buffer fbuf1 and the z buffer ZBUF1.
[0049]
The map creating unit 11 creates a hair model and a two-dimensional map as a pre-drawing process, and stores the created two-dimensional map in the map holding unit 12.
When creating a hair model, the map creation unit 11 receives predetermined hair data, and as shown in FIG. 2, the hair is a polygonal line, the two axes are s and t axes of a secondary texture space, and s, It is created on a three-dimensional space further having an h-axis orthogonal to the t-axis.
When creating the two-dimensional map, the map creating unit 11 creates the two-dimensional map by projecting it from above the h-axis onto the (s, t) plane based on the created model, as shown in FIG.
The map creating unit 11 includes, in the generated two-dimensional map, parameters (Kd, Ks, Ka, Tt, cov, and sineness) necessary for drawing the shell, and height (h) information normalized to 0 to 1 Is included.
Here, Kd, Ks, and Ka are diffuse, specular, and ambient reflection coefficients, respectively, and shineshines is the index value of the specular surface, and Tt is the hair direction vector (s, t, h), for example, corresponding to the first vector. Cov represents the area occupied by the hair in the texel.
[0050]
As described above, the map creating unit 11 creates a two-dimensional map based on the created model by projecting from above the h-axis onto the (s, t) plane, as shown in FIG. In this case, when a plurality of hairs are applied to the same texel, it is possible to perform processing by reflecting only the top hairs on the texel.
However, this causes inconvenience when drawing fine hair, so the map creating unit 11 according to the present embodiment writes a plurality of hair parameters in the same texel.
When writing information on N hairs in each texel, calculation is performed, for example, as shown in the following Expression 6.
Here, it is assumed that sorting is performed such that information of lower hairs has a smaller suffix and information of upper hairs has a larger suffix. In addition, since the appearance of the upper hairs seems to have the greatest influence, h is determined to use the height of the uppermost hair.
[0051]
(Equation 6)
Figure 2004054621
[0052]
Here, / is a symbol used in place of the bar attached to the character and indicates a vector.
[0053]
The map holding unit 12 is configured by a memory such as an SRAM, for example, and holds a two-dimensional map created by the map creating unit 11 and added with various parameters and height information.
The map holding unit 12 reads out two-dimensional map data to which various parameters and height information to be held at the time of drawing are added by the object generation unit 14.
Further, as shown in FIG. 4, the map holding unit 12 obtains the map address MA15 from the drawing unit 15 (ST1), and obtains the second vector data VCT separately from the vector included in the held map data (ST1). ST2) The absolute value of the inner product of the acquired vector data VCT and the vector data included in the in-map map data is calculated for the vicinity data of the map address (map data of the texel required for the filtering process) (ST3), The texel map data required for the processing is output to the map data processing unit 13 as, for example, four map data MD12A to MD12D together with the calculated absolute value of the inner product.
[0054]
In the present embodiment, as shown in FIG. 1 and step ST2, the vector is always input when the map data is requested. However, the present invention is not limited thereto. For example, the internal register 121 of the map holding unit 12 may be used. It is also possible to configure so that information is set in the.
Further, even if the map holding unit 12 outputs the vector as it is, the same effect can be obtained by taking the absolute value of the inner product of the vector before the filtering process and performing the filtering process based on the absolute value.
[0055]
In general, the color calculation expression is often a monotonic function of the absolute value of the inner product. In the Phong lighting formula, as shown in Expression 7, the diffusion component cd is proportional to the absolute value of the inner product of the normal vector <n> and the light source vector <l>. The reflection component cs can be represented by a power of the absolute value of the inner product of the normal vector and the half vector <h>.
The symbol ^ represents a power.
[0056]
(Equation 7)
Figure 2004054621
[0057]
Lengyl proposes a simplified lighting formula that makes the Kajiya lighting formula more suitable for hardware. This can be expressed as:
[0058]
(Equation 8)
Figure 2004054621
[0059]
All of these are monotonic with respect to the absolute value of the inner product, and color calculation can be performed using this value.
Therefore, the method of the image processing apparatus 10 according to the present embodiment is effective in any of these cases.
Thereafter, the filter processing unit performs a filter process on the map data provided from the memory holding unit.
[0060]
The map data processing unit 13 filters the map data from the decimal part DCM 15 of the map address supplied by the drawing unit 15 and the map data MD 12 A to MD 12 D supplied by the map holding unit 12, specifically, performs linear interpolation. Then, the map data MD 13 after the filter processing is output to the drawing unit 15.
[0061]
The object generating unit 14 reads out the two-dimensional map held in the map holding unit 12 during the drawing process, generates a plurality of concentric shells related to the fur based on the two-dimensional map data MPD12, and generates the drawing unit 15 as data D14. To supply.
In addition, the object generation unit 14 generates a shell from the outside to the inside on the back side of the line of sight, and generates a shell from the outside to the inside on the front side of the line of sight for the reason described below.
The outline of the processing of the object generating unit 14 is drawing of the skin surface, drawing of the back side, and drawing of the front side as shown in the following Expression 9.
[0062]
The value of ofs [] in Expression 9 is a value indicating how much the shell swells from the skin surface. Ofs [0] has the smallest swelling, and the value of ofs increases as the subscript increases. ofs [0] means deepest.
In Equation 9, draw_obj (ofs, face) indicates processing that is performed by expanding the object by the vertex ofs in the normal direction.
The face designates the back surface or the front surface, and generates only the back surface and the front surface with respect to the line of sight, respectively.
[0063]
(Equation 9)
Figure 2004054621
[0064]
More specifically, the object generation unit 14 draws the skin as an opaque object on the frame buffer fbuf1 and the z buffer zbuf1 unlike the fur.
At this time, the z test and the update of the z value are drawn as permitted.
The shell drawing process can be considered by dividing it into geometry processing / vertex-based processing / pixel-based processing. The object generation unit 14 performs geometry processing and vertex-based processing.
[0065]
In the geometry processing, shells having different degrees of inflation are sequentially generated. In addition, various parameters are specified for each shell that has occurred. The expansion coefficient of the texture is also specified.
[0066]
Here, a basic shell generation method employed in the object generation unit 14 according to the present embodiment will be described.
[0067]
In this method, drawing is performed using a two-dimensional map. Therefore, if it is simply drawn, the fur becomes thin.
Therefore, a shell is generated so as to have a thickness by repeatedly drawing the same map using the shell.
[0068]
FIG. 5 is a diagram illustrating a case where the same map is used for three shells.
As shown in FIG. 5, the overlap of the shells SHL can express the thickness. Here, there are three shells SHL1 to SHL3, but only one type of map is used.
When the front side surface is drawn with respect to the line of sight, a shell can be generated in order from the lower side to the upper side, and the thickness can be expressed by overlapping and drawing.
In the vicinity of the edge, it is necessary to draw a surface on the back side with respect to the line of sight. A method of generating a shell in this case will be described later.
[0069]
In the case of hair that is actually occurring, only the distal end of the hair should appear in the outer shell and only the distal end of the hair should appear in the inner shell. In order to express this, the upper and lower limits of the height (hmax / hmin) are set for each shell.
In this case, the outer shell is set to have a higher upper / lower limit (hmax / hmin).
The reason is that at the time of shell drawing, the height value h included in the texel is compared with the upper and lower limit values (hmax / hmin), and drawing is performed only when the upper limit value is equal to or larger than the lower limit value (hmax> = h> hmim). This is to prevent drawing in other cases.
In this manner, as shown in FIG. 6, it is possible to draw hairs that are discrete but have a slope in the height direction.
Note that the discreteness is solved by a subsequent filtering process.
[0070]
Further, the object generating unit 14 performs the following processing as correspondence to the vicinity of the edge.
As shown in FIG. 7, the object generating unit 14 generates the shell so that the shell is drawn separately on the front side and the back side with respect to the line of sight EY.
First, the shells on the back side of the line of sight EY are drawn in order from the outside to the inside. At this stage, drawing is performed in the order of A and B in FIG.
Subsequently, the front shell is drawn in order from the inside to the outside. As a result, in FIG. 7, drawing is performed in the order of C and D following A and B, and colors can be superimposed in the correct order.
[0071]
Next, a method of assigning a map to a shell will be described.
In the present embodiment, since a two-dimensional map is used, lack of information may occur.
As shown in FIG. 8, when hairs overlap each other, the height information of the lower hairs is lost.
As described above, when the height information of the lower hair is lost, the change in visibility (the lower hair can be seen or not seen) when the fur is viewed by changing the line of sight cannot be expressed well. .
In order to solve this problem, in the present embodiment, a plurality of maps are used as shown in FIGS. 9A and 9B.
Even if the information cannot coexist in one map, it can exist in different maps, so that the above problem can be solved.
In the range considered, about 3 to 5 types of maps are prepared, and as shown in FIG. If the height is slightly changed for each of LYR2,..., Sufficient image quality as fur is obtained.
In the example of FIG. 10, the first layer LYR1 includes five types of maps A to E, and the second layer LYR2 includes five types of maps A to E.
Then, the layer number (layer number LYR1, LYR2, or the like) including the map constituting the shell to be drawn is supplied to the drawing unit 15 as data D15.
Instead of having a plurality of types of maps, the same effect can be obtained with one map. This can be realized by adding a constant (depending on the type) offset to the texture address when the map is drawn. This method is advantageous in terms of memory capacity because it is possible to draw with only one type of map.
[0072]
Next, the designation of the self-shadow effect will be described.
The color of the fur becomes darker toward the root. This is because the input and output light is attenuated by the fur above. The effect of this attenuation is given by Banks as a function of the hair density p and the distance d through which the light passes as shown in Equation 10 (Banks, D., C., Illumination In Diversity Coordinations, SIGGRAPH 94, pp. 146-64). 327-334).
[0073]
(Equation 10)
Figure 2004054621
[0074]
Since the distance d through which the light passes varies depending on the angle of incidence of the light, Equation 10 indicates that the rate of attenuation varies with the angle of incidence of the light.
Here, for simplicity, it is assumed that each shell has a constant attenuation rate (att). The upper shell has an att value close to 1 and the lower shell has an att value close to 0. This ignores the change in the rate of attenuation due to the incident angle of light, but does not have a significant effect on image quality.
[0075]
Next, the specification of the texture extension coefficient will be described.
The texture expansion coefficients szoom and tzoom (ratio of enlargement / reduction in the visual field coordinate system in the s and t directions of the texture) used for the vector calculation are obtained.
In this case, if the texture is uniformly applied, it is not necessary to obtain this value for each triangle, and it is sufficient to specify it once at the time of shell drawing.
[0076]
In addition, the object generation unit 14 performs the movement of the vertices and the movement of the texture coordinates as the processing of the vertices.
Create a shell by moving the vertex positions in triangle units. Using the normal N at the vertex and the offset nofs, the vertex position is changed as in the following Expression 11.
[0077]
[Equation 11]
Figure 2004054621
[0078]
Regarding the movement of the texture coordinates, the same effect as when a different map is used is obtained by changing the offset of the texture address as shown in the following Expression 12.
[0079]
(Equation 12)
Figure 2004054621
[0080]
The drawing unit 15 stores a map address MA15 (and / or vector data VCT) of a map forming a shell to be drawn on the map holding unit 12 based on shell data (primitive data) D14 which is object data by the object generation unit 14. And supplies the decimal part DCM13 of the map address to the map data processing unit 13.
Based on the map data MD13 supplied from the map data processing unit 13 and the shell data (primitive data) D14 which is object data by the object generation unit 14, the drawing unit 15 uses the direction vector <t> in the window coordinate system. A vector <tw> is obtained, and an index (index) for the filter kernel is obtained therefrom.
After rasterizing the primitive generated by the object generating unit 14, the drawing unit 15 calculates an index (index) for a color and a filter kernel as shown in the following Expression 13, and outputs the calculated index to the filter processing unit 17 as a signal S15.
Note that, as shown in Expression 13, the drawing unit 15 adjusts the transmittance at the edge in color calculation.
[0081]
(Equation 13)
Figure 2004054621
[0082]
When atbl is a valid element k in the kernel, 1 / k is stored. This is because, when a pixel is inflated by the kernel, it is necessary to reduce the transmittance accordingly.
Also, a is divided by | cos (<n>, <e>) |.
It is not always necessary to hold the maximum / minimum values of x and y, but it is effective to limit the range in which filtering is performed in the filter processing unit 17 described later.
[0083]
Here, the process of obtaining the two-dimensional vector <tw> in the window coordinate system in the drawing unit 15 will be described.
[0084]
Basically, the pixel is enlarged in the direction of <tw>.
In the following, as shown in FIG. 11, a filter is considered in which pixels within a distance W from a straight line extending in the <tw> direction from the original pixel are effective.
A method for determining this area will be considered below. Let <g> be the vector from the source pixel to the target pixel.
As shown in FIG. 12, the distance between the target pixel and the straight line extending in the <tw> direction from the original pixel is | g | sin (<g>, <tw>).
In FIG. 13, the original pixel is shown as a white circle PXL1 and the target pixel PXL2.
From these, it is sufficient to select a target pixel by a measure such as the following Expression 14.
[0085]
[Equation 14]
Figure 2004054621
[0086]
The region defined by this formula has an infinite length, but the implementation has a finite kernel size, so the defined region is also finite.
As shown in FIG. 13, <t> is converted into a two-dimensional vector <tw> in the window coordinate system.
For the transformation, when the projection matrix is P (P -1 ) t Can be carried out as follows.
[0087]
[Equation 15]
Figure 2004054621
[0088]
The drawing unit 15 basically performs processing in units of pixels. As processing in units of pixels, the drawing unit 15 performs calculation of color and calculation of transparency. In addition, a vector for use in the filtering process is calculated.
Hereinafter, each process of color calculation, transparency calculation, and vector calculation will be described in more detail.
[0089]
First, the calculation of the color will be described.
The color calculation includes, for example, a simplified lighting formula as shown in Expression 16 proposed in Lengiel (Lengiel, EJ, Real-Time Fur, Eurographics Rendering Works 2000, pp. 243-256). Used.
[0090]
(Equation 16)
Figure 2004054621
[0091]
Here, / T is obtained by using a hair direction vector / Tt (each element is represented by s, t, h) obtained from the map using a base vector (/ N, / PU, / PV) of a tangent space. , Based on the following equation (17).
Cdl, Csl, and Cal indicate the light source colors of diffuse, specular, and ambient, respectively. Att is an attenuation rate for introducing a self-shadow effect. Also, / Tt · s, / Tt · t, and / Tt · h represent s, t, h, and components of / Tt, respectively.
[0092]
[Equation 17]
Figure 2004054621
[0093]
Next, the calculation of the transmittance will be described.
The transmittance α is obtained by modulating cov obtained from the map as in the following Expression 18. Here, cov represents the ratio of the hair to the texel.
[0094]
(Equation 18)
Figure 2004054621
[0095]
Here, / n is a normal vector and / e is a line-of-sight vector. As described above, af is a flag for controlling whether to draw based on the relationship between the upper and lower limit values (hmax / hmin) and the h value specified for the shell.
The division by cos (/ n, / e) is based on the following reason.
Hair is drawn on the two-dimensional map, for example, as shown in FIG.
As shown in FIG. 15 (A), assuming that the thickness of the hair when this map is viewed from the front is correct, as shown in FIG. Looks thinner. As a result, the hair color near the edge becomes light. The above division by cos is necessary to obtain a correct image quality at the edge portion.
[0096]
The drawing unit 15 outputs the color and the transmittance to the frame buffer fbuf2 and outputs the z value to the z buffer zbuf2 while performing the z test using the z buffer zbuf2. The z test is successful when the Z value of the drawing pixel is before the contents of the z buffer zbuf2.
[0097]
The filter processing unit 17 uses the N × N filter kernel index vld [index] [N] [N] supplied as the signal S15 by the drawing unit 15 to perform the filter processing as shown in Expression 19 below. After the drawing and filtering of each shell are completed, a z test is performed using the z buffer zbuf2 and the z buffer zbuf1, and when the z buffer zbuf2 is closer to the front, the contents of the z buffer zbuf2 and the z buffer zbuf1 are converted to alpha. Blend.
The filter processing unit 17 changes the filter kernel based on the direction vector, expands pixel information in a direction toward the drawing target, and performs filter processing for providing continuity between shells.
The necessary area of the screen can be determined by holding xmax, xmin, ymax, and ymin at the time of drawing in Expression 11 given by the filter processing unit 17.
Further, the filter processing unit 17 may be configured to store a range of an area on which the filter processing is performed, and to perform the filter processing only on the stored area.
Further, the filter processing unit 17 can be configured to perform the filter processing only a few times in the middle of the layer drawing, not every time.
[0098]
[Equation 19]
Figure 2004054621
[0099]
Note that, for the content vld [] of the filter kernel used in Expression 19 and atbl [] used in Expression 13, for example, when calculated in advance as described below, the linear objects can be more smoothly combined.
[0100]
(Equation 20)
Figure 2004054621
[0101]
As shown in FIG. 11, a portion within the range of the distance W 1 is selected from a straight line extending through the center of the kernel in the direction of <tw>.
First, <tw> corresponding to each index is obtained by <tw> = (tx, ty). The index takes a value of 0 to INDEX_NUM-1 so that the index rotates counterclockwise from the positive direction of the x-axis.
<G> = (i-KERNEL_SIZE / 2...), And a vector <g> directed from the kernel center to the element (i, j) is obtained. At the same time, the size of <g> is gnorm. <G> is then normalized.
if (gnorm *...) In the following, the valid flag of a pixel whose distance from the straight line is smaller than W is set to 1. The valid flag of the pixel in the range of W or more is set to 0. Since the distance of the element (i, j) from the straight line is represented by gnorm * sin (<tw>, <g>), as shown in FIG. Can be.
The value of atbl used in Expression 13 can be obtained here. That is, if the filter processing is performed using this kernel, it is known how much area one pixel can be expanded (represented by the number of effective pixels in the kernel). Keep it as a table. In Equation 9, after filtering, the transmittance is multiplied by the value of atbl.
[0102]
In the present embodiment, since the hair is divided for each shell, discontinuity is particularly noticeable near the edge as shown in FIG.
Originally, as shown in FIG. 16, they should be continuously expressed.
Therefore, as shown in FIG. 17, by performing filter processing on the screen, pseudo continuity can be maintained.
This filter expands pixel information in an elongated shape in the direction in which the hair is facing. In order to do this, it is necessary to provide a vector <t> indicating the direction of the hair in the window coordinate system, as shown in Expression 19 above.
[0103]
Next, the operation of the image processing apparatus having the configuration shown in FIG. 1 will be described.
[0104]
First, as a pre-drawing process, the map creation unit 11 creates a hair model and a two-dimensional map, and stores the created two-dimensional map in the map holding unit 12.
The generated two-dimensional map includes parameters (Kd, Ks, Ka, Tt, cov, and sineness) necessary for drawing the shell, and height (h) information normalized to 0 to 1. I have.
[0105]
Then, the object generating unit 14 reads out the two-dimensional map held in the map holding unit 12 during the drawing process, and generates a plurality of concentric shells related to the fur based on the two-dimensional map data. It is supplied to the drawing unit 15.
In the object generating unit 14, a shell is generated on the surface on the back side of the line of sight from the outside to the inside, and a shell is generated on the surface on the front side of the line of sight inward.
[0106]
In the drawing unit 15, a map address MA15 of a map constituting a shell to be drawn is supplied to the map holding unit 12 based on shell data (primitive data) D14 as object data by the object generation unit 14, and the map address The decimal part DCM 15 is output to the map data processing unit 13.
[0107]
In the map holding unit 12 which has received the map address MA15, the second vector data VCT is specified separately from the first vector included in the held map data, and the vicinity data of the map address (the texel of the texel necessary for the filtering process) is specified. For the map data), the absolute value of the inner product of the designated vector data VCT and the vector data included in the in-map map data is calculated.
Then, the map holding unit outputs the texel map data necessary for the filtering process to the map data processing unit 13 as the map data MD12A to MD12D together with the calculated absolute value of the inner product.
[0108]
The map data processing unit 13 receives the decimal part DCM 15 of the map address supplied by the drawing unit 15 and the plurality of map data MD 12 A to 12 D supplied by the map holding unit 12, and performs filter processing on the map data. Specifically, linear interpolation is performed. The map data MD13 after the filter processing is output from the map data processing unit 13 to the drawing unit 15.
[0109]
In the drawing unit 15, based on the two-dimensional map data supplied by the map data processing unit 13 and the shell data that is the object data by the object generation unit 14, the vector <t> is a vector <tw> in the window coordinate system. Is required.
Then, an index (index) for the filter kernel is obtained based on the obtained vector <tw> in the window coordinate system.
In the drawing unit 15, after the primitive generated by the object generating unit 14 is rasterized, an index (index) for the color and the filter kernel is calculated as shown in Expression 13, and the calculated index is output to the filter processing unit 17 as a signal S13. .
In the drawing unit 15, the transparency at the edge part is adjusted in color calculation.
In the filter processing unit 17, the filter kernel is changed based on the obtained vector, and the filter processing is performed to expand the information of the pixels in the direction in which the drawing object is directed and to provide continuity between the shells.
[0110]
As described above, according to the present embodiment, the map creating unit 11 that generates a plurality of map data that holds the color calculation parameters including the first vector data, and holds the generated plurality of map data, The map address MA15 is obtained, the second vector data VCT is obtained separately from the first vector included in the held map data, and the vicinity data of the map address (texel map data required for the filtering process) is obtained. The absolute value of the inner product of the calculated second vector data VCT and the first vector data included in the in-map map data is calculated, and the texel map data required for the filtering process is mapped together with the calculated inner product absolute value. A map holding unit 12 that outputs data MD12A to MD12D, The map data processor 13 performs a filter process (linear interpolation process) on the map data and outputs map data MD13, and performs a color calculation based on the map data output by the map data processor 13 to perform a predetermined filter process. Since the drawing unit 15 for performing the drawing processing including the above is provided, it is possible to obtain the optimum intermediate value of the color as a result of the color calculation by a simple processing while preventing an increase in hardware. As a result, there is an advantage that deterioration of image quality can be prevented.
[0111]
FIG. 18 is a diagram illustrating a state of color calculation in the present embodiment. Since the diffusion component shown in Expression 2 is monotonic to the absolute value of the inner product of the light source vector <l> and the direction vector <t>, the absolute value of the inner product in the texels T11 and T12 is interpolated as in the present embodiment. When the color calculation is performed using the result, the intermediate values of the colors at T11 and T12 can be satisfactorily obtained as shown in FIG.
Further, as is apparent from FIG. 1, there is no need to hold a plurality of color calculation units, so that hardware cost does not increase.
[0112]
In the present embodiment, in an image processing apparatus that draws a drawing target object as a plurality of shells in a superimposed manner, a vector <t> based on the two-dimensional map data and the shell data as object data by the object generating unit 14. , A vector <tw> in the window coordinate system of the following formula, an index (index) for the filter kernel is obtained from the vector <tw>, and a rendering unit 15 that outputs the index to the filter processing unit 17 and an N × N filter kernel supplied by the rendering unit 15 Filter processing is performed using the index vld [index] [N] [N] for each shell, and after drawing and filter processing of each shell are completed, a z test is performed using the z buffer zbuf2 and the z buffer zbuf1, and the z buffer zbuf2 is processed. When the buffer is nearer, z buffer zbuf2 And a filter processing unit 17 for alpha blending the contents of the z buffer zbuf1 so that continuity can be maintained even by drawing a shell, image quality can be prevented from deteriorating, and objects of flat and uniform material can be prevented. In addition, an object having a complicated shape can be drawn with high quality.
According to this embodiment, it is possible to draw the texture of the fur when the hair is relatively short and the hair is along the skin surface, such as a deer, at high speed using a two-dimensional map. It is possible.
[0113]
Further, according to the present embodiment, in color calculation, since the transmittance at the edge portion is adjusted, it is possible to obtain high image quality at the edge portion.
[0114]
【The invention's effect】
As described above, according to the present invention, it is possible to obtain an optimum color intermediate value as a result of color calculation by simple processing while preventing an increase in hardware. As a result, there is an advantage that deterioration of image quality can be prevented.
[Brief description of the drawings]
FIG. 1 is a block diagram showing an embodiment of an image processing apparatus according to the present invention.
FIG. 2 is a diagram for describing hair model creation according to the embodiment.
FIG. 3 is a diagram for describing creation of a two-dimensional map according to the embodiment;
FIG. 4 is a flowchart illustrating a specific process of a map holding unit according to the embodiment;
FIG. 5 is a diagram illustrating a case where the same map is used for three shells.
FIG. 6 is a diagram showing a case where hairs having a discrete inclination in the height direction are drawn.
FIG. 7 is a view for explaining a method of drawing separately on the front side and the back side with respect to the line of sight of the shell according to the embodiment.
FIG. 8 is a diagram for explaining that hair height information is lost in a state where hairs overlap each other.
FIG. 9 is a diagram for explaining a method of not losing hair height information.
FIG. 10 is a diagram for explaining a method of preparing a plurality of types of maps and drawing the image by slightly changing the height for each layer.
FIG. 11 is a diagram for explaining a method of obtaining a direction vector of window coordinates.
FIG. 12 is a diagram for explaining a method for obtaining a direction vector of window coordinates.
FIG. 13 is a diagram for explaining a method of obtaining a direction vector of window coordinates.
FIG. 14 is a diagram illustrating a drawing state of hair.
FIG. 15 is a diagram for explaining the reason for adjusting the transmittance of the edge portion.
FIG. 16 is a diagram illustrating an ideal state in which hair is continuously drawn.
FIG.
It is a figure for explaining filter processing concerning this embodiment.
FIG. 18 is a diagram illustrating a state of color calculation according to the present embodiment.
FIG. 19 is a diagram for explaining that a direction vector of a linear object is stored in each texel.
FIG. 20 is a diagram illustrating a case where two direction vectors are located on opposite sides of a light source vector.
FIG. 21 is a diagram showing a state of color calculation in the case of the Kajiya lighting formula, and is a diagram for explaining a conventional problem.
[Explanation of symbols]
DESCRIPTION OF SYMBOLS 10 ... Image processing apparatus, 11 ... Map creation part, 12 ... Map holding part, 13 ... Map data processing part, 14 ... Object generation part, 15 ... Drawing part, 16 ... Memory, 17 ... Filter processing part.

Claims (8)

第1のベクトルデータを含む色計算用のマップデータを保持し、別途与えられる第2のベクトルデータと上記第1のベクトルデータとの内積の絶対値を計算し、計算した内積の絶対値とともに対応するマップデータを出力するマップ保持部と、
上記マップ保持部により出力されたマップデータに対して所定のフィルタ処理を行うマップデータ処理部と、
上記マップデータ処理部により出力されたマップデータに基づいて色計算を行い所定の描画処理を行う描画手段と
を有する画像処理装置。
Holds map data for color calculation including the first vector data, calculates the absolute value of the inner product of the separately provided second vector data and the first vector data, and calculates the absolute value of the inner product together with the calculated absolute value of the inner product. A map holding unit that outputs map data to be
A map data processing unit that performs a predetermined filtering process on the map data output by the map holding unit;
An image processing apparatus comprising: drawing means for performing a color calculation based on the map data output by the map data processing unit and performing a predetermined drawing process.
上記マップ保持部は、マップアドレスを取得し、マップアドレスの近傍データについて、上記第2のベクトルデータと上記第1のベクトルデータとの内積の絶対値を計算する
請求項1記載の画像処理装置。
The image processing apparatus according to claim 1, wherein the map holding unit obtains a map address, and calculates an absolute value of an inner product of the second vector data and the first vector data for data near the map address.
上記マップデータ処理部は、マップデータに対して線形補間を行う
請求項1記載の画像処理装置。
The image processing device according to claim 1, wherein the map data processing unit performs linear interpolation on the map data.
上記描画手段は、複数の半透明層であるシェルを重ね合わせた描画対象物の方向を示すベクトルを求め、求めたベクトルに基づいてフィルタカーネルを変更し、描画対象物の向かっている方向にピクセルの情報を膨らませて、各シェル間で連続性を持たせるフィルタ処理を行う
請求項1記載の画像処理装置。
The drawing means obtains a vector indicating a direction of a drawing target obtained by superimposing a plurality of translucent shells, changes a filter kernel based on the obtained vector, and sets a pixel in a direction toward the drawing target. The image processing apparatus according to claim 1, wherein the information processing is expanded to perform a filter process for providing continuity between shells.
第1のベクトルデータを含む色計算用のマップデータを保持する第1のステップと、
別途与えられる第2のベクトルデータと上記第1のベクトルデータとの内積の絶対値を計算する第2のステップと、
上記第2のステップで計算した内積の絶対値を含むマップデータに対して所定のフィルタ処理を行う第3のステップと、
上記第3のステップで出力されたマップデータに基づいて色計算を行い所定の描画処理を行う第4のステップと
を有する画像処理方法。
A first step of retaining map data for color calculation including first vector data;
A second step of calculating the absolute value of the inner product of the separately provided second vector data and the first vector data;
A third step of performing a predetermined filtering process on the map data including the absolute value of the inner product calculated in the second step;
A fourth step of performing a color calculation based on the map data output in the third step and performing a predetermined drawing process.
上記第2のステップにおいては、マップアドレスを取得し、マップアドレスの近傍データについて、上記第2のベクトルデータと上記第1のベクトルデータとの内積の絶対値を計算する
請求項5記載の画像処理方法。
6. The image processing according to claim 5, wherein in the second step, a map address is acquired, and an absolute value of an inner product of the second vector data and the first vector data is calculated for data near the map address. Method.
上記第3のステップにおいては、マップデータに対して線形補間を行う
請求項5記載の画像処理方法。
6. The image processing method according to claim 5, wherein in the third step, linear interpolation is performed on the map data.
上記第4のステップでは、複数の半透明層であるシェルを重ね合わせた描画対象物の方向を示すベクトルを求め、求めたベクトルに基づいてフィルタカーネルを変更し、描画対象物の向かっている方向にピクセルの情報を膨らませて、各シェル間で連続性を持たせるフィルタ処理を行う
請求項5記載の画像処理方法。
In the fourth step, a vector indicating the direction of the object to be drawn in which a plurality of translucent layers of shells are superimposed is obtained, a filter kernel is changed based on the obtained vector, and the direction in which the object to be drawn faces 6. The image processing method according to claim 5, wherein a filter process is performed to expand the information of the pixels to provide continuity between the shells.
JP2002211506A 2002-07-19 2002-07-19 Picture processor and its method Pending JP2004054621A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002211506A JP2004054621A (en) 2002-07-19 2002-07-19 Picture processor and its method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002211506A JP2004054621A (en) 2002-07-19 2002-07-19 Picture processor and its method

Publications (1)

Publication Number Publication Date
JP2004054621A true JP2004054621A (en) 2004-02-19

Family

ID=31934725

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002211506A Pending JP2004054621A (en) 2002-07-19 2002-07-19 Picture processor and its method

Country Status (1)

Country Link
JP (1) JP2004054621A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011031388A3 (en) * 2009-09-10 2011-05-05 Chevron U.S.A. Inc. Method for converting a digital image into a multi-dimensional geo-referenced data structure

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011031388A3 (en) * 2009-09-10 2011-05-05 Chevron U.S.A. Inc. Method for converting a digital image into a multi-dimensional geo-referenced data structure
US8605951B2 (en) 2009-09-10 2013-12-10 Chevron U.S.A. Inc. Method for converting a digital image into a multi-dimensional geo-referenced data structure

Similar Documents

Publication Publication Date Title
US5704024A (en) Method and an apparatus for generating reflection vectors which can be unnormalized and for using these reflection vectors to index locations on an environment map
US6674430B1 (en) Apparatus and method for real-time volume processing and universal 3D rendering
McReynolds et al. Advanced graphics programming techniques using OpenGL
US5880736A (en) Method system and computer program product for shading
US7081895B2 (en) Systems and methods of multi-pass data processing
US5949424A (en) Method, system, and computer program product for bump mapping in tangent space
US6532013B1 (en) System, method and article of manufacture for pixel shaders for programmable shading
US20070018988A1 (en) Method and applications for rasterization of non-simple polygons and curved boundary representations
JPH06348864A (en) Image display apparatus, computer graphic system and image display method
US8269770B1 (en) Tessellation of trimmed parametric surfaces by walking the surface
US20040061700A1 (en) Image processing apparatus and method of same
JP2003067769A (en) Method and system for generating image from one set of discrete sample points
WO1999049417A1 (en) Fog simulation for partially transparent objects
EP1114400A1 (en) Apparatus and method for real-time volume processing and universal 3d rendering
JP4584956B2 (en) Graphics processor and drawing processing method
Koster et al. Real-time rendering of human hair using programmable graphics hardware
US6542154B1 (en) Architectural extensions to 3D texturing units for accelerated volume rendering
McReynolds et al. Programming with opengl: Advanced rendering
Policarpo et al. Deferred shading tutorial
Boreskov et al. Computer Graphics: From Pixels to Programmable Graphics Hardware
KR101118597B1 (en) Method and System for Rendering Mobile Computer Graphic
US7230620B2 (en) Rendering deformable and animated surface reflectance fields
JP4060375B2 (en) Spotlight characteristic forming method and image processing apparatus using the same
US7385604B1 (en) Fragment scattering
JP2004054634A (en) Picture processor and its method