サンプルデータ Pierrot のLUT の解説

ここでは、サンプルデータ Pierrot を使用して参照テーブルの設定方法を説明します。

サンプルデータの読み込み

CreativeStudio のメニュー [ファイル]→[開く]→[中間ファイル] から以下の場所にある Pierrot.cmdl を読み込みます。

NW4C_ROOT%/SampleData/Graphics/Intermediate/ManualResource/TutorialToyPierrot/Pierrot.cmdl

図 1. サンプルデータ Pierrot

サンプルデータの確認

Pierrot.cmdl を読み込むと CreativeStudio に以下のコンテンツが読み込まれます。

図 2. Pierrot コンテンツパネル

モデル ( toy_pierrot ) 以下に 5 つのマテリアルがありますが、ここではマテリアル「PierrotClothMat」の LUT の設定を説明します。

まずは参照テーブル(= LUT)「PierrotClothMat」の設定をわかりやすくするために他のメッシュを隠します。

コンテンツパネルで toy_pierrot を選択してモデルパネルを開きます。プロパティのメッシュ欄のリストの「PierrotClothMat」以外のチェックを外します。

図 3. 「シェイプノード toy_pierrot のメッシュ一覧」

プレビューパネルをみると帽子と服以外のメッシュが隠され、PierrotClothMat の設定されているメッシュが分かりました。

図 4. 「メッシュ PierrotClothMat のみのプレビュー」

それではこのメッシュに設定されている参照テーブルについて解説していきます。

PierrotClothMat のセカンダリ設定の確認

ここでは標準モードの画面で説明をしていきます。参照テーブルの設定をする際には主に「フラグメント」と「カラー」のタブを使っていきます。

図 5. 「マテリアルプロパティの標準UI」

まずは、ツリービュー内の「PierrotClothMat」を選択し、プロパティで「フラグメント」のタグを選択します。

テクスチャコンバイナの確認

参照テーブルで設定したものは、テクスチャコンバイナでは「セカンダリカラー」として使用します。ここでは PierrotClothMat の参照テーブルの設定だけを見ていきたいので、現状のコンバイナ設定を残したまま、コンバイナを 1 段追加し、計算式を A 、ソース 0 に「セカンダリカラー」と設定してください。

図 6. 「テクスチャコンバイナを1段追加」

今までの設定を残しつつ実験的にコンバイナ式の確認をしたいときにお勧めです。確認できたらはあとは削除するだけでよいので便利だと思います。

プレビューパネル上の PierrotClothMat は以下のようになりました。

図 7. 「セカンダリのみのプレビュー」

参照テーブルを使って表現している部分がわかりました。黒い部分は光が当たっていないことを意味します。

レイヤーコンフィグの確認

次にレイヤーコンフィグを見ていきます。

その他レイヤーコンフィグの組み合わせについては~~を参考にしてください。

レイヤーコンフィグ 0 では、「スポット」「分布 0」と、「反射 R(グレースケール)」が使えます。アクティブな要素については水色の表示になりますが、反射Rだけは表示が変わりません。注意してください。(※UI修正の可能性高)

図 8. 「アクティブな参照テーブル」

「スポット」がアクティブになっているマテリアルはスポットライトの影響を受けることができます。スポットライトも参照テーブルを使用するため、その参照テーブルをマテリアル側から「スポット」で予約しています。

このサンプル内ではスポットライトの使用はしていません。

図 9. 「使用されている要素」

要素「分布 0」と「反射 R」「反射 G」「反射 B」が赤枠で囲まれています。これは「これらの要素が今セカンダリの表現に使われています」という意味になります。

レイヤーコンフィグ 0 では反射 R しか使用できませんので、反射 G と反射 B は反射 R のカーブが適用されます。よって反射カラーの表現はグレースケールに限定されます。

PierrotClothMat の参照テーブル設定の詳細

個々の参照テーブルの設定を見ていきます。

分布 0 の参照テーブルについて

分布 0 のプレビュー

分布0の設定だけを見ていきたいので、参照テーブルの項目内の反射の項目の赤枠内をクリックし、反射の項目をすべて非アクティブにします。

図 10. 「反射の要素を非アクティブに」

「反射 R」「反射 G」「反射 B」のうちどれか 1 つをクリックするだけで 3 つの項目すべてが非アクティブになります。

図 11. 「分布 0 の参照テーブルのみのプレビュー」

分布 0 ではモデルのキワに入る赤いハイライトを表現しているのことがわかります。

分布 0 の色

分布 0 の指定はプロパティの「カラー」タブ内のスペキュラー 0 で行っています。

カラーのタブを選択します。

図 12. 「カラーのタブを選択」

スペキュラー 0 の色を確認します。

図 13. 「スペキュラー 0 の確認」

「フラグメント」のタブに移動します。

図 14. 「フラグメントのタブを選択」

今度はさらに分布 0 の赤枠内をクリックし非アクティブにします。

図 15. 「分布 0 を非アクティブに」

この状態でプレビューを見てみます。

図 16. 「分布 0 を非アクティブにした状態でのプレビュー」

スペキュラー 0 の設定色でメッシュ全体が塗りつぶされました。

スペキュラー 0 の色(光)の分布が分布 0 の参照テーブルの影響を受けないため、スペキュラー 0 の設定色がすべての場所に 100% で適応されています。

分布 0 の参照テーブル

フラグメントのタブの分布 0 を再びアクティブにします。

図 17. 「分布 0 の要素をアクティブに」

分布 0 は「SpeculatLut_4」という参照テーブルを使用しています。

次に SpeculatLut_4 のデータを見ていきます。ツリービューに紫に黄色のカーブの入ったアイコン横に Pierrot_lut とあります。

図 18. 「参照テーブルセット Pierrot_lut」

これが「参照テーブルセット」と呼ばれるもので、参照テーブルというカーブデータをまとめて管理しています。プロパティをみてみると、このシーン全体で使用している参照テーブルが一覧できます。

図 19. 「参照テーブルセット Pierrot_lut のプロパティ」

このページで紹介している PierrotClothMat で使用しているカーブは上記赤枠で囲んだ 2 本になります。

カーブエディタでの確認

ツリービュー内で参照テーブルセット「Pierrot_lut」を選択した状態でカーブエディタを開きます。

図 20. 「参照テーブルセット Pierrot_lut のプロパティ」

Pierrot_lut 左横の三角形アイコンをクリックしリストを開きます。ツリー内の SpeculatLut_4 のカーブを選択すると右側にカーブが表示されます。表示されるカーブが見づらい時はグラフ内をクリック、グラフ編集をアクティブにし、「W」キーを押します。

その他詳しいカーブエディタの使い方については~を参考にしてください。

図 21. 「SpecularLut_4 のカーブ」

SpecularLut_4 のカーブは横軸の 0 ~ 1 にきれいに収まっています。CreativeStudio ではこの 0 ~ 1 の範囲で入力角の指定を行います(正確には -1 ~ 0 もあります)。

入力角は光のあたる方をを 1、当たらない方を 0 と考えるとイメージしやすいと思います( -1 ~ 0 の範囲は光の当たらない裏側となります)。

次に SpeculatLut_4 のカーブを見ていきます。0 の時の値が高く、1 の時の値が低くなっています。

参照カーブにより明るいところが暗く、暗いところを明るくしている、と考えてください。

カーブエディタの縦軸は光の強さで、こちらも 0 ~ 1 になります。その他カーブの編集等詳しいことは~を参考にしてください。

ところでどこが明るくなるところなの?については次の項目で説明します。

分布 0 と入力角 NV

参照テーブルのカーブを調整することによって、明るい~暗いの分布を自由に設定できることが分かりました。しかし、これだけでは参照テーブルで指定する前段階での明るい~暗いが何を基準にしているのかが不明瞭です。そこで出てくるのが「入力角の要素」です。

図 22. 「入力角の指定」

「NV」というのが SpecularLut_4 が参照している入力角の要素です。

N は Normal の略でモデルの法線、V は View の略で視線(カメラから画面奥に向かう矢印)を表しています。NV というのはこのNとVの線分がなす角度です。

一般的にモデルは正面から照らされたときがより明るくなります。入力角も同じことが言えて、ここでは N と V の角度が正対=角度0 になっているとき一番明るく、明るいので入力角も最大の 1 となります。この NV で指定される陰影をベースに、先ほど見た参照テーブル SpecularLut_4 を使うことで明るいところを暗く、暗いところを明るくしています。

NV のプレビュー

上記を踏まえもう一度プレビューウィンドウ上のモデルをみてみます。

図 23. 「NV のプレビュー」

カメラの正面方向を向いていそうな法線は暗く、カメラの正面方向を向かなくなればなるほど、スペキュラー 0 の色が際立ってきているのがわかると思います。

NV を使ってモデルの淵の光を際立たせる効果は、リムライトやフレネル反射の疑似的な表現としても効果的だと思います。

分布0のまとめ

分布 0 の参照テーブルは入力角 NV を使っています。NV では本来、カメラの正面方向を見る法線は入力角 1 で明るく、カメラから見た法線の角度が広がり入力角が 0 に近づくにつれ暗くなる表現ですが、これを参照テーブルを使うことにより明暗を逆転させています。

反射 R の参照テーブルについて

反射テーブルRGBの役割は光の強弱を色に置き換えることです。しかし、レイヤーコンフィグ 0 では反射は R しか使えません。反射 G と B には反射 R のテーブルが自動的に適用されるため、反射 R の表現する色はグレースケールです。よって、反射 R のみの表現としては分布テーブル 1 本と役割は同じです。ただ、反射 R は分布テーブルとは設定が少しだけ違います。

反射 R のプレビュー

「フラグメント」タブ内、参照テーブルの項目内の「反射」の要素を再びアクティブにします。

図 24. 「反射の要素をアクティブに」

プレビューを見てみます。

図 25. 「分布 0 に反射 R を追加したプレビュー」

グレーのハイライト部分が足されました。足された部分が反射 R の参照テーブルで設定された部分です。

ここで、反射 R のみのプレビューも見たいと思うので、「カラー」タブに移動し、スペキュラー 0 の色をすべて 0 にしてください。

図 26. 「スペキュラー 0 の色を 0 に」

スペキュラー 0 の色が乗らなくなりますので、反射 R のみの表現を見ることができます。

図 27. 「反射 R のみのプレビュー」

反射 R の色

分布テーブル 0 と 1 は元からグレースケールなので、カラータブ内のスペキュラー 0 と 1 で色を指定する仕組みがあります。一方、反射テーブルは 3 本のカーブを RGB に見立て、光の分布を色に変えることができるため分布テーブルのようにカラーを設定する口が用意されていません。

反射 R をコンバイナ内でコンスタントカラー等とかけ合わせることで反射 R をカラーにすることは可能です。しかしその際には、分布 0 や 1 で作るハイライトに色が付いていないかの確認は必要です。コンバイナ内ではすべての参照テーブルをまとめて「セカンダリカラー」として扱われるためです。

カーブエディタでの確認

フラグメントライティングの項目内の参照テーブルの欄をみると、反射 R は SpecularLut_3 という参照テーブルを参照しています。

図 28. 「反射 R の使用している参照テーブル」

ツリービューの Pierrot_lut を選択してカーブエディタを開き、SpecularLut_3 のカーブを表示します。

図 29. 「SpecularLut_3 のカーブ」

先ほどの 分布 0 で見たカーブと違い、このカーブは右上がりに、光の強さは入力角 1 の時 0.4 なので、明るいところを明るく照らすが、光の強さはそれほど強くなさそう、というのがわかります。

ここで、試しにカーブの右端のキーの値を 1.0 上にしてみます。

図 30. 「SpecularLut_3 のカーブ調整後のプレビュー」

グレーの弱いハイライトが白くくっきりになりました。

カーブの編集中にまれに意図しないシェーディングの変化をしたり、修正の影響が現れなくなることがあります。そのときは一旦カーブエディタを閉じて開きなおして修正を再開してください。

反射 R と入力角 NH

フラグメントライティングの項目内の参照テーブルの欄をみると、反射 R の入力角は NH となっています。

図 31. 「反射 R の入力角」

N は先ほども説明した Normal の略でモデルの法線です。

ハーフベクトル H と入力角 NH

H はハーフベクトルの略で、ライトと V(カメラ)の2つの中間を表す線分です。よって、入力角 NH はモデルの法線とライト、カメラの関係です。

入力角 NH は NV の時と同じく、 H がモデルの法線 N を照らしていると仮定します。そうすると、2 つの線分のなす角が 0 に近づくにつれ明るくなるので、入力角は最大の 1 に近づき、 NH の角度が広がるにつれ暗くなるので、入力角は最低の 0 に近づきます。

NH の表現しているもの

NH の線分が一致する時「一番明るく」なり、このとき、モデルの法線 N を中心にしてカメラとライトの線分が「対象」になります。H がライトとカメラの中間点であるためです。

一般的にハイライトとかスペキュラーと呼ばれる「強い光」がモデルに当たると、その光は法線に対して「対象」となる角度に反射し、これを正面から見たときに「一番まぶしく」感じます。

これら 2 つの条件を合わせた考え方が NH です。入力角は 2 つの線分のなす角度のことですので、法線とライトとカメラの 3 つの線分の関係をハーフベクトルを使い、2 つにまとめています。

そして、NH が表現しているものですが、後者ハイライトやスペキュラーと呼ばれる強い光のことです。この強い光を CreativeStudio のマニュアルや CTR グラフィックス入門では「スペキュラー」と呼んでいます。

反射 R のまとめ

反射 R の色はグレースケールで、入力角は NH を使っており、これにより強い光「スペキュラー」効果を表現しています。また、H はライトとカメラの中間の線分であるため、スペキュラーの乗り方は、ライト、カメラ、そして法線の影響をうけて変化します。

分布 0 と反射 R のテーブルの関係

最後に 2 種類の参照テーブルを使って作られた表現が「セカンダリカラー」としてまとめられる段階でどのような計算をされるかについて紹介します。詳細は省きますが、分布 0 と反射 R は足し算されています。

詳しくは、CTR グラフィック入門を参考にしてください。

参照テーブルのマテリアル設定における役割

参照テーブルを使ったセカンダリカラーの表現はモデルの質感をワンランク上げるためにとても大切な要素ですので、最後に簡単な比較画像を用意しました。

図 32. 「セカンダリの明るさを変えた例 1」

単体で見ると、右も悪くないと思うかもしれないですが、それではすべてのモデルを表示してみましょう。

図 33. 「セカンダリの明るさを変えた例 2」

最後に

PierrotClothMat を使った参照テーブルの説明はこれで終わりですが、カーブエディタで参照カーブをもっと大胆に変化させたり、他の入力角を使ってみても面白い表現が可能です。また、コンバイナ設定や法線マップ、さまざまなライティング方法を駆使することで、参照テーブルだけに頼らなくても非常に豊かな質感表現が可能です。

このページで使用している toy_pierrot のシーンはそれらさまざまな要素を詰め込んでいますので、参照テーブルだけでなく、他の部分もいろいろ分析してみると次につながる発見があると思っています。