2012年2月29日水曜日

自動車のアニメーションリグ

みなさん、おはようございます。
柳村です。

前回の勉強会で、”すべらないタイヤ・パスアニメーションにも対応”をチラッとご紹介いたしました。

タイヤの回転制御には、モディファイアの”リボルブ”を使用すると便利なのですが、
リボルブは絶対軸方向の移動距離とタイヤの半径をもとに回転を計算しているようなので、
斜め方向へ移動するようなアニメーションでは、回転がうまくできません。

さらにパスアニメーションのように、Z軸に向かっていたタイヤが途中からX軸方向に向かうと、
回転しなくなってしまいます。

これを回転するようにするには、ユーザーチャンネルとチャンネルリンクを使って
移動した距離をパス全体の長さx現在地点のパスの移動割合から求めて、
ダミーアイテムからリボルブに渡す、という方法で回転させることができます。

そのことについては、後日詳しく解説するとしまして・・・
そこからさらに発展させて自動車のアニメーションリグを組んで見ました。

このリグをブログで解説するには難しすぎるので・・・
リグがどう組まれているかは、ファイルをなめまわしてみてください(笑)

ご自身の作成された自動車のモデルにも置き換えられるように組んでいますので、
設定・使用方法は以下の動画をご参考ください。



↓LXOファイル
Car_Rig.lxo

2012年2月27日月曜日

第10回modo user group 勉強会終了しました

こんにちは豊島です。2/25に開催されました今年初めてのユーザーグループの勉強会が無事終了しましたので、ここに御報告しようと思います。

柳村さんからはモディファイアとアニメーションの解説。アイテムに情報を付加する事で様々な動きをコントロールする方法を説明して頂きました。
後半では実際にモデルのパワーショベルにリグを組み込む作業を披露、IKを使い一つのコントローラーでアーム全体を制御する所までの一連の作業を座標軸の概念の説明を交えつつ見せて頂きました。
柳村さんはいつも難しい3D空間の概念を分かり易く説明することに心を砕いて下さるので、聞く方としても基礎知識があまり無くても理解することが出来ました。

日比さんは図面のトレースとスムージングのトラブルシューティング。
トレースは特にスピードアップに重点が置かれた解説で、図面から立体へ加工する際の頂点の扱い方をツールの応用と合わせて解説下さいました。
とにかく日比さんのツールの応用法は凄い!
良くmodoはモデリングがやり易く、早くモデル製作が出来ると言われますが、日比さんの応用を取り入れるともう1・5倍くらいスピードアップする感じでしょうか。
ツールの挙動、ポリゴンの特性を深く理解しているからこそのツール利用法に毎回驚かされます。
まだご覧になっていないかたは是非勉強会へ足を運んでみてください、損はないと思います。

勉強会の最後には頼本さん、高島さんによるmodoグッズの抽選会を行いました。e-frontier様のご好意により頂いたTシャツを配布し素晴らしいムードで勉強会終了となりました。

勉強会・懇親会共に良き雰囲気の中終われました事を参加した皆様に感謝すると共に、
modo user group Osakaをこれからも宜しくお願いします。
ユーザーグループでは様々な企画も考えておりますので、皆様のご意見・ご要望お待ちしております。

2012年2月14日火曜日

ノーマルマップ(法線マップ)について

みなさん、こんにちは。
柳村です。

先日、modo UserGroup Tokyo 主催の勉強会へ参加させていただきました。
私は、リプリケータについて解説をさせていただいたのですが、
そのなかで、軽くふれましたノーマルマップについて補足させてただきます。

まず、ポリゴンの法線について簡単にお話しておきます。

ポリゴンというのは、基本的に”面”なのですが、
その面が3D空間の中で”どの方向を向いているのか?”という事を表しているのが、ポリゴンの法線です。
下の画像では、ポリゴンからヒゲのように生えているのが法線です。


modoは初期設定の状態ではポリゴンの法線が表示されないので、
表示したい場合は、ビューポートオプション(ビューポート上で"o"キーで開きます)で
表示属性の、選択法線の表示にチェックを入れてください。

つまり、法線の方向=ポリゴンの面が向いている方向なのですが、
この法線の方向をもとにして、ライトとの角度やカメラから見た角度などを
コンピューターが計算することで、そのポリゴンの明るさや・ハイライト・鏡面反射など、
さまざまな要素が決定するのです(シェーディング)。

余談ですが、このことから非平面ポリゴンというのは極力避けなければいけないです。
非平面ということは平面に非(あら)ずなので、面ではないのです。
ポリゴンの面の方向を示す法線ですので、3DCGでは面ではない非平面にも法線は存在します。
しかし非平面の面の方向を示しているので、変な反射や不正な影などのレンダリングエラーの原因となります。


話を戻しまして、ポリゴンの面の方向を示すのがポリゴンの法線ですから、
基本的には、1ポリゴンについて、法線は1本です。

そこで、技術屋は考えました。

たとえば、ディフューズカラーの場合、
普通は1ポリゴンのディフューズの色は、マテリアルのカラーで指定された1色ですが、
テクスチャを投影することで、1ポリゴンの中に複雑な模様を表現できます。

ということは・・・テクスチャを投影してポリゴンの法線をコントロールすれば、おもしろくなるんじゃないの?

つまり、テクスチャの各ピクセルごとに法線の情報を持たせれば、1ポリゴンに複数の法線を指定できるということです。
10ピクセルx10ピクセルの100ピクセルの画像をポリゴンに投影すれば、
1ポリゴンの中で100本の法線を持たすことができるということになります。
実際には法線が何本とかは考えないと思いますが(笑)

これがノーマルマップ(法線マップ)です。

その仕組みを簡単にお話しますと、
3次元空間はXYZという、3つの要素で成り立っています。
都合のいいことに、画像フォーマットもRGBと言う3つの要素で構成されています。
これを利用して、そのピクセルが3次元空間のどの方向を向いているのか?というのを
RGB値で表現しています。

たとえば、X軸はR Y軸はG Z軸はB と割り当てて、
Rが0のときはX軸方向は-1.0
Rが255のときはX軸方向は1.0
というように、コントロールできる仕組みです。

とは言ってもノーマルマップを自分でPhotoshopなんかで描くと言うのは、おそらくないでしょう。
上記のようなことを考えながらRGBを割り出してペイントするなんで、私には無理です(笑)

ところで、ここまでノーマルマップについてお話して来ましたが、
ノーマルマップ使うと、どうなるの?と、お思いではないでしょうか?

結論から言いますと、バンプマップよりも立体感のある、擬似的な凹凸を表現できるようになります。

バンプマップもノーマルマップも擬似的に凹凸を表現する機能です。
擬似的に凹凸に見えるということは、ポリゴン内部の法線の向きが異なることで、
ハイライトが入ったり、ライトから受ける影響が違ったりするので、1ポリゴンの中でも凹凸に見えるのですね。

では、バンプマップとノーマルマップの大きな違いは・・・

○バンプマップ
  ・画像の明度(白黒画像が多い)により、
   ピクセルの高低差のみ(高いか低いかだけ)を持っているデータ。
  ・値は相対的。
   (ここのピクセルは”高さが何ミリ”なんていう絶対的なデータではないという事。)
   なのでバンプの高さ(範囲)などを、マテリアルで指定します。
   50%グレーを基準に、白がプラス方向の高さ、黒がマイナス方向高さとなります。
  ・そして、隣り合うピクセルの明度差(高低差)からそのピクセルの法線方向が
   自動で決められます。

○ノーマルマップ
  ・法線のベクトル(方向)を持つデータ。
  ・値は絶対的。

となります。

つまり、バンプマップは高低差のデータをもとにして、そのピクセルの法線の向きを求めるのに対して、
ノーマルマップははじめから法線の向きを持っているデータということです。

下の画像は、バンプマップとノーマルマップの比較です。


バンプマップは所詮256段階の諧調しかない中で、
明度から高低差をもとに法線の方向を求めているので、
ノーマルマップと同じくらいの凹凸感を持たせると、諧調飛びが起きています。


このようにノーマルマップでは、きれいに立体感のある凹凸を表現できます。
この技術は、リアルタイムレンダリングやゲームといった分野で活用されています。
軽いデータで複雑な立体感が得られて、リアルな表現ができるからですね。

ではどのように作るのかというと、”ベイク”によって作成するのが一般的だと思います。

ハイポリゴンでディティールの細かいオブジェクトを、ローポリゴンの荒いオブジェクトに
ベイクすることで、ローポリゴンでもハイポリゴン並みの表現を可能にします。

ほかの方法としては、写真やハイトマップ(バンプマップ)からノーマルマップを作成する
アプリケーションもあるようです。(CrazyBumpなど)

ここでは、modoでベイクによる作成方法をご紹介します。


プリセットから呼んできた十字架のアイテム(Gem Set Cross 01.lxl)を
平面のPlainにベイクしてみます。
PlainオブジェクトはあらかじめUVを展開してあります。

Plainオブジェクトにマテリアルを割り当てて、
新規画像を作成・追加します。


作成した画像のエフェクトを、ディフューズの色から法線に変更します。


plainを前面表示に、Gem Set Cross 01.lxlを背面表示にします。


追加した画像を右クリックし、オブジェクトからテクスチャへベイクを選択します。


すると、距離を聞いてきます。
これは、ベイクされるPlainからどのくらいの距離までをベイクするか?という指定です。
今回は、Gem Set Cross 01.lxlの高さより少し高い、5mmを指定しました。

OKを押すとレンダリングが始まり、画像にノーマルマップがベイクされます。

Gem Set Cross 01.lxlを非表示にしてみると、
Plainオブジェクトにベイクされていて、バンプでは表せない立体的な凹凸の表現ができているのが
おわかりになると思います。
回転などしてみると、ハイライトの入り方がとてもきれいで、バンプマップとは一味違います。


このベイクという作業は、Gem Set Cross 01.lxlのポリゴンの法線を、
Plainオブジェクトに転写した、という作業です。
ハイポリゴンの情報を、1枚のポリゴンに転写した、とも言えますね。
ですが、あくまでも擬似凹凸です。

ここまでが、ノーマルマップの解説なのですが、
勉強会のリプリケータの解説で、このノーマルマップを使用していたのは何か?と言いますと、
先ほどまでの解説では、法線の情報はシェーディングに使っていましたが、
レプリカの向きは頂点やポリゴンの法線方向に向く。という事なので、
法線の方向の情報を持つ、ノーマルマップをつかえばレプリカの方向も制御できる!というわけです。

たとえば、以下のようにコーンをベイクしてノーマルマップを作成して、コーンの法線を転写します。


作成したノーマルマップをサーフェイスパーティクル法線に指定すれば、
レプリカが、放射状に配置されます。


いかがでしょうか、ノーマルマップの活用。
なかなかおもしろいので、皆さんも色々試してみてください!

※ベイクしたあとは、ベイクされた画像を上書き保存するのを忘れないでください。
※べいくしただけでは、画像は保存されていないので、注意が必要です。

2012年2月6日月曜日

第10回modo user group勉強会開催のお知らせ

いつもお世話になります。頼本と申します。
前回から結構日が空いてしまいましたが、今年初めとなるmodo勉強会を開催致します。

「第10回modo勉強会」
日時: 2/25(土)13:30~17:00
会場: 大阪市男女共同参画センター 中央館(通称:クレオ大阪中央)3F・ 会議室1
     大阪市天王寺区上汐(うえしお)5-6-25  Tel 06-6770-7200
         http://www.creo-osaka.or.jp/chuou/index.html
会場は1度でも参加された方はご存知ですよね。いつものクレオ大阪中央。デモをして下さるのも頼りになるお二人、hibiさんそしてドクターこと柳村さんとなっております。参加費も500円でリーズナブルなので是非ご参加頂き、modoを深く理解するためのきっかけになればと思っております。参加希望の方はこちら→ hibi@me.com ←日比さんまでメールをお願いします!
そして勉強会後は懇親会も行われます。勉強会参加のメールに懇親会の参加・不参加も明記頂くととっても助かります(勉強会のみ・懇親会のみのご参加ももちろんOKです!)

毎回の事ですが、modoを使ってらっしゃらない方・他のソフトを使ってらっしゃる方もお越しになります。ですのでお気軽にご参加下さいね。みなさん親切な方ばかりですよ!

東京もいろいろ活発に活動されております。大阪も色々と発信していければと、メンバー一同考えております。
では皆様のご参加をお待ちいたしております。