カテゴリー: CG

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 でレンダリングされています。

CG, KATANA

KATANA のカメラ操作

KATANA でカメラを作ってカメラから見たシーンの表示をしてみます。

KATANA 上ではカメラもプリミティブや Alembic キャッシュと同様、ノードから作ることができます。
使用するのは Camera Create ノードなので、Node Graph 上で Tab キーを押して作成します。
また、カメラから見ることのできるものを用意する必要があるので Alembic_In ノードを使って .abc ファイルを読み込みます。

そして、これらを一つのシーンとしてまとめるために Merge ノードに繋ぎます。

ただ、このままではカメラもオブジェクトも原点に存在するため、カメラを移動します。Node Graph 上で Merge ノードをダブルクリックで選んで Viewer 上でカメラオブジェクトを選び、w キーを押すとカメラを移動することができます。ちなみに回転は e 、スケールは r です。このあたりの操作は 3DCG ソフトに慣れていれば何となく直感的に使うことができます。

カメラを移動したときにカメラからどのように見えるのか確認するには Viewer 領域の下部にあるメニューから、表示するビューポートを選択します。

また、既存のビューポートは残しつつ新たにカメラ用のビューポートを作成したい場合、プルダウンメニューから Viewer(Hydra) を選んでタブを追加し、ビューポートを設定すればよいです。

そんなこんなでカメラからのビューを設定するとこのようになります。

CG, KATANA

KATANA で Merge ノードを使ってみる

今日は KATANA の機能のうちでも恐らく触ってみないと想像がつかない、でも触ってしまうとこれなしでは考えられないであろう機能、Merge についてです。

Merge を一言で言うと、3D シーンでコンポジットソフトの合成と同じことをおこなう機能です。。。と一言で済ませられるならいいんですが、これは実際に動いているものを見てみないとナンノコッチャ?という感想しか沸かないので試してみます。

まず、PrimitiveCreate を使って Sphere と Cube を作成します。それぞれ作成するパスは /root/world/geo/polysphere と /root/world/geo/cube です。同じ位置にあると結果がわかりづらいので translate に値を入れて位置をずらしておきます。

そして、この二つを Merge に入力します。するとどうなるでしょう。

/root/world/geo 直下に polysphere と cube が配置されました。こうして二つのツリーが一つに合成されたのです。こうすることで、たとえば別々に取った Alembic キャッシュを読み込んで一つのツリーにまとめることができるようになります。

更にすごいのは、Merge はノードベースで処理が行われているため、一つの KATANA シーンファイルの中で複数の異なるツリーを持つことができるのです。たとえば、今回作成した PrimitiveCreate, PrimitiveCreate1, Merge はそれぞれ別のツリーを持っていますし、Merge ノードをもう一つ増やして別の合成をするとそれも別のツリーとして存在します。これが一シーン中に一ツリーという既存の CG ソフトとの大きな違いです。

例えるなら、今まで 3DCG 制作と言えば一枚の紙にレイヤ情報も何もなく絵を描いていたところに、パーツ毎にレイヤを分けてレイヤを組み合わせながら作業を進めることができるようになった感じでしょうか。これはとても画期的です。

CG, KATANA

KATANA で .abc ファイルを読み込む

何をするにしてもアセットの読み込みができないと始まらない KATANA さん。ということで Alembic の読み込み。これくらいの基本機能だとさすが KATANA と言えど Google 先生にお伺いを立てればすぐに答えが見つかります。

Node Graph 内でおもむろに Tab キーを入力すると作成するノードの候補が表示されるので、”Alembic” と入力してくと Alembic_In が絞り込まれます。そこで Enter を押すとノードが作成されるのでダブルクリックもしくはノード右側の□をクリックしてパラメータを表示し、abcAsset に .abc ファイルへのパスを入力すれば OK。Scene Graph で root 右クリック→ Expand All でビューポートにもジオメトリが表示されます。

試しにアニメーション付きのファイルをロードしてみたところ、特に問題も無くサクッと読み込むことができました。きちんと読み込むためには fps なんかもちゃんとセットする必要があるようです。また、name でシーン中の階層名を指定することができます。今回は /root/world/geo/Zombie_on_Fire と指定しているため、読み込んだシーンのトップがそこになっています。

この名前を適切に指定しておくと、複数のシーンを読み込んで Merge でまとめた時に階層を適切に処理して一つにまとめてくれるようです。

CG, KATANA

KATANAのサンプルファイル

KATANA を触り始めるにあたってチュートリアルビデオを見ながらあれこれ試してみるのもいいんですが、とりあえずどんなことができるかサンプルを見てみたいッ!!って思うのが人情かと思います。

そんな場合、KATANA のインストールディレクトリの demos 以下にサンプルファイルがあります。KATANA のシーンファイルは katana_files 以下にあるので、こちらを読んでみます。

こちらのファイルはとても丁寧にできていて、どんなサンプルなのか、どんな処理がされているのかという詳細なコメント付きです。まずはこれを開いてみて、よくわからないなりにフムフムナルホド。。。。とわかった風になってみるのもいいんじゃないでしょうか。。。というか、私はそれをやっています。笑。

CG, KATANA

KATANA のインストール

縁あって KATANA を触る機会ができたのでインストールをしてみました。とりあえず試したのは Windows 版です。

インストーラは Foundry のサイトからダウンロードすることができます(もしかしたらアカウントを作成してログインする必要があるかも?)。ライセンスが無い場合でも 30 日間のトライアル版があるので、そちらを使用することができます。

今回はネットワークライセンスを使用するようにしたので、ライセンスサーバーのセットアップもおこないます。ライセンスサーバーのセットアップに関しては本家のドキュメントも充実していますし、FAQ もあります。また、代理店のサイトでも詳しく記述されているので(例1)(例2)そちらを参考にすれば基本的に問題になることはないかとおもいます。

ライセンスサーバーのセットアップ後、ファイアウォールの設定を忘れないようにします。デフォルトでは 4101 番ポートを使用するので外部からここに接続できるようにします。また、4102 番ポートにアクセスするとライセンスの情報が取得できます。ライセンスサーバーを立ち上げたマシンで http://localhost:4102/ にアクセスしてみてください。

今回一つハマった点があって、ライセンスサーバーを仮想マシン上で動かす場合は通常のライセンスとは別に VM Enable license が必要となります

ライセンス周りで何か問題があった場合、前述の URL やログファイルを確認します。ログファイルはライセンスファイルと同じ場所に格納されているようなので、Foundry License Utility(FLU) の Diagnostics を使ってパスを確認できます。私の環境では C:\ProgramData\The Foundry\RLM\log\foundry.log にありました。

これらの設定ができれば、KATANA を立ち上げてライセンスサーバー情報を入力すれば無事に動かすことができます。

スクリーンショットを見ても非常に簡素な造りで、最近のゴテゴテピカピカな CG ソフトに見慣れると物足りなく感じるかもしれません。私はこっちの方が好きなんですけどね。あと、慣れない人はシンプルすぎて最初にどこから手をつけたらいいのかわからなくて戸惑ってしまいそうです。

私は Gaffer を触っているおかげで何をやらなければいけないのかはイメージできるのですが、実際のオペレーションに関しては右も左もわからないのでチュートリアル(たとえばこことか?)や COLOSSUS さんの記事を見ながら勉強を進めていくようにします。このあたりは Gaffer に比べたらとても豊富なので心強いです。

CG, Gaffer

Gaffer でのバッチレンダリング

CGWorld.jp の連載、”痴山紘史の日本CG見聞録 第5回:Gafferによるルックデヴ&ライティング” でファイルへのレンダリングをおこなう方法について正しいかどうか確信が持てないと書いていましたが、やっぱりこれは正しくなかったようです。

正しくは、Output ノードで出力先を指定し、その出力を ArnoldRender ノードに繋げるということでした。Output ノードでファイルの出力先が指定されていれば、InteractiveArnoldRenderer ノードを使ってインタラクティブに結果を確認している間もファイルに出力されるようです。このあたりの理解が不足していました。すみません。

このようにして、ArnoldRender ノードで Execute をすることでファイルへのレンダリングをすることができます。

Output1 の上の ArnoldOptions は、本番レンダリングのためのレンダリングクオリティの設定をおこなっています。プレビューしているものと同等の品質のもので良ければこれも必要ありません。

Blender, CG, コンピュータ

オープンソースソフトウェアの醍醐味

最近はエイプリルフールが世間にガッツリ定着してしまって、どこもかしこも嘘だらけでつまんないので逆張りしてガチネタで攻めます。天邪鬼天邪鬼。

ここ一、二年、一般的な CG 屋さん達からも Blender が注目を集めてきていています。最近はそこに Softimage の開発終了のニュースがあったために更に注目を浴びることになっています。

それはそれでいいことですが、Blender を使うということに対して何かいろいろ的外れな言及が多い(というか、そればっか)ので一度自分の意見をまとめてみました。


一番違和感を覚えるのが “無料=お金がかからない” という紹介です。これはもう完全に的外れです。タダだから使うというのは、情熱と時間が有り余って、でもお金がない学生さんならともかく、いい大人(しかもプロ)がそれ基準でものごとを決めるのは “本気!?” と思ってしまいます。正直、発想が貧乏臭いです。

はっきり断言しておくと、Blender を使うことでお金がかからないとか安く作品を作ることができるということは全くありません。自分達が割くリソースの内容と、その投入先が市販ソフトウェアを使う場合と異なるというだけです。そもそもソフトウェア代なんて人件費に比べたら誤差みたいなもので、それが高いというのは(ry

繰り返すと、投資の質と投資先が異なるというだけです。

市販ソフトウェアは既にある程度実績があって商品としてパッケージングされたものをお金を払って使うものです。それに対し、オープンソースソフトウェア(特に発展途上なもの)はそこにあるものを自分の力で使えるようにするという努力が必要になります。

例えて言うなら、市販ソフトウェアを使うのがコンビニ弁当を買って食べるということだとするとオープンソースソフトウェアは山や海に行って、自分で食材を集めて調理するようなものです。材料そのものにはお金はかからないかもしれないですが、そのかわりに現地に行く労力や食材を育てたり狩りをするためのスキルが必要になります。

そのためのスキルを身につけるには相応以上のコストを払う必要があります。Blender を使おうかと言っている人で、そういったコストを払う覚悟がある人はどれくらいいるんでしょうか?かなり疑問です。

また、無料だからという理由で飛びつくのも、それを吹聴するのも自分の首を締める行為にしかなりません。無料で制作ができる=自分たちの仕事をするためにかかるコストが安いですよというメッセージに受け取られ、結果的に映像制作をするということの価値を下げることに繋がります。それがみんなが求めている未来なのでしょうか?

大事なのは、”無料だから使う”ではなく、”使いたい使い方があるから使う”、そういう発想で道具を選ぶことです。これは極々当たり前のことですね。でも、”無料”の二文字の前にはそういう判断ができなくなる人が多いようです。

そして、Blender を始めとしたオープンソースツールを使用すること、ひいてはオープンソースソフトウェアのコミュニティに参加することの醍醐味はもっと別のところにあります。

開発力があればオープンソースソフトの開発に携って、自分達の力でソフトウェアをより良くすることができます。これは最もコアなかかわり方と言えます。

開発力が無い人は指をくわえて見ているだけか?というとそんなことはありません。
自分たちが欲しいと思ったら、自分で足りない部分を補っていけばいいのです。日本語マニュアルが欲しかったら自分が翻訳してみる、アーティストであれば自分の作った作品を公開してみる。これもコミュニティに参加するためのアプローチの一つです。
極端な話、インストールが難しいソフトウェアであればインストールマニュアルを作るというのも貴重な(そして、とても感謝される)貢献になります。

こういった、自分ができるアクションを起こすことで世界中の Blender チームの一員になるとができ、また、世界中の Blender チームを自分たちの一員にできるのです。そうなれば、世界中の開発者、研究者、アーティストと協力して新しい価値を生み出すことができるようになります。

そのためのコストは決して小さいものではありませんが、それ以上に得られるものがあります。

「ウチは CG をつくる会社だから関係ないよ」という意見もあるかもしれません。でも、考えてください。コミュニティの一員になることで、特定のベンダの呪縛から逃れることができます。SIGGRAPH で発表された、あの会社の使っていた技術がすぐに手元に届きます。しかも、開発者と直にディスカッションできます。自分が欲しいと思った表現方法を提案して賛同者を募ることもできますし、資金援助することで自分達が使っているツールを直接的により良くすることもできます。

これらの可能性を、今掛けているのと同等かそれ以下のコストで実現できる可能性を秘めているのが Blender であり、オープンソースコミュニティなのです。

無料だから使うっていう貧乏臭い発想より、こっちの方が断然ワクワクしませんか?

自分たちの手で未来を切り拓きましょうよ。