(57)【要約】【課題】２次元マップを用いて擬似的に３次元マップを実現する場合に、良好な描画結果を得ることのできる画像処理装置およびその方法を提供する。【解決手段】描画対象物を複数のシェルとして重ね合わせて描画する画像処理装置において、色計算にあって、与えられた法線ベクトル、視線ベクトルに基づいてマップから得た透過度を補正する描画部１４を設ける。これにより、エッジ部分で高い画質を得ることが可能となる。【選択図】　　　図６
2004054634.tif 000002
【特許請求の範囲】
【請求項１】
描画対象物を複数の半透明層であるシェルとして重ね合わせて描画し、所定処理後の画像を所定の透過度をもってブレンド処理を行う画像処理装置であって、
上記透過度の値を、視線ベクトルと法線ベクトルに基づいて補正する補正手段を有する画像処理装置。
【請求項２】
上記補正手段は、テクセルに描画対象物が占める面積を、視線ベクトルと法線ベクトルの余弦により除して、上記透過度の値を調整する
請求項１記載の画像処理装置。
【請求項３】
上記補正手段は、レンダリング時に法線ベクトルと視線ベクトルの値に基づいて透過度を補正する
請求項１記載の画像処理装置。
【請求項４】
マップ情報に基づいて描画対象物を複数の半透明層であるシェルとして重ね合わせて描画し、所定処理後の画像を所定の透過度をもってブレンド処理を行う画像処理装置であって、
上記透過度の値を、上記マップの不均等性を示すパラメータに基づいて補正する補正手段
を有する画像処理装置。
【請求項５】
上記補正手段は、レンダリング時にマップの不均等性を示すパラメータに基づいて透過度を補正する
請求項４記載の画像処理装置。
【請求項６】
上記補正手段は、マップ作成時にマップの不均等性を示すパラメータに基づいて透過度を補正する
請求項４記載の画像処理装置。
【請求項７】
マップ情報に基づいて描画対象物を複数の半透明層であるシェルとして重ね合わせて描画し、各シェル間で連続性を持たせるフィルタ処理後の画像を所定の透過度をもってブレンド処理を行う画像処理装置であって、
上記透過度の値を、上記マップ内のフィルタの不均等性を示すパラメータに基づいて補正する補正手段
を有する画像処理装置。
【請求項８】
上記補正手段は、レンダリング時にマップ内のフィルタの不均等性を示すパラメータに基づいて補正する
請求項７記載の画像処理装置。
【請求項９】
描画対象物を複数の半透明層であるシェルとして重ね合わせて描画し、所定処理後の画像を所定の透過度をもってブレンドする画像処理方法であって、
上記透過度の値を、視線ベクトルと法線ベクトルに基づいて補正する補正ステップ
を有する画像処理方法。
【請求項１０】
上記補正ステップでは、テクセルに描画対象物が占める面積を、視線と法線の余弦により除して、上記透過度の値を補正する
請求項９記載の画像処理方法。
【請求項１１】
上記補正ステップにおける透過度を補正する処理は、レンダリング時に行う
請求項９記載の画像処理方法。
【請求項１２】
マップ情報に基づいて描画対象物を複数の半透明層であるシェルとして重ね合わせて描画し、所定処理後の画像を所定の透過度をもってブレンド処理を行う画像処理方法であって、
上記透過度の値を、上記マップの不均等性を示すパラメータに基づいて補正する補正ステップ
を有する画像処理方法。
【請求項１３】
上記補正ステップにおける透過度を補正する処理は、レンダリング時に行う
請求項１２記載の画像処理方法。
【請求項１４】
上記補正ステップにおける透過度を補正する処理は、マップ作成時に行う
請求項１２記載の画像処理方法。
【請求項１５】
マップ情報に基づいて描画対象物を複数の半透明層であるシェルとして重ね合わせて描画し、各シェル間で連続性を持たせるフィルタ処理後の画像を所定の透過度をもってブレンド処理を行う画像処理方法であって、
上記透過度の値を、上記マップ内のフィルタの不均等性を示すパラメータに基づいて補正する補正ステップ
を有する画像処理方法。
【請求項１６】
上記補正ステップにおける透過度を補正する処理は、マップ作成時に行う
請求項１５記載の画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半透明層であるシェル（ｓｈｅｌｌ）を用いて擬似的にボリュームレンダリングを行うための画像処理装置およびその方法に関するものである。
【０００２】
【従来の技術】
昨今のコンピュータシステムにおける演算速度の向上や描画機能の強化とも相俟って、コンピュータ資源を用いて図形や画像の作成や処理を行う「コンピュータ・グラフィックス（ＣＧ）」技術が盛んに研究・開発され、さらに実用化されている。
【０００３】
たとえば、３次元グラフィックスは、３次元オブジェクトが所定の光源によって照らされたときの光学現象を数学モデルで表現して、このモデルに基づいてオブジェクト表面に陰影や濃淡を付けたり、さらには模様を貼り付けたりして、よりリアルで３次元的な２次元高精細画像を生成するものである。
このようなコンピュータ・グラフィックスは、科学、工学、製造などの開発分野でのＣＡＤ／ＣＡＭ、その他の各種応用分野においてますます盛んに利用されるようになってきている。
【０００４】
３次元グラフィックスは、一般には、フロントエンドとして位置づけられる「ジオメトリ・サブシステム」と、バックエンドとして位置づけられる「ラスタ・サブシステム」とにより構成される。
【０００５】
ジオメトリ・サブシステムとは、ディスプレイ・スクリーン上に表示する３次元オブジェクトの位置や姿勢などの幾何学的な演算処理を行う過程のことである。
ジオメトリ・サブシステムでは、一般にオブジェクトは多数のポリゴンの集合体として扱われ、ポリゴン単位で、「座標変換」、「クリッピング」、「光源計算」などの幾何学的な演算処理が行われる。
【０００６】
一方、ラスタ・サブシステムは、オブジェクトを構成する各ピクセル（ｐｉｘｅｌ）を塗りつぶす過程のことである。
ラスタライズ処理は、たとえばポリゴンの頂点毎に求められた画像パラメータを基にして、ポリゴン内部に含まれるすべてのピクセルの画像パラメータを補間することによって実現される。
ここで言う画像パラメータには、いわゆるＲＧＢ形式などで表される色（描画色）データ、奥行き方向の距離を表すｚ値などがある。
また、最近の高精細な３次元グラフィックス処理では、遠近感を醸し出すためのｆ（ｆｏｇ：霧）や、物体表面の素材感や模様を表現してリアリティを与えるテクスチャｔ（ｔｅｘｔｕｒｅ）なども、画像パラメータの１つとして含まれている。
【０００７】
ここで、ポリゴンの頂点情報からポリゴン内部のピクセルを発生する処理では、よくＤＤＡ（Ｄｉｇｉｔａｌ　Ｄｉｆｆｅｒｅｎｔｉａｌ　Ａｎａｌｙｚｅｒ）と呼ばれる線形補間手法を用いて実行される。
ＤＤＡプロセスでは、頂点情報からポリゴンの辺方向へのデータの傾きを求め、この傾きを用いて辺上のデータを算出した後、続いてラスタ走査方向（Ｘ方向）の傾きを算出し、この傾きから求めたパラメータの変化分を走査の開始点のパラメータ値に加えていくことで、内部のピクセルを発生していく。
【０００８】
【発明が解決しようとする課題】
ところで、各ピクセルの描画色の計算、すなわち色計算には表面の材質が大きく影響を及ぼす。平坦で均質な素材の表面の色計算は比較的容易であるが、たとえば動物の毛皮などの色計算は容易ではない。何故ならば、表面形状が複雑で、毛の密度によっては皮膚の色の影響を受けたり、毛の流れによって色も変化するからである。
【０００９】
動物の毛皮を描画する最も基本的な方法として、毛を１本１本描画する方法がある。
しかしながら、この方法は、毛を１本１本描画するために必要な計算量が膨大となってしまうという根本的な問題がある。
さらに、毛は半透明物質として描画するため、プリミティブ単位あるいはピクセル単位で奥行き方向にソート（ｚソート）する必要がある。これにも膨大な計算量を要する。
すなわち、毛皮などの柔らかな質感をコンピュータグラフィックスを用いて表現することは、通常のサーフエスレンダリングでは困難であった。
【００１０】
これに対して、Ｊ．Ｔ．Ｋａｊｉｙａは、毛の方向や透過度を３次元マップに保持し、これを視線方向に走査することにより、毛皮の質感を良好に表現できることを示した（Ｋａｊｉｙａ，Ｊ．Ｔ　ａｎｄ　Ｔｉｍｏｔｈｙ　Ｌ．　Ｋａｙ．Ｒｅｎｄｅｒｉｎｇ　Ｆｕｒ　ｗｉｔｈ　Ｔｈｒｅｅ　Ｄｉｍｅｎｔｉｏｎａｌ　Ｔｅｘｔｕｒｅｓ，ＳＩＧＧＲＡＰＨ　８９，ｐｐ．２７１−２８０、参照）。
しかしながら、この手法は、マップに要するメモリサイズが大きくなり、かつ視線方向に走査することによる描画時間もかかることから、リアルタイムレンダリングには適していなかった。
【００１１】
一方、Ｅ．Ｊ．Ｌｅｎｇｙｅｌは、複数の２次元マップを用いることにより、毛皮の質感を高速に表現することが可能であることを示した（Ｌｅｎｇｙｅｌ，Ｅ．Ｊ．，　Ｒｅａｌ−Ｔｉｍｅ　Ｆｕｒ，　Ｅｕｒｏｇｒａｐｈｉｃｓ　Ｒｅｎｄｅｒｉｎｇ　Ｗｏｒｋｓｈｏｐ　２０００，　ｐｐ．２４３−２５６　、参照）。この手法は、３次元マップを用いる手法に比べ、マップに要するメモリサイズが小さくて済み、また描画時間も比較的短くすることができることから、リアルタイムレンダリングに適している。
以下、この方法についての概要を述べる。
【００１２】
図１（Ａ），（Ｂ）は、Ｌｅｎｇｙｅｌの手法における２次元マップの作成を模式的に示す図である。
この方法においては、図１（Ａ）に示すような３次元の毛１−１〜１−３を２次元にスライスすることにより、図１（Ｂ）に示すように、複数の２次元マップを作成する。
【００１３】
続いて、このマップを用いて図２のように皮膚面を膨らませた面（以下ではシェルと呼ぶ）を描画することにより、擬似的に３次元の毛を表現することができる。
シェルＳＨＬは半透明の物体として描画する。最初に皮膚面を、次に皮膚面を少しだけ膨らませたシェルを、さらにもう少しだけ膨らませたシェルを順番に重ね描きする。
典型的にはマップの各テクセルには透過度ａ、毛の方向ベクトルＤ、毛の拡散光成分Ｋｄ、鏡面反射光成分Ｋｓ、環境光成分Ｋａ、鏡面反射光の指数成分ｓｈｉｎｉｎｅｓｓなどが格納されており、シェルの色ｃはＬｅｎｇｙｅｌのライティング式を用いると、数１のように計算される。
【００１４】
【数１】
Ｃ＝Ｋｄ＊ｃｄ＊ｓｉｎ（Ｌ，Ｄ）十
Ｋｓ＊Ｃｓ＊ｓｉｎ（Ｈ，Ｄ）ｓｈｉｎｉｎｅｓｓ　＋Ｋａ＊Ｃａ
【００１５】
ここで、Ｃｄ、Ｃｓ、Ｃａは光源色の拡散光成分、鏡面反射光成分、環境光成分である。また、Ｌ、Ｈ、Ｄはそれぞれ光源ベクトル、ハーフベクトル、毛の方向ベクトルである。Ｌ、Ｈ、Ｄの関係を図３に示した。
このように計算した色Ｃにてシェルを描画する。この際、透過度ａにより数２のようにアルファブレンドすることにより、半透明物体としてての描画を行う。
【００１６】
【数２】
Ｃｎｅｗ　＝ａ＊Ｃ＋（１−ａ）＊Ｃｏｌｄ
【００１７】
以上述べたＬｅｎｑｙｅｌの方法は、３次元マップを擬似的に実現する手法として有効である一方、以下に述べるような問題点がある。
【００１８】
２次元マップには、図４に示すように、毛をスライスした断片が平面上に表現される。このような２次元のマップを用いて３次元を表現する場合、視線との関係に依存して、最終的な画像が薄く見える場合がある。
【００１９】
図５（Ａ），（Ｂ）はこの視線との関係に依存して、最終的な画像が薄く見えるという課題を説明するための図である。
同じ２次元マップを、図５（Ａ）は真正面から見た場合であり、図５（Ａ）は斜め方向から見た場合である。
真正面から見た場合に比べ、斜め上から見た場合は毛の断片の見える領域は小さくなる。透過度はマップ内テクセルに格納された値を用いるため、両者とも同じ透過度となる。したがって、斜め上から見た場合は、真上から見た場合よりも毛が疎に（あるいは細く）見えてしまう。
【００２０】
これは実際の現象とは異なる。実際には毛の断片は見る角度にほとんど依存せず、同じ大きさで見える。
以上より、視線が法線に垂直に近くなるにつれて、実際の毛の薄さよりも、より薄く見えることとなる。
以上は、毛のレンダリングについて述べたが、一般に３次元マップを擬似的な２次元マップとして用いる場合には同様な問題が生ずる。
【００２１】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、２次元マップを用いて擬似的に３次元マップを実現する場合に、良好な描画結果を得ることのできる画像処理装置およびその方法を提供することにある。
【００２２】
【課題を解決するための手段】
上記目的を達成するため、本発明の第１の観点は、描画対象物を複数の半透明層であるシェルとして重ね合わせて描画し、所定処理後の画像を所定の透過度をもってブレンド処理を行う画像処理装置であって、上記透過度の値を、視線ベクトルと法線ベクトルに基づいて補正する補正手段を有する。
【００２３】
第１の観点では、上記補正手段は、テクセルに描画対象物が占める面積を、視線ベクトルと法線ベクトルの余弦により除して、上記透過度の値を調整する。
【００２４】
第１の観点では、上記補正手段は、レンダリング時に法線ベクトルと視線ベクトルの値に基づいて透過度を補正する。
【００２５】
本発明の第２の観点は、マップ情報に基づいて描画対象物を複数の半透明層であるシェルとして重ね合わせて描画し、所定処理後の画像を所定の透過度をもってブレンド処理を行う画像処理装置であって、上記透過度の値を、上記マップの不均等性を示すパラメータに基づいて補正する補正手段を有する。
【００２６】
第２の観点では、上記補正手段は、レンダリング時にマップの不均等性を示すパラメータに基づいて透過度を補正する。
【００２７】
第２の観点では、上記補正手段は、マップ作成時にマップの不均等性を示すパラメータに基づいて透過度を補正する。
【００２８】
本発明の第３の観点は、マップ情報に基づいて描画対象物を複数の半透明層であるシェルとして重ね合わせて描画し、各シェル間で連続性を持たせるフィルタ処理後の画像を所定の透過度をもってブレンド処理を行う画像処理装置であって、上記透過度の値を、上記マップ内のフィルタの不均等性を示すパラメータに基づいて補正する補正手段を有する。
【００２９】
第３の観点では、上記補正手段は、レンダリング時にマップ内のフィルタの不均等性を示すパラメータに基づいて補正する。
【００３０】
本発明の第４の観点は、描画対象物を複数の半透明層であるシェルとして重ね合わせて描画し、所定処理後の画像を所定の透過度をもってブレンドする画像処理方法であって、上記透過度の値を、視線ベクトルと法線ベクトルに基づいて補正する補正ステップを有する。
【００３１】
本発明の第５の観点は、マップ情報に基づいて描画対象物を複数の半透明層であるシェルとして重ね合わせて描画し、所定処理後の画像を所定の透過度をもってブレンド処理を行う画像処理方法であって、上記透過度の値を、上記マップの不均等性を示すパラメータに基づいて補正する補正ステップを有する。
【００３２】
本発明の第６の観点は、マップ情報に基づいて描画対象物を複数の半透明層であるシェルとして重ね合わせて描画し、各シェル間で連続性を持たせるフィルタ処理後の画像を所定の透過度をもってブレンド処理を行う画像処理方法であって、上記透過度の値を、上記マップ内のフィルタの不均等性を示すパラメータに基づいて補正する補正ステップを有する。
【００３３】
本発明によれば、たとえばシェル発生手段において、複数のシェルが発生される。このときたとえば、視線の裏側の面は外側から内側にシェルが発生され、視線の表側の面は内側から表側にシェルが発生される。
そして、フィルタ手段により、複数のシェルを重ね合わせた描画対象物の方向を示す、ウィンドウ座標系のベクトルが求められる。
フィルタ手段では、求めたベクトルに基づいてフィルタカーネルが変更されて、描画対象物の向かっている方向にピクセルの情報を膨らませて、各シェル間で連続性を持たせるフィルタ処理が行われる。
また、フィルタ手段では、所定の透過度をもってフィルタ処理後の画像をブレンドして合成されるが、この透過度の値は、たとえば視線ベクトルと法線ベクトルに基づいて補正される。
具体的には、たとえばテクセルに描画対象物が占める面積を、視線と法線の余弦により除して、透過度の値が補正される。
【００３４】
また、Ａｎｉｓｏｔｒｏｐｉｃ−ＭＩＰＭＡＰを用いてマップを取得する場合に、透過度が補正される。
また、Ａｎｉｓｏｔｒｏｐｉｃ−ＭＩＰＭＡＰを用いる場合に、Ａｎｉｓｏｔｒｏｐｉｃ−ＭＩＰＭＡＰのマップそれぞれの透過度が事前に補正される。
【００３５】
【発明の実施の形態】
以下、本発明の実施形態を、毛皮のような線状物質の描画を例として図面に関連付けて説明する。
【００３６】
第１実施形態
図１は、本発明に係る画像処理装置の第１の実施形態を示すブロック構成図である。
【００３７】
本実施形態に係る画像処理装置１０は、２次元マップを用いた毛皮のような線状物質の描画が可能である。
具体的には、画像処理装置１０は、たとえば毛皮を半透明層（シェル：ｓｈｅ１１）として重ね合わせて描画する。このとき、本画像処理装置１０は、３次元マップを用いず、単一の２次元マップを用いて描画する。
また、本画像処理装置１０におけるマップのサンプリング方法は、Ｌｅｎｇｙｅｌの方法のように、毛皮を高さ方向にスライスして、それぞれを別々のシェルに対応するマップとみなすのではなく、毛の全体を皮膚面に相当する２次元マップ上に投影する。
そして、本画像処理装置１０では、１枚のマップに投影により見える毛全体の情報が格納される。
本画像処理装置１０では、このように、表現したい毛をなるべく分断しないようにサンプリングすることで、少ないメモリ容量で高画質な表現を可能としている。
【００３８】
また、本実施形態に係る画像処理装置１０は、Ｌｅｎｇｙｅｌの方法のように、高品質な毛皮の表現を行うために、描画パイプラインを通してシェルの複数描画を行うのではなく、描画パイプラインのみではなく、メモリに局所的な処理を補助的に利用することによって、描画パイプラインからの情報を削減する可能に構成される。
また、画像処理１０では、エッジ近傍の画質の改善のために、フィルタ処理を用いている。
描画ハードウェアは、メモリ局所的な処理をより多く用意できる可能性がある。本実施形態に係る画像処理装置１０は、このような処理を通常の描画処理と並行して行うことにより、高品質な画像を高速に描画しようというものである。
【００３９】
本実施形態に係る画像処理は、描画前処理および描画時処理から構成される。描画前処理は毛のモデル作成やマップ作成処理を含み、描画前に一度だけ行う。描画時処理は描画前に作成されたマップを用いて、リアルタイムで行う処理である。
以下に、本実施形態に係る画像処理装置１０の具体的な構成および処理内容について詳述する。
【００４０】
本画像処理装置１０は、図６に示すように、マップ作成部１１、マップ保持部１２、オブジェクト発生部１３、描画部１４、メモリ１５、およびフィルタ処理部１６を有している。
描画前処理はマップ作成部１１およびマップ保持部１２で行われ、描画後処理は、オブジェクト発生部１３、描画部１４、メモリ１５、およびフィルタ処理部１６により行われる。
また、オブジェクト発生部１３によりシェル発生手段が構成され、描画部１４、およびフィルタ処理部１６によりフィルタ手段が構成される。
また、描画部１４により補正手段が構成される。
【００４１】
本実施形態において利用するバッファは以下のとおりである。これらは図６のメモリ１３に保持される。
すなわち、利用するバッファは、一時計算用フレームバッファｆｂｕｆ１，　ｆｂｕｆ２、一時計算用デプスバッファｚｂｕｆ、一時計算用インデックスバッファｉｂｕｆ、一時計算用カウンタバッファｃｂｕｆ、最終出力用フレームバッファＦＢＵＦ、および最終出力用デプス（ｚ）バッファＺＢＵＦである。
メモリ１３は、シェルの各層の描画前に、各バッファを以下のように初期化する。
【００４２】
【数３】
ｃｂｕｆ　＜−　０
ｆｂｕｆ１，　ｆｂｕｆ２　＜−　（０，　０，　０，　０）
ｚｂｕｆ　＜−　ＺＢＵＦ
【００４３】
具体的には、メモリ１３は、一時計算用カウンタバッファｃｂｕｆ、一時計算用フレームバッファｆｂｕｆ１，　ｆｂｕｆ２を０に初期化し、一時計算用デプスバッファｚｂｕｆを最終出力用フレームバッファＦＢＵＦの内容に初期化する。
【００４４】
また、描画時処理は、皮膚の描画、シェルの描画、フィルタ処理、合成処理から構成される。
最初に皮膚を不透明物体としてフレームバッファｆｂｕｆ１　、ｚバッファＺＢＵＦ１　に描画する。続いて、シェルを複数回重ね描きすることにより毛皮を表現する。
各シェルの描画はフレームバッファｆｂｕｆ１　、ｚバッファＺＢＵＦ１　とは異なる一時的なフレームバッファｆｂｕｆ２　、ｚバッファＺＢＵＦ２　に描画する。ここでフィルタ処理を行った後、フレームバッファｆｂｕｆ１　、ｚバッファＺＢＵＦ１　と合成を行う。
【００４５】
マップ作成部１１は、描画前処理としての毛のモデル作成および２次元マップ作成を行い、作成した２次元マップをマップ保持部１２に格納する。
マップ作成部１１は、毛のモデル作成にあたっては、所定の毛データを受けて、図７に示すように、毛は折れ線として、２軸を２次のテクスチャ空間のｓ，ｔ軸とし、ｓ，ｔ軸と直交するｈ軸を更に持つ３次元空間上に作成する。
マップ作成部１１は、２次元マップ作成にあたっては、作成したモデルに基づいて、図８に示すように、ｈ軸の上方から（ｓ、ｔ）平面に投影することで作成する。
マップ作成部１１は、生成した２次元マップには、シェルの描画時に必要なパラメータ（Ｋｄ、Ｋｓ、Ｋａ、Ｔｔ、ｃｏｖ、ｓｈｉｎｉｎｅｓｓ）、０〜１に正規化された高さ（ｈ）情報、および透過度ａを含ませる。
ここでＫｄ、Ｋｓ、Ｋａはそれぞれ拡散（ｄｉｆｆｕｓｅ）光成分、鏡面（ｓｐｅｃｕｌａｒ）反射光、環境（ａｍｂｉｅｎｔ）光成分、ｓｈｉｎｉｎｅｓｓは鏡面反射光の指数成分であり、Ｔｔは毛の方向ベクトル（ｓ、ｔ、ｈ）である。また、ｃｏｖはテクセルに毛が占める面積を表している。
【００４６】
上述したように、マップ作成部１１は、作成したモデルに基づいて、図８に示すように、ｈ軸の上方から（ｓ、ｔ）平面に投影することで２次元マップを作成する。この場合、同一テクセルに複数の毛がかかる場合、一番上に存在する毛のみをテクセルに反映することとして処理することが可能である。
しかし、これでは、細い毛を描画するときに不都合が生じることから、本実施形態に係るマップ作成部１１は、同一テクセルに複数の毛のパラメータを書き込む。
各テクセルにＮ個の毛の情報を書き込む場合、たとえば下記の数４のように計算を行う。
なお、ここでは、より下の毛の情報は添え字を小さく、上の毛の情報は添え字を大きくなるように、ソーティングが成されているとする。また、上の毛の見え方が最も影響すると思われることから、ｈは最も上の毛の高さを利用することとしている。
【００４７】
【数４】
2004054634.tif 000003
【００４８】
ただし、／は文字上に付されるバーの代わりに用いた記号であり、ベクトルを示す。
【００４９】
マップ保持部１２は、たとえばＳＲＡＭ等のメモリにより構成され、マップ作成部１１で作成され、各種パラメータや高さ情報が付加された２次元マップを保持する。
マップ保持部１２は、描画時に保持する各種パラメータや高さ情報、透過度が付加された２次元マップがオブジェクト発生部１３および描画部１４により読み出される。
【００５０】
オブジェクト発生部１１は、描画処理時に、マップ保持部１２に保持された２次元マップを読み出し、２次元マップデータに基づいて毛皮に関する同心の複数のシェルを発生して、データＤ１として描画部１４に供給する。
オブジェクト発生部１１は、シェルを後記する理由により、視線の裏側の面は外側から内側に向かってシェルを発生し、視線の表側の面は内側に向かって表側にシェルを発生する。
オブジェクト発生部１１の処理の概要は、下記の数５に示すように、皮膚面の描画、裏側の描画、表側の描画である。
【００５１】
数５に表したｏｆｓ　［　］　にはシェルが皮膚面からどれだけ膨らんでいるかを示す値であり、ｏｆｓ　［　０　］が最もふくらみが小さく、添え字が増すにつれてｏｆｓ　の値は増加する。ｏｆｓ　［　０　］は最も奥にあることを意味する。
また数５中、ｄｒａｗ＿ｏｂｊ　（ｏｆｓ，　ｆａｃｅ）　はオブジェクトを、頂点ｏｆｓ　だけ法線方向に膨らませて発生する処理を示している。
ｆａｃｅは裏面あるいは表面を指定し、それぞれ視線に対して裏側の面、表側の面のみを発生する。
【００５２】
【数５】
2004054634.tif 000004
【００５３】
さらに具体的には、皮膚は毛皮とは異なり、不透明物体としてフレームバッファｆｂｕｆ１　、ｚバッファｚｂｕｆ１　に対して描画する。
このとき、ｚテストおよびｚ値更新を可として描画する。
シェルの描画処理は、ジオメトリ処理／頂点単位処理／ピクセル単位処理に分けて考えることができるが、オブジェクト処理部１３においては、ジオメトリ処理および頂点単位処理を行う。
【００５４】
ジオメトリ処理では、膨らませ度合いの異なるシェルを順番に発生する。また、発生したシェル毎に、各種パラメータを指定する。また、テクスチャの拡張係数も指定する。
【００５５】
ここで、本実施形態に係るオブジェクト発生部１３において採用する基本的なシェルの発生方法について説明する。
【００５６】
本方法では２次元のマップを用いて描画を行う。そのため単純に描画すると厚みのない毛皮となってしまう。
そこで、シェルを用いて、同一マップを繰り返し描画することで厚みを持たせるようにシェルを発生する。
【００５７】
図９は、３つのシェルに同一のマップを用いた場合を表現した図である。
図９に示すように、シェルＳＨＬの重なりが厚みを表現できる。ここでは３つのシェルＳＨＬ１〜ＳＨＬ３が存在しているが、マップとしては一種類のみを利用する。
また、視線に対して表側の面を描画する場合は、下側から上側へと順番にシェルを発生し、重ね描きすることで、厚みを表現することができる。
なお、エッジ近傍では視線に対して裏側の面も描画する必要がでてくる。この場合のシェルの発生方法については後述する。
【００５８】
実際に発生している毛の場合、外側のシェルには毛の先端側のみが、内側のシェルには毛の末端側のみが現れるはずである。これを表現するために、各シェルに高さの上下限値（ｈｍａｘ／ｈｍｉｎ）を設定する。
この場合、外側のシェルほど、より高い上下限値（ｈｍａｘ／ｈｍｉｎ）を持つように設定する。
シェル描画時に、テクセルに含まれる高さ値ｈと上下限値（ｈｍａｘ／ｈｍｉｎ）を比較し、上限値が加減値以上（ｈｍａｘ＞＝ｈ＞ｈｍｉｍ）の場合にのみ描画し、これ以外の場合には描画しないようにする。
このようにすると、図１０に示すように、離散的ではあるが、高さ方向に傾きのある毛を描画することができる。
なお、離散的であるという問題点は、後段のフィルタ処理により解決される。
【００５９】
さらに、オブジェクト発生部１３は、エッジ近傍への対応として以下の処理を行う。
オブジェクト発生部１３は、図１１に示すように、シェルを視線ＥＹに対して表側と裏側に分離して描画するようにシェルを発生する。
最初に視線ＥＹの裏側のシェルを外側から内側の向かって順番に描画する。この段階で、図１１ではＡ、Ｂという順番で描画される。
続いて、表側のシェルを内側から外側に向かって順番に描画する。これにより、図１１において、Ａ、Ｂに続いてＣ、Ｄという順番で描画され、正しい順番で色を重ねることができる。
【００６０】
次に、シェルへのマップの割り当て方法について説明する。
本実施形態では、２次元マップを用いるため、情報の欠如が生じる場合がある。
図１２に示すように、毛同士が重なっている場合、下側の毛の高さ情報は失われてしまう。
このように、下側の毛の高さ情報が失われると、毛皮を視線を変化させて見た場合の可視性の変化（下側の毛が見えたり見えなかったりする）が上手く表現できなくなる。
この問題への解決するために、本実施形態では、図１３（Ａ），（Ｂ）に示すように、複数のマップを用いる。
１枚のマップに共存できない情報であっても、異なるマップには存在できるため、上記の問題を解決できる。
検討した範囲では、３〜５種類程度のマップを用意し、図１４に示すように、各層毎に微妙に高さを変えて描画すると、毛皮として十分な画質を得ている。
複数種類のマップを持つのではなく、１枚のマップでも同様の効果を出すことが可能である。これはマップを引くときのテクスチャアドレスに一定の（種類に応じた）オフセットを加えることで実現できる。この方法であれば、１種類のマップだけで描画できるため、メモリ容量の上で有利である。
【００６１】
次に、セルフシャドウの効果の指定について説明する。
毛皮の色は根元の方ほど暗い色となる。これは入出力光が、より上の毛皮により減衰するためである。この減衰の効果はＢａｎｋｓによって、数６のように毛の密度ｐと光の通過する距離ｄの関数として与えられている（Ｂａｎｋｓ，Ｄ．，Ｃ．，Ｉｌｌｕｍｉｎａｔｉｏｎ　Ｉｎ　Ｄｉｖｅｒｓｅ　Ｃｏｄｉｍｅｎｔｉｏｎｓ，ＳＩＧＧＲＡＰＨ　９４，ｐｐ．３２７−３３４　参照）。
【００６２】
【数６】
Ｉａｔｔｅｎ　＝Ｉｓｏｕｒｃｅ（１−ｐ）ｄ
【００６３】
光の通過する距離ｄは光の入射角により変化するため、数６は光の入射角によって減衰の割合が変化することを示している。
ここではより簡略化して、各シェルで−定の減衰率（ａｔｔ）を持つと考える。上側のシェルは１に近いａｔｔ値を持ち、下側のシェルは０に近いａｔｔ値を持つものとする。これは光の入射角による減衰の割合の変化を無視しているが、画質的に大きな影響はない。
【００６４】
次に、テクスチャ拡張係数の指定について説明する。
ベクトル計算に用いるテクスチャ拡張係数ｓｚｏｏｍ、ｔｚｏｏｍ（テクスチャのｓ方向、ｔ方向の視野座標系における拡大縮小の割合）を求める。
この場合、均質にテクスチャが貼られている場合であれば、三角形毎にこの値を求める必要はなく、シェル描画時に一度だけ指定すれば良い。
【００６５】
また、オブジェクト発生部１３は、頂点単位の処理としては頂点の移動、テクスチャ座標の移動を行う。
三角形単位での頂点位置の移動を行うことで、シェルを作成する。頂点における法線Ｎおよびオフセットｎｏｆｓを用いて、頂点位置を以下の数７のように変更する。
【００６６】
【数７】
Ｐｎｅｗ　＝Ｐｏｌｄ　＋ｎｏｆｓ・／Ｎ
【００６７】
テクスチャ座標の移動に関しては、テクスチャアドレスのオフセットを下記の数８のように変更することで、異なるマップを用いた場合と同等の効果を与えるようにしている。
【００６８】
【数８】
Ｓｎｅｗ　＝Ｓｏｌｄ　＋ｎｏｆｓ
ｔｎｅｗ　＝ｔｏｌｄ　＋ｔｏｆｓ
【００６９】
描画部１４は、マップ保持部１２から読み出した２次元マップデータ、およびオブジェクト発生部１３によりオブジェクトデータであるシェルデータ（プリミティブデータ）に基づいて、ベクトル　＜ｔ＞　のウィンドウ座標系でのベクトル＜ｔｗ＞を求め、これからフィルタカーネル用のインデックス（ｉｎｄｅｘ　）を求める。描画部１４は、オブジェクト発生部１３が発生したプリミティブをラスタライズした後、以下の数９に示すように色、フィルタカーネル用のインデックス（ｉｎｄｅｘ　）を計算し信号Ｓ１４としてフィルタ処理部１６に出力する。
なお、描画部１４は、数９に示すように、色計算にあたって、エッジ部での透過度を補正する。
【００７０】
【数９】
2004054634.tif 000005
【００７１】
ａｔｂｌはカーネルにおける有効な要素ｋとした場合、１／ｋが格納されている。これはカーネルによってピクセルを膨らませる場合、それに応じて透過度ａを小さくする必要があるためである。
また、透過度ａを｜ｃｏｓ（＜ｎ＞，　＜ｅ＞）　｜により除算する。
また、ｘ，　ｙの最大／最小値を保持するのは、必ずしも必要ではないが、後述のフィルタ処理部１６において、フィルタを行う範囲を限定するために有効である。
【００７２】
ここで、描画部１４におけるウィンドウ座標系での２次元ベクトル＜ｔｗ＞の求める処理について説明する。
【００７３】
基本的に、＜ｔｗ＞の方向にピクセルを拡大する。
以下では、図１５に示すように、元となるピクセルから＜ｔｗ＞の方向に伸びる直線から、距離Ｗ以内の範囲のピクセルを有効である場合のフィルタを考える。
この領域を判定する方法を、以下で考える。もととなるピクセルから対象となるピクセルへのベクトルを＜ｇ＞　とする。
図１６に示す通り、元のピクセルから＜ｔｗ＞の方向に伸びる直線と、対象となるピクセルとの距離は｜ｇ　｜ｓｉｎ（＜ｇ＞，　＜ｔｗ＞）となる。
なお、図１６では、もとのピクセルを白丸ＰＸＬ１、対象となるピクセルＰＸＬ２として示している。
これらから、以下の数１０のような方策で、対象となるピクセルを選択すれば良いことになる。
【００７４】
【数１０】
｜ｇ　｜ｓｉｎ（＜ｇ＞，　＜ｔｗ＞）　＜　Ｗ？１：０
【００７５】
この式で定義される領域は、無限の長さを持つが、実装上はカーネルサイズが有限であるために、定義領域も有限となる。
図１７に示すように、＜ｔ＞　をウィンドウ座標系での２次元ベクトル＜ｔｗ＞に変換する。
変換には、射影行列Ｐとしたとき（Ｐ−１）ｔ　を用いて、以下のように行うことができる。
【００７６】
【数１１】
＜ｔｗ＞　＝　＜ｔ＞　＊　　（Ｐ−１）ｔ
【００７７】
描画部１４は、基本的にはピクセル単位の処理を行うが、ピクセル単位の処理としては、マップの取得、色の計算、透過度の計算を行う。また、フィルタ処理に用いるためのベクトルの計算を行う。
以下に、マップの取得、色の計算、透過度の計算、ベクトルの計算の各処理についてさらに詳細に説明する。
【００７８】
まず、マップの取得について説明する。
ピクセル単位での色計算時には、テクスチャ座標から２次元マップの情報を参照する。本実施形態に係る画像は、たとえばいずれも４近傍補間を行う。
基本的には、全ての情報について４近傍のテクセルの線形補間を用いている。しかし、４近傍のテクセルの中にｃｏｖが００（すなわち毛が存在しない）ものが含まれた場合には、以下のような処理を行う。
４近傍全てのテクセルのｃｏｖが０であった場合は、最終的に描画結果に反映されないため、どのような値でもかまわない。すなわち特別な処理は必要ない。一方、４近傍中のテクセルのｃｏｖが０であった場合は、ｃｏｖ以外のパラメータについては、０でない側のテクセル値をそのまま利用し、ｃｏｖはそのまま０を用いる。
近傍のテクセル間の変化が大きくない場合であれば、マップを事前に処理し、ｃｏｖが０のテクセルのパラメータを適切な値に設定しておくことが可能である。この場合はマップ、取得時には４近傍を単純に線形浦間するだけで良くなる。
【００７９】
次に、色の計算について説明する。
色計算には、たとえばＬｅｎｇｙｅｌ（Ｌｅｎｇｙｅｌ，Ｅ．Ｊ．，　Ｒｅａｌ−Ｔｉｍｅ　Ｆｕｒ，　Ｅｕｒｏｇｒａｐｈｉｃｓ　Ｒｅｎｄｅｒｉｎｇ　Ｗｏｒｋｓｈｏｐ　２０００，　ｐｐ．２４３−２５６　）に提案された簡易化された、数１２に示すような、ライティング式を用いる。
【００８０】
【数１２】
Ｃ　＝ａｔｔ　＊　（Ｃｄ　＋　Ｃｓ　＋　Ｃａ）
Ｃｄ＝　Ｋｄ　＊　Ｃｄｌ　＊　ｓｉｎ（／Ｔ，／Ｌ）
Ｃｓ＝　Ｋｓ　＊　Ｃｓｌ　＊　ｓｉｎ（／Ｔ，／Ｌ）　ｓｈｉｎｉｎｅｓｓ
Ｃａ＝　Ｋａ　＊　Ｃａｌ
【００８１】
ここで、／Ｔはマップから取得した毛の方向ベクトル／Ｔｔ（各要素がｓ，ｔ，ｈで表される）を、接空間の基底ベクトル（／Ｎ，／ＰＵ，／ＰＶ）を用いて、下記の数１３に基づいて視野座標系に変換したものである。
Ｃｄｌ，Ｃｓｌ，Ｃａｌは、それぞれ拡散（ｄｉｆｆｕｓｅ），鏡面（ｓｐｅｃｕｌａｒ），環境（ａｍｂｉｅｎｔ）の光源色を示す。またａｔｔはセルフシャドウの効果を導入するための減衰率である。また、／Ｔｔ・ｓ、／Ｔｔ・ｔ、／Ｔｔ・ｈは、それぞれ／Ｔｔのｓ，ｔ，ｈ，成分を表す。
【００８２】
【数１３】
／Ｔ＝／Ｔｔ　・ｈ＊／Ｎ＋／Ｔｔ　・ｓ＊／ＰＵ＋／Ｔｔ　・ｔ＊／ＰＶ
【００８３】
次に、透過度の計算について説明する。
透過度ａは、マップから取得したｃｏｖを以下の数１４のように変調して用いる。ここでｃｏｖは毛がテクセルに占める割合を表している。
【００８４】
【数１４】
ａ＝　ａｆ　＊　ｃｏｖ／ｃｏｓ（／ｎ，／ｅ）
ａｆ＝　（ｈｍａｘ＞＝ｈ　＆＆　ｈ　＞ｈｍｉｎ）　？　１　：　０
【００８５】
ここで、／ｎは法線ベクトル、／ｅは視線ベクトルである。ａｆは、上述したように、シェルに指定された上下限値（ｈｍａｘ／ｈｍｉｎ）とｈ値との関係によって、描画するかどうかを制御するためのフラグである。ｃｏｓ（／ｎ，／ｅ）による除算は、以下のような理由による。
２次元のマップ上には、たとえば図１８に示すように、毛が描画される。
図１５（Ａ）に示すように、このマップを正面から見た場合の毛の太さが正しいものとすると、図１５（Ｂ）に示すように、これを横方向に傾いて見た場合はより細く見える。その結果、エッジ近傍での毛の色は薄くなってしまう。上記のｃｏｓによる除算は、エッジ部分で正しい画質を得るために必要となる。
【００８６】
また、描画部１４は、ｚバッファｚｂｕｆ２　を用いてｚテストを行いながら、色と透過度をフレームバッファｆｂｕｆ２　に、ｚ値をｚバッファｚｂｕｆ２　に出力する。ｚテストは、描画ピクセルのＺ値がｚバッファｚｂｕｆ２　の内容よりも手前にあるときに成功する。
【００８７】
次に、フィルタ処理に用いるベクトルの計算について説明する。
フィルタ処理に必要なベクトル／ｔを、下記の数１５のように計算し、ベクトル用バッファに出力する。なお、この場合もｚテストを通過した場合にのみ出力する。
【００８８】
【数１５】
／ｔ＝　ｐ＊（ｎｏｆｓ＊／Ｎ　＋　Δ１　＊　（ｓｚｏｏｍ　＊　／　Ｔｔ　・ｓ　＊　／ＰＵ　＋　ｔｚｏｏｍ　＊／Ｔ　ｔ　・ｔ　＊　ＰＶ）
【００８９】
フィルタ処理部１６は、描画部１４により信号Ｓ１４として供給されたＮ×Ｎのフィルタカーネル用インデックスｖｌｄ［ｉｎｄｅｘ］［Ｎ］［Ｎ］を用いて、下記の数１６に示すように、フィルタ処理を行い、各シェルの描画およびフィルタ処理が完了した後、ｚバッファｚｂｕｆ２　とｚバッファｚｂｕｆ１　によりｚテストを行い、ｚバッファｚｂｕｆ２　の方が手前にある場合に、ｚバッファｚｂｕｆ２　とｚバッファｚｂｕｆ１　の内容をアルファブレンド処理する。
フィルタ処理部１６は、方向ベクトルに基づいてフィルタカーネルを変更し、描画対象物の向かっている方向にピクセルの情報を膨らませて、各シェル間で連続性を持たせるフィルタ処理を行う。
なお、画面の必要領域は、描画時に描画部１４により与えられる数９における描画時にｘｍａｘ，　ｘｍｉｎ，　ｙｍａｘ，　ｙｍｉｎを保持することにより判断できる。
また、フィルタ処理部１６は、フィルタ処理を行う領域の範囲を記憶しておき、当該記憶した領域に対してのみフィルタ処理を行うように構成することも可能である。
また、フィルタ処理部１６は、フィルタ処理を行う回数を、層描の都度ではなく、途中の数回のみ行うように構成することも可能である。
【００９０】
【数１６】
2004054634.tif 000006
【００９１】
なお、数１６で用いるフィルタカーネルの内容ｖｌｄ　［］、および数９で用いるａｔｂｌ［］については、たとえば下記のように事前に計算すると、線状物体がより滑らかに結合するようになる。
【００９２】
【数１７】
2004054634.tif 000007
【００９３】
これは図１５に示すように、カーネルの中心を通り＜ｔｗ＞の方向に伸びる直線から、距離Ｗ　の範囲にある部分を選択するものである。
最初に＜ｔｗ＞＝（ｔｘ，ｔｙ）で各ｉｎｄｅｘ　に対応する＜ｔｗ＞を求めている。ｉｎｄｅｘ　は０〜　ＩＮＤＥＸ＿ＮＵＭ−１　の値をとり、ｘ軸の正の方向から反時計周りに一回りするようにしている。
＜ｇ＞＝（ｉ−ＫＥＲＮＥＬ　＿ＳＩＺＥ／２…）　で、カーネル中心から要素（ｉ，ｊ）　に向かうベクトル＜ｇ＞　を求めている。同時に＜ｇ＞　の大きさをｇｎｏｒｍ　としている。＜ｇ＞　はその後、正規化される。
ｉｆ（ｇｎｏｒｍ＊　…）　以下で、直線からの距離がＷ　よりも小さい範囲のピクセルの有効フラグを１としている。Ｗ　以上の範囲のピクセルの有効フラグは０とする。これは図１６に示すように、要素（ｉ，ｊ）　の直線からの距離はｇｎｏｒｍ＊ｓｉｎ（＜ｔｗ＞，＜ｇ＞）で表されるので、この値とＷ　との大小比較で求めることができる。
数９で用いるａｔｂｌの値をここで求めることができる。すなわち、このカーネルを用いてフィルタ処理を行うと、１ピクセルがどれだけの面積に広げられるかがわかっている（カーネル内の有効ピクセル数で表される）ため、この逆数を事前に計算し、テーブルとして所持しておく。数９において、フィルタ後に透過度にａｔｂｌの値を乗ずる。
【００９４】
本実施形態では、毛をシェル毎に分断するため、図１０に示すように、特にエッジ付近で不連続性が目立つ。
本来は図２０に示すように、連続して表現されるべきものである。
そこで、図２１に示すように、画面上でフィルタ処理を施すことにより、擬似的に連続性を保つことができる。
このフィルタは、毛が向かっている方向に細長い形状にピクセルの情報を膨らませるものである。これを行うために、毛がどちらに向かっているかを示すベクトル＜ｔ＞を、上述した数１６のように、ウィンドウ座標系で与える必要がある。
【００９５】
次に、図６の構成の画像処理装置の動作を説明する。
【００９６】
まず、描画前処理として、マップ作成部１１において、毛のモデル作成および２次元マップ作成が行われ、作成した２次元マップがマップ保持部１２に格納される。
なお、生成した２次元マップには、シェルの描画時に必要なパラメータ（Ｋｄ、Ｋｓ、Ｋａ、Ｔｔ、ｃｏｖ、ｓｈｉｎｉｎｅｓｓ）、０〜１に正規化された高さ（ｈ）情報、および透過度ａが含まれている。
【００９７】
そして、オブジェクト発生部１１において、描画処理時に、マップ保持部１２に保持された２次元マップが読み出され、２次元マップデータに基づいて毛皮に関する同心の複数のシェルが発生されて、データＤ１として描画部１４に供給される。
オブジェクト発生部１１においては、視線の裏側の面は外側から内側に向かってシェルが発生され、視線の表側の面は内側に向かって表側にシェルが発生される。
【００９８】
描画部１４では、マップ保持部１２から読み出した２次元マップデータ、およびオブジェクト発生部１３によりオブジェクトデータであるシェルデータに基づいて、ベクトル＜ｔ＞のウィンドウ座標系でのベクトル＜ｔｗ＞が求められる。そして、求めたウィンドウ座標系でのベクトル＜ｔｗ＞に基づいてフィルタカーネル用のインデックス（ｉｎｄｅｘ　）が求められる。
描画部１４では、オブジェクト発生部１３が発生したプリミティブがラスタライズされた後、色、フィルタカーネル用のインデックス（ｉｎｄｅｘ　）が計算され信号Ｓ１４としてフィルタ処理部１６に出力される。
なお、描画部１４では、色計算にあたって、与えられた法線ベクトルｎ、視線ベクトルｅからマップから得た透過度が補正（調整）される。
フィルタ処理部１６において、求めたベクトルに基づいてフィルタカーネルが変更されて、描画対象物の向かっている方向にピクセルの情報を膨らませて、各シェル間で連続性を持たせるフィルタ処理が行われる。
【００９９】
以上説明したように、本実施形態によれば、描画対象物を複数のシェルとして重ね合わせて描画する画像処理装置において、色計算にあって、与えられた法線ベクトルおよび視線ベクトルに基づいてマップから得た透過度を補正する描画部１４を設けたことから、エッジ部分で高い画質を得ることが可能となる。
【０１００】
また、本実施形態によれば、２次元マップデータ、およびオブジェクト発生部１３によりオブジェクトデータであるシェルデータに基づいて、ベクトル＜ｔ＞のウィンドウ座標系でのベクトル＜ｔｗ＞を求め、これからフィルタカーネル用のインデックス（ｉｎｄｅｘ　）を求め、フィルタ処理部１６に出力する描画部１４と、描画部１４により供給されたＮ×Ｎのフィルタカーネル用インデックスｖｌｄ［ｉｎｄｅｘ］［Ｎ］［Ｎ］を用いて、フィルタ処理を行い、各シェルの描画およびフィルタ処理が完了した後、ｚバッファｚｂｕｆ２　とｚバッファｚｂｕｆ１　によりｚテストを行い、ｚバッファｚｂｕｆ２　の方が手前にある場合に、ｚバッファｚｂｕｆ２　とｚバッファｚｂｕｆ１の内容をアルファブレンド処理するフィルタ処理部１６とを設けたので、シェルの描画によっても連続性を維持することが可能で、画質の劣化を防止でき、平坦で均質な素材のオブジェクトはもとより、複雑な形状のオブジェクトも高品位に描画することができる。
本実施形態によれば、たとえば鹿のように、比較的短毛であり毛が皮膚面に沿っているような場合の、毛皮の質感を、２次元のマップを用いて高速に描画することが可能である。
【０１０１】
上述したように本第１の実施形態においては、描画部１４がレンダリング時に、法線ベクトルＮおよび視線ベクトルＥから透過度ａを補正する。
これは典型的には、数１８のように計算できるが、エッジ近傍の透過度を強化するような式であれば良いため、より簡単な演算を行う場合も考えられる。
【０１０２】
【数１８】
ａｎｅｗ　＝ａ／ｍａｘ（｜Ｎ・Ｅ｜，ＶＥＲＹ＿ＳＭＡＬＬ＿ＮＵＭＢＥＲ）
【０１０３】
第２実施形態
図２２は、本発明に係る画像処理装置の第２の実施形態を示すブロック構成図である。
【０１０４】
本第２の実施形態が上述した第１の実施形態と異なる点は、描画部１４Ａが、レンダリング時に、法線ベクトルＮおよび視線ベクトルＥから透過度ａを補正する代わりに、レンダリング時にマップの不均等性から透過度を補正するように構成したことにある。
本第２の実施形態に係る透過度の補正は、Ａｎｉｓｏｔｒｏｐｉｃ−ＭＩＰＭＡＰを用いることを前提とした場合である。
【０１０５】
一般的に用いられているＭＩＰＭＡＰは、図２３に示すように、サイズの異なるマップを事前に用意し、テクスチャ座標ｓ，ｔがウィンドウ座標系で単位長さ移動した場合にどれだけ移動するかをもとに、マップの大きさを選択する。
テクスチャ座標ｓ，ｔが大きく移動するほど、より小さいマップを選択する。この際、マップの形状が正方形状であるものを用いる場合が多い。この場合、ｓ，ｔ方向のいずれか一方が極端に変化するような場合は、良好な画質を得ることができない。
【０１０６】
一方、図２４に示すように、ｓ，ｔ方向のそれぞれにサイズが異なるＭＩＰＭＡＰを持つ場合がある。以下ではこれをＡｎｉｓｏｔｒｏｐｉｃ−ＭＩＰＭＡＰと呼ぶこととする。
これは、ｓ，ｔ方向の両方にウィンドウ座標系で単位長さ移動した場合の移動長が計算され、これを用いてマップを選択する。
ｓ方向がｔ方向に対して非常に大きく変化するような場合、ｓ方向に短く、ｔ方向に長い形状のマップが選択される。
この方法では、ｓ、ｔ方向のいずれか一方が極端に変化するような場合でも、良好な画質を得ることができる。
Ａｎｉｓｏｔｒｏｐｉｃ−ＭＩＰＭＡＰを用いる場合、ｓ方向とｔ方向のマップのサイズの比が大きいほど、法線と視線との関係は垂直に近くなる。したがって、この値を用いて透過度ａを補正することは有効となる。たとえば、数１９のように計算することが可能である。
【０１０７】
【数１９】
ａｎｅｗ　＝ａ＊ｍａｘ（ｓｓｉｚｅ／ｔｓｉｚｅ，ｔｓｉｚｅ／ｓｓｉｚｅ）
【０１０８】
ここで、ｓｓｉｚｅはｓ方向のマップのサイズ、ｔｓｉｚｅはｔ方向のマップのサイズを示している。
【０１０９】
本第２の実施形態によれば、ｓ、ｔ方向のいずれか一方が極端に変化するような場合でも、良好な画質を得ることができる利点がある。
【０１１０】
第３実施形態
図２５は、本発明に係る画像処理装置の第３の実施形態を示すブロック構成図である。
【０１１１】
本第３の実施形態が上述した第２の実施形態と異なる点は以下の点にある。
第２の実施形態に係る透過度の補正は、事前にサイズの異なるマップを複数用意しておき、これらのうちの１つを選択するという手法であった。
これに対して、本第３の実施形態に係る透過度の補正は、ｓ方向、ｔ方向にサイズの異なるマップを用意するのではなく、マップ内のフィルタの不均等性を示すパラメータ、具体的には、ｓ方向、ｔ方向の傾き加減から、マップ内のフィルタの範囲（領域）ＦＬＴＡを変化させる手法である。
本第３の実施形態においては、マップとしては正方形状のマップを用いるが、図２６に示すように、フィルタの範囲を変更する。これによりＡｎｉｓｏｔｒｏｐｉｃ−ＭＩＰＭＡＰと同様の画質を得ることが可能となる。
このような場合にも、ｓ方向、ｔ方向の変化分ｄｓ，ｄｔからたとえば数２０のように計算することが可能である。
【０１１２】
【数２０】
ａｎｅｗ　＝ａ＊ｍａｘ（｜ｄｓ／ｄｔ｜，｜ｄｔ／ｄｓ｜）
【０１１３】
本第３の実施形態によれば、事前にサイズの異なるマップを複数用意する必要がないにもかかわらず、Ａｎｉｓｏｔｒｏｐｉｃ−ＭＩＰＭＡＰと同様の画質を得ることができる利点がある。
【０１１４】
第４実施形態
図２７は、本発明に係る画像処理装置の第４の実施形態を示すブロック構成図である。
【０１１５】
本第５の実施形態が上述した第２の実施形態と異なる点は、透過度の補正をレンダリング時ではなく、Ａｎｉｓｏｔｒｏｐｉｃ−ＭＩＰＭＡＰのように事前にマップを作成しておく場合は、それぞれのマップの透過度を事前に補正することにある。
【０１１６】
本第４の実施形態においては、補正手段としてのマップ作成部１１Ｃが、ｓ、ｔ方向のマップサイズ（ｓｓｉｚｅ，ｔｓｉｚｅ）に基づいて、透過度ａをたとえば数１９のように補正する。
そして、描画部１４Ｃは、補正後の透過度透過度ａｎｅｗ　を受けて、所定の描画処理を行う。
【０１１７】
本第４の実施形態によれば、ｓ、ｔ方向のいずれか一方が極端に変化するような場合でも、良好な画質を得ることができる利点がある。
【０１１８】
【発明の効果】
以上説明したように、本発明によれば、２次元マップを用いて擬似的に３次元マップを実現する場合に、良好な描画結果を得ることができる。
そして、シェルの描画によっても連続性を維持することが可能で、画質の劣化を防止でき、平坦で均質な素材のオブジェクトはもとより、複雑な形状のオブジェクトも高品位に描画することができる。
【図面の簡単な説明】
【図１】（Ａ），（Ｂ）は、Ｌｅｎｇｙｅｌの手法における２次元マップの作成を模式的に示す図である。
【図２】２次元マップを用いて皮膚面を膨らませた面（シェル）を描画することにより、擬似的に３次元の毛を表現することを説明するための図である。
【図３】光源ベクトルＬ、ハーフベクトルＨ、毛の方向ベクトルＤの関係を示す図である。
【図４】２次元マップに毛をスライスした断片が平面上に表現され状態を示す図である。
【図５】（Ａ），（Ｂ）はこの視線との関係に依存して、最終的な画像が薄く見えるという課題を説明するための図である。
【図６】本発明に係る画像処理装置の第１の実施形態を示すブロック構成図である。
【図７】本実施形態に係る毛のモデル作成について説明するための図である。
【図８】本実施形態に係る２次元マップの作成について説明するための図である。
【図９】３つのシェルに同一のマップを用いた場合を表現した図である。
【図１０】離散的に高さ方向に傾きのある毛を描画した場合を示す図である。
【図１１】本実施形態に係るシェルの視線に対して表側と裏側に分離して描画する方法を説明するための図である。
【図１２】毛同士が重なった状態で、毛の高さ情報を失われることを説明するための図である。
【図１３】毛の高さ情報を失わせない方法を説明するための図である。
【図１４】複数種のマップを用意し、各層毎に微妙に高さを変えて描画する方法を説明するための図である。
【図１５】ウィンドウ座標の方向ベクトルを求める方法を説明するための図である。
【図１６】ウィンドウ座標の方向ベクトルを求める方法を説明するための図である。
【図１７】ウィンドウ座標の方向ベクトルを求める方法を説明するための図である。
【図１８】毛の描画状態を示す図である。
【図１９】エッジ部分の透過度を補正する理由を説明するための図である。
【図２０】毛が連続的に描画される理想状態を示す図である。
【図２１】本実施形態に係るフィルタ処理を説明するための図である。
【図２２】本発明に係る画像処理装置の第２の実施形態を示すブロック構成図である。
【図２３】一般的なＭＩＰＭＡＰを説明するための図である。
【図２４】ｓ，ｔ方向のそれぞれにサイズが異なるＭＩＰＭＡＰを持つ、Ａｎｉｓｏｔｒｏｐｉｃ−ＭＩＰＭＡＰを説明するための図である。
【図２５】本発明に係る画像処理装置の第３の実施形態を示すブロック構成図である。
【図２６】本第３の実施形態に係るフィルタの範囲を変更する処理を説明するための図である。
【図２７】本発明に係る画像処理装置の第４の実施形態を示すブロック構成図である。
【符号の説明】
１０，１０Ａ〜１０Ｃ…画像処理装置、１１，１１Ｃ…マップ作成部、１２…マップ保持部、１３…オブジェクト発生部、１４，１４Ａ〜１４Ｃ…描画部、１５…メモリ、１６…フィルタ処理部。
【図１】
2004054634.tif 000008
【図２】
2004054634.tif 000009
【図３】
2004054634.tif 000010
【図４】
2004054634.tif 000011
【図５】
2004054634.tif 000012
【図６】
2004054634.tif 000013
【図７】
2004054634.tif 000014
【図８】
2004054634.tif 000015
【図９】
2004054634.tif 000016
【図１０】
2004054634.tif 000017
【図１１】
2004054634.tif 000018
【図１２】
2004054634.tif 000019
【図１３】
2004054634.tif 000020
【図１４】
2004054634.tif 000021
【図１５】
2004054634.tif 000022
【図１６】
2004054634.tif 000023
【図１７】
2004054634.tif 000024
【図１８】
2004054634.tif 000025
【図１９】
2004054634.tif 000026
【図２０】
2004054634.tif 000027
【図２１】
2004054634.tif 000028
【図２２】
2004054634.tif 000029
【図２３】
2004054634.tif 000030
【図２４】
2004054634.tif 000031
【図２５】
2004054634.tif 000032
【図２６】
2004054634.tif 000033
【図２７】
2004054634.tif 000034