Maya で XSI Toon を使ってみる。[前編]

どもー、ペリーです。
冬コミまでもう数日となりましたが、みなさん出陣の準備はできましたか?

さて、今回はタイトルにあるように siToon (Softimage 用のカトゥーンシェーダ)を Maya で使えるようにするためのTipsを少し書きたいと思います。

(追記)
siToon のインストール方法や使い方をまとめたページを作りました。
ファイルもそちらで配布するようにしたので、興味のある方はDOWNLOADページより、siToon for Mayaの記事を参照してみてください。

今回のプロジェクトをはじめ、自分は普段 Autodesk社の Maya をベースにして作業をしてます。

最近は FumeFX for Maya や Krakatoa for Maya など、もともと 3ds max 用に開発された優秀なプラグインの Maya 版が発表されているので非常に助かってるのですが、それでもたまーに隣の垣根が青く見えてしょうがなかったりするんですよね。(すっかり Maya パイプラインの一部になっている V-Ray も、元は max 用に開発された物だったりまします。)

昔から言われていた事なのですが、特に Maya は何もいれていない状態だと トゥーンシェーダ周りがすっごく弱いです。

もともと Maya には Maya Toon と mental ray の Contour があるので すが、2つともかなり大雑把な設定しかできなくて困っていました。
Maya Toon の方は輪郭線(Toon Outline)の境界の判断がかなりピーキーで、しかもエフェクトを適応するとビューポートがかなり重くなると言った困りもの。
mental ray の Contour は結構軽くて良い感じなのですが、線の細かな強弱が付けづらく、細かいところを詰めていくにはかなり物足りない感じです。
しかもこの2つシェーダの開発は完全に終了していて、今後もアップデートの見込みなし。Maya Toonにいたっては、すでにチュートリアルからも関連項目が外されている始末w

最初、今回のプロジェクトは mental ray Contour でやろうと思っていただけに、この使いにくさにはいささか閉口してしまいました。

「max はいいなー、Pencil+があって。
えっ? XSIなんか、プラグイン入れなくてもこんなにきれいなアウトラインがでるの?マジで!」

と、指をくわえてネットを徘徊していたところ、まさに天の助け様な記事が目に飛び込んできました!
それがこちら↓

MayaでsiToon![デジタル・フロンティア-Digital Frontier | DF TALK]
今回はMayaでの輪郭線についてのお話です。 レンダラーにもよりますが輪郭線はデプスやノーマルの差が閾値を超えている箇所などに線を描画するものが多いかと思います。 実際に輪郭線を使うに当たっては、線の太さ、線の色、深度による線の太さ、線を出す出さないなど色々と調整したくなります。 Mayaにも標準でContourシェーダーがありますがこのあたりを色々調整して使おうとするとなかなか…なんですよね~。 本来なら使い勝手のよいカスタムContourシェーダーを開発してといきたいところですが、時間もないしなぁ。 Softimage(以下SIと略)のToonみたく調整できたらなぁとググっていたら某フォーラムに ”XSI Toon for 3dsmax”なんてのが載ってるじゃないですか!むむむ。こりゃMayaでもいけるでしょ!という訳で 今回は”MayaでsiToon!”をご紹介しようと思います。
Awesome! Great! すばらしいw
これです!これが自分が求めていたクオリティ!
と言う訳で、天恵の様なDFさんの記事を参考に 、さっそく siToon をMaya にインストールしてみることにします。

詳しい方法はリンク先の記事を参考にしてもらうとして、以下自分が気になった点(つまづいた点)をまとめてみました。

1.Render Tree window ってどうやって開くの?

max と Maya は使えても softiamge は触ったこと無かった自分にはいきなりの難問。
このウインドウを開くのに1時間以上かかってしまいました(苦笑)
答えは簡単。ビューポートで[7]key を押すだけでおk。
後はDFさんの記事の通りに Toon Host と Toon Ink Lens を開いて、各変数を確認すればお終いです。



ただ、この作業はあくまで変数を確認する作業だけなので、とりあえず Toon Ink Lens だけ使えればいいやと言う方は、リンク先に記載されていたコードだけをお借りして siToon.mi として保存すれば大丈夫です。


2.Toon host も使いたいんだけど何を書き足せばいい?

「いや、やっぱ Toon host も使いたいっす。」と言う方は、一応念のためご自分でShader Code Editor 内で Toon Host の変数を確認した後、以下のコードを DFさんのコードの後(end declare の後ろ)に追加してください。
(DFさんのコードはともかく、自分のは完全に趣味で書いたものなので、動かなくてもご愛嬌ということでよろしくお願いしますw)

(追記:2014/1/5 後で AETemplate を配布する事にしたので、ちょっとだけスクリプトをいじりました。 )

declare shader

 color "sitoon_host"
 (
  array light "lights",
  color "surface",        #: default 0.25 0.25 0.25 1,
  boolean "bypass", 
  boolean "backcull",
  scalar "modify_spread",     #: default 1,
  scalar "modify_detect_n_delta",  #: default 1,
  boolean "override_enable",
  color "override_color",
  integer "override_mix_mode",   #: default 0,
  scalar "detect_transparency_threshold",
  boolean "exterior",       #: default on,
  boolean "interior",       #: default on,
  boolean "backshadow",      #: default on,
  integer "blend_group",      #: default 0,
  array geometry "blend_objects",
  scalar "blend_z_delta",     #: default 0.1,
  integer "unblend_group",    #: default 0,
  boolean "refract_enable",     #: default off,
  integer "refract_mode",     #: default 0,
  color "refract_filter",
  scalar "refract_index",     #: default 1,
  boolean "refract_pri_enable",   #: default off,
  scalar "refract_pri_rgb",     #: default 1,
  integer "refract_pri_mode",    #: default 2,
  scalar "refract_pri_alpha",    #: default 1,
  boolean "refract_sec_enable",   #: default off,
  scalar "refract_sec_rgb",    #: default 1,
  integer "refract_sec_mode",   #: default 2,
  scalar "refract_sec_alpha",    #: default 1
  boolean "reflect_enable",    #: default off,
  integer "reflect_mode",     #: default 0,
  color "reflect_filter",      #: default 1 1 1 1,
  boolean "reflect_pri_enable",    #: default off,
  scalar "reflect_pri_rgb",     #: default 1,
  integer "reflect_pri_mode",    #: default 2,
  scalar "reflect_pri_alpha",    #: default 1,
  boolean "reflect_sec_enable",   #: default off,
  scalar "reflect_sec_rgb",     #: default 1,
  integer "reflect_sec_mode",   #: default 2,
  scalar "reflect_sec_alpha"     #: default 1
 )

 version 2
 apply material, shadow

end declare
ちなみに、このあたりのコードは、DFさんのサイトでも書かれいた通り、こちら「XSI Toon for 3ds max」の記事を参考にしています。もしうまく動かない場合は、そちらを覗いてみるのもいいかもしれませんね。

ここまで出来れば、あとはDFさんの記事で指定された場所に sitoon.dll と sitoon.mi をコピーすれば、「とりあえず」は動くようになります。

ではさっそく Maya を起動して 確かめてみます。

Hypershade を開いて、検索欄に「sitoon」と打ち込んでみました。


検索結果に「sitoon_host」と「sitoon_ink」が無事表示されました。

ではさっそく使ってみようと思ってAttribute tabを覗いてみたのですが…。


ギャース!!Σヽ(゚Д゚; )ノ
変数名がそのまま表示されてるッ!

…これが DFさんの記事の最後に書かれていた「AETemplate」を書かなくちゃいけない理由なんですね。
これじゃ、なにが何のパラメータなのかさっぱりです。

と言う訳で、年明け2014年の初記事はこのAETemplateの書き方の説明をしたいと 思います。

それではみなさん、良いお年をー。

0 コメント :

コメントを投稿

 

©Copyright Perry Street. All rights reserved.