月別: 2018年11月

CG, KATANA

テクスチャを貼る

lookDev をするための準備ができたので、本格的な lookDev 環境を作っていきます。そのためにはカラーチャートやグレーボール、クロームボールを作る必要があります。

グレーボールやクロームボールはこれまでの知識でできそうですが、カラーチャートはオブジェクトにテクスチャを貼らなければいけないので新しい知識が必要になります。

ということで、テクスチャを貼ってみます。

まずは PrimitiveCreate ノードを作り、type を poly plane にします。そして、貼り付ける画像に合わせて scale 値を入力します。

続いてマテリアルです。 NetworkMaterial ノードと ArnoldShadingNode を作り、それぞれ colorchart_Mtl と surface_shader と名前をつけます。

そして、surface_shader の nodeType を standard にし、Kd を 1 にします。

続いて、surface_shader の out を colorchart_Mtl の arnoldSurface に接続し、マテリアルをアサインします。ここまではほとんど”KATANA+Arnold でシェーディング&ライティング“でやったのと同じ内容ですね。

更にもう一つ ArnoldShadingNode を作り、名前を colorchart_file とし、 filename でカラーチャート画像へのパスを指定します。
そして、 colorchart_file ノードの出力側をクリックして out を選び、surface_shader の入力側をクリックして Diffuse>Kd_color を選んで接続します。

これでレンダリングをおこなってみます。

元のカラーチャートの色も再現できていますし、バッチリです 🙂

CG, KATANA

LookFile を用いた Look Development

レンダリングが一通りできるようになったので LookFile を用いた Look Development をおこなってみます。

まずは Look File を作ります。

Look File を作るのは LookFileBake ノードの役割です。 LookFileBake ノードには入力が二つあり、orig にはマテリアル等をアサインする前のジオメトリをつなぎ、default にはマテリアルアサイン後のジオメトリを繋ぎます。LookFileBake ノードはこの二つの入力の差分を見て、どのような処理をするのか解析します。

図のグラフは、これまで作成したうちのアセットとマテリアル部分を切り出して LookFileBake に繋げたものです。


ちなみにスクリーンショット中でグラフを分岐するのに使っているのは Dot というノードです。

LookFileBake ノードでは、どのパスを処理するのかを CEL で指定し、LookFile の出力先を saveTo で指定します。今回は CEL に passes を使用し、/root/world を指定しています。

準備が整ったら Write Look File を押すとファイルの保存先が聞かれたうえで Look File(.klf ファイル) が作成されます。

これで LookFile ができたので、これを使ってマテリアルをアサインしてみます。

ここで使うのは LookFileAssign ノードと LookFileResolve ノードです。最初、LookFileResolve ノードの存在を見落としていて思った通りの結果にならずハマりました。。。

LookFileAssign ノードにオリジナルのジオメトリを入力し、 CEL と先ほど作成した LookFile のパスを指定するとシェーダ情報が再現されます。LookFileResolve は特にパラメータを指定しなくても良いです。

ではレンダリングをしてみます。


これで LoodDev 情報とショットで使用するグラフを分離することができました。これ以降は LookDev はアセットワークとして行い、LookFile を使うことでショット側ではアセットワークとは独立して作業を進めることができます。

CG, KATANA

Catalog と Monitor

レンダリングした履歴を取っておいて、パラメータの調整をしながら比較したい時があります。

この時に便利なのが Catalog タブと、Monitor の Swipe です。

まず、レンダリングの履歴は Catalog タブで確認できます。Monitor から Catalog の内容を確認したい場合は Monitor 上で Tab キーを押します。

Catalog 上で、サムネイルの左側の部分を左クリックもしくは右クリックをすると、Monitor の Front と Back を指定できます。

更に、Monitor 上で Swipe タイプを選ぶと Front/Back をスワイプしながら比較することができます。

CG, KATANA

KATANA+Arnold で IBL

ライティングもできるようになったことですし、次にやることと言ったら HDR 画像を使用した Image-based Lighting(IBL) と相場は決まっています(よね?)。

ということで HDR 画像を使用した IBL を試します。

これはとても簡単で、GafferThree ノードで Arnold HDRI Skydome Light を作成し、Material タブの arnoldSurfaceShader で filename を指定するだけです。

HDRI 画像は HDRI HAVENSan Giuseppe BridgeVignaioli Night を使用しています。

レンダリング結果は以下の通りです。何となくそれっぽくレンダリングされています。

ただ、この結果が本当に正しいのかはよくわからないですね。このあたりの検証環境をもうちょっときちんと作ってやる必要がありそうです。

CG, KATANA

GafferThree ノードを使ったライティング

昨日は LightCreate ノードと Material ノードを使ってライティングをおこないました。

実は KATANA にはライトの管理をもっと簡単に行うための GafferThree ノードがあって、実際の現場でも専らこれが使われているそうです。そこで、今日は GafferThree ノードを取り上げます。ドキュメントは “Getting to Grips with the GafferThree Node” にあります。

まず、GafferThree ノードを作って Gaffer Object Table 上で右クリック→Add→Light でライトを追加します。

続いてライトにシェーダを追加します。作成したライトを選択し、Material タブ上で Add Shader プルダウンから arnold→light を選びます。そして arnoldLightShader を skydome_light に変更します。

このあたりの手続きは LightCreate と Material でやっていたのと同じですね。

そして、昨日のライトのかわりに GafferThree ノードを Merge に繋ぎます。

そしてレンダリング。

レンダリングかくにん。よかった!

CG, KATANA

KATANA+Arnold でシェーディング&ライティング

KATANA といえば lookdev&Lighting ツールということで、ついにシェーディングとライティングをおこなってみます。

本当はマテリアルとライトで二回に分けて記事を稼ごうかとわかりやすくしようかと思ったんですが、マテリアルをアサインした場合はこれまで使っていた素のマテリアルと違ってライトを置いてやらないと反応してくれず、真っ黒になってしまうのでこの二つは一緒におこなう必要がありました。おかげで長いです。書くのもむちゃんこ疲れました、、、

そのため、今回は極力手順を簡単にするために、arnold の car paint シェーダを使用し、ライティングはドームライトのみを用いるようにします。

まずはマテリアルの作成からおこないます。マテリアルの作成には

  • ArnoldShadingNode
  • NetworkMaterial

の二つを使用します。NetworkMaterial がいわゆるマテリアル本体で、オブジェクトへのアサインをおこなう場合もこれを指定します。ArnoldShadingNode はマテリアル中のシェーダーノードで、具体的な計算内容やパラメータを扱います。

上記二つのノードを作成したら、最初にマテリアルのインターフェースを作成します。NetworkMaterial のパラメータ内で Add Terminal をクリックし、arnold グループから surface を選びます。こうすることで、ノードへの入力口(Port)が作成されます。下図で arnoldSurface と表示されているのが作成した Port です。

続いて ArnoldShadingNode 中で nodeType を car_paint にします。これで、このノードは car paint shader として機能するようになります。

マテリアルが定義できたので、メインキャラクタにアサインします。まずはメインキャラクタのツリーとマテリアルのツリーをマージし、MaterialAssign ノードでマテリアルをアサインします。ここでももうおなじみの CEL を使用します。Statement にアサインするジオメトリを指定し、materialAssign でアサインするマテリアルを指定します。図では見えないですが、ツリー中に /root/materials/NetworkMaterial があるので、それを中ボダンドラッグアンドドロップで指定できます。

続いてライトを作成します。こちらも二つ、

  • LightCreate
  • Material

の二つのノードを作成します。LightCreate は名前の通りライト(になるノード)を作成し、Material でライトの機能を作るイメージです。ライトの機能は別になっているため、LightCreate だけではレンダリング時にライトとして作用しません。

Material では Add Shader で arnold グループから light を選びます。更に、arnoldLightShader として skydome_light を選びます。

私は、Material ノードはシェーダと MaterialNetwork を一つにまとめたもので、よく使って簡単な構成なマテリアルを作る際に一々 MaterialNetwork などをいろいろ作らなくても良いように用意されたノードで、同様なことはこれが無くても実現できるものだと理解しています。

続いて、先ほどと同様ノードにマテリアルをアサインします。

ここまで来たらあと一息です。長かったです。。。。(-。-)y-゜゜゜
全てのノードをエイヤっ!!とマージします。

左がカメラ、真ん中がマテリアルをアサインしたメインキャラクタ、右側がライトです。これまでの流れが追いかけることができていればもう簡単ですね。

では待望のッ!!レンダリングをしてみましょうッ!!

できました!!やったね!!

CG, KATANA

KATANA+Arnold でカメラプロパティを調整する

昨日の記事で、まだご紹介していなかったノードが映りこんでしまっていたのでついでにご紹介します。
オブジェクトへのアトリビュートの付与と同様、カメラについても Arnold 特有のアトリビュートを追加して細かく調整することができます。

これには ArnoldCameraSettings ノードを使用します。下図を見ての通り、たくさんのプロパティを編集することができます。どのカメラに対して適用するかは、昨日も出てきた CEL で指定します。今回はパスを直接指定できる Path タイプのステートメントを使用してみます。

登録はとても簡単で、Scene Graph から目的のオブジェクトをマウス中ボタンドラッグアンドドロップで放り込むことでできます。

試しに exposure を変えてみます。左がデフォルト、右が +1 したものです。見ての通り美白肌が一段と強調されています。

CG, KATANA

KATANA+Arnold で subdivision surface

レンダリング時にメッシュをいい感じに分割してくれる機能、Subdivision Surface は皆さんお使いのことと思います。KATANA+Arnold 環境でも当然これを使用可能です。

KATANA では、オブジェクトのアトリビュートの操作もノードベースで行い、そのノードを通ったデータに対して指定したルールに沿って処理することができます。そして、あるメッシュを Subdivision Surface として扱うかどうかもこの方法でおこないます。

Alembic_In で読み込んだジオメトリに対して Subdivision Surface を適用するには ArnoldObjectSettings を用います。

処理を適用するルールは CEL(Collection Expression Language) というものを用います。これを使うことで、単純なパス指定やあるルールに沿って処理をおこなうというちょっと複雑なこともできます。

Custom タイプの CEL を 追加し、/root/world/geo/asset/GEO//*Shape を指定します。これは、/root/world/geo/asset/GEO 以下の階層で *Shpae にマッチするノード全てを選ぶという意味になります。今回のシーンでは、この方法で polymesh が抽出できます。

設定がおわったら Render ノードで Preview Render をするとスムースのかかったメッシュがレンダリングされます。スクリーンショットを見てもわかる通り元のジオメトリはかなり粗いままなので、レンダリング時に分割されていることがわかります。

CG, KATANA

KATANA のレンダリング設定

レンダリングをおこなう際に使用するレンダラやカメラ、解像度といった情報も KATANA シーン上で複数持つことができます。

これらもノードになっているので、前回レンダリングに使用した Merge ノードの先に Render Settings ノードと Render ノードを繋ぎます。

Render Settings ノードで resolution を HD にし、 adjustScreenWindow を “Adjust width to match resolution” にすると FullHD で望んだ感じの絵をレンダリングすることができます。


ちなみに CameraCreate ノード中で screenWindow を適切に指定すれば adjustScreenWindow を No adjustment にしても正しい絵を出力することはできるのですが、サンプルシーンを見ても adjustScreenWindow を使っているようです。

じゃあ screenWindow は何に使うかと言うと。。。何に使うんでしょうね?きちんとレンダリングする場合には Maya でいう aperture と同じようにきちんと設定する必要があるんじゃないかなと思うんですが。

CG, KATANA

KATANA+Arnold でレンダリング

KATANA には標準で 3Delight がついていて、何もしなくてもレンダリングが可能です。

が。

まあ今のところ現実的に採用可能なレンダラは Arnold でしょう。ということで、Arnold でレンダリングをしてみます。

Arnold プラグイン(KtoA) は標準で含まれていないのでサイトからダウンロードする必要があります(要 Autodesk アカウント)

ダウンロード待ちの間にドキュメントも読んで何をしなければいけないか確認をしておきます。インストールに関しては Installation のページですね。とは言ってもコロッサスさんが既に KATANA3.0+Arnold を動かすための記事を書かれているのでそれを読めば十分な気がしますががガガガ。

KtoA を使用するためには環境変数を幾つか設定する必要があるようです。私はこのような katana.sh ファイルを作成しました。

#!/bin/sh

export KATANA_ROOT=/opt/Katana3.0v6
export DEFAULT_RENDERER=arnold

export KTOA_ROOT=/opt/KtoA-2.2.1.0-kat3.0-linux
export “KATANTA_TAGLINE=With KtoA 2.2.1.0”

export KATANA_RESOURCES=$KTOA_ROOT

export PATH=$KATANA_ROOT/bin:$KTOA_ROOT/bin:$PATH
export PYTHONPATH=${KTOA_ROOT}/python:$PYTHONPATH

$KATANA_ROOT/bin/katanaBin

これを実行すると。。。。

[chiyama@docker ~]$ ./katana.sh
[INFO LicenseCheck]: Interactive License OK
[INFO python.Main]: Launching Katana 3.0v6 …
[INFO python.PyUtilModule.ResourceFiles]: Additional Katana resource paths from KATANA_RESOURCES:
[INFO python.PyUtilModule.ResourceFiles]: /opt/KtoA-2.2.1.0-kat3.0-linux
[INFO plugins.KtoA]: Arnold for Katana loaded, version 2.2.1.0 with Arnold 5.2.1.0 [7c7c9701] linux clang-5.0.0 oiio-1.7.17 osl-1.9.9 vdb-4.0.0 clm-1.0.3.513 rlm-12.4.2 2018/10/19 22:25:43
[INFO python.Main]: KATANA_RENDER_TILE_SIZE defaulting to 256×256
[INFO python.Main]: KATANA_IMAGE_MEMORY defaulting to 11188 MB
[INFO python.Main]: KATANA_IMAGE_DISK_MEMORY defaulting to 8052 MB
[INFO python.Main]: KATANA_SPEC_CACHE_ENABLED defaulting to 1
[INFO python.HydraViewer]: MSAA samples: 16
[INFO python.HydraViewer]: MSAA samples: 16

無事に KtoA が認識されています。

本当に Arnold が使えるのか試してみましょう。おなじみのカメラと .abc ファイルを読み込んで Merge でまとめて、Merge ノード上で右クリック→Preview Render を実行します。

すると、図のように Monitor 上に画像がレンダリングされました。ウォーターマークも入っているので間違いなく Arnold でレンダリングされています。