(57)【要約】      （修正有）【課題】照明計算におけるメモリ使用量を好適に予測することが可能な予測方法を提供する。【解決手段】予測方法は、各画素が、該画素位置に対応する光線方向の直線上における３Ｄシーン内のフラグメント数を画素値とする、予め定められた画素数を有するフラグメント数マップ、及び該フラグメント数マップのミップマップを生成し、フラグメント数マップのミップマップにおける１つの階層の画素について、該画素に対応する３Ｄシーン内の対応領域に光輸送計算用の光線束を定義した場合に１つの光路上に平均的に含まれる推定フラグメント数を導出し、予め定められたメモリ領域のサイズを該値で除した値を、１つの階層の画素について予め定められたメモリ領域内に格納可能な光輸送計算用の光線束の予測光路数として出力し、１つの画素の画素値であるフラグメント数に該画素の階層に応じた補償値を加算することで推定フラグメント数を導出する。【選択図】図３
2014199543.tif 000002
【特許請求の範囲】
【請求項１】
所定の光線方向について光輸送計算用の複数の光線束を定義して行う３Ｄシーンの照明計算において、予め定められたメモリ領域内に格納可能な前記光輸送計算用の光線束の光路数を予測する予測方法であって、
第１の生成手段が、各画素が、該画素位置に対応する前記光線方向の直線上における前記３Ｄシーン内のフラグメント数を画素値とする、予め定められた画素数を有するフラグメント数マップ、及び該フラグメント数マップのミップマップを生成する第１の生成工程と、
導出手段が、前記第１の生成工程において生成された前記フラグメント数マップのミップマップにおける１つの階層の画素について、該画素に対応する前記３Ｄシーン内の対応領域に前記光輸送計算用の光線束を定義した場合に１つの光路上に平均的に含まれる推定フラグメント数を導出する導出工程と、
予測手段が、前記予め定められたメモリ領域のサイズを前記導出工程において導出された前記推定フラグメント数で除した値を、前記１つの階層の画素について前記予め定められたメモリ領域内に格納可能な前記光輸送計算用の光線束の予測光路数として出力する予測工程と、を有し、
前記導出手段は前記導出工程において、前記１つの画素の画素値であるフラグメント数に該画素の階層に応じた補償値を加算することで前記推定フラグメント数を導出する
ことを特徴とする予測方法。
【請求項２】
所定の光線方向について光輸送計算用の複数の光線束を定義して行う３Ｄシーンの照明計算において、予め定められたメモリ領域内に格納可能な前記光輸送計算用の光線束の光路数を予測する予測方法であって、
第１の生成手段が、各画素が、該画素位置に対応する前記光線方向の直線上における前記３Ｄシーン内のフラグメント数を画素値とする、予め定められた画素数を有するフラグメント数マップ、及び該フラグメント数マップのミップマップを生成する第１の生成工程と、
第２の生成手段が、前記フラグメント数マップと同数の画素数を有し、各画素が、前記フラグメント数マップの対応する画素と同一の直線上に存在するフラグメントに適用される照明テクスチャのテクセル密度を画素値とするインポータンスマップ、及び該インポータンスマップのミップマップを生成する第２の生成工程と、
導出手段が、前記第１の生成工程において生成された前記フラグメント数マップのミップマップにおける１つの階層の画素について、
該画素に対応する前記インポータンスマップのミップマップの画素の生成に参照された前記インポータンスマップの領域におけるテクセル密度の分布に応じて、定義する前記光輸送計算用の光線束の分布を変更するパラメータを決定し、
前記決定されたパラメータを参照し、前記１つの階層の画素に対応する前記３Ｄシーンの対応領域に変更後の前記光輸送計算用の光線束の分布を定義した場合に１つの光路上に平均的に含まれる推定フラグメント数を導出する導出工程と、
予測手段が、前記予め定められたメモリ領域のサイズを前記導出工程において導出された前記推定フラグメント数で除した値を、前記１つの階層の画素について前記予め定められたメモリ領域内に格納可能な前記光輸送計算用の光線束の予測光路数として出力する予測工程と、を有し、
前記導出手段は前記導出工程において、前記対応領域についての前記フラグメント数マップの画素値であるフラグメント数を、対応する前記インポータンスマップの画素値であるテクセル密度で加重平均して得られた加重平均フラグメント数に該画素の階層に応じた補償値を加算することで前記推定フラグメント数を導出する
ことを特徴とする予測方法。
【請求項３】
前記補償値は、前記フラグメント数マップのミップマップに含まれる最上層の画素の画素値、及び前記１つの階層の画素に対応する、前記フラグメント数マップ上の画素の数に基づいて決定されることを特徴とする請求項１または２に記載の予測方法。
【請求項４】
前記補償値は、前記１つの階層の画素が属する前記フラグメント数マップのミップマップの階層が下層であるほど大きくなる値に設定されることを特徴とする請求項１乃至３のいずれか１項に記載の予測方法。
【請求項５】
複数の光線方向各々について光輸送計算用の複数の光線束を定義して行う３Ｄシーンの照明計算によりライトマップを生成する生成方法であって、
前記光輸送計算用の光線束を定義する光線方向を設定する設定工程と、
第１の生成手段が、各画素が、該画素位置に対応する前記設定工程により設定された光線方向の直線上における前記３Ｄシーン内のフラグメント数を画素値とする、予め定められた画素数を有するフラグメント数マップ、及び該フラグメント数マップのミップマップを生成する第１の生成工程と、
第２の生成手段が、前記フラグメント数マップと同数の画素数を有し、各画素が、前記フラグメント数マップの対応する画素と同一の直線上に存在するフラグメントに適用される照明テクスチャのテクセル密度を画素値とするインポータンスマップ、及び該インポータンスマップのミップマップを生成する第２の生成工程と、
決定手段が、前記フラグメント数マップのミップマップ及び前記インポータンスマップのミップマップを参照し、前記設定された光線方向における前記３Ｄシーンに対し、前記光輸送計算用の光線束を定義してライトマップ生成に係る照明計算を実行する単位である処理領域を決定する決定工程と、
計算手段が、前記決定工程において決定された各処理領域について、前記光輸送計算用の光線束を定義してライトマップ生成に係る照明計算を実行する計算工程と、を有し、
前記決定手段は前記決定工程において、前記フラグメント数マップのミップマップ及び前記インポータンスマップのミップマップにおける、１つの階層の同一位置の画素について、該画素に対応する前記３Ｄシーン内の対応領域に対して請求項１乃至４のいずれか１項に記載の予測方法により出力された、予め定められたメモリ領域内に格納可能な前記光輸送計算用の光線束の予測光路数が、前記対応領域に含まれるテクセル数よりも大きい場合に、前記対応領域を前記処理領域として決定する
ことを特徴とする生成方法。
【請求項６】
コンピュータに請求項１乃至４のいずれか１項に記載の予測方法の各工程を実行させるためのプログラムを記録したコンピュータが読み取り可能な記録媒体。
【請求項７】
コンピュータに請求項５に記載の生成方法の各工程を実行させるためのプログラムを記録したコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、予測方法、生成方法、及び記録媒体に関し、特に３Ｄシーン描画に係る照明計算技術に関する。
【背景技術】
【０００２】
３ＤＣＧ（Three-Dimensional Computer Graphics）は、ゲームや映画に限らず、様々な分野において視覚化表現方法として用いられている。このような３ＤＣＧ生成の技術分野では、近年、より写実的な描写、あるいは上質な描画表現に近づけるために様々な手法が提案されている。
【０００３】
３ＤＣＧをより写実的な描写とするための表現手法として、大域照明（Global Illumination）による影響を反映させる手法がある。該手法では、１つの描画オブジェクトについて、定義された照明（光源）によって直接生じた陰影を描画するだけでなく、該光源が他の描画オブジェクトで反射することで現れる間接照明も考慮して陰影を描画することで、よりリアリティ味のある描画表現を提供することができる。
【０００４】
一方で大域照明に係る処理は、複雑な光の伝搬を追跡するレイトレーシング手法等を用いるため、一般に計算量が多く、ゲームのようなリアルタイムの画面描画が要求される場面での利用は困難であった。これに対し、間接照明を反映した描画処理を高速化するために、描画する３Ｄシーンの間接照明を予め計算したライトマップとして生成しておき、描画処理において該ライトマップをテクスチャとして適用するだけで簡易的に３ＤＣＧの写実性を向上させる手法がとられることもある。
【０００５】
ところで、このようなライトマップは大域照明を計算して生成されるものであるため、やはり生成には時間を要する。ライトマップの生成は、対象の３Ｄシーンへの入射光が描画オブジェクトの面に到達することによって生じた仮想光源による影響（拡散反射や鏡面反射等）を、ライトマップの各テクセルが適用される描画オブジェクト上の領域で様々な光線方向について積算する（レンダリング方程式）ことにより行われるため、考慮する光線数や光線方向の数に応じて処理時間が増加する。非特許文献１には、ライトマップ生成に係る１つの光線方向についてのシーン解析において、同一光線上の深度方向に並んだ描画オブジェクト間の反射を、リンクリストとしてまとめることでＧＰＵに最適化し、処理時間を低減する方法が開示されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】徳吉雄介、外２名著、「光線束を用いた高速大域照明ベイキング（Fast Global Illumination Baking via Ray-Bundles）」、シーグラフ・アジア２０１１  テクニカル・スケッチ（SIGGRAPH Asia 2011 Technical Sketches）、2011年
【非特許文献２】ニコラス・ティビローズ（Nicolas Thibieroz）著、「画素毎にリンクされたリストを用いるＯＩＴ（Order-Independent Transparency using Per-Pixel Linked Lists）」、GPU Pro 2、エー・ケー・ピーターズ（A K Peters）、2011年3月11日、第７章の２、p.409−431
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、非特許文献１の方法を用いたライトマップの生成では、サンプリングする光線方向によって情報量が異なる。このため、光線束の生成処理用に予め過剰なメモリ領域を割り当てる、あるいは限られたメモリ領域内で処理が可能なように予め生成する光線束の解像度（光線数）を低減することにより、メモリ溢れしないように調整する必要があった。
【０００８】
これに対し、非特許文献２にはサンプリングする光線方向の投影におけるシーンの２次元範囲を等しいサイズを有する格子状のタイルに分割し、分割したタイル毎に光線束を生成する方法が提案されている。これにより、シーン全体ではなく、一部の領域であるタイルについて光線束が生成されるため、メモリ使用量を低減することができる。
【０００９】
しかし、非特許文献２は非特許文献１の手法のライトマップ生成用のシーン解析において相対的にメモリ使用量を低減するものではあったが、絶対的なメモリ使用量を予測するものではない。即ち、いずれの文献も光線束生成に要するメモリ使用量を予測するものではなかった。このため、光線束の生成処理において、メモリの好適使用による高速化を実現するものではなかった。
【００１０】
本発明は、上述の問題点に鑑みてなされたものであり、照明計算におけるメモリ使用量を好適に予測することが可能な予測方法、生成方法、及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１１】
前述の目的を達成するために、本発明の第１の態様に係る予測方法は、以下の構成を備えることを特徴とする。具体的には予測方法は、所定の光線方向について光輸送計算用の複数の光線束を定義して行う３Ｄシーンの照明計算において、予め定められたメモリ領域内に格納可能な光輸送計算用の光線束の光路数を予測する予測方法であって、第１の生成手段が、各画素が、該画素位置に対応する光線方向の直線上における３Ｄシーン内のフラグメント数を画素値とする、予め定められた画素数を有するフラグメント数マップ、及び該フラグメント数マップのミップマップを生成する第１の生成工程と、導出手段が、第１の生成工程において生成されたフラグメント数マップのミップマップにおける１つの階層の画素について、該画素に対応する３Ｄシーン内の対応領域に光輸送計算用の光線束を定義した場合に１つの光路上に平均的に含まれる推定フラグメント数を導出する導出工程と、予測手段が、予め定められたメモリ領域のサイズを導出工程において導出された推定フラグメント数で除した値を、１つの階層の画素について予め定められたメモリ領域内に格納可能な光輸送計算用の光線束の予測光路数として出力する予測工程と、を有し、導出手段は導出工程において、１つの画素の画素値であるフラグメント数に該画素の階層に応じた補償値を加算することで推定フラグメント数を導出することを特徴とする。
【００１２】
前述の目的を達成するために、本発明の第２の態様に係る予測方法は、以下の構成を備えることを特徴とする。具体的には予測方法は、所定の光線方向について光輸送計算用の複数の光線束を定義して行う３Ｄシーンの照明計算において、予め定められたメモリ領域内に格納可能な光輸送計算用の光線束の光路数を予測する予測方法であって、第１の生成手段が、各画素が、該画素位置に対応する光線方向の直線上における３Ｄシーン内のフラグメント数を画素値とする、予め定められた画素数を有するフラグメント数マップ、及び該フラグメント数マップのミップマップを生成する第１の生成工程と、第２の生成手段が、フラグメント数マップと同数の画素数を有し、各画素が、フラグメント数マップの対応する画素と同一の直線上に存在するフラグメントに適用される照明テクスチャのテクセル密度を画素値とするインポータンスマップ、及び該インポータンスマップのミップマップを生成する第２の生成工程と、導出手段が、第１の生成工程において生成されたフラグメント数マップのミップマップにおける１つの階層の画素について、該画素に対応するインポータンスマップのミップマップの画素の生成に参照されたインポータンスマップの領域におけるテクセル密度の分布に応じて、定義する光輸送計算用の光線束の分布を変更するパラメータを決定し、決定されたパラメータを参照し、１つの階層の画素に対応する３Ｄシーンの対応領域に変更後の光輸送計算用の光線束の分布を定義した場合に１つの光路上に平均的に含まれる推定フラグメント数を導出する導出工程と、予測手段が、予め定められたメモリ領域のサイズを導出工程において導出された推定フラグメント数で除した値を、１つの階層の画素について予め定められたメモリ領域内に格納可能な光輸送計算用の光線束の予測光路数として出力する予測工程と、を有し、導出手段は導出工程において、対応領域についてのフラグメント数マップの画素値であるフラグメント数を、対応するインポータンスマップの画素値であるテクセル密度で加重平均して得られた加重平均フラグメント数に該画素の階層に応じた補償値を加算することで推定フラグメント数を導出することを特徴とする。
【発明の効果】
【００１３】
このような構成により本発明によれば、照明計算におけるメモリ使用量を好適に予測することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態に係るＰＣ１００の機能構成を示したブロック図
【図２】本発明の実施形態１に係るＰＣ１００で実行される、ライトマップ生成処理を例示したフローチャート
【図３】本発明の実施形態に係るＰＣ１００が生成するライトマップの対象を説明するための図
【図４】本発明の実施形態１に係るＰＣ１００で実行される、タイリング処理を例示したフローチャート
【図５】本発明の実施形態に係る、タイリング処理のタイル生成条件を説明するための図
【図６】本発明の実施形態に係るＰＣ１００で実行されるタイリング処理の実装を説明するための図
【図７】本発明の実施形態２に係るＰＣ１００で実行される、ライトマップ生成処理を例示したフローチャート
【図８】本発明の実施形態２に係るＰＣ１００で実行される、タイリング処理を例示したフローチャート
【発明を実施するための形態】
【００１５】
［実施形態１］
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態は、予測方法を実行する装置の一例としての、３Ｄシーンに適用するライトマップを生成可能なＰＣに、本発明を適用した例を説明する。しかし、本発明は、３Ｄシーンの照明計算を実行することが可能な任意の機器に適用可能である。
【００１６】
また、本明細書において、「光線束（Ray-bundle）」とは、対象の３Ｄシーンに配置された描画オブジェクト間に生じる相互反射の影響を計算（光輸送計算）するための光路（光線経路）の集合体であるものとして説明する。ライトマップの生成処理においては、上述したように様々な光線方向の相互反射を考慮する必要があるため、設定された光線方向の各々について対象の３Ｄシーン全体について光線方向に平行な光線束を定義し、各光路について光輸送計算を行う。なお、設定される光線方向によっては、１つの光路上には例えば図３に示されるように複数の相互反射が生じることがある。このような場合、光輸送計算はそれぞれの区間の相互反射について行われるため、１つの光路についての光輸送計算はライトマップの異なるテクセルに反映される。
【００１７】
《ＰＣ１００の構成》
図１は、本発明の実施形態に係るＰＣ１００の機能構成を示すブロック図である。
【００１８】
ＣＰＵ１０１は、ＰＣ１００が有する各ブロックの動作を制御する。具体的にはＣＰＵ１０１は、ＲＯＭ１０２あるいは記録媒体１０６に格納された各ブロックの動作プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより各ブロックの動作を制御する。
【００１９】
ＲＯＭ１０２は、例えば書き換え可能な不揮発性メモリである。ＲＯＭ１０２は、ＰＣ１００が有する各ブロックの動作プログラムに加え、各ブロックの動作において必要となるパラメータを記憶する。ＲＡＭ１０３は、揮発性メモリである。ＲＡＭ１０３は、各ブロックの動作プログラムの展開領域としてだけでなく、各ブロックの動作において出力された中間データ等を記憶する格納領域としても用いられる。
【００２０】
ＧＰＵ１０４は、後述のライトマップ生成処理に係る３Ｄシーンの描画処理を行う。具体的にはＧＰＵ１０４は、例えば後述の記録媒体１０６に記録された描画オブジェクトに係るモデルデータを読み出し、不図示のＧＰＵメモリに展開する。そしてＧＰＵ１０４は、ＣＰＵ１０１から提供される配置情報に応じてそれらのモデルデータを処理し、ライトマップ生成対象である３Ｄシーンを例えばＶＲＡＭ１０５に構成する。なお、本実施形態ではライトマップ生成処理におけるライトマップの生成領域として用いられるものとする。またＶＲＡＭ１０５は、１つの光線方向のライトマップ生成に係るシーン解析において生成されるインポータンスマップ及びフラグメント数マップの格納領域としても用いられる。
【００２１】
記録媒体１０６は、例えばＨＤＤ等のＰＣ１００に着脱可能に接続された記録媒体である。本実施形態では記録媒体１０６は、ライトマップ生成処理に係る３Ｄシーンを構成する描画オブジェクトや配置情報等のデータ、及び該処理の動作を規定したプログラム等が記録される。また記録媒体１０６には、ライトマップ生成処理により生成されたライトマップが記録される。
【００２２】
《ライトマップ生成処理》
このような構成をもつ本実施形態のＰＣ１００のライトマップ生成処理について、図２のフローチャートを用いて具体的な処理を説明する。なお、本ライトマップ生成処理は、例えば配置情報等が決定した３Ｄシーンについてのライトマップの生成要求がなされた際に開始されるものとして説明する。
【００２３】
Ｓ２０１で、ＣＰＵ１０１は、生成する光線束の方向（光線方向）を選択する。１つの３Ｄシーンに対して様々な方向の入射光により生じる間接照明を再現するために、一般にライトマップは複数の光線方向それぞれの入射放射輝度の値を積分することにより生成される。本ステップでは、ライトマップの生成処理においてサンプリングする光線方向の選択を行うが、その選択方法については特に限定しない。
【００２４】
Ｓ２０２で、ＧＰＵ１０４は、選択された光線方向について、シーン全体のインポータンス解析を行い、インポータンスマップを生成する。本実施形態ではインポータンスマップは、該光線方向の投影についてレンダリングされる２次元データであり、選択された光線方向においてシーン全体を含むように定義されるものとする。
【００２５】
インポータンスとは、ライトマップへの寄与度であり、フラグメントにおけるテクセル密度（フラグメントを有する描画オブジェクトの面に適用されるライトマップの、３Ｄシーン内に定義された系における単位面積当たりの画素数）が相当する。ここで言うフラグメントは、図３に示すように、インポータンスマップの各画素に対応する１つの直線（代表光路）上に存在する描画オブジェクトの面との交点を指す。
【００２６】
本ステップで生成するインポータンスマップは、２次元データの各画素について、対応する代表光路上に存在するフラグメントのインポータンスの値を格納する。なお、代表光路は３Ｄシーンの全体を通過するように規定されるため、１つの代表光路上には複数のフラグメントが存在することがある。即ち、１つの代表光路上に描画オブジェクトとの交点が複数存在することがある。このような場合は、該代表光路に対応する画素に格納されるインポータンスの値は、複数のフラグメントのインポータンスのうちの最大値とする。
【００２７】
Ｓ２０３で、ＧＰＵ１０４は、ＶＲＡＭ１０５に生成したインポータンスマップのミップマップを生成し、ＶＲＡＭ１０５に格納する。ミップマップの生成を簡単にするために、インポータンスマップの画素数は、１辺の画素数が２の累乗であってよい。ミップマップの生成では、例えば１つの層の単位画素の画素値はその１つ下の層の対応する４画素の平均値で生成されればよく、結果、最上層の１画素にはインポータンスマップの全画素の画素値の平均値が格納される。
【００２８】
Ｓ２０４で、ＧＰＵ１０４は、選択された光線方向について、シーン全体のフラグメント数解析を行い、フラグメント数マップを生成する。本実施形態ではフラグメント数マップは、インポータンスマップと同様に、該光線方向の投影についてレンダリングされる２次元データであり、インポータンスマップと同数の画素数を有するものとする。また、フラグメント数は、フラグメント数マップの各画素に対応する代表光路上に存在するフラグメントの数を示している。
【００２９】
フラグメント数は、各画素に対応する代表光路上に存在するフラグメントの数、即ち代表光路上に存在する描画オブジェクトの面の数を示している。本ステップで生成するフラグメント数マップは、２次元データの各画素について、対応する代表光路上のフラグメント数を格納する。なお、本実施形態ではインポータンスマップの生成を行った後にフラグメント数マップの生成を行うものとして説明するが、本発明の実施はこれに限られるものではない。即ち、２つのマップの生成は順不同であり、また２つのマップは同時並行して生成されてもよいことは容易に理解されよう。
【００３０】
Ｓ２０５で、ＧＰＵ１０４は、ＶＲＡＭ１０５に生成したフラグメント数マップのミップマップを生成し、ＶＲＡＭ１０５に格納する。なお、ミップマップの生成ルールは、Ｓ２０３のインポータンスマップのミップマップ生成について述べた方法と同一である。
【００３１】
Ｓ２０６で、ＧＰＵ１０４は、光線方向の投影における３Ｄシーンの２次元範囲を、光線束を生成して光輸送計算を行う単位である、好適なサイズのタイルに適応的に分割するタイリング処理を実行する。
【００３２】
上述したように、ライトマップの生成処理では、複数の光線方向のそれぞれについて該方向の光線束を定義して光輸送計算を行う。しかしながら、メモリ容量や計算量等における制約により、生成する光線束の光路数には所定の限界が存在する。つまり、例えば広大な３Ｄシーンについて光線束を定義する場合、特定の描画オブジェクトの面に適用されるライトマップの画素数（テクセル）よりも、該面を通過する光線束の数が少なくなってしまう可能性がある。このような場合、即ち、光線束の解像度が生成するライトマップのテクセル密度よりも低い場合、光線束間に生じた反射は考慮されず、生成するライトマップにおいて反映すべき光が漏れてしまい、好適な間接照明が表現されない。
【００３３】
このため、本実施形態のＰＣ１００では、本ステップのタイリング処理を実行することで、選択された光線方向の投影における３Ｄシーンの２次元範囲に対して、それぞれ反映すべき光の漏れがないようなタイルを定義する。なお、本実施形態のタイリング処理では、非特許文献２のように２次元範囲に対して単に予め定められた画素数のタイルを定義するのではなく、タイル内の描画オブジェクトに適用されるライトマップのテクセル密度に応じて適応的にタイルの画素数を異ならせながら定義を行う。具体的には後述のように、ハードウェアの制限内で生成できる光線束の数がタイル内の描画オブジェクトに適用されるライトマップの画素数より多くなるように、各タイルを定義する。
【００３４】
〈タイリング処理〉
ここで、本実施形態のＧＰＵ１０４で実行されるタイリング処理について、図４のフローチャートを参照して詳細を説明する。
【００３５】
Ｓ４０１で、ＧＰＵ１０４は、インポータンスマップ及びフラグメント数マップそれぞれのミップマップの最上層を処理対象層に選択する。
【００３６】
Ｓ４０２で、ＧＰＵ１０４は、処理対象層のミップマップの画素のうち、タイル生成が未判定の画素（対象画素）を選択する（各ミップマップで同一位置に存在する画素）。またＧＰＵ１０４は、インポータンスマップ及びフラグメント数マップにおいて、該対象画素に対応する領域を「タイル候補」として設定する。対象画素に対応する領域とは、ミップマップ上の対象画素を生成するために参照された、インポータンスマップあるいはフラグメント数マップの領域である。そしてＧＰＵ１０４は、それぞれのミップマップの対象画素の画素値を参照し、タイル候補について生成されるライトマップの画素数、及びタイル候補について定義する、ＶＲＡＭ１０５上の予め定められた格納領域（ノードバッファ）に格納可能な光路数（光線束に含まれる光線数）を算出する。
【００３７】
具体的にはＧＰＵ１０４は、インポータンスマップのミップマップから得られた対象画素の画素値（インポータンス）にタイル候補の面積を乗じることで、該タイル候補について生成されるライトマップの画素数（インポータンスマップ上での画素数）を算出する。即ち、以下の式
2014199543.tif 000003
により、タイル候補について生成されるライトマップの画素数を算出する。
【００３８】
また予め定められたノードバッファに格納可能な光路数は、以下の式
2014199543.tif 000004
により導く。ここで、ｍｉｎ（）は、列挙される値の最小値を出力する関数である。また最大光路数は、１つのタイルについて生成する光線束に含まれる光路数の最大値として予め定められた値（例えば４０９６の累乗）である。
【００３９】
光線束を生成した際、予め定められたノードバッファの１つのノードには光路上の１つのフラグメントが格納される。しかしながら、上述したように生成する光線束の各光路上には、複数のフラグメントが存在する可能性がある。つまり、１つの光路上に存在する複数のフラグメントに対し、それらのフラグメントを個別に格納するためのノードが必要となる。換言すれば、光線束を生成した場合に全光路上のフラグメント総数がノード数を超えた場合は光線束はノードバッファに格納することができない。このため、本実施形態のタイリング処理では、フラグメント数を考慮して予測される格納可能な光路数を以下の式
2014199543.tif 000005
により算出した上で決定する。ここで、予測フラグメント数は、フラグメント数マップのミップマップの対象画素の画素値であり、フラグメント数マップのタイル候補内に含まれる画素の平均画素値となっている。つまり、タイル候補について定義する光路が、平均的に画素値の数だけフラグメントを有していることを示している。即ち、該平均フラグメント数でノードバッファサイズを除することで、平均フラグメント数を有する光路がノードバッファにいくつ格納可能であるかを算出することができる。
【００４０】
一方、上述したようにタイル候補について定義すべき光路数は、タイル候補の範囲に含まれる描画オブジェクト上のテクセル密度によってのみ定まる。即ち、フラグメント数マップの画素数と、タイル候補について定義すべき光路数とは必ずしも同一とはならない。
【００４１】
例えばフラグメント数マップのミップマップの最上層の１画素から得られた平均フラグメント数は、フラグメント数マップの画素数だけ定義された代表光路の各々についてサンプリングされたフラグメント数の平均値である。このとき最上層の１画素に対応する領域、即ち選択された光線方向の投影における３Ｄシーンの全領域に対してフラグメント数マップの画素数以上の光路数を定義した場合を考えると、一部の光路はフラグメント数マップの生成に考慮されなかった光路を含んでいる。つまり、該一部の光路上のフラグメント数は不明であり、平均フラグメント数からは予測することができない。
【００４２】
なお、このようなフラグメント数が不明である光路の数は、ミップマップの処理対象層が下になるほど、タイル候補についてサンプリングされた代表光路が少なくなるため、増加することになる。
【００４３】
このため式１では、ミップマップから得られる予測フラグメント数に対して推定予測エラーを加算することで、フラグメント数が不明である光路を考慮した上でフラグメント数の誤差を補償し、予測される格納可能な光路数を算出している。ここで、本実施形態では階層が下のミップマップの画素ほど大きい値となるように、推定予測エラーを以下のように定める。
2014199543.tif 000006
【００４４】
ここで、Ｓは最上層のミップマップの１画素から得られる予測フラグメント数、Ｎｊはｊ番目の階層における１画素の生成に参照された画素数（タイル候補内の画素数）である。また、定数ａ及びｂは、実験により設定されるパラメータであり、例えば2048[px]×2048[px]でフラグメント数マップが規定される場合、ａ＝0.05、ｂ＝64等に設定されてよい。なお、本実施形態ではａ及びｂの値は実験により設定されるものとして説明するが、本発明の実施はこれに限られるものではなく、例えば対象の３Ｄシーン内に配置される描画オブジェクト数や面数、あるいはフラグメント数マップの画素数等に応じて決定される値であってもよい。
【００４５】
Ｓ４０３で、ＧＰＵ１０４は、対象画素がタイルの生成条件を満たすか否かを判定する。具体的にはＰＣ１００は、タイルの生成条件として、Ｓ４０２で対象画素について算出した２つの値に
2014199543.tif 000007
の関係が成り立つか否かを判断する。この生成条件は、光の漏れのないライトマップが生成可能である条件として、上述した通りである。
【００４６】
ところで、タイル生成の判定は、光線方向及びフラグメントを有する描画オブジェクトの面法線によらず、常に同一の条件で行う。
【００４７】
例えば、図５（ａ）に示されるように描画オブジェクトの面が選択された光線方向について正対、即ち光線方向と面法線とが平行である場合を考える。このとき、タイル候補について生成されるライトマップの画素数は、上述したように対象画素のインポータンスにタイル候補の面積を乗じることで得られる。これは、描画オブジェクトの面が光線方向について正対しているため、タイル候補に対応する該面上の領域が、タイル候補と同一の面積を有しているからである。
【００４８】
一方、図５（ｂ）に示されるように描画オブジェクトの面が選択された光線方向について正対しない、即ち光線方向と面法線とが角度θをなす場合を考える。このとき、タイル候補に対応する該面上の領域は、タイル候補の面積よりも大きい面積となる。具体的には、タイル候補の面積を光線方向ω’と面法線ｎとの内積（ω’・ｎ）で除した値（ｃｏｓθに反比例）となる。つまり、タイル候補に対応する描画オブジェクトの面上の領域に適用されるライトマップの画素数は正対時よりも増えるため、選択された光線方向に見た場合、テクセル密度が増加することになる。即ち、タイル候補について生成されるライトマップの画素数は本来、正対時に比べて１／（ω’・ｎ）倍となるはずである。
【００４９】
しかしながら、描画オブジェクトの面上の点ｘにおける特定方向ωにおける間接照明の放射輝度に対して、光線方向ω’から入射した光についての入射放射輝度が光線方向ω’と面法線ｎとの内積に比例して影響を与えることが、レンダリング方程式により知られている。換言すれば、入射角が浅い（θが大きい）方向の光ほど、間接照明の放射輝度への寄与が小さい、即ちインポータンスが低いことになる。
【００５０】
これらを総合的に考えると、光線方向ω’と面法線ｎとが角度をなす場合、タイル候補について生成されるライトマップの画素数は１／（ω’・ｎ）倍に増加するが、該方向の入射光の寄与度は（ω’・ｎ）倍に減少するため、これらの効果は相殺する。つまり、インポータンスマップの各画素値（テクセル密度）は光線方向に依らず一定として考えることができるため、単に対象画素のインポータンスにタイル候補の面積を乗じることで得られる、タイル候補について生成されるライトマップの画素数についてタイル生成の判定を行えばよい。また、上述したインポータンスマップの生成においても、光線方向に応じて描画オブジェクトの面法線との関係を加味する必要はなく、単にフラグメントに適用されるライトマップのテクセル密度とすることができる。
【００５１】
ＧＰＵ１０４は、対象画素がタイルの生成条件を満たすと判断した場合は処理をＳ４０４に移し、満たさないと判断した場合は処理をＳ４０５に移す。
【００５２】
Ｓ４０４で、ＧＰＵ１０４は、タイル候補に対してタイルを定義する。即ち、ＧＰＵ１０４は、選択された光線方向の投影における３Ｄシーンの２次元範囲のうち、タイル候補として設定された領域について、該領域を１つのタイルに含めるようにタイル設定を行う。
【００５３】
Ｓ４０５で、ＧＰＵ１０４は、処理対象層のミップマップの画素のうち、タイル生成が未判定の画素（タイルが定義されておらず、かつ対象画素として選択されていない画素）が存在するか否かを判断する。ＧＰＵ１０４は、タイル生成が未判定の画素が存在すると判断した場合は処理をＳ４０２に移し、存在しないと判断した場合は処理をＳ４０６に移す。
【００５４】
Ｓ４０６で、ＧＰＵ１０４は、処理対象層のミップマップの全ての画素について、タイルを定義したか否かを判断する。ＧＰＵ１０４は、処理対象層のミップマップの全ての画素についてタイルを定義したと判断した場合は本タイリング処理を終了する。またＧＰＵ１０４は、全ての画素についてタイルを定義していないと判断した場合は、Ｓ４０７で処理対象層の１つ下の階層を処理対象層に選択し、処理をＳ４０２に戻す。
【００５５】
このように、ミップマップの画素を順に選択しながらタイルの生成条件を満たすか否かを判定することで、本実施形態のＰＣ１００では、予め定められたノードバッファに格納可能な光路数を適切に予測しつつ、好適な条件でライトマップが生成されるよう、適応的にタイルを定義することができる。
【００５６】
なお、本実施形態ではタイリング処理を、ミップマップの階層及び階層内の画素を順に選択し、タイル生成の判定を行いながらループ処理することでタイリングを行うものとして説明したが、タイリング処理の実施はこれに限られるものではない。該タイリング処理は、例えば図６に示すように、最下層のミップマップの画素の数だけ並行処理するスレッドを生成し、最上層から順に階層を下りながら判定処理を実行していくことによっても実現可能である。この場合、最下層のミップマップの画素の数だけスレッドが生成されるため、階層内の画素を順番に選択しながらタイル生成の判定をする必要はなく、より高速にタイリングを完了することができる。なお、最下層以外の任意の層のミップマップについては、同一の画素についてタイル生成条件の判定を行ういずれか１つのスレッドのみが定義処理を行うように制御すればよい。
【００５７】
タイリング処理が完了すると、ＣＰＵ１０１は処理をＳ２０７に移す。Ｓ２０７で、ＣＰＵ１０１は、定義されたタイルのうち、光輸送計算が行われていないタイルを選択する。
【００５８】
Ｓ２０８で、ＧＰＵ１０４はＣＰＵ１０１の制御の下、選択されたタイルについて光線束を生成し、各光線束についてＶＲＡＭ１０５を用いて光輸送計算を行いながら生成するライトマップの値を更新する。本実施形態ではＣＰＵ１０１は、記録媒体１０６に生成するライトマップの各画素を格納する領域を確保するものとする。ライトマップの各画素は適用される描画オブジェクトの各面に割り当てられる画素が定められており、光輸送計算の計算結果を用いて、光線束に対応する画素の格納領域に格納されている値を更新する。
【００５９】
Ｓ２０９で、ＣＰＵ１０１は、定義された全てのタイルについて光輸送計算が行われたか否かを判断する。ＣＰＵ１０１は、全てのタイルについて光輸送計算を行われたと判断した場合は処理をＳ２１０に移し、行われていないと判断した場合は処理をＳ２０７に戻す。
【００６０】
Ｓ２１０で、ＣＰＵ１０１は、別の光線方向について光線束を定義してライトマップを更新するか否かを判断する。ＣＰＵ１０１は、別の光線方向について光線束を定義してライトマップを更新すると判断した場合は処理をＳ２０１に戻し、更新しないと判断した場合は本ライトマップ生成処理を完了する。
【００６１】
以上説明したように、本実施形態の予測方法は、照明計算におけるメモリ使用量を好適に予測することができる。具体的には予測方法は、所定の光線方向について光輸送計算用の複数の光線束を定義して行う３Ｄシーンの照明計算において、予め定められたメモリ領域内に格納可能な光輸送計算用の光線束の光路数を予測する。予測方法は、各画素が、該画素位置に対応する光線方向の直線上における３Ｄシーン内のフラグメント数を画素値とする、予め定められた画素数を有するフラグメント数マップ、及び該フラグメント数マップのミップマップを生成する。そしてフラグメント数マップのミップマップにおける１つの階層の画素について、該画素に対応する３Ｄシーン内の対応領域に光輸送計算用の光線束を定義した場合に１つの光路上に平均的に含まれる推定フラグメント数を導出し、予め定められたメモリ領域のサイズを該値で除した値を、１つの階層の画素について予め定められたメモリ領域内に格納可能な光輸送計算用の光線束の予測光路数として出力する。このとき、予測方法は、１つの画素の画素値であるフラグメント数に該画素の階層に応じた補償値を加算することで推定フラグメント数を導出する。
【００６２】
また、さらにメモリ使用量を予測した上で適応的にタイル分割することができるため、不要にタイル数を増加させることがない、あるいは検討する光線束の解像度を低減させる必要がないため、ライトマップ生成に係る処理を全体的に高速化、あるいはライトマップを高画質化することができる。
【００６３】
［実施形態２］
上述した実施形態１では、インポータンスマップ及びフラグメント数マップのミップマップの解析により、対象画素がタイルの生成条件を満たすと判断した場合にタイルを生成するものとして説明した。
【００６４】
しかしながら上述の生成条件は対象画素に対応する領域のインポータンスの平均値のみを使用しているため、領域内のインポータンスの密度分布を考慮するものではなかった。つまり、定義されたタイル内に局所的にインポータンスの高い領域が存在する場合、該領域において上述したような反映すべき光の漏れが生じる可能性がある。このような局所的にインポータンスの高い領域において光の漏れが生じることを防ぐ方法として、過剰にタイル分割を行うことが考えられる。しかしながら、タイル数の増加は計算時間の増加につながるため、ライトマップの生成を高速化するという観点では好ましいものではない。
【００６５】
本実施形態では、各タイルについてワーピング（Warping）処理を適用することでタイルにおける光路の密度を適応的に変更し、適応的に光線束を生成してライトマップを生成する方法について説明する。
【００６６】
《ワーピング処理について》
まず、本実施形態のライトマップ生成処理において使用するワーピング処理について説明する。
【００６７】
ワーピング処理は、ポール・ローゼンの「Rectilinear Texture Warping for Fast Adaptive Shadow Mapping」に開示されている。該文献では、描画オブジェクト面に適用されるシャドウの品質を向上させるために、インポータンス解析を行い、インポータンスが高い、即ちシャドウマッピングにおいて解像度の高いシャドウ生成が要求される領域についてより多くの画素が割り当てられるようにしている。このとき、インポータンスが高い領域のシャドウが描画される、シャドウマップ上の領域を適応的に広げるためにワーピング処理が用いられている。
【００６８】
即ち、本実施形態ではインポータンスの解析結果に応じて、選択された光線方向の投影における３Ｄシーンの２次元範囲におけるインポータンスの高い領域の範囲をワーピング処理によって拡大することで、過剰なタイル分割を行うことなく、光の漏れを防ぐ適応的な光線束を生成する。換言すれば、ワーピング処理によって、インポータンスの高い領域に対して、より多くの光線束を生成するように光線束の分布変更が行われる。
【００６９】
《ライトマップ生成処理》
以下、本実施形態のＰＣ１００のライトマップ生成処理について、図７のフローチャートを用いて具体的な処理を説明する。なお、本実施形態のＰＣ１００の機能構成は上述の実施形態１と同様であるものとして説明を省略する。また、本実施形態のライトマップ生成処理において、実施形態１のライトマップ生成処理と同様の処理を行うステップについては同一の参照番号を付すことにより説明を省略し、以下は本実施形態に特徴的な処理の説明に留めるものとする。
【００７０】
Ｓ２０５においてＧＰＵ１０４によるフラグメント数マップのミップマップの生成が完了した後、ＧＰＵ１０４はＳ７０１で本実施形態のタイリング処理を実行する。
【００７１】
〈タイリング処理〉
さらに、本実施形態のＰＣ１００で実行されるタイリング処理について、図８のフローチャートを参照して詳細を説明する。本タイリング処理も同様に、実施形態１のタイリング処理と同様の処理を行うステップについては同一の参照番号を付して説明を省略するものとする。
【００７２】
Ｓ８０１で、ＧＰＵ１０４は、処理対象層のミップマップ画素のうち、タイル生成が未判定の対象画素を選択する。またＧＰＵ１０４は、インポータンスマップ及びフラグメント数マップにおいて、該対象画素に対応する領域をタイル候補として設定する。そしてＧＰＵ１０４は、対象画素を参照し、タイル候補について生成されるライトマップの画素数、及びワーピング後にタイル候補について定義する、予め定められたノードバッファに格納可能な光路数を算出する。
【００７３】
なお、本実施形態のライトマップ生成処理では、ポール・ローゼンの文献のようにシーン全体についてワーピング処理を適用するのではなく、後述するように本タイリング処理で規定されたタイルごとにワーピング処理を適用する。このため、本ステップで算出するタイル候補について生成されるライトマップの画素数は、ワーピング処理の実行により変化するものではないため、実施形態１と同様の方法で算出されてよい。
【００７４】
一方、予め定められたノードバッファに格納可能な光路数は、ワーピング処理によって分布の変更が生じるため、フラグメント数が不明である光路の数が増加することが考えられる。ワーピングではインポータンスの密度分布に応じて分布の変更が行われるため、本実施形態では数式１に含まれる予測フラグメント数を、インポータンスを用いた加重平均値として
2014199543.tif 000008
で算出する。ここで、Ｎはタイル候補の画素数である。またｎiはフラグメント数マップのタイル候補内におけるｉ番目の画素の画素値、ｗiはインポータンスマップのタイル候補内におけるｉ番目の画素の画素値である。なお、数式３の分母は、インポータンスマップのタイル候補内の画素の画素値の総和であるため、インポータンスマップのミップマップにおける対象画素のインポータンスに、最下層であるタイル候補に含まれる画素数を乗じることで算出できる。
【００７５】
なお、本実施形態における予測フラグメント数の算出方法は、理想的なワーピング処理が行われるとの前提に基づく。理想的なワーピング処理とは、タイルについて処理が実行された場合に、マップの各画素に対応する２次元範囲のワーピング処理後の大きさが、該画素のインポータンス値に比例しているものとする。例えば、処理対象層のミップマップの１画素についてタイルが規定された場合を考える。このとき、該画素の生成に参照されたインポータンスマップの画素が、それぞれ画素値１、２、３、及び４の４画素であるとすると、ワーピング後のタイルでは各画素に対応する領域の面積比は１：２：３：４となる。即ち、タイルについて２５６の光線束を定義する場合、各画素に対応する領域にはそれぞれ２６、５１、７７、１０２の光線束が割り当てられることになる。つまり、インポータンスの高い画素に対応する領域に対してより多くの光線束が割り当てられるようにすることができる。
【００７６】
また、本実施形態では理想的なワーピング処理が行われるものとして説明するが、上述したポール・ローゼン著の文献に開示されるような理想的なワーピング処理の近似手法を用いるものであってよい。即ち、本実施形態のタイリング処理における後述の予測方法は、近似解を得る任意のワーピング手法についても適用可能であることは容易に理解されよう。
【００７７】
このようにして得られた予測フラグメント数を用いることで、ワーピング処理の実行を考慮してタイル生成の判定に必要なパラメータを算出することができる。なお、本ステップ以降の処理を実行してタイリング処理が完了すると、ＣＰＵ１０１はライトマップ生成処理のＳ２０７の処理を実行後、処理をＳ７０２に移す。
【００７８】
Ｓ７０２で、ＧＰＵ１０４はＣＰＵ１０１の制御の下、選択されたタイルについてインポータンス分布に応じたワーピング処理を実行した上で光線束を生成し、各光線束についてＶＲＡＭ１０５を用いて光輸送計算を行いながら生成するライトマップの値を更新する。
【００７９】
以上説明したように、本実施形態の予測方法を用いることで、ワーピング処理を用いて適応的に光線束を生成することによって、メモリ使用をより効率化してライトマップの生成を行うことができる。
【００８０】
［その他の実施形態］
また、本発明に係る予測方法は、コンピュータに該予測方法を実行させるプログラムによっても実現可能である。該プログラムは、コンピュータが読み取り可能な記録媒体に記録されることにより、あるいは電気通信回線を通じて、提供／配布することができる。
【図１】
2014199543.tif 000009
【図２】
2014199543.tif 000010
【図３】
2014199543.tif 000011
【図４】
2014199543.tif 000012
【図５】
2014199543.tif 000013
【図６】
2014199543.tif 000014
【図７】
2014199543.tif 000015
【図８】
2014199543.tif 000016
【手続補正書】
【提出日】平成25年10月17日(2013.10.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項２
【補正方法】変更
【補正の内容】
【請求項２】
所定の光線方向について光輸送計算用の複数の光線束を定義して行う３Ｄシーンの照明計算において、予め定められたメモリ領域内に格納可能な前記光輸送計算用の光線束の光路数を予測する予測方法であって、
第１の生成手段が、各画素が、該画素位置に対応する前記光線方向の直線上における前記３Ｄシーン内のフラグメント数を画素値とする、予め定められた画素数を有するフラグメント数マップ、及び該フラグメント数マップのミップマップを生成する第１の生成工程と、
第２の生成手段が、前記フラグメント数マップと同数の画素数を有し、各画素が、前記フラグメント数マップの対応する画素と同一の直線上に存在するフラグメントに適用される照明テクスチャのテクセル密度を画素値とするインポータンスマップ、及び該インポータンスマップのミップマップを生成する第２の生成工程と、
導出手段が、前記第１の生成工程において生成された前記フラグメント数マップのミップマップにおける１つの階層の画素について、
該画素に対応する前記インポータンスマップのミップマップの画素の生成に参照された前記インポータンスマップの領域におけるテクセル密度の分布に応じて、定義する前記光輸送計算用の光線束の分布を変更するパラメータを決定し、
前記決定されたパラメータを参照し、前記１つの階層の画素に対応する前記３Ｄシーンの対応領域に変更後の前記光輸送計算用の光線束の分布を定義した場合に１つの光路上に平均的に含まれる推定フラグメント数を導出する導出工程と、
予測手段が、前記予め定められたメモリ領域のサイズを前記導出工程において導出された前記推定フラグメント数で除した値を、前記１つの階層の画素について前記予め定められたメモリ領域内に格納可能な前記光輸送計算用の光線束の予測光路数として出力する予測工程と、を有し、
前記導出手段は前記導出工程において、前記対応領域についての前記フラグメント数マップの画素値であるフラグメント数に、対応する前記インポータンスマップの画素値であるテクセル密度で加重平均して得られた加重平均フラグメント数に該画素の階層に応じた補償値を加算することで前記推定フラグメント数を導出する
ことを特徴とする予測方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
前述の目的を達成するために、本発明の第２の態様に係る予測方法は、以下の構成を備えることを特徴とする。具体的には予測方法は、所定の光線方向について光輸送計算用の複数の光線束を定義して行う３Ｄシーンの照明計算において、予め定められたメモリ領域内に格納可能な光輸送計算用の光線束の光路数を予測する予測方法であって、第１の生成手段が、各画素が、該画素位置に対応する光線方向の直線上における３Ｄシーン内のフラグメント数を画素値とする、予め定められた画素数を有するフラグメント数マップ、及び該フラグメント数マップのミップマップを生成する第１の生成工程と、第２の生成手段が、フラグメント数マップと同数の画素数を有し、各画素が、フラグメント数マップの対応する画素と同一の直線上に存在するフラグメントに適用される照明テクスチャのテクセル密度を画素値とするインポータンスマップ、及び該インポータンスマップのミップマップを生成する第２の生成工程と、導出手段が、第１の生成工程において生成されたフラグメント数マップのミップマップにおける１つの階層の画素について、該画素に対応するインポータンスマップのミップマップの画素の生成に参照されたインポータンスマップの領域におけるテクセル密度の分布に応じて、定義する光輸送計算用の光線束の分布を変更するパラメータを決定し、決定されたパラメータを参照し、１つの階層の画素に対応する３Ｄシーンの対応領域に変更後の光輸送計算用の光線束の分布を定義した場合に１つの光路上に平均的に含まれる推定フラグメント数を導出する導出工程と、予測手段が、予め定められたメモリ領域のサイズを導出工程において導出された推定フラグメント数で除した値を、１つの階層の画素について予め定められたメモリ領域内に格納可能な光輸送計算用の光線束の予測光路数として出力する予測工程と、を有し、導出手段は導出工程において、対応領域についてのフラグメント数マップの画素値であるフラグメント数に、対応するインポータンスマップの画素値であるテクセル密度で加重平均して得られた加重平均フラグメント数に該画素の階層に応じた補償値を加算することで推定フラグメント数を導出することを特徴とする。