Tips

Tips

modoでメッシュを押しつぶす表現

modoでメッシュを使用して、別のメッシュを押しつぶす表現について書いてみます。

サンプルファイル

 

スケマティックはこんな感じ。

プロシージャルモデリング機能のSurface Constraintを使用してメッシュを押しつぶしてます。

Surface Constraintをポリゴン数の多いアイテムに使用すると計算が遅くなりそうなので、単純な形状のメッシュを使用してメッシュ変形できるようにWrapデフォーマを使用しました。Wrapデフォーマはスケマティックを使用してメッシュを入れ替えると反応しなくなり、modoの再起動が必要になる気がするので注意が必要です。

最後に、押しつぶしたあと柔らかいメッシュが揺れるニュアンスが欲しかったのでSoft Lagを追加してます。

スケマティック下の方はSurface Constraintの軸を反転する処理です。Surface Constraintは元々がモデリング用ということもあり、コンストレイントする軸が「XYZ」と「反転」の組み合わせで使うようになってます。
モデリングでは問題ありませんが、アニメーション用途で使おうとするとアイテムの位置関係でオプションを切り替える必要があって少し手間が掛かりそうです。アイテムの位置が45°の範囲でXYZ軸の切り替えと自動的に反転するリグを組もうと思いましたが、少し面倒そうでした。

 

Surface Constraintを使うとソフトボディのシミュレーションよりも手軽に変形を確認できるのが便利です。

modoのアセットに含まれてるチキンを変形してみた。

 

参考

Tips

modoでサーフェースに沿ってアイテムを動かす方法

modoでサーフェース(メッシュ)に沿ってアイテムを動かす方法について書いてみます。

サンプルファイル

modoでサーフェースに沿ってアイテムを動かすときは「交差サーフェース」を使用します。作成手順は以下の通り。

制御用のアイテム、次にサーフェースを参照するアイテムの順番で選択して、「交差サーフェース」ボタンをクリックします。するとサーフェースに沿って移動するロケータが作成されます。
通常はこのロケータにアイテムをペアレントすれば、サーフェースに沿ってアイテムが移動して見えます。

しかし、リグで使用するコントローラそのものをサーフェースにコンストレイントしたい場合があります(Mayaのジオメトリ コンストレイントのように)。そんなときはスケマティックを使用して、Intersectノードの「位置出力」を、コンストレイントしたいアイテムの「ワールド位置」に接続します。すると直接操作するアイテムをサーフェースにコンストレイントすることができます。

スケマティックではConeの「ワールド位置」がIntersectに接続され、Intersectで起算した結果がConeの「ワールド位置」に接続されており処理がループしています。一般的にこのような循環したノード接続をおこなうと、無限ループ(エラー)が発生して計算することができませんが、modoでは1ノードであれば計算をループさせて使用することができます。

Tips

modoでPlexusっぽいライン表現

modoでAfterEffectsのプラグイン「Plexus」っぽいライン表現について書いてみます。

サンプルファイル

 

スケマティックはこんな感じ。

基本的にはパーティクルシミュレーションをParticles to Array使って配列を作成し、Create Polygonsでラインを生成してます。Create Polygonsは配列から一筆書きでラインを生成することしかできないので、Offset Arrayで少し配列をずらしたデータを作り、Merge Arraysを使用して1つの配列に統合します。Merge Arraysを繰り返すことで1つの頂点から複数のラインを生成してます。

パーティクルが一定の距離離れたらラインを消すためにSelect Edges by Lengthを使用します。

パーティクルをレンダリングするために、Replicatorを使用してキューブを複製してます。このときキューブはParticle Look At Modifierを使用して常にカメラを注視するように設定してます。

 

それっぽくレンダリングするとこんな感じ。ロゴの頂点番号を工夫すると、もう少し面白いテキストアニメーションにできそう。フォールオフSelect By Volumeを使って、ラインを生成する範囲を制御してみるのも面白いかも知れません。

 

参考

Tips

modoで線をアニメーションする表現

modoで線をアニメーションする表現について書いてみます。
ArrayとCreate Polygonsを使用すると簡単に線がアニメーションするような表現が可能です。

■ サンプルファイル

スケマティックはこんな感じです。

ロゴのメッシュデータをParticles to Arrayで配列にし、Offset Arrayを使用して配列データをオフセットアニメーションします。この配列を使用してCreate Polygonsで「ライン」を生成してます。

線が全てつながった状態だとアニメーションしてる感じがしないので、Select Randomを使ってラインをランダムに削除します。
Create Polygonsはロゴのメッシュ全体を一筆書きのようにラインを生成するため、長いラインが発生します。この長いラインを削除したかったので、Select Edges by Lengthを使用しました。

ロゴの形状を崩すところは Jitter を使用してます。

 

参考

https://twitter.com/Merkvilson/status/1119823775925723136

Tips

modoのソフトボディ

modoのソフトボディのパラメータの動作をまとめてみた。ソフトボディは布やゴムボールのようなシミュレーションに使用することができます。

 

ソフトボディ

modoのソフトボディ(Bullet Physics)はメッシュの頂点間に仮想のバネを作成してシミュレーションします。

仮想のバネ

例えばV字のメッシュがあるとします。

ソフトボディを適用すると「屈曲剛性」「構造」「シアー」はそれぞれ、下の画像の色分けした部分にバネを作成します。

仮想のバネを使用する計算方法であるため、メッシュの細かさによってソフトボディの印象が変わります。厚く固い布はメッシュを荒く、柔らかい布はメッシュを細かく分割する必要があります。

平面を「細分割」した回数でソフトボディの印象が変わる例です。メッシュが細かくなるにつれ、柔らかい布のように動いて見えるようになります。

「構造」に高い値を設定していますが、メッシュが細かくなるにつれて頂点間のバネの数が多くなり、メッシュ全体が伸びた計算結果になります。

「屈曲剛性」「構造」「シアー」は相互に影響しており、大まかな動作として「屈曲剛性」「構造」「シアー」に小さな値を設定するとメッシュが伸びるようになり、大きな値を設定すると元のメッシュ形状が維持されます。
ソフトボディは同じパラメータ設定でもメッシュの細かさによって変わるため、パラメータの値あくまで参考程度のものです。実際に使用するメッシュに応じて設定を詰める必要があります。

 

ソフトボディのパラメータ

各パラメータの変化を比べてみました。

屈曲剛性

メッシュの形状を保とうとする力です。100%のように高い値を設定するとメッシュ表面がデコボコになることがある。

 

構造

メッシュのエッジに設定されるバネです。重力のようなフォースによってオブジェクトが変形したとき、元の形状に戻ろうとする力が発生します。

 

シアー

ポリゴンの対角線上に設定されるバネです。値が大きいと布のようなシワが発生します。

 

自己衝突

自身のメッシュとコリジョンジョン判定します。メッシュ通しがめり込まなくなりますが、計算に時間がかかるようになります。

自己衝突のはチャンネルビューポートの「reSoftSelfMargin」で設定します。

 

圧力

風船のようにメッシュを内側から押す力です。メッシュが閉じた形状のときに動作します。メッシュが細かいほど効果が出やすい。

 

ボリューム維持

風船をつぶしたときのように体積を維持するパラメータらしいです。値を変えると変化はありますが、比較して明かな違いがでるような設定にできませんでした。

 

ドラッグ

メッシュの動きを抑えます。

 

質量

ソフトボディを適用したオブジェクトの重さは「質量」で設定します。フォースを使用して薄い布のように動かすには、「密度」に小さい値を設定するとよいです。フォースの強さにもよるので、密度の値は参考程度。

 

modoのソフトボディはBullet Physicsというオープンソースの物理演算エンジンライブラリを使用してます。Maya、Houdini、CINEMA 4D、LightWave 3Dなど多くのソフトで使用されています。ソフトウェアによってはライブラリに手が加えられ、シミュレーションの安定性が違ったりするようです。

Tips

Mayaソフトウェアで頂点カラーをレンダリングする方法

Maya Softwareで頂点カラーをレンダリングする方法について書いてみます。

Maya単体では頂点カラーをレンダリングすることはできませんが、Maya Bonus Toolsに入ってるCv Color Shaderを使用すると、Maya Softwareで頂点カラーをレンダリングすることができます。
https://apps.autodesk.com/MAYA/en/Detail/Index?id=8115150172702393827&os=Win64&appLang=en

 

使用方法

1.メッシュに頂点カラーをペイントする。

 

2.Maya Bonus Toolsをインストールしてプラグインをロードする。

 

3.シェーダーのカラーアトリビュートのマップボタンをクリックしてCv Color Shaderを設定する。

 

4.レンダリングする。

 

頂点カラーがレンダリングできると、MASH Colorを使ってメッシュにランダムに色を設定することができるようになります。

 

トゥーン系のレンダリングでは、ArnoldのようなPBRでGI前提のレンダラーはレンダリングコストが高いように思います。GIが必要なければMaya Softwareのようなレガシーなレンダラーの方が速くて向いてる気がします。

Tips

modoで交差したオブジェクトの境界をやわらかくする方法

LightWaveで交差したオブジェクトの境界をやわらかくする方法についてツイートしてるのを見かけたのでまねしてみた。何となくそれっぽく動いた。

サンプルファイル

 

Raycastノードの「ヒットした距離」をリレーションシップで調整して透明にしてます。

ソフトパーティクルのように使おうと思ったら、Replicatorで複製されたメッシュ通しで透明になってしまった。パーティクルで使用するには、もう少し工夫する必要がありそう。

 

参考

Tips

modoのカーブフォールオフでメッシュ変形

modo13.2のベータフォーラムで、Warren Lさんがカーブフォールオフを使用した面白いテクニックを公開してたので紹介します。
https://community.foundry.com/discuss/topic/149545/fun-with-curve-falloff

カーブフォールオフを使用するとリプリケーターで複製したカーブを使ってメッシュを変形できるようになります。パーティクルと組み合わせると、色々面白い表現に使えそうですね。

 

動画をまねてみた。

■ サンプルファイル

modo 13.2ではSoftLagとパーティクルキャッシュとの相性が悪いため、シミュレーション再生ボタンを使用した時しか意図した動作になりませんでした。上の画像はシミュレーション再生した状態をキャプチャーしてます。早めにパーティクルキャッシュ修正して欲しい。

Tips

modoのポリゴン編集パフォーマンス向上

modoのポリゴン編集パフォーマンス向上をテストしてみた。

modo 13.1ではサーフェス計算コードが書き直され、新しいAPIを使用するようになりました。この変更で1アイテムに多くのポリゴンが存在する場合の編集パフォーマンスが向上してるとのことです。
現在のところパフォーマンス改善はフェースポリゴンに限定されていて、SubD/PSub/カーブの速度については以前のバージョンと変わりません。

プリミティブの球を4回細分割(Dキー)して70656ポリゴンにしたメッシュでテストしました。サブディビジョンはOFFです。ビューポート表示は「デフォルト」、ビューポートのパフォーマンス設定は「スムージング」「シェーダーツリー使用」ONです。

 

ポリゴン非選択の移動

  • modo 13.0 : 4.5 FPS
  • modo 13.2 : 9.2 FPS

ポリゴンを全選択した移動

  • modo 13.0 : 4.2 FPS
  • modo 13.2 : 1.7 FPS

パフォーマンスの「スムージング」OFFにして非選択の移動

  • modo 13.0 : 10.4 FPS
  • modo 13.2 : 11.5 FPS

 

ポリゴン編集が遅いと感じる場合は、パフォーマンスの「スムージング」をOFFにすると少しパフォーマンスが向上するようです。「ワイヤーフレームオーバーレイ」はOFFにしてもあまり速度に影響しませんでした。

modo 13.2ではハイポリのメッシュを移動/回転/スケールしたときの編集が速くなっているのが確認できました。今回は簡単にトランスフォームツールでテストしましたが、他のツール使用したときも若干早くなってる気がします。

ポリゴンを選択すると動作が遅くなりますが、ビューポートの設定で「選択表示」をOFFにすると早くなることから、オレンジ色のハイライト表示が遅い原因なのかもしれません。601頃にも選択してると遅いという問題があった気がするので、もう少し最適化が進めば編集がしやすくなりそう。

 

2020年7月28日 追記

modo 14.1のリリースノートにいくつか遅くなる問題を修正と書いてたので試したら、メッシュ選択時に動作が遅くなる問題が改善してました。

 

 

他のソフトと比較すると、3ds Maxは同じモデルで90FPSくらい出るので高速です。modoのメッシュ編集もこのくらい速くなって欲しいですね。

 

Mayaはポイントモードだとmodoと同じくらいですが、フェース編集が極端に遅いです。Mayaのモデリングはよくわからないので、プリファレンスをあれこれ変更する速くなるのかもしれません。

 

実際にはテクスチャやシェーダー、様々なポリゴン要素で速度が変わると思うので、あくまで参考程度の比較として見てくださいね。

Tips

modoでキャラクターをセットアップする方法

modoでキャラクターをアニメーションできるようセットアップする方法について書いてみます。今回は人型のモデルを中心に解説しますが、犬や猫、モンスターなんかも基本的は同じ手順でセットアップすることができます。

メカをアニメーションするときはバインド工程が不要で、メカパーツをスケルトンにペアレントしてアニメーションします。

 

セットアップの流れ

セットアップの大まかな流れです。modoのセットアップはバインド後にスケルトンの位置を調整したり、モデルに修正を加えたりと、各工程を行き来しながらキャラクターをセットアップすることができます。

セットアップの流れ

1. キャラクターモデルを用意する
2. モデルに合わせてスケルトンを作成する
3. バインドする

3-1. ウェイトの調整

4. リグを組み込む

4-1. IKの設定
4-2. トランスフォームをゼロにする
4-3. 使用しないトランスフォームチャンネルをロックする
4-4. その他のリグ

5. アクターを作成する

5-1. アクションを作成する
5-2. キーセットを作成する
5-3. チャンネルセットを作成する

 

1. キャラクターモデルを用意する

動かしたいモデルデータを用意します。今回はmodo標準アセットのモデルを使って解説します。

 

2. モデルに合わせてスケルトンを作成する

スケルトンツールを使用してモデルデータにスケルトンを追加します。スケルトンの位置は後からでも調整可能なので、はじめは大まかに作成してから微調整するとよいです。スケルトンの数や位置などテクニックも色々あると思いますが、今回はベーシックっぽい最小限な感じにしてみました。

 

作成したスケルトンに名前を設定します。名前は左右を区別するため「L_」「R_」のプリフィックスを追加します。このプリフィックスはウェイトをミラーリングするさいに重要になります。

 

スケルトン作成の注意点

スケルトンをIKで制御する場合、スケルトンえを完全に直線に配置するのはNGです。デフォルメされたキャラクターの場合、直線的にスケルトンを配置したいところですが、関節は少し角度がついてないとIKは正常に動作しません。
直線状に配置されてる場合「デュアル2DIK」はボタンがアクティブにならず、フルボディーIKはIKを追加することができますが動作がおかしくなります。

どうしてなのか不思議に思うかもしれませんが、MayaのIKや3dsMaxのHI IKソルバも直線的に配置するのはNGなので、一般的にIKのお約束のようです。

また、「デュアル2DIK」を使用する場合は、スケルトンが子のスケルトン方向を向いてる必要があります。スケルトンツールを使用すると自動的に方向を整列してくれるので、スケルトンの編集にはスケルトンツールを使用するとよいです。

下の画像では、上のスケルトンはZ軸が子の方向に整列しているのに対し、下のスケルトンは2個目のスケルトンでZ軸の方向が子の方向を向いてません。「IKの適用」を押したとき勝手に整列してくれますが、望んだ軸で整列してくれるとは限りません。

「IK FK ブレンド」を使用してスケルトンをFK制御する場合を考えると、アイテム回転の「順序」を考慮した上でZ軸が子の方向に整列するように統一した方がよいと思われます。

 

3. バインドする

スケルトンを使用してモデルを変形するために「バインド」を実行します。リグ作成→バインドの順番でも問題ありませんし、相互に行き来してセットアップすることもできます。個人的にモデルが動くとテンションが上がるのでバインドを先におこないます。

バインド手順
  1. セットアップモード」をONにする
  2. スケルトンとモデルを選択する
  3.  バインドボタンを押す

 

ヒートバインドの制限

今回はヒートバインドを使用しました。ヒートバインドは熱伝導の計算方法を使用してウェイトを計算する方法で、「距離」に比べると良好な結果になります。しかし、モデルに対する要求が結構シビアで、以下のようなメッシュに使用するとバインドに失敗します。

  • メッシュアイテムがひとつの塊であること。穴があるのは問題なし。
  • アイテムがポリゴンのみで形成されていること。孤立した頂点やエッジやカーブがあると動作しない。
  • 頂点、エッジ、ポリゴンを複数のコンポーネントが共有していないこと。例えば T のように3枚のポリゴンが1つのエッジを共有してるは駄目。
  • すべてのジョイントがメッシュアイテムの内部に埋もれていること。

ヒートバインド実行前には、とりあえず「メッシュクリーンアップ」を実行することをお勧めします。

 

ウェイトの調整

バインドによる自動生成のウェイトで一発OKになることは少ないと思います。たいていの場合は手動でウェイトの調整が必要になります。ウェイトの調整はペイントツールよりも「ウェイトの調整」や「フォールオフ ウェイト」が便利です。

 

Mirror Skeleton Weight

ウェイトをミラーコピーするスクリプトです。片側のウェイトを設定して、ミラーすればウェイト設定が楽になります。
http://modogroup.jp/tipsblog/scripts/mirror-skeleton-weight/

 

ウェイトはリグを設定した後でも調整できるので、好きなタイミングで調整して問題ありません。組み込むリグやスケルトンの数が決まってない場合は、リグ設定後にウェイト調整するのがお勧めです。
また、ウェイトの設定はリグを動かしなから変形を確認する必要があるので、後述のアクターを使用すると効率的にウェイトを設定することができます。

バインド後にスケルトンを動かしてもメッシュが変形しない場合は、ビューポートの設定で「デフォーマ有効」がONになってるか確認してください。使用してるビューポートによっては、デフォルトでOFFになってることがあります。

 

4. リグを組み込む

キャラクターをアニメーションしやすくするため、スケルトンにリグを追加します。リグとはアニメーションを作成しやすくするための仕組みです。利用頻度の高いものだとIKやRelationshipによるスケルトンの自動制御、アニメーション用コントローラの追加などがあります。

4-1. IKの設定

modoにはIKが3つ搭載されてます。それぞれ特徴があるので好みのIKを使用しましょう。

今回は13.2で追加された新しいPlanar IKを使用してみます。このIKにはソフトIKやストレッチIKと呼ばれる今時の機能が搭載されてます。新しいIKの追加はModoタブのセットアップメニューを使用します。

IKの適用手順
  1. セットアップモード」をONにする
  2. IKを適用するスケルトンを3~4個選択する
  3. 「IK 組み込み」を実行する
  4. 「IK 上方ベクトルの作成」を実行する

 

IKゴールがロケータのデフォルト表示だと見づらいので、プロパティで「シェイプ」と「表示オプション」を変更します。

 

4-2. トランスフォームをゼロにする

IKゴールのようなアニメーションに使用するアイテムは、トランスフォームを「ゼロ」にしておくと便利です。「ゼロ」はトランスフォームアイテムを追加することで、プロパティのトランスフォームの値(メイントランスフォーム)を 0 にする機能です。

ゼロの適用手順
  1. セットアップモード」をONにする
  2. アイテムを選択して「ゼロ」を実行する

画像では雑に全てのアイテムを選択して「ゼロ」を実行してますが、スケルトンツールを使用してる場合はスケルトンに回転値が入らないはずです。必要なアイテムにだけゼロを使用した方が不要な計算が発生ないのでよいと思います。

「ゼロ」を適用しておくと「リセット」を使用して素早く初期ポーズに戻すことができるようになります。Mayaの「フリーズ」と同じ用途の機能です。

ゼロはセットアップモードがOFFでも実行できてしまうので、誤ってセットアップモードがOFFでゼロしてしまった場合は、メイントランスフォームに「全て除去」を実行してカレントのアクションレイヤーの値を消した後に、セットアップモードをONにして「ゼロ」を実行します。

スケルトンの位置を調整した後もゼロを実行します。

「ゼロ」はメイントランスフォームに入っていた値を、別のトランスフォームアイテムに移し替えることでプロパティのトランスフォームを 0 にしています。これはあくまでmodo内でアイテムを扱いやすくする機能です。
FBXなど外部にデータを出力したときは、統合されたトランスフォーム値が出力されます。ゲームエンジンでの使用を考える場合は、ゼロを使用しない方が都合がよいことがあるかもしれません。

 

4-3. 使用しないトランスフォームチャンネルをロックする

アニメーションに使用しないトランスフォームチャンネルは、ロックして編集出来ないようにしておくと便利です。
例えばIKのアップベクターはワールド位置しか参照されないため、回転する必要のないアイテムです。誤って操作したり、キーを打たないようにロックしておくとアイテムの管理が楽になります。

チャンネルのロック手順
  1. ロックスするチャンネルを選択する
  2. グループビューポートで「新規グループ」を「選択チャンネルから」作成する
  3. グループの「ロック」をONにする

「グループ」はmodoのユニークで強力な管理機能です。アイテムやチャンネルをグループにまとめて管理することができます。
グループの機能には複数のタイプがあります。「標準」グループは追加されてるアイテムの表示やレンダリングをまとめて切り替えることができます。グループは後述の「アクター」「アクション」「キーセット」「チャンネルセット」でも使用します。

 

チャンネルを右クリックすると、グループを使用せずにチャンネルをロックする機能もあります。しかし、このロックはシーンファイルに情報が保存されるため、「シーンの統合」「参照読み込み」を使用するとロックが解除されてしまいます。

 

4-4. その他のリグ

チャンネル リレーションシップを使えばスケルトンのスライドを自動化したり、マッスルのような伸張を組み込んだりすることもできます。リグ作成ついては個別の記事を参考にしてみてください。

 

5. アクターを作成する

「アクター」はキャラクターに関連のあるアイテムをまとめておくための「グループ」です。アクター (役者) と言う名称ですが人型キャラクター専用というわけではなく、アイテムやチャンネルを自由に追加できます。

アクターを作成すると「アクション」を作成できるようになり、「オニオンスキン」「ドリブンアクション」「アニメーションレイヤー」のようなアニメーション専用機能を使用できるようになります。

アクターの作成手順
  1. アクターにするアイテムを選択する
  2. アクターメニューから「新規」を実行する

アクターにはスケルトン、IKゴール、アップベクターなどアニメーションするアイテムを全て選択して追加します。オニオンスキンを使用する場合はメッシュも追加する必要があります。

アクターの名称はユニークな名称を設定します。たとえば「Character」のような被りやすいものより「JohnSmith」のような固有の名前が望ましいです。なぜかというと、modoは同名のアイテムに自動的にアイテムインデックスを追加しますが、アクター名にアイテムインデックスが追加されるとアクションの切り替えが動作しなくなることがあるからです。

 

5-1. アクションを作成する

「アクション」はアニメーションの管理機能です。例えばゲーム用のアニメーションを作成する場合に、「歩く」「走る」「攻撃」「防御」のように個別にアニメーションを作成して管理するのに使用します。
アクションはFBX形式にテイクとして出力することができるため、Unreal EngineやUnityにそのままテイクとしてアニメーションをエクスポートすることができて便利です。

アクションの作成手順
  1. アクションメニューから「新規」を実行する。

 

アクションはアニメーション用途の機能ですが、ウェイト調整用のアクションを作成すると便利です。腕や脚をアニメーションさせて、メッシュの変形具合を確認しながらウェイトを調整することができます。

 

アクションの注意点

アクションのキーを削除する場合は「全ての除去」や「カレント値の除去」を使用します。
Deleteを使用してキーを削除すると、チャンネルに設定されたアクションレイヤーの値が全て削除されてしまい、アクションが切り替えできなくなります。

下の画像ではアクションを作成したとき、チャンネルアイコンがライトグリーンに変わります。このライトグリーン色はチャンネルにアクションレイヤーが設定されていることを表示してます。タイムラインでキーを選択してキーを削除するとチャンネルアイコンが灰色になり、アクションレイヤーが失われたことがわかります。

アクションでのキー削除は、もう少しわかりやすくなって欲しいですね。

 

5-2. キーセットを作成する

「キーセット」はチャンネルにまとめてキーを作成するためのグループです。アニメーションを作成するとき「自動キーを設定」で「アニメーション」を使用してる場合は、アニメーションに使用するチャンネルにあらかじめキーを作成しておくとアニメーション作成がスムーズになります。

キーセットの作成手順
  1. キーセットに追加するチャンネルを選択する。
  2. キーセットメニューから「新規」を実行する。

画像では雑に全ての回転を追加してますが、IK制御の脚のスケルトンは追加する必要はありません。キー作成が必要な最小限のチャンネルを追加するとよいです。
キーセットは手の指をまとめたり、IKゴールをまとめたり好みに応じて作っておくと便利です。

3dMaxのように使いたい場合は「自動キーを設定」を「全て」にすると、編集したチャンネルに自動的にキーが作成されます。

 

5-3. チャンネルセットを作成する

「チャンネルセット」はチャンネルをビューポートに表示して編集するするためのグループです。例えばキャラクターの表情をアニメーションするとき、複数のモーフを同時に編集する場合に便利です。

チャンネルセットの作成手順
  1. チャンネルセットに追加するチャンネルを選択する。
  2. チャンネルセットメニューから「新規」を実行する。

 

モーフインフルエンスをアクターに追加しておくと、アクションとしてフェイシャルアニメーションを作ることができます。

 

以上でmodoのキャラクターセットアップが完了です。

 

まとめ

大まかにキャラクターセットアップの流れを解説してみました。アクションや余り語られないセット関連機能など、主要なアニメーション機能について書けたんじゃないかと思います。
バインド、ウェイト、リギングなどの工程を行き来しながら非破壊的にセットアップできる柔軟な仕組みや、効率的にアニメーションを作成するための管理機能など、modoの強力で使いやすい機能が伝わったらいいなと思います。

一通りのセットアップが終わったら、アニメーション作業を効率化するためにアイテムセレクターを作るのもお勧めです。

 

キャラクターリグを自分で作りるのが苦手という場合は「CharacterBox」がお勧めです。CharacterBoxは高度なキャラクターリグをボタンをクリックするだけで簡単に作成できるプラグインです。自分でリグを追加することもできるし、作ったリグを保存して再利用することもできます。ポーズやモーションもボタン1つでミラーコピーできます。
人型専用でmodo標準機能で作られてるACS2と比べてみても、リグの動作が3倍以上早いのでアニメーション作成に適してます。最新バージョンの1.2.0ではミラーウェイト機能が追加されてより便利になりました。

今回の記事ではふれませんでしたが、アニメーション作成に欠かせない「グラフエディタ」「タイムラインの編集」「タイムマーカー」についてはmodoのUI機能紹介に書いてるので、合わせて見ていただくと新しい発見があるかも知れません。

 

参考

今回のキャラクターセットアップはmodo 601 SpotlightのFireboyで紹介されていた方法をもとにしてます。modoはリグを構築するためのノードやアイテム管理機能など、キャラクターアニメーションに必要な仕組みが601の段階で整っていました。

modo 601 SpotlightはFoundryのサイトから無料でダウンロードすることができます。古いコンテンツですがmodoのセットアップ工程がムービーで解説されてます。
https://www.foundry.com/my-account/products

Tips

modoのテクスチャをフォールオフで制御

modoのテクスチャをフォールオフで制御する表現について書いてみたいと思います。

フォールオフはアニメーションのタイミングパーティクルの制御ダイナミクスのトリガーなどに使用することができますが、テクスチャの不透明度を制御することもできて便利です。
マイクロポリゴンディスプレイスメントと組み合わせると、地形のようなモデリングやエフェクトを作成することができます。

 

リニアフォールオフ

サンプルファイル

スケマティックはこんな感じ。Constantは単色で塗りつぶすレイヤーです。

 

ラジアルフォールオフ

サンプルファイル

スケマティックはこんな感じ。フォールオフの重ねがけ。

 

カーブフォールオフ

サンプルファイル (13.2)

スケマティックはこんな感じ。

カーブフォールオフはmodo 13.2で追加された便利なフォールオフです。「長さに沿ってフォールオフ」など気の利いたパラメータがはじめから用意されてます。

シェーダーツリーはこんな感じ。

レンダリングが遅いときはマイクロポリゴンディスプレイスメントの「ディスプレースメント評価間隔」に0.5や1.0Pixelsなど大きな値を設定すると軽くなります。ただし形状が荒くなります。

 

カーブプローブ

これまでもカーブプローブやスプラインフォールオフを使用すればカーブフォールオフのような表現ができましたが、セットアップが少し面倒でした。カーブフォールオフを使用すると手軽にカーブを使用した表現ができるようになります。

Tips

modoのバインド

modoの「バインド」について書いてみたいと思います。

バインドとはスケルトンとメッシュアイテムを関連付けて、スケルトンのトランスフォーム(移動/回転/スケール)を使用してメッシュを変形できるようにする機能です。一般的にスケルタルアニメーション(ボーンアニメーションやスキンアニメーションとも呼ばれる)するために必要な工程です。

 

バインド方法

バインドを実行するするには、いくつかの手続きが必要です。

  1. メッシュアイテムとスケルトンを準備する
  2. セットアップモードをONにする
  3. メッシュアイテムとスケルトンが選択された状態で「バインド」を実行する

 

バインドは何をしているのか

バインドを実行するとメッシュにウェイトマップが生成されるほか、シーン内にいくつかのアイテムが作成されることに気がつくと思います。

バインドは実行時にいくつかの処理を自動的におこないます。具体的には以下の通りです。

  1. 各スケルトンごとにウェイトマップを作成する
  2. ジェネラルインフルエンスを作成してメッシュ、ウェイトマップ、スケルトンを関連付ける
  3. 正規化フォルダを作成してジェネラルインフルエンスを入れる

 

手動でバインド

バインド済みのメッシュに後からスケルトンを追加したい場合など、手動でスケルトンとウェイトを関連付けたい場合があるかと思います。手動で設定するとこんな感じの手順になります。

 

バインドで使用されてる機能について

バインドで使用される機能について解説してみます。

ウェイトマップ

ウェイトマップは「頂点マップ」というメッシュの頂点にメタ情報を持たせる機能の1つです。modoは「UV」「モーフ」「頂点カラー」「法線」「トランスフォーム」など様々な情報を頂点に格納します。

ウェイトマップはその名称通り「重さ」という抽象的な値を頂点に格納します。このウェイトマップはmodoの様々な機能で利用することができます。

ウェイトマップの使用例

バインドで作成されるウェイトマップは、デフォーマがメッシュを変形するときの「影響の強さ」を指定するのに使用します。ウェイトの値が100%であればスケルトンのトランスフォームの影響を100%受けます。1つの頂点が複数のスケルトンから影響を受ける場合は、後述の「正規化フォルダ」によって正規化されたウェイト値が使用されます。

 

ウェイトマップのメリット

ウェイトマップはメッシュの頂点に情報を持たせることができるため、UVやテクスチャを作成することなく直接メッシュに選択範囲やマスクのようなものを作成することができて便利です。

また、modoの頂点マップはメッシュを編集してもある程度補間してくれるため、ウェイト/モーフ/UVなどを非破壊的にメッシュ編集できるという特徴があります。他の3Dソフトではありがちな、バインド後にメッシュを編集したらウェイトを最初からつけ直しというような問題が発生しません。

 

ジェネラルインフルエンス

ジェネラルインフルエンスは、メッシュのどこを変形するか指定するアイテムです。modoのデフォーマはプロシージャルモデリングやパーティクルシステムと同じようにノードベースの設計になってます。デフォーマは主に以下のノードで構成されています。

  • アイテム
  • インフルエンス
  • エフェクタ

「アイテム」は変形対象になるメッシュアイテムです。
「エフェクタ」はベンドやマグネットのように、どんな風に変形するか指定します。
「インフルエンス」はどこを変形するか指定します(ウェイトマップなど)。

ジェネラルインフルエンスはベンドやスケルトンによる変形など、一般的にアニメーションで使用するデフォーマ機能で使用されます。下の画像はベンド エフェクタを使用してメッシュを変形するときのノード構成です。

 

正規化フォルダ

正規化フォルダ(Normalizing Folder)はデフォーマの計算を1度におこなうための機能です。modoのデフォーマは「デフォーマリスト」の順番で変形を処理します。しかし、スケルトンで制御されるキャラクターのようなメッシュを変形する場合は、デフォーマを順番に計算するのではなく一度に変形を加える必要があります。

例えば下の画像では、センターのボックスにウェイトマップを100%ずつ重複するように設定しています。スケルトンを回転や移動したとき、センターのボックスは2つのスケルトンのトランスフォームが加算され2重に変形してしまいます。
General InfluenceをNormalizing Folderに入れると、ウェイトの上限が100%(スケルトンのそれぞれ50%ずつ)に正規化された変形になります。

 

スケルトンの変形は「トランスフォームデフォーマ」と同じ

スケルトン/ボーン変形まわりの仕様は3Dソフトによって様々ですが、modoのスケルトンによる変形は「トランスフォームデフォーマ」と同じです。

modoでは基本的にエフェクタ (ベンド、マグネット、ボルテックスなど)がジェネラルインフルエンスに変形方法を指示しますが、トランスフォーム(移動/回転/スケール)を持つアイテムは全てトランスフォームデフォーマとしてジェネラルインフルエンスに接続することができます。

バインドコマンドはロケータにしか対応していませんが、カメラ、ライト、メッシュアイテムなどトランスフォームを持つアイテムはスケルトンの代わりに使用することができます。

Mayaを使用した経験があればmodoのデフォーマのノード構成に違和感を感じることはないと思いますが、3dsMaxやLightWaveではエフェクタとインフルエンスがまとまった機能として提供されるため、ノード構成が少し複雑に見えるかも知れません。

恐らくエフェクタとインフルエンスを分けているのは汎用性を高めるための設計だと思います。サードパーティ製のエフェクタが開発されたとしても、ウェイトやフォールオフはインフルエンスによって一貫性のある動作が期待できます。
古いソフトはパラメータ固定のものが多かったので、このデフォーマではウェイトが使用できるのに、こっちのデフォーマではウェイトが使えない。というような一貫性のなさに苦労することがありました。

 

バインドが作成する特殊なウェイトマップ

バインドを使用して作成されたウェイトマップは少し特殊なウェイトマップです。バインドで作成されたウェイトマップは「頂点マップリスト」でロケータアイコン付きのマップとして表示され区別できます。下の画像では上が通常のウェイトマップ、下がバインドによるウェイトマップです。

なぜこのウェイトマップが特殊かというと、関連付けられたスケルトンを削除したタイミングでウェイトマップも同時に削除されます。

デフォーマリストにはジェネラルインフルエンスが残るので注意が必要です。有効なジェネラルインフルエンスが残ったままだと意図しない変形が加わることがあるため、バインドを繰り返して使用する場合はジェネラルインフルエンスを手動で削除する必要があります。

 

特殊なウェイトマップの作成手順

この特殊なウェイトマップは手動で作成することもできます。作成方法は「頂点マップ作成」するとき「__item_+シーンが管理するアイテム名」を入力します。

modoはアイテムツリーで表示されるアイテム名の他に、シーンが管理している名前を持っています。例えばシーンにLocatorを作成して選択します。「コマンド履歴」を見ると「select.item locator004 add」のようにシーンが管理するアイテム名を確認することができます。

頂点マップ作成ダイアログで「頂点マップの名称」に「__item_locator004」と入力してマップを作成すると、頂点マップリストではLocatorがアイコンつきの特殊なウェイトマップとして作成されたのが確認できます。

 

せっかくウェイトを調整したのに、スケルトンと一緒にウェイトマップが削除されると困る場合があると思います。そんな時のための便利なスクリプトを紹介します。

 

Convert Skeleton Weight to normal Weight

modoのバインドを使用した場合に生成される特殊なウェイトマップを、通常のウェイトマップに変換するスクリプトです。

http://modogroup.jp/tipsblog/scripts/cnv_skwgt2wgt/

 

Connect Weight Skeleton

同名前のウェイトマップとスケルトンを関連付けるスクリプトです。他のソフトで設定したウェイトをmodoのスケルトンに関連付けしたい場合に便利です。

http://www.modonote.com/script/connect-weight-skeleton/

Tips

modoのスケルトン

modoのスケルトンについて書いてみたいと思います。
スケルトンはキャラクターなどのメッシュを変形してアニメーションさせるときに使用します。キャラクターにポーズを取らせるとき、関節の位置を指定するために使用します。他の3Dソフトではボーンやジョイントと呼ばれたりします。

 

スケルトンの作成方法

スケルトンはスケルトンツールを使用して作成します。スケルトンツールは「モード」を切り替えることで、スケルトンを「追加」「編集」「挿入」「削除」することができます。

「対称」を設定するとスケルトンを左右対称に編集することができます。

 

スケルトンはロケータでできている

他の3Dソフトではボーンやジョイントと呼ばれる専用のアイテムがありますが、modoのスケルトンはロケータアイテムを階層化したものです。このためスケルトンツールを使用しなくてもスケルトンを作ることができます。
スケルトンはロケータの「シェイプ」や、階層構造を視覚化する「リンク」によってビューポート上での見た目が設定されています。

 

スケルトンの色は表示オプションの「ワイヤーフレームの色」「塗りつぶしの色」でカスタマイズすることができます。

modoではスケルトンとメッシュを「バインド」することで、はじめてスケルタルアニメーション(ボーンアニメーションやスキンアニメーションとも呼ばれる)することができるようになります。

modoのスケルトンが専用アイテムではなくロケータを使用しているのは、恐らく専用のアイテムを必要としない設計を目指しているからだと思います。バインドの記事で解説していますがmodoはスケルタルアニメーションにスケルトン以外のアイテムを使用することもできますし、スケルトンにマッスルボーンのような機能を搭載しなくてもリグを作ることができる環境が用意されています。リギングでは基礎となる汎用的な仕組みがあれば、機能が限定された専用機能を搭載するよりも将来的な自由度が高いということのように思います。

 

参考

Tips

modoでメッシュにパーティクルが集まる表現

Foundryのフォーラムでメッシュにパーティクルが集まるサンプルを公開してるのを見かけたので紹介します。パーティクルが収束するエフェクトに使えそう。
https://community.foundry.com/discuss/post/1184559

基本的にはMODO JAPAN GROUPさんが以前公開していた「パーティクルをメッシュの表面へと吸着させる方法」のパーティクル コンスレイントの代わりに、交差サーフェース コンストレイント (Intersect) を使用したバージョンです。

パーティクルでIntersectを使用するとサーフェース表面でパーティクルが動き続けるので、パーティクルシミュレーションの「ステップ」を上げると安定します。