1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"><!-- InstanceBegin template="/Templates/default_template.dwt" codeOutsideHTMLIsLocked="false" -->
3<head>
4<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5<meta http-equiv="Content-Style-Type" content="text/css" />
6<!-- InstanceBeginEditable name="CSS の相対パス指定" -->
7<link href="../../../../../common/manual.css" rel="stylesheet" type="text/css" />
8<script type="text/javascript" src="../../../../../common/ibox.js"></script>
9<!-- InstanceEndEditable -->
10<!-- InstanceBeginEditable name="ページのタイトル" -->
11<title>参照テーブルの解説</title>
12<!-- InstanceEndEditable -->
13</head>
14<body>
15<div>
16  <div class="body"> <!-- InstanceBeginEditable name="本文のタイトル" -->
17  <h1>参照テーブルの解説</h1>
18  <!-- InstanceEndEditable --> <!-- InstanceBeginEditable name="本文" -->
19  <p>ここでは、CreativeStudio の参照テーブルを使ったマテリアルの表現方法を解説します。</p>
20  <h2>参照テーブルとは</h2>
21  <p>まず左の球と右の球を見比べてください。見た目がかなり違っていますが、ライトはどちらも 1 灯しか置いていません。</p>
22  <p>    なぜこんなことができるかというと、それは参照テーブルというものがあるからです。</p>
23  <p>図 1 . 参照テーブルを使用した表現の違い</p>
24  <img src="assets/primary_secondary.png" width="500" alt="プライマリとセカンダリ" />
25  <h3>参照テーブル=カーブ</h3>
26  <p>参照テーブルというとわかりにくいですが、カーブのことです。</p>
27  <p>    通常のライティングだと始点と終点が直線で結ばれますが、そこをカーブを参照し、置き換えています。</p>
28  <p>    たとえば、光の強さだけなら1本のカーブで調整できますし、さらに3本のカーブがあれば、</p>
29  <p>それをR・G・Bに見立て、始点から終点までを自由な色に変えることができます。</p>
30  <p>    ちなみに、図 1 .の参照テーブルは以下の6本のカーブにより表現されています。</p>
31  <a href="assets/sample_lut.png" rel="ibox" title="画像をクリックして拡大"><img class="ui_thumb" src="assets/sample_lut.png" alt="ここでは6本のカーブを使っています"/></a>
32  <p class="warning">参照テーブルは他にも、スポットライトの形状やフォグの分布にも仕様されますが、ここではシェーディングに限定して説明します。</p>
33  <h2>参照テーブルを作成する前に</h2>
34  <p>参照テーブルの作り方自体は簡単ですが、使いこなす為に覚えないといけない設定が 2 つあります。</p>
35  <ul>
36    <li><a href="#look_up">参照テーブルの種類</a></li>
37    <li><a href="#input_angle">入力角</a></li>
38  </ul>
39  <p class="warning">特に入力角は覚えて使うと応用表現がいろいろできる部分なので、ぜひこの機会に覚えてください。</p>
40  <h2>参照テーブルの種類</h2>
41  <p>マテリアルの設定で、参照テーブルを使うと以下の 3 種類の設定ができます。</p>
42  <h3>光の分布の設定:分布0、分布1</h3>
43  <img src="assets/distribution.png" width="400" alt="明るさ分布が思い通り!" />
44  <p>本来は明るいところから暗いところまでのグラデーションは一定ですが、</p>
45  <p>このグラデーションを自由に変えることができます。</p>
46  <h3>反射色の設定:反射R・反射G・反射B</h3>
47  <img src="assets/refrection.png" width="400" alt="色の分布が思い通り!" />
48  <p>分布0や分布1同様の使い方になりますが、色を設定するために 3 つのカーブが必要になります。</p>
49  <p>    使用例として、明るいところを赤に、そこから徐々に暗く、本来一番暗くなる場所にあて色として青を、とかができます。</p>
50  <p>    こうすると、 1 つのライトだけで 2 つのライトがあるような表現が可能になります。 </p>
51  <h3>透明度の設定:フレネル</h3>
52  <img src="assets/fresnel.png" width="400" alt="透明度の分布が思い通り!" />
53  <p>フレネルとは本来、反射率の変化に使われる言葉ですが、</p>
54  <p><em>CreativeStudio では透明度 ( アルファ ) の分布</em>の変化表現として使われます。</p>
55  <p>    透明度の表現となるため、コンバイナではアルファ成分として使用します。</p>
56  <p class="warning">CreativeStudio において、本来の「フレネル」に近い表現は「ジオメトリックファクタ」になります。</p>
57  <a name="input_angle" id="input_angle"></a>
58  <h2>入力角について</h2>
59  <p><img src="assets/lut_elements.png" width="358" height="472" alt="入力角はちょっと難しいかもしれないです" /></p>
60  <h3>入力角とは</h3>
61  <p>光は、いろいろな要素の影響を受けた結果「見え方」が変わります。</p>
62  <p>    CreativeStudio では、その光の見え方を変える要素のことを「入力角」と呼んでいます。</p>
63  <p>    そして、入力角の要素として挙げられるのが「ライト」や「視点」「法線」等です。</p>
64  <p>    たとえば、モデルのスペキュラー ( ハイライト ) は視点とライト、法線の位置により見え方が変わります。</p>
65  <h3>入力角の範囲</h3>
66  <p>入力角は角度のことで、その角度を決定するためには2つの要素 ( =線分 ) が必要となります。</p>
67  <p>    そして、2つの要素が作り出す角度は最大でも180度 ( -180度 ) を超えることはありません。</p>
68  <p class="warning">※入力角を定義づける線分のことを「ベクトル」とも呼びます。</p>
69  <h3>入力角:0~1</h3>
70  <p>1 は光が強くなるときの角度、0 は光が弱くなるときの角度です。</p>
71  <p>    たとえば、入力角がライトベクトルと法線ベクトルのとき、</p>
72  <p>    2 つの線分のなす角度が 0 度の場所はもっとも明るくなり、そのとき入力角は 1 となります。</p>
73  <p>    逆に、2 つの線分のなす角度が 180 度 ( -180度 ) の場所は最も暗くなり、そのとき入力角は 0 になります。</p>
74  <p class="warning">角度なのに指定が 0 ~ 1 でわかりづらいと思いますが、これは計算をしやすいように個々の要素をなるべく 0 ~ 1 で表現しているためです。これを正規化と呼んでいます。</p>
75  <h3>入力角のマイナス方向の設定:-1~0</h3>
76  <p>参照テーブルを使うと光の当たらないところの設定も可能であり、そのとき入力角の -1 ~ 0 を使用します。</p>
77  <p>    ライトから見たモデルの裏側にも光を当てたいとき、</p>
78  <p>参照テーブルセットプロパティ内で参照テーブルの「絶対値(=常にプラス)」のチェックを外すと、</p>
79  <p>-1~1 にかけてのカーブを描くことができ、光源側から光の当たらないところまでの設定ができるようになります。</p>
80  <h2>ベクトルの種類</h2>
81  <h3>L ( ライトベクトル )</h3>
82  <p>ライトの位置とモデルの頂点を結ぶ線分です。</p>
83  <p>    モデルの表面に対し、どのようにライトが入ってきているか、になります。</p>
84  <h3>N ( 法線ベクトル )</h3>
85  <p>モデル表面の法線のことです。</p>
86  <p>    モデルがスムース設定をしている場合、任意の頂点の法線の向きは</p>
87  <p>    隣り合うポリゴン同士の角度により確定します。</p>
88  <h3>V ( ビューベクトル )</h3>
89  <p>モデルを見ている視線とモデルの表面を結ぶ線です。</p>
90  <h3>H ( ハーフベクトル )</h3>
91  <p>これだけちょっと難しいかもしれないですが、</p>
92  <p>    ライトベクトルと視線ベクトルの作る角度の半分の位置にあるベクトルです。</p>
93  <p>    中間なので「ハーフ」です。これはライトと視点の影響を受けます。</p>
94  <p>    スペキュラーの設定に必要なベクトルです。詳しくは入力角の要素のところで説明します。</p>
95  <h2>入力角の要素</h2>
96  <h3>NH ( ハーフベクトルから見たモデルの法線の向き )</h3>
97  <h4>NHの仕組み</h4>
98  <p><img src="./assets/nh_input.png" alt="" width="450" /></p>
99  <p>スペキュラー表現をするための入力角です。</p>
100  <p>    スペキュラーの場合、法線・ライト・視線・反射の 4 ベクトルの影響を受けますが、</p>
101  <p>    入力角の角度は 2 つのベクトルにより決定されるものなので、</p>
102  <p>    この 4 ベクトルの影響を 2 つのベクトルに簡略化する役割をするのがハーフベクトルです。</p>
103  <p>スペキュラーが最大のとき、ライトの反射ベクトルと視線ベクトルが正対し、</p>
104  <p>    さらにこのとき、ライトベクトルと視線ベクトルの中間のハーフベクトルが法線ベクトルに対し正対しています。</p>
105  <p>    つまり、NHのなす角が 0 になるとスペキュラーが最大となるのです。</p>
106  <h3>LN ( ライトから見たモデルの法線の向き )</h3>
107  <h4>LNの仕組み</h4>
108  <p><img src="./assets/ln_input.png" alt="" width="288" height="490" /></p>
109  <p>LN はライトと法線の関係で、ライトと法線が正対するところが明るくなり、正対しなくなるところは暗くなります。</p>
110  <p>また、ライトの位置や法線の向きにより照らされる部分の明るさが変わります。</p>
111  <p>この表現はもっとも基本的な CG のライティングであるディフューズ ( 拡散反射光 ) を表現するもので、</p>
112  <p>スペキュラーのように視点が変わってもモデルの照らされ方は変わりません。</p>
113  <p>CreativeStudioでは、基本的には、入力角LNとプライマリカラーが作るシェーディングは同じ役割をします。</p>
114  <p>LN の入力角を利用することで、フラグメントライトの向きに合わせモデルの色や陰影の入り方を調整でき、</p>
115  <p>また、参照テーブルの絶対値をオフにすることで、通常のライティングではできない</p>
116  <p>光の当たらない裏側のライティング設定も可能になります。</p>
117<h3>NV ( カメラから見たモデルの法線の向き )</h3>
118  <h4>NVの仕組み</h4>
119  <p><img src="./assets/nv_input.png" alt="" width="264" height="580" /></p>
120  <p>法線ベクトルと視線ベクトルの影響を受ける入力角です。視線ベクトルはカメラのことです。</p>
121  <p>カメラから見たモデルの法線の向きにより、光の強さや色を変えるシェーディング設定が可能です。</p>
122  <p>たとえば、カメラから見たモデルのキワを強調するような効果のあるリムライト表現は NVで作れます。</p>
123  <p>テクスチャマッピング手法におけるスフィアマッピングと考え方が似ています。</p>
124  <p>見る角度により反射率が変わる表現とも言えるため「フレネル反射」にも考え方が近いです。</p>
125  <h3>VH ( ライトが照らしている方向に対するカメラの向き )</h3>
126  <h4>VHの仕組み</h4>
127  <p><img src="./assets/vh_input.png" alt="" width="341" height="490" /></p>
128  <p>視線ベクトル ( カメラ ) とハーフベクトルの影響を受ける入力角です。</p>
129  <p>ハーフベクトルはライトと視線ベクトルの中間ベクトルであり、VH のなす角度が 0 になるとき入力値が最大ですが、  </p>
130  <p>このときライトもハーフベクトルと同じ位置に来るため、ライトとカメラは同じ所からモデルを見ていることになります。</p>
131  <p>また、VH は法線情報を見ないため、VH の設定をしているマテリアルはすべてが同じ明るさになります。</p>
132  <p>見え方の例としては、カメラの前に VH の設定をした透明の板を置くことで、</p>
133<p>太陽の方向をみた時だけカメラの前がギラつくような表現ができると思います。</p>
134  <h3>SP (照らされるポイントから見たライトベクトルの向き )</h3>
135  <h4>SPの仕組み</h4>
136  <p><img src="./assets/sp_input.png" alt="" width="362" height="521" /></p>
137  <p>SP はスポットライトに使われるものです。</p>
138  <p>    入力角はライトベクトルとスポットライトベクトルのなす角です。</p>
139  <p>    CreativeStudio のスポットライトの向きを指定できますが、これはスポットライトベクトルで、</p>
140  <p>ライトベクトルというのはモデルの表面のある 1 点とライトを結ぶ線分のことです。</p>
141  <p>    ライトベクトルとスポットライトベクトルが正対してる部分が明るくなります。</p>
142  <h3>CP ( 接平面に落とすハーフベクトルの影と接ベクトルのなす角 )</h3>
143  <h4>CreativeStudioにおけるCPの役割とは?</h4>
144  <p>モデルの表面には目に見えない非常に細かな 凹凸 があります。</p>
145  <p> 光はその細かな溝にも入り込み反射をするため、逆方向に跳ね返り目に届かない光も出てきます。</p>
146  <p> たとえば、髪の毛 1 本 1 本が作り出す細かな溝が髪の毛の陰影に影響を与えることはないですが、</p>
147  <p> 髪の毛に反射する光は細かな溝にさえぎられ、結果天使の輪のようなハイライトが乗ることになります。</p>
148  <p> このマテリアル表面の細かな溝のことを「微小面」とか「マイクロファセット」と呼ぶのですが、</p>
149  <p>その細かな溝によるハイライトの変化をCreativeStudioでは入力角CPとタンジェントマップにより行っています。</p>
150  <p class="warning"> CPは処理負荷がほかの入力角の要素に比べ重いため、効果的に使える場所のみで使用するのをお勧めします。</p>
151  <h4>CPの仕組み</h4>
152  <p><img src="./assets/cp_input.png" alt="" width="571" height="883" /></p>
153  <p>ライトと視点が同じであれば、同じ接平面のとある接断面上のピクセルは</p>
154  <p>ハーフベクトルの角度は違くとも交差ベクトルの向きがすべて同じとなるため、</p>
155  <p>接ベクトルとの角度が一定になり、参照テーブル横軸の同じ値を参照します。</p>
156  <p>よって、これをすべての断面で行うと、平面上であればCDのように、</p>
157  <p>曲面上であれば天使の輪のようなハイライトが入るようになります。</p>
158  <p class="warning">接平面とはモデルの法線と垂直な平面のことで、接ベクトルは接平面上にあるベクトルです。接ベクトルの確認は、Mayaであれば、 ディスプレイ &gt; ポリゴン &gt; 接線 で確認できます。</p>
159  <h2>参照テーブルの作り方</h2>
160  <h4>参照テーブルセットを作ります</h4>
161  <p><img src="assets/lutset_create.png" width="326" height="202" alt="これは参照テーブルをまとめておくセットです。" /></p>
162  <p>作成 &gt; 参照テーブルセット で作成した参照テーブルセットを選択し、プロパティで新規カーブを作成し名前を変更します。</p>
163  <h4>カーブエディタでカーブを編集します</h4>
164  <p>カーブのキーは S です。マウスポインタのある場所にキーが追加されます。</p>
165  <p>カーブは自由に書いて感覚をつかんでみてください。
166    ここでは絶対値についてだけ説明します。</p>
167  <img src="assets/lut_create.png" width="401" height="493" alt="セットの中に参照テーブルを登録します。" />
168  <p>絶対値のチェックがあるとマイナス値もプラスにしてしまうので、</p>
169  <p>    このチェックを外すことで 0 ~ -1 の入力角の指定を有効にします。</p>
170  <p>    あとはそのままカーブエディタを開き、カーブを作成するだけです。</p>
171  <p>2つのカーブを作成します。 1 つは絶対値があるので 0 ~ 1 でグラデーション、</p>
172  <p>    もう1つは絶対値のチェックを外しているので -1 ~ 1 までのグラデーションです。</p>
173  <p><a href="assets/absolute.png" rel="ibox" title="画像をクリックして拡大"><img class="ui_thumb" src="assets/absolute.png" alt="絶対値はマイナスもプラスにするので、チェックを外すことでマイナスが使えます"/></a>  </p>
174  <p>これを 2 つのモデルにそれぞれ入力角 LN で設定し、</p>
175  <p><img src="assets/lut_material_panel.png" width="358" height="478" alt="lutの指定をします。" />コンバイナの指定はセカンダリのみにします。</p>
176  <p><img src="assets/combiner_lut.png" width="353" height="520" alt="セカンダリのみです。" /></p>
177  <p class="warning">プライマリのディフューズとセカンダリの LN はまったく同じことをしているので、コンバイナ式をプライマリ+セカンダリにする必要はないです。</p>
178  <img src="assets/absolute_result.png" width="400"  alt="参照テーブルでハーフランバート!" />
179  <p>シーンにはディレクショナルライトが真上から焚かれているだけです。</p>
180  <p>    絶対値付きのライティング表現は業界的には「ハーフランバート」と呼ばれる表現とほぼ同じだと思います。</p>
181  <p class="warning">ライトが 1 つだけでもシェーディングが急激に暗くならず、柔らかい質感表現ができるのでリアルタイムレンダリングでは重宝されている技法です。</p>
182  <p>一通りの流れを説明しましたので、あとはこのページの最初のサンプルと同じものを実際に作ってみてください。</p>
183  <!-- InstanceEndEditable --> </div>
184  <div class="footer" />
185</div>
186</body>
187<!-- InstanceEnd --></html>
188