(57)【要約】【課題】毛状の描画対象同士が光源からの光を遮光してできる影付けを、高速に描画することができる描画方法を得ること。【解決手段】ＣＧによってモデリング、シミュレーションされた、毛状の描画対象をレンダリングする描画方法において、毛状の描画対象を分割して光源セグメントを生成する工程１と、光源セグメントを光源との距離が近い順にソートする工程２と、ソートされた順に、光源セグメントをαブレンディングしながらフレームバッファに描画する工程３と、フレームバッファへの描画結果に基づいて光源セグメントの影付け用の濃度を算出する工程４と、毛状の描画対象を分割して視点セグメントを生成する工程５と、視点セグメントを視点との距離が遠い順にソートする工程６と、ソート結果に基づいて、視点セグメントをαブレンディングしながら所定のカラー値および影付け用の濃度で描画する工程７と、を含む。【選択図】        図６
2005251000.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータグラフィックスによってモデリングおよびシミュレーションされた、複数の毛状の描画対象および複数のポリゴン面からなる描画対象を、レンダリングする描画方法において、
それぞれの前記毛状の描画対象を分割し、分割した描画対象から光源方向に直交する面を有する光源セグメントを生成する光源方向セグメンテーション工程と、
前記光源セグメントおよび前記ポリゴン面を、光源との距離が近い順にソートする第１のソート工程と、
前記第１のソート工程でソートされた順に、前記光源セグメントおよび前記ポリゴン面を所定のα混合率でαブレンディングしながらフレームバッファに描画する第１の描画工程と、
前記フレームバッファへの描画結果に基づいて前記光源セグメントおよび前記ポリゴン面のそれぞれの影付け用の濃度を算出し保存する影付け濃度算出工程と、
それぞれの前記毛状の描画対象を分割し、分割した描画対象から視点方向に直交する面を有する視点セグメントを生成する視点方向セグメンテーション工程と、
前記視点セグメントおよび前記ポリゴン面を、視点との距離が遠い順にソートする第２のソート工程と、
前記第２のソート工程でのソート結果に基づいて、前記ポリゴン面を前記所定のα混合率でαブレンディングしながら前記影付け用の濃度で描画するとともに、前記視点セグメントを前記所定のα混合率でαブレンディングしながら所定のカラー値および前記影付け用の濃度で描画する第２の描画工程と、
を含むことを特徴とする描画方法。
【請求項２】
前記光源方向セグメンテーション工程および／または前記視点方向セグメンテーション工程は、前記複数の毛状の描画対象のそれぞれを、描画対象毎に同じ長さで分割することを特徴とする請求項１に記載の描画方法。
【請求項３】
前記毛状の描画対象の幅に基づいて、前記光源セグメントの前記光源方向に直交する面の幅を決定するとともに、一つの毛状の描画対象から分割されて生成される前記光源セグメントは、隣り合う他の光源セグメントとは前記光源方向に直交する面の幅が重なるよう生成することを特徴とする請求項１または２に記載の描画方法。
【請求項４】
前記毛状の描画対象の幅に基づいて、前記視点セグメントの前記視点方向に直交する面の幅を決定するとともに、一つの毛状の描画対象から分割されて生成される前記視点セグメントは、隣り合う他の視点セグメントとは前記視点方向に直交する面の幅が重なるよう生成することを特徴とする請求項１〜３のいずれか１つに記載の描画方法。
【請求項５】
前記第２の描画工程は、前記第２のソート工程でソートされた順番に基づいて前記ポリゴン面を先に描画した後、前記第２のソート工程でソートされた順番に基づいて前記視点セグメントを描画することを特徴とする請求項１〜４のいずれか１つに記載の描画方法。
【請求項６】
前記第２の描画工程は、前記第２のソート工程でソートされた順番に基づいて前記ポリゴン面および前記視点セグメントを描画することを特徴とする請求項１〜５のいずれか１つに記載の描画方法。
【請求項７】
コンピュータグラフィックスによってモデリングおよびシミュレーションされた、複数の毛状の描画対象および複数のポリゴン面からなる前記複数の毛状以外の描画対象を、レンダリングする描画装置において、
前記複数の毛状の描画対象のそれぞれを分割し、分割したそれぞれの描画対象から前記光源方向に直交する面を有するセグメントを光源セグメントとして作成する光源方向セグメンテーション手段と、
前記光源セグメントおよび前記ポリゴン面を、光源との距離が近い順にソートする第１のソート手段と、
前記第１のソート工程でソートされた順に、前記光源セグメントおよび前記ポリゴン面を所定のα混合率でαブレンディングしながらフレームバッファに描画する第１の描画手段と、
前記フレームバッファへの描画結果に基づいて前記光源セグメントおよび前記ポリゴン面のそれぞれの影付け用の濃度を算出し保存する影付け濃度算出手段と、
前記複数の毛状の描画対象のそれぞれを分割し、分割したそれぞれの描画対象から視点方向に直交する面を有するセグメントを視点セグメントとして作成する視点方向セグメンテーション手段と、
前記視点セグメントおよび前記ポリゴン面を、視点との距離が遠い順にソートする第２のソート手段と、
前記第２のソート工程でのソート結果に基づいて、前記ポリゴン面を前記所定のα混合率でαブレンディングしながら前記影付け用の濃度で描画するとともに、前記視点セグメントを前記所定のα混合率でαブレンディングしながら所定のカラー値および前記影付け用の濃度で描画する第２の描画手段と、
を含むことを特徴とする描画装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックによって毛状の描画対象を描画する描画方法およびその装置に関するものである。
【背景技術】
【０００２】
コンピュータグラフィックス（ＣＧ）による動物等の毛の描画においては、毛全体が集合したときのボリューム感を表現することが重要となる。動物の毛同士が互いに落とす影を表現できると、毛同士の前後関係を視覚的に認識することが可能となる。これにより動物の毛等に、奥行きを感じさせることができ、ボリューム感を表現することが可能となる。このように、毛全体が集合したときのボリューム感は、動物等の毛同士が互いに落とす影の影響を大きく受ける。
【０００３】
非特許文献１に記載のFake Fur Renderingによる描画方法は、実際の毛をモデリングすることなく、統計的なモデルを用いて毛の生えているポリゴン面の面積、毛の長さ、毛の生えている密度等の情報を得ている。そして、これらの情報に基づいてポリゴン面の陰影付けを行い、細い毛が生え揃っているような擬似的な視覚効果を与えている。
【０００４】
また、非特許文献２に記載のReal-Time Furによる描画方法は、オブジェクトを複数の層で置き換え、これらの層を重ね合わせることによって表現するシェル・テクスチャーを利用してモデリングやレンダリングを行っている。
【０００５】
さらに、非特許文献３に記載のDeep Shadow Mapsによる描画方法は、毛を表すために三角柱等の形状や線分形状を用いてモデリングを行い、Deep Shadow Mapによって毛の影付けを行っている。
【０００６】
【非特許文献１】"Fake Fur Rendering", Dan B Goldman, In SIGGRAPH 97 Conference Proceedings, pp.127-134., Los Angeles, 1997.
【非特許文献２】"Real-time fur.", LENGYEL, J. ,Eurographics Rendering Workshop 2000, pp. 243-256
【非特許文献３】"Deep shadow maps.", Tom Lokovic, Eric Veach , SIGGRAPH 2000,385-392
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、非特許文献１記載の従来技術では、ポリゴン面毎に陰影付けを行うにあたり、毛そのものをモデル化していないため近い視点からボリューム感のある視覚効果を表現できないといった問題があった。
【０００８】
また、非特許文献２に記載の従来技術では、複数の層を重ね合わせているため毛の伸びている方向に色を変化させることや模様をつけることが困難であり、特に仮想的な動物を描画する場合等に大きな制約となっていた。また、視点方向によってはシェル・テクスチャー間に隙間が見える場合があるといった問題があった。
【０００９】
また、非特許文献３に記載の従来技術では、レイトレーシングベースの手法によってレンダリングを行っているため、レンダリング時間が長くなるといった問題があった。
【００１０】
本発明は、上記に鑑みてなされたものであって、動物等の毛状の描画対象同士が光源からの光を遮光してできる影付けを、高速に描画することができる描画方法およびその装置を得ることを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、請求項１にかかる発明は、コンピュータグラフィックスによってモデリングおよびシミュレーションされた、複数の毛状の描画対象および複数のポリゴン面からなる前記複数の毛状以外の描画対象を、レンダリングする描画方法において、それぞれの前記毛状の描画対象を分割し、分割した描画対象から光源方向に直交する面を有する光源セグメントを生成する光源方向セグメンテーション工程と、前記光源セグメントおよび前記ポリゴン面を、光源との距離が近い順にソートする第１のソート工程と、前記第１のソート工程でソートされた順に、前記光源セグメントおよび前記ポリゴン面を所定のα混合率でαブレンディングしながらフレームバッファに描画する第１の描画工程と、前記フレームバッファへの描画結果に基づいて前記光源セグメントおよび前記ポリゴン面のそれぞれの影付け用の濃度を算出し保存する影付け濃度算出工程と、それぞれの前記毛状の描画対象を分割し、分割した描画対象から視点方向に直交する面を有する視点セグメントを生成する視点方向セグメンテーション工程と、前記視点セグメントおよび前記ポリゴン面を、視点との距離が遠い順にソートする第２のソート工程と、前記第２のソート工程でのソート結果に基づいて、前記ポリゴン面を前記所定のα混合率でαブレンディングしながら前記影付け用の濃度で描画するとともに、前記視点セグメントを前記所定のα混合率でαブレンディングしながら所定のカラー値および前記影付け用の濃度で描画する第２の描画工程と、を含むことを特徴とする。
【発明の効果】
【００１２】
この請求項１の発明によれば、描画対象同士が及ぼしあう影の影響を表現するために、任意サイズに設定できる視点セグメント毎に影付け濃度を算出しているので、ボリューム感のある毛状の描画対象を迅速に描画することが可能となるという効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下に添付図面を参照して、この発明にかかる描画方法およびその装置の最良な実施の形態を詳細に説明する。
【００１４】
（実施の形態）
図１は、本発明の実施の形態にかかる描画装置の構成を示すブロック図である。描画装置１０は、コンピュータグラフィックス（以下、ＣＧという）によって動物の毛等の描画対象を描画する装置であり、入力手段２５、表示手段２６、記録手段２７、モデリング・シミュレーション手段２０、レンダリング手段３０からなる。なお、本実施の形態においてモデリング、シミュレーション、レンダリングされるモデルは動物の毛に限られず、例えば昆虫の毛や毛状に生えた植物群（草原）等をモデルとしてもよい。
【００１５】
入力手段２５は、モデリング・シミュレーション手段２０およびレンダリング手段３０と接続されている。入力手段２５は、モデリング・シミュレーション手段２０やレンダリング手段３０にデータ入力や、演算、描画の実行コマンドを入力するためのものであり、例えばキーボードやポインティングデバイス等からなる。入力されるデータは、動物の毛をモデリング、シミュレーションするためのデータや動物の毛以外をポリゴンモデリング、シミュレーションするためのデータ等である。
【００１６】
表示手段２６は、モデリング・シミュレーション手段２０およびレンダリング手段３０と接続されている。表示手段２６は、モデリング・シミュレーション手段２０やレンダリング手段３０で行われたモデリングの結果、シミュレーションの結果、レンダリングの結果等を表示するものであり、例えばディスプレイやプリンタ等からなる。
【００１７】
記録手段２７は、モデリング・シミュレーション手段２０およびレンダリング手段３０と接続されている。記録手段２７は、モデリング・シミュレーション手段２０やレンダリング手段３０で行われたモデリングの結果、シミュレーションの結果、レンダリングの結果等を記録しておくものであり、例えばハードディスクやＭＯ（Magneto Optical disk）ドライブ等からなる。
【００１８】
モデリング・シミュレーション手段２０は、入力手段２５から入力されたデータ、演算、描画の実行コマンドによってモデリング・シミュレーションを行い、モデリングの結果やシミュレーションの結果等を表示手段２６や記録手段２７に送る。モデリング・シミュレーション手段２０は、３次元ＣＧにおいて描画するモデル（物体）の形状を作成するモデリング機能とモデルの動きをシミュレーションする機能を備えている。
【００１９】
これらの機能により、モデルの任意時刻における位置や形状を決定する。本実施の形態においては、動物等の毛の位置や形状をモデリング、シュミレーションし、これらの任意時刻での位置や形状を決定する。これにより、毛は一本一本が根元から毛先まで直線形状で表現されるものとする。なお、一本の直線形状が一本の毛を表現するようにしてもよいし、一本の直線形状が複数本の毛をまとめて表現するようにしてもよい。
【００２０】
モデリングは、パーティクルシミュレーションとして例えば毛の根元から粒子を打ち上げて重力落下させ、このときの粒子の軌跡を用いて毛の形状をモデリングする粒子計算や、ＧＵＩ（Graphical User Interface）を通したユーザ（描画装置の使用者）のインタラクションによって動物等のポリゴンモデル上に毛を生やす等によって行う。
【００２１】
シミュレーションは、モデリング機能によって作成された動物等の毛のモデルを例えば風等の影響によって動かし、粒子計算を行うことによって任意時刻でのモデルの位置や形状を数値データとして算出する等によって行う。
【００２２】
図２は、粒子計算によるモデリングの一例を説明するための図である。描画する毛の根元から粒子１を打ち上げる。このとき、毛を描画する位置（範囲）や本数に応じて粒子１の位置（範囲）や個数を決定する。また、打ち上げる粒子１の方向、初速度等の物理条件を決めておく。そして、打ち上げた粒子１は重力落下させる。この打ち上げられた粒子１の軌跡の一部を動物の毛のモデルとして抽出する、そして、抽出した軌跡を数値化し、連続体として表現できるようにする。
【００２３】
レンダリング手段３０は、モデリング・シミュレーション手段２０によって数値データとして与えられた動物の毛に関する情報を計算によって画像化するものであり、セグメンテーション手段３１、描画要素ソート手段３２、影付け濃度算出手段３３、シーン描画手段３４からなる。
【００２４】
セグメンテーション手段３１は、曲線や直線等で定義された動物の毛の位置や形状から太陽等の光源方向およびカメラ等の視点方向に対するセグメントを生成する。セグメントの生成は、モデリング、シミュレーションされた動物の毛の根元から先端部分までを長さ方向に分割することによって行う。ここでは、モデリング、シミュレーションされた動物の毛の根元から先端部分までを同じ長さの線分によって分割し、線分の両端に厚み（幅）を与えて四角形のセグメントを生成する。同じ長さの線分によって分割することによって分割処理を容易に行うことが可能となる。
【００２５】
なお、光源方向に対するセグメントを生成する際の線分と視点方向に対するセグメントを生成する際の線分は、種々異なる長さの線分を用いてもよい。例えば、曲線の曲率が大きい部分では短い線分によって毛を分割し曲線の曲率が小さい部分では長い線分によって毛を分割する。これにより、曲線の曲率が大きい部分では細かくリアルに毛を描画することが可能となり、曲線の曲率が大きい部分では分割処理を迅速に行うことが可能となる。
【００２６】
描画要素ソート手段３２は、セグメンテーション手段３１によって生成された動物の毛のセグメントや動物の毛とは異なる物体のポリゴン面等の描画対象となる各描画要素を光源からの距離や視点からの距離によってソート（順列付け）する。
【００２７】
シーン描画手段３４は、図示しないフレームバッファを備えており、光源と各描画要素の距離に基づいてソートされた各描画要素を、光源からの距離が近い描画要素から順にαブレンディングを行いながらフレームバッファに描画する。αブレンディングは、描画要素がポリゴン面である場合はα混合率1.0でフレームバッファに描画する。一方、描画要素がセグメントである場合は、予め設定しておいた所定のα混合率α0でフレームバッファに描画する。
【００２８】
また、シーン描画手段３４は視点と各描画要素の距離に基づいてソートされた各描画要素を、視点からの距離が遠い描画要素から順にαブレンディングを行いながらフレームバッファに描画する。このとき、影付け濃度算出手段３３によって得られた各描画要素の影付け濃度と各描画要素が有しているカラー値に基づいて全体のシーンを描画する。
【００２９】
影付け濃度算出手段３３は、光源からの距離によってソートされた各描画要素がフレームバッファに描画される際の画素値を調べ、各描画要素の影付け用の濃度（以下、影付け濃度という）として記録手段２７に保存する。
【００３０】
図３は、影付け濃度の概念を説明するための図である。図３に示すように太陽２等の光源から毛に光が当たると全体の毛のうち太陽２に近い毛の部分はほとんど影ができないのに対し、全体の毛のうち太陽２から遠い位置にある毛の部分は自らの毛と太陽２の間に位置する他の毛やその他の物体の影響を受けて影ができる。他の毛等の影響による影は、自らの毛の部分と太陽２の間に多くのまたは大きな毛が存在するほど大きくなる。また、毛等のα混合率によっても影の状態が異なる。本実施の形態においては、描画する毛にボリューム感を与えるため、毛等の部分同士が互いに他の毛の部分に与える影の影響を影付け濃度として算出しておく。
【００３１】
図４−１〜図４−４は、セグメントの生成方法を説明するための図である。図４−１は毛の分割方法を説明するための図であり、図４−２はセグメントの厚み方向を説明するための図であり、図４−３はセグメント形状を決定する方法を説明ための図であり、図４−４は、生成されたセグメントの一例を示す図である。
【００３２】
セグメンテーション（セグメントの生成）は、光源方向からのセグメンテーションと視点方向からのセグメンテーションの２回行われる。図４−１において、最初に１本の毛の全体を均等な長さの区間で区切り、１本の毛を複数の線分で近似する。ここでは、毛を３等分する場合を示しており、毛の根元側から線分Ａ１，Ａ２，Ａ３を生成している。なお、毛は直線状のものであってもよく、直線状の場合であっても同様に複数の線分で近似する。なお、複数本の毛をまとめて１本の直線や曲線で表現している場合も複数本の毛全体を均等な長さに区切り、複数本の線分で近似する。また、線分の長さは任意に設定可能であり、このため生成されるセグメントのサイズも任意設定可能である。
【００３３】
線分Ａ１〜Ａ３を生成した後、線分Ａ１〜Ａ３毎にセグメントを生成する。各セグメントは面状であり、セグメントとの元となる線分の長さ方向のベクトル（方向ベクトル）とセグメントの厚み方向のベクトルによって生成する。
【００３４】
各セグメントを生成する際、セグメントの始点側（毛の根元側）の厚みは、セグメントの元となる線分の方向ベクトルを用いて算出し、セグメントの終点側（毛先側）の厚みは、セグメントの元となる線分の１つ毛先側の線分の方向ベクトルを用いて算出する。これにより、隣り合うセグメントの境界をなめらかに描画することができるセグメントを生成することが可能となる。
【００３５】
ここでは、線分Ａ１に対応するセグメントの始点側の厚みは線分Ａ１の方向ベクトルを用い、線分Ａ１に対応するセグメントの終点側の厚みは線分Ａ２の方向ベクトルを用いて算出する。線分Ａ２に対応するセグメントの始点側の厚みは線分Ａ２の方向ベクトルを用い、線分Ａ２に対応するセグメントの終点側の厚みは線分Ａ３の方向ベクトルを用いて算出する。これにより、１本の毛は連続したセグメントによって表すことが可能となる。
【００３６】
セグメントの終点側の厚みを算出する際、毛の終点（毛先）となるセグメントのように、セグメントの元となる線分の１つ毛先側の線分が存在しない場合は、セグメントの終点側の厚みはセグメントの始点側の厚みと同じものを用いることとする。これにより、セグメントの終点側の厚みも算出することが可能となる。ここでは、線分Ａ３に対応するセグメントの始点側の厚みと終点側の厚みはともに線分Ａ３の方向ベクトルを用いて算出する。
【００３７】
図４−２に示すように光源の光線方向または視点からの視線方向の単位ベクトルをＬとし、毛の長さ方向の単位ベクトルをＤとすると、生成するセグメントの厚み方向の単位ベクトルＫはベクトルＬおよびベクトルＤに直交するので、ベクトルＫ，Ｌ，Ｄの関係はベクトルＬとベクトルＤの外積を用いてＫ＝Ｌ×Ｄ／｜Ｌ×Ｄ｜となる。
【００３８】
図４−３に示すように線分Ａ１に対するセグメントをセグメントＳ１とし、セグメントＳ１の始点側の厚み（幅）をａとして、セグメントＳ１の始点側の厚み方向の単位ベクトルをＫ１とすると、セグメントＳ１の始点側の厚み方向のベクトルはａ・Ｋ１となる。
【００３９】
同様に、線分Ａ２に対するセグメントをセグメントＳ２とし、セグメントＳ２の始点側の厚みをｂとして、セグメントＳ２の始点側の厚み方向の単位ベクトルをＫ２とすると、セグメントＳ２の始点側の厚み方向のベクトルはｂ・Ｋ２となる。したがって、セグメントＳ１の終点側の厚み方向のベクトルは、セグメントＳ２の始点側の厚み方向のベクトルｂ・Ｋ２となる。
【００４０】
また、図４−４に示すように線分Ａ３に対するセグメントをセグメントＳ３とし、セグメントＳ３の始点側の厚みをｃとして、セグメントＳ３の始点側の厚み方向の単位ベクトルをＫ３とすると、セグメントＳ３の始点側の厚み方向のベクトルはｃ・Ｋ３となる。したがって、セグメントＳ２の終点側の厚み方向のベクトルは、セグメントＳ３の始点側の厚み方向のベクトルｃ・Ｋ３となる。セグメントＳ３の終点側の厚み方向のベクトルは、セグメントＳ３の始点側の厚み方向のベクトルｃ・Ｋ３となる。なお、各セグメントの厚みａ〜ｃは、描画する毛の種類によって任意に設定可能とする。
【００４１】
なお、各セグメントを生成する際、セグメントの終点側の厚みは、セグメントの元となる線分の方向ベクトルを用いて算出し、セグメントの始点側の厚みは、セグメントの元となる線分の１つ毛の根元側の線分の方向ベクトルを用いて算出するようにしてもよい。例えば、セグメントＳ３の終点側の厚み方向のベクトルをｃ・Ｋ３とし、セグメントＳ３の始点側の厚み方向のベクトルおよびセグメントＳ２の終点側の厚み方向のベクトルをｂ・Ｋ２とし、セグメントＳ２の始点側の厚み方向のベクトルおよびセグメントＳ１の終点側の厚み方向のベクトルをａ・Ｋ１とする。そして、セグメントＳ１は毛の根元を含むのでセグメントＳ１の始点側の厚みはセグメントＳ１の終点側の厚みと同じものを用いることとする。
【００４２】
なお、各セグメントＳ１〜Ｓ３の厚み方向のベクトルは上述した方法に限られず、他の方法で求めてもよい。例えば、セグメントＳ１の始点側の厚み方向のベクトルをａ・Ｋ１とし、セグメントＳ１の終点側の厚み方向のベクトルおよびセグメントＳ２の始点側の厚み方向のベクトルを（ａ・Ｋ１＋ｂ・Ｋ２）／２としてもよい。
【００４３】
このようにして生成された１本の毛を示すセグメントＳ１〜Ｓ３には、毛のテクスチャが貼り付けられる。図５−１は、セグメントに貼り付けるためのテクスチャの一例を示す図であり、ここでのテクスチャは１本の毛を示している。テクスチャ座標は右下が（0.00，0.00）であり、左上が（1.00，1.00）である。ここでは１本の毛を３つのセグメントＳ１〜Ｓ３で３等分しているため、各セグメントに対応するようテクスチャの右側の辺は、（0.00，0.00）、（0.33，0.00）、（0.66，0,00）および（1.00，0.00）の座標が割り当てられている。同様に、テクスチャの左側の辺は、（0.00，1.00）、（0.33，1.00）、（0.66，1,00）および（1.00，1.00）の座標が割り当てられている。
【００４４】
図４−４に示すように、セグメントＳ１にはテクスチャの（0.00，0.00）、（0.33，0.00）、（0.33，1.00）、（0.00，1.00）で構成される部分が貼り付けられ、セグメントＳ２にはテクスチャの（0.33，0.00）、（0.66，0,00）、（0.66，1,00）、（0.33，1.00）で構成される部分が貼り付けられ、セグメントＳ３にはテクスチャの（0.66，0,00）、（1.00，0.00）、（1.00，1.00）、（0.66，1,00）で構成される部分が貼り付けられる。
【００４５】
図５−２は、１本の直線や曲線が複数本の毛を示している場合のテクスチャの一例を示す図である。ここでのテクスチャも図５−１で示したテクスチャと同様に、テクスチャ座標は右下が（0.00，0.00）であり、左上が（1.00，1.00）である。そして、各セグメントに対応するようテクスチャの座標が割り当てられている。
【００４６】
なお、テクスチャはカラー値を有しているものとし、このカラー値を用いてセグメントの描画が行われる。また、テクスチャは描画する毛毎に異なるテクスチャを用いてもよいし、同じテクスチャを用いてもよい。
【００４７】
なお、本実施の形態においては３つのセグメントに対して厚み方向のベクトルを算出したが、セグメントが４つ以上ある場合であっても全てのセグメントに対して厚み方向のベクトルを算出する。そして、テクスチャは、４つのセグメントに対応するよう座標が割り当てられ、各セグメントに対応するようテクスチャが貼り付けられる。各セグメントの厚み方向のベクトルは任意時刻の毛全てに対して算出され、テクスチャが貼り付けられる。
【００４８】
つぎに、このような描画装置の描画方法について図６のフローチャートを参照しながら説明する。モデリング・シミュレーション手段２０は、パーティクルシミュレーションやＧＵＩによって動物の毛の位置や形状をモデリングする。さらに、モデリングされた動物の毛は、風が吹いたことによる影響を受けてどのように動くかをシミュレーションし、任意時刻における動物の毛の位置や形状を決める（ステップＳ１００）。また、動物の毛を描画するための動物の体等はポリゴン面で作成しておき、動物の毛と一緒にシミュレーションしておく。
【００４９】
セグメンテーション手段３１は、シミュレーションの行われた毛に対し、光源方向に対応したセグメントを作成する。セグメントの作成として、毛の全体を均等な長さに区切るとともに、毛を構成している曲線を例えば線分Ａ１〜Ａ３で近似する。さらに、この線分Ａ１〜Ａ３の方向と光源方向に基づいてセグメントを生成する（ステップＳ１１０）。
【００５０】
各セグメントはセグメントの元となる線分の方向ベクトルとセグメントの厚み方向のベクトルによって生成する。各セグメントを生成する際、セグメントの始点側の厚みは、セグメントの元となる線分の方向ベクトルを用いて算出し、セグメントの終点側の厚みは、セグメントの元となる線分の１つ毛先側の線分の方向ベクトルを用いて算出する。毛先部分を含むセグメントの場合は、セグメントの終点側の厚みを算出する際、セグメントの終点側の厚みにはセグメントの始点側の厚みと同じものを用いる。
【００５１】
つぎに、描画要素（作成されたセグメントやポリゴン面）の中心座標を求める。中心座標は各描画要素を構成する格子点の座標の平均値を求めることによって行う。描画要素ソート手段３２は、光源と各描画要素の中心座標までの距離を求め、描画要素を光源からの距離が小さいものから大きいもの（近いものから遠いもの）の順番でソートする（ステップＳ１２０）。
【００５２】
ここで、フレームバッファ内の画素値を例えば白色を示す（Ｒ，Ｇ，Ｂ，α）＝（1.0，1.0，1.0，1.0）で初期化しておく（ステップＳ１３０）。ここで、Ｒは赤、Ｇは緑、Ｂは青、αは混合率（不透明率（透明率の逆））を示している。
【００５３】
シーン描画手段３４は、描画要素ソート手段３２によってソートされた各描画要素のうち、光源との距離が最も小さい描画要素を取り出し、αブレンディングを行いながらフレームバッファ内に描画する（ステップＳ１４０）。描画要素がポリゴン面である場合は、αブレンディングを行う際のα混合率を1.0として例えば黒色（Ｒ，Ｇ，Ｂ，α）＝（0.0、0.0、0.0、1.0）でフレームバッファに描画する。一方、描画要素がセグメントである場合は、所定のα混合率α0として例えば黒色（Ｒ，Ｇ，Ｂ，α）＝（0.0、0.0、0.0、α0）でフレームバッファに描画する。
【００５４】
影付け濃度算出手段３３は、シーン描画手段３４によってフレームバッファ内に描画された描画要素の中心の画素値を検出する。フレームバッファ内の画素値はＲ、Ｇ、Ｂの値を検出することによって行うが、ここではＲ、Ｇ、Ｂの値は全て同じであるため、影付け濃度算出手段３３はＲ、Ｇ、Ｂのいずれかの浮動小数点値をこの描画要素の影つけ濃度として算出し（ステップＳ１５０）、記録手段２７に保存させておく。そして、フレームバッファに描画した描画要素が最後のものであるかを確認する（ステップＳ１６０）。
【００５５】
フレームバッファに描画した描画要素が最後のものでなければ（ステップＳ１６０でＮｏの場合）、以下、ステップＳ１４０、Ｓ１５０と同様の処理を行う。すなわち、影付け濃度算出手段３３が次に光源からの距離が小さい描画要素の中心が描画されるフレームバッファ内の画素値を調べるため、シーン描画手段３４は次の描画要素をαブレンディングを行いながらフレームバッファ内に描画する。そして、影付け濃度算出手段３３が描画要素の影つけ濃度を算出して記録手段２７に保存させておく。そして、フレームバッファに描画した描画要素が最後のものであるかを確認する（ステップＳ１６０）。
【００５６】
以下、光源からの距離が小さい描画要素から順にステップＳ１４０〜Ｓ１６０の処理を繰り返す。このように、シーン描画手段３４は、描画要素ソート手段３２によってソートされた順番で各描画要素をフレームバッファに描画し、影付け濃度を算出して保存していく。フレームバッファに描画した描画要素が最後のものであると判断されれば（ステップＳ１６０でＹｅｓの場合）、フレームバッファへの描画要素の描画および影付け濃度の算出を終了する。
【００５７】
つぎに、セグメンテーション手段３１は、ステップＳ１００でモデリング、シミュレーションの行われた毛に対し、視点方向に対応したセグメントを作成する（ステップＳ１７０）。セグメントの作成として、毛の全体を均等な長さに区切るとともに、毛を構成している曲線を例えば線分Ｂ１〜Ｂ３（図示せず）で近似する。さらに、この線分Ｂ１〜Ｂ３の方向と視点方向に基づいて各セグメントを構成する四角形を求める（ステップＳ１７０）。なお、毛を構成している曲線を光源方に対応するセグメント作成で用いた線分Ａ１〜Ａ３で近似してもよい。
【００５８】
各セグメントはセグメントの元となる線分の方向ベクトルとセグメントの厚み方向のベクトルによって生成する。各セグメントを生成する際、セグメントの始点側の厚みは、セグメントの元となる線分の方向ベクトルを用いて算出し、セグメントの終点側の厚みは、セグメントの元となる線分の１つ毛先側の線分の方向ベクトルを用いて算出する。毛先部分を含むセグメントの場合は、セグメントの終点側の厚みを算出する際、セグメントの終点側の厚みにはセグメントの始点側の厚みと同じものを用いる。
【００５９】
つぎに、描画要素（作成されたセグメントやポリゴン面）の中心座標を求める。中心座標は各描画要素を構成する格子点の座標の平均値を求めることによって行う。描画要素ソート手段３２は、視点と各描画要素の中心座標までの距離を求め、セグメントを視点からの距離が大きいものから小さいもの（遠いものから近いもの）の順番でソートするとともに（ステップＳ１８０）、ポリゴン面を視点からの距離が大きいものから小さいもの順番でソートする
【００６０】
ここで、フレームバッファ内の画素値を例えば白色を示す（Ｒ，Ｇ，Ｂ，α）＝（1.0，1.0，1.0，1.0）で初期化しておく（ステップＳ１９０）。シーン描画手段３４は、まず動物の毛以外のポリゴンモデルデータ（ポリゴン面）を、描画要素ソート手段３２でソートした順番（視点からの距離が大きいものから小さいものの順番）でフレームバッファに描画する（ステップＳ２００）。このときの描画のカラー値は、影付け濃度算出手段３３によって算出された描画要素の影付け濃度に元のカラー値を乗算したものを用いる。例えば、影付け濃度がＩであり、カラー値が（Ｒ、Ｇ、Ｂ）である場合、カラー値を（Ｉ×Ｒ、Ｉ×Ｇ、Ｉ×Ｂ）としてポリゴン面をフレームバッファに描画する。
【００６１】
つぎに、シーン描画手段３４は、描画要素ソート手段３２によってソートされた順番で、αブレンディングを行いながらフレームバッファ内にセグメントを描画する（ステップＳ２１０）。このとき、各セグメントはテクスチャ座標の対応付けがなされている。描画されるテクスチャのカラー値が（ＴＲ、ＴＧ、ＴＢ）である場合、カラー値を（Ｉ×ＴＲ、Ｉ×ＴＧ、Ｉ×ＴＢ）とし、α混合率を例えばα0としてテクスチャをフレームバッファに描画する。フレームバッファに描画された内容は、記録手段２７によって記録されるとともに表示手段２６によって表示される。
【００６２】
なお、本実施の形態においては、α混合率を所定のα0としてセグメントをαブレンディングすることとしたが、α混合率は所定の値に限られず、セグメントの厚み毎に設定するようにしてもよい。例えばベクトルＬとベクトルＤの成す角度をθとしてα0／（１＋sinθ）をα混合率として用いてもよい。
【００６３】
また、本実施の形態においては、描画装置１０が入力手段２５、表示手段２６、記録手段２７を備える構成としたが入力手段２５、表示手段２６、記録手段２７は描画装置１０から独立した構成としてもよい。さらに、モデリング・シミュレーション手段２０が描画装置１０から独立した構成であってもよい。
【００６４】
なお、本実施の形態においては、視点方向からの描画を行う際、描画要素ソート手段３２は、セグメントとポリゴン面を別々にソートしたが、描画要素ソート手段３２がセグメントとポリゴン面をまとめて視点からの距離が大きいものから小さいものの順番でソートしてもよい。この場合、セグメントおよびポリゴン面を、描画要素ソート手段３２でソートした順番でフレームバッファ内に描画する。この場合であっても、セグメントの描画は所定の影付け濃度、カラー値を用い、αブレンディングを行いながらテクスチャをフレームバッファ内に描画することによって行う。また、ポリゴン面の描画は所定の影付け濃度、カラー値を用いて描画する。
【００６５】
このように実施の形態によれば、描画要素で表される描画対象同士が及ぼしあう影の影響を表現するために、任意サイズに設定できるセグメント毎に影付け濃度を算出しているので、ボリューム感のある毛を高速で描画することが可能となる。
【産業上の利用可能性】
【００６６】
以上のように、本発明にかかる描画方法およびその装置は、コンピュータグラフィックスによる毛状の描画対象の描画に適している。
【図面の簡単な説明】
【００６７】
【図１】本発明の実施の形態にかかる描画装置の構成を示すブロック図である。
【図２】粒子計算によるモデリングの一例を説明するための図である。
【図３】影付け濃度の概念を説明するための図である
【図４−１】毛の分割方法を説明するための図である。
【図４−２】セグメントの厚み方向を説明するための図である。
【図４−３】セグメント形状を決定する方法を説明ための図である。
【図４−４】生成されたセグメントの一例を示す図である。
【図５−１】セグメントに貼り付けるためのテクスチャの一例を示す図である。
【図５−２】１本の直線や曲線が複数本の毛を示している場合のテクスチャの一例を示す図である。
【図６】本発明の実施の形態にかかる描画方法の手順を示すフローチャートである。
【符号の説明】
【００６８】
１  粒子
２  太陽
１０  描画装置
２０  モデリング・シミュレーション手段
２５  入力手段
２６  表示手段
２７  記録手段
３０  レンダリング手段
３１  セグメンテーション手段
３２  描画要素ソート手段
３３  影付け濃度算出手段
３４  シーン描画手段
Ａ１〜Ａ３  線分
Ｄ  毛の長さ方向の単位ベクトル
Ｋ  セグメントの厚み方向の単位ベクトル
Ｌ  視線方向または光線方向の単位ベクトル
Ｓ１〜Ｓ３  セグメント
【図１】
2005251000.tif 000003
【図２】
2005251000.tif 000004
【図３】
2005251000.tif 000005
【図４−１】
2005251000.tif 000006
【図４−２】
2005251000.tif 000007
【図４−３】
2005251000.tif 000008
【図４−４】
2005251000.tif 000009
【図５−１】
2005251000.tif 000010
【図５−２】
2005251000.tif 000011
【図６】
2005251000.tif 000012