modoのビューポートで三目並べが遊べる隠しコマンドを見かけたので紹介します。以下のコマンドを実行すると三目並べが始まります。何かのテストで作ったのかな?
tictactoe.play true
modoのビューポートで三目並べが遊べる隠しコマンドを見かけたので紹介します。以下のコマンドを実行すると三目並べが始まります。何かのテストで作ったのかな?
tictactoe.play true
modoでキャラクターをアニメーションできるようセットアップする方法について書いてみます。今回は人型のモデルを中心に解説しますが、犬や猫、モンスターなんかも基本的は同じ手順でセットアップすることができます。
メカをアニメーションするときはバインド工程が不要で、メカパーツをスケルトンにペアレントしてアニメーションします。
セットアップの大まかな流れです。modoのセットアップはバインド後にスケルトンの位置を調整したり、モデルに修正を加えたりと、各工程を行き来しながらキャラクターをセットアップすることができます。
セットアップの流れ 1. キャラクターモデルを用意する 4-1. IKの設定 |
動かしたいモデルデータを用意します。今回はmodo標準アセットのモデルを使って解説します。
スケルトンツールを使用してモデルデータにスケルトンを追加します。スケルトンの位置は後からでも調整可能なので、はじめは大まかに作成してから微調整するとよいです。スケルトンの数や位置などテクニックも色々あると思いますが、今回はベーシックっぽい最小限な感じにしてみました。
作成したスケルトンに名前を設定します。名前は左右を区別するため「L_」「R_」のプリフィックスを追加します。このプリフィックスはウェイトをミラーリングするさいに重要になります。
スケルトンをIKで制御する場合、スケルトンえを完全に直線に配置するのはNGです。デフォルメされたキャラクターの場合、直線的にスケルトンを配置したいところですが、関節は少し角度がついてないとIKは正常に動作しません。
直線状に配置されてる場合「デュアル2DIK」はボタンがアクティブにならず、フルボディーIKはIKを追加することができますが動作がおかしくなります。
どうしてなのか不思議に思うかもしれませんが、MayaのIKや3dsMaxのHI IKソルバも直線的に配置するのはNGなので、一般的にIKのお約束のようです。
また、「デュアル2DIK」を使用する場合は、スケルトンが子のスケルトン方向を向いてる必要があります。スケルトンツールを使用すると自動的に方向を整列してくれるので、スケルトンの編集にはスケルトンツールを使用するとよいです。
下の画像では、上のスケルトンはZ軸が子の方向に整列しているのに対し、下のスケルトンは2個目のスケルトンでZ軸の方向が子の方向を向いてません。「IKの適用」を押したとき勝手に整列してくれますが、望んだ軸で整列してくれるとは限りません。
「IK FK ブレンド」を使用してスケルトンをFK制御する場合を考えると、アイテム回転の「順序」を考慮した上でZ軸が子の方向に整列するように統一した方がよいと思われます。
スケルトンを使用してモデルを変形するために「バインド」を実行します。リグ作成→バインドの順番でも問題ありませんし、相互に行き来してセットアップすることもできます。個人的にモデルが動くとテンションが上がるのでバインドを先におこないます。
今回はヒートバインドを使用しました。ヒートバインドは熱伝導の計算方法を使用してウェイトを計算する方法で、「距離」に比べると良好な結果になります。しかし、モデルに対する要求が結構シビアで、以下のようなメッシュに使用するとバインドに失敗します。
ヒートバインド実行前には、とりあえず「メッシュクリーンアップ」を実行することをお勧めします。
バインドによる自動生成のウェイトで一発OKになることは少ないと思います。たいていの場合は手動でウェイトの調整が必要になります。ウェイトの調整はペイントツールよりも「ウェイトの調整」や「フォールオフ ウェイト」が便利です。
ウェイトをミラーコピーするスクリプトです。片側のウェイトを設定して、ミラーすればウェイト設定が楽になります。
http://modogroup.jp/tipsblog/scripts/mirror-skeleton-weight/
ウェイトはリグを設定した後でも調整できるので、好きなタイミングで調整して問題ありません。組み込むリグやスケルトンの数が決まってない場合は、リグ設定後にウェイト調整するのがお勧めです。
また、ウェイトの設定はリグを動かしなから変形を確認する必要があるので、後述のアクターを使用すると効率的にウェイトを設定することができます。
バインド後にスケルトンを動かしてもメッシュが変形しない場合は、ビューポートの設定で「デフォーマ有効」がONになってるか確認してください。使用してるビューポートによっては、デフォルトでOFFになってることがあります。
キャラクターをアニメーションしやすくするため、スケルトンにリグを追加します。リグとはアニメーションを作成しやすくするための仕組みです。利用頻度の高いものだとIKやRelationshipによるスケルトンの自動制御、アニメーション用コントローラの追加などがあります。
modoにはIKが3つ搭載されてます。それぞれ特徴があるので好みのIKを使用しましょう。
今回は13.2で追加された新しいPlanar IKを使用してみます。このIKにはソフトIKやストレッチIKと呼ばれる今時の機能が搭載されてます。新しいIKの追加はModoタブのセットアップメニューを使用します。
IKゴールがロケータのデフォルト表示だと見づらいので、プロパティで「シェイプ」と「表示オプション」を変更します。
IKゴールのようなアニメーションに使用するアイテムは、トランスフォームを「ゼロ」にしておくと便利です。「ゼロ」はトランスフォームアイテムを追加することで、プロパティのトランスフォームの値(メイントランスフォーム)を 0 にする機能です。
画像では雑に全てのアイテムを選択して「ゼロ」を実行してますが、スケルトンツールを使用してる場合はスケルトンに回転値が入らないはずです。必要なアイテムにだけゼロを使用した方が不要な計算が発生ないのでよいと思います。
「ゼロ」を適用しておくと「リセット」を使用して素早く初期ポーズに戻すことができるようになります。Mayaの「フリーズ」と同じ用途の機能です。
ゼロはセットアップモードがOFFでも実行できてしまうので、誤ってセットアップモードがOFFでゼロしてしまった場合は、メイントランスフォームに「全て除去」を実行してカレントのアクションレイヤーの値を消した後に、セットアップモードをONにして「ゼロ」を実行します。
スケルトンの位置を調整した後もゼロを実行します。
「ゼロ」はメイントランスフォームに入っていた値を、別のトランスフォームアイテムに移し替えることでプロパティのトランスフォームを 0 にしています。これはあくまでmodo内でアイテムを扱いやすくする機能です。
FBXなど外部にデータを出力したときは、統合されたトランスフォーム値が出力されます。ゲームエンジンでの使用を考える場合は、ゼロを使用しない方が都合がよいことがあるかもしれません。
アニメーションに使用しないトランスフォームチャンネルは、ロックして編集出来ないようにしておくと便利です。
例えばIKのアップベクターはワールド位置しか参照されないため、回転する必要のないアイテムです。誤って操作したり、キーを打たないようにロックしておくとアイテムの管理が楽になります。
「グループ」はmodoのユニークで強力な管理機能です。アイテムやチャンネルをグループにまとめて管理することができます。
グループの機能には複数のタイプがあります。「標準」グループは追加されてるアイテムの表示やレンダリングをまとめて切り替えることができます。グループは後述の「アクター」「アクション」「キーセット」「チャンネルセット」でも使用します。
チャンネルを右クリックすると、グループを使用せずにチャンネルをロックする機能もあります。しかし、このロックはシーンファイルに情報が保存されるため、「シーンの統合」「参照読み込み」を使用するとロックが解除されてしまいます。
チャンネル リレーションシップを使えばスケルトンのスライドを自動化したり、マッスルのような伸張を組み込んだりすることもできます。リグ作成ついては個別の記事を参考にしてみてください。
「アクター」はキャラクターに関連のあるアイテムをまとめておくための「グループ」です。アクター (役者) と言う名称ですが人型キャラクター専用というわけではなく、アイテムやチャンネルを自由に追加できます。
アクターを作成すると「アクション」を作成できるようになり、「オニオンスキン」「ドリブンアクション」「アニメーションレイヤー」のようなアニメーション専用機能を使用できるようになります。
アクターにはスケルトン、IKゴール、アップベクターなどアニメーションするアイテムを全て選択して追加します。オニオンスキンを使用する場合はメッシュも追加する必要があります。
アクターの名称はユニークな名称を設定します。たとえば「Character」のような被りやすいものより「JohnSmith」のような固有の名前が望ましいです。なぜかというと、modoは同名のアイテムに自動的にアイテムインデックスを追加しますが、アクター名にアイテムインデックスが追加されるとアクションの切り替えが動作しなくなることがあるからです。
「アクション」はアニメーションの管理機能です。例えばゲーム用のアニメーションを作成する場合に、「歩く」「走る」「攻撃」「防御」のように個別にアニメーションを作成して管理するのに使用します。
アクションはFBX形式にテイクとして出力することができるため、Unreal EngineやUnityにそのままテイクとしてアニメーションをエクスポートすることができて便利です。
アクションはアニメーション用途の機能ですが、ウェイト調整用のアクションを作成すると便利です。腕や脚をアニメーションさせて、メッシュの変形具合を確認しながらウェイトを調整することができます。
アクションのキーを削除する場合は「全ての除去」や「カレント値の除去」を使用します。
Deleteを使用してキーを削除すると、チャンネルに設定されたアクションレイヤーの値が全て削除されてしまい、アクションが切り替えできなくなります。
下の画像ではアクションを作成したとき、チャンネルアイコンがライトグリーンに変わります。このライトグリーン色はチャンネルにアクションレイヤーが設定されていることを表示してます。タイムラインでキーを選択してキーを削除するとチャンネルアイコンが灰色になり、アクションレイヤーが失われたことがわかります。
アクションでのキー削除は、もう少しわかりやすくなって欲しいですね。
「キーセット」はチャンネルにまとめてキーを作成するためのグループです。アニメーションを作成するとき「自動キーを設定」で「アニメーション」を使用してる場合は、アニメーションに使用するチャンネルにあらかじめキーを作成しておくとアニメーション作成がスムーズになります。
画像では雑に全ての回転を追加してますが、IK制御の脚のスケルトンは追加する必要はありません。キー作成が必要な最小限のチャンネルを追加するとよいです。
キーセットは手の指をまとめたり、IKゴールをまとめたり好みに応じて作っておくと便利です。
3dMaxのように使いたい場合は「自動キーを設定」を「全て」にすると、編集したチャンネルに自動的にキーが作成されます。
「チャンネルセット」はチャンネルをビューポートに表示して編集するするためのグループです。例えばキャラクターの表情をアニメーションするとき、複数のモーフを同時に編集する場合に便利です。
モーフインフルエンスをアクターに追加しておくと、アクションとしてフェイシャルアニメーションを作ることができます。
以上で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
modoのテクスチャをフォールオフで制御する表現について書いてみたいと思います。
フォールオフはアニメーションのタイミング、パーティクルの制御、ダイナミクスのトリガーなどに使用することができますが、テクスチャの不透明度を制御することもできて便利です。
マイクロポリゴンディスプレイスメントと組み合わせると、地形のようなモデリングやエフェクトを作成することができます。
スケマティックはこんな感じ。Constantは単色で塗りつぶすレイヤーです。
スケマティックはこんな感じ。フォールオフの重ねがけ。
スケマティックはこんな感じ。
カーブフォールオフはmodo 13.2で追加された便利なフォールオフです。「長さに沿ってフォールオフ」など気の利いたパラメータがはじめから用意されてます。
シェーダーツリーはこんな感じ。
レンダリングが遅いときはマイクロポリゴンディスプレイスメントの「ディスプレースメント評価間隔」に0.5や1.0Pixelsなど大きな値を設定すると軽くなります。ただし形状が荒くなります。
これまでもカーブプローブやスプラインフォールオフを使用すればカーブフォールオフのような表現ができましたが、セットアップが少し面倒でした。カーブフォールオフを使用すると手軽にカーブを使用した表現ができるようになります。
modoの「バインド」について書いてみたいと思います。
バインドとはスケルトンとメッシュアイテムを関連付けて、スケルトンのトランスフォーム(移動/回転/スケール)を使用してメッシュを変形できるようにする機能です。一般的にスケルタルアニメーション(ボーンアニメーションやスキンアニメーションとも呼ばれる)するために必要な工程です。
バインドを実行するするには、いくつかの手続きが必要です。
バインドを実行するとメッシュにウェイトマップが生成されるほか、シーン内にいくつかのアイテムが作成されることに気がつくと思います。
バインドは実行時にいくつかの処理を自動的におこないます。具体的には以下の通りです。
バインド済みのメッシュに後からスケルトンを追加したい場合など、手動でスケルトンとウェイトを関連付けたい場合があるかと思います。手動で設定するとこんな感じの手順になります。
バインドで使用される機能について解説してみます。
ウェイトマップは「頂点マップ」というメッシュの頂点にメタ情報を持たせる機能の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がアイコンつきの特殊なウェイトマップとして作成されたのが確認できます。
せっかくウェイトを調整したのに、スケルトンと一緒にウェイトマップが削除されると困る場合があると思います。そんな時のための便利なスクリプトを紹介します。
modoのバインドを使用した場合に生成される特殊なウェイトマップを、通常のウェイトマップに変換するスクリプトです。
http://modogroup.jp/tipsblog/scripts/cnv_skwgt2wgt/
同名前のウェイトマップとスケルトンを関連付けるスクリプトです。他のソフトで設定したウェイトをmodoのスケルトンに関連付けしたい場合に便利です。
modoのスケルトンについて書いてみたいと思います。
スケルトンはキャラクターなどのメッシュを変形してアニメーションさせるときに使用します。キャラクターにポーズを取らせるとき、関節の位置を指定するために使用します。他の3Dソフトではボーンやジョイントと呼ばれたりします。
スケルトンはスケルトンツールを使用して作成します。スケルトンツールは「モード」を切り替えることで、スケルトンを「追加」「編集」「挿入」「削除」することができます。
「対称」を設定するとスケルトンを左右対称に編集することができます。
他の3Dソフトではボーンやジョイントと呼ばれる専用のアイテムがありますが、modoのスケルトンはロケータアイテムを階層化したものです。このためスケルトンツールを使用しなくてもスケルトンを作ることができます。
スケルトンはロケータの「シェイプ」や、階層構造を視覚化する「リンク」によってビューポート上での見た目が設定されています。
スケルトンの色は表示オプションの「ワイヤーフレームの色」「塗りつぶしの色」でカスタマイズすることができます。
modoではスケルトンとメッシュを「バインド」することで、はじめてスケルタルアニメーション(ボーンアニメーションやスキンアニメーションとも呼ばれる)することができるようになります。
modoのスケルトンが専用アイテムではなくロケータを使用しているのは、恐らく専用のアイテムを必要としない設計を目指しているからだと思います。バインドの記事で解説していますがmodoはスケルタルアニメーションにスケルトン以外のアイテムを使用することもできますし、スケルトンにマッスルボーンのような機能を搭載しなくてもリグを作ることができる環境が用意されています。リギングでは基礎となる汎用的な仕組みがあれば、機能が限定された専用機能を搭載するよりも将来的な自由度が高いということのように思います。
Foundryのフォーラムでメッシュにパーティクルが集まるサンプルを公開してるのを見かけたので紹介します。パーティクルが収束するエフェクトに使えそう。
https://community.foundry.com/discuss/post/1184559
基本的にはMODO JAPAN GROUPさんが以前公開していた「パーティクルをメッシュの表面へと吸着させる方法」のパーティクル コンスレイントの代わりに、交差サーフェース コンストレイント (Intersect) を使用したバージョンです。
パーティクルでIntersectを使用するとサーフェース表面でパーティクルが動き続けるので、パーティクルシミュレーションの「ステップ」を上げると安定します。
modoで移動したアイテムがバネのように揺れる表現について書いてみたいと思います。
スケマティックはこんな感じです。
基本的には「トランスフォーム配列ツールでアニメーション作成」で紹介したように「Soft Lag」を使用して揺れを表現してます。
しかしメッシュ全体にSoft Lagを適用するとアニメーションの再生が遅くなるという問題があるため、今回はメッシュ全体を変形するのではなく Locators to Array と Create Polygons を使用してアイテムの位置からポイントを生成して、軽いメッシュにSoft Lagを適用することでアニメーションの再生が遅くなる問題を回避しました。
アルファベットのアイテムは「頂点の位置」を使用して頂点にコンストレイントしてます。
パーティクルに適用してみました。
Soft Lagはパーティクルと相性が良くないようです。パーティクルはフレームが進むごとにポイントを発生させますが、Soft Lagはポイントがない場合ワールド原点を前のフレームとして扱うようです。このためエミッターの位置を移動すると、原点から移動したような極端なラグが発生してしまいます。Soft Lagのトランスフォーム位置を参照してくれれば嬉しいんですけどね。
あと、ラグが好ましくないガクガクした挙動になります。ReplicatorをMerge Meshする方法も試してみましたが、同じようなフレーム間のカクつきが発生するようです。
Soft Lagは便利な機能なので、もっと改善して使いやすくして欲しいですね。
modoで複数のスペキュラをレイヤーのように重ねる表現について書いてみます。
現在のようにPBRマテリアルが主流になる前の時代、金属を表現する場合はスペキュラを重ねることで表現してました。modoではShaderの「ブレンドモード」を使用して複数マテリアルのスペキュラを加算することができます。
現在はマテリアルに「クリアコート」があるためスペキュラを重ねた質感が手軽に作れるようになってますが、スペキュラを3つ以上重ねたい場合には今回紹介した方法が便利かもしれません。あとクリアコートはレンダリングが少し遅い気がします。
スペキュラを加算したレンダリング。
クリアコートを使用したレンダリング。
http://forums.luxology.com/discuss/post/42125
スペキュラを重ねた金属表現はLightWave界隈では「Gaffer」が有名でした。3dsMaxにもMulti Layer Shaderがあり、かつては金属表現に欠かせない定番の設定でした。
セレクティブライト、多重スペキュラ、フレネル、反射の色、ブルームなどライティングに関連する様々な質感を制御することができるプラグインでした。
https://web.archive.org/web/20010108121200/http://www.worley.com/gaffer/gaffer_spec_control.html
スペキュラにトーンカーブのようにバイアスをかけることで金属っぽいスペキュラを表現したプラグイン。
http://www.dstorm.co.jp/dsproducts/FreePlugins/PreviousPlugins/MegaLight.html
Transfer Vertex Mapを使ってウェイトマップをアニメーションさせてみた。ちょっとしたテストです。
Texture Falloffを使用したアニメーション。
基本的には法線の転送のウェイトマップ版です。現状はフォールオフを使っても0か1の値しか転送出来ないため、滑らかなウェイトにすることができないのが残念です。Merge MeshesしたメッシュにTransfer Vertex Mapが使えないのも残念。。。Merge Meshesつかればキャラクターのウェイト設定を使い回す仕組みが作れそうです。
C4Dのようにウェイトの範囲を時間経過で広げたり、時間差でウェイトを消したりできるようになって欲しいですね。
modo 14.0でプロシージャルウェイトマップが追加されました。選択モディファイヤのGrow / Shrinkを使ってウェイトマップを成長させることが出来るようになりました。
modoのコンストレイントにあるウェイトチャンネルについて書いてみたいと思います。コンストレイントのウェイトを使用すると2点間でアイテムを等間隔に配置するようなリグを作ることができます。
modoのコンストレイントは複数のアイテムを指定することができます。ことのきコンストレイントの「ウェイト」を使用すると、コンストレイントの重みを調節することができます。ウェイトはプロパティに表示されないので、チャンネルビューポートを使用して設定します。
ウェイトを設定すると2点間でアイテムを等間隔に配置するようなリグを作ることができます。
Position Constraint、Rotation Constraintのウェイトを調整すると、こんな感じの制御ができるようになります。
コンストレイントは2つ以上の複数のアイテムに使用することもできます。
ウェイトの使い道は様々で「カメラブレンドリグ」のようなものが作れるので便利です。
ビデオ録画とライブ配信用のオープンソースのソフトウェア「OBS Studio」の紹介です。
https://obsproject.com/ja
クイックスタート
https://obsproject.com/wiki/OBS-Studio-Quickstart
たまにWindowsのデスクトップをムービーキャプチャしたいときがあって、これまではNvidiaの「ShadowPlay」を使用してました。CPU負荷が少なく画質もそこそこの品質、無料ということもあり便利に使ってましたが バージョン重ねるごとに使い勝手が悪くなっています。私は4Kモニタを使用していているのですが、キャプチャ用に解像度下げて録画しようとしたとき、ついに画面に表示している解像度で録画できなくなってしまいました。
あれこれ調べてたどり着いたのが「OBS Studio」です。YouTubeやTwitchのようなライブ配信向けのソフトですがPCのデスクトップキャプチャにも使用できます。
なぜこのソフトにしたかというと、Nvidia NVENCのH.264/MPEG-4 AVCへの変換に対応しているというのがあります。NVENCはShadowPlayで使用されているコーデックで、GPUを使用してエンコードするためCPU負荷が低いです。またOBS Studioは開発をTwitch、Nvidia、Logitech が支援してたり、Nvidiaがカンファレンスで取り上げてるので安心感があります。
デスクトップをムービーキャプチャする手順です。UIはQtで作られてるので、グラフィックソフトのような感覚で自由にレイアウトできます。
ソースの+アイコンでキャプチャ対象を追加します。デスクトップをキャプチャしたいときは「画面キャプチャ」、ゲームをキャプチャしたい場合は「ゲームキャプチャ」をクリックして、キャプチャ対象のゲームやウィンドウを指定します。
OBS Studioはライブ配信用のソフトなので、複数の画面(ソース)を切りかえることができる仕組みになっています。
コントロールの「録画開始」をクリックするとキャプチャが開始します。同じボタン「録画終了」を押すとキャプチャが終了します。
デフォルトではライブ配信向けの設定になっているため、出力サイズが小さく画質も低めに設定されてます。ファイルメニューまたはコントロールの「設定」を開いて、「録画品質」「録画フォーマット」「エンコーダ」「出力(スケーリング)解像度」を任意に設定します。
modoの終了時にコンフィグファイルに設定を保存しない方法について書いてみます。
modoはアプリケーション終了時にUIやウィンドウの状態をコンフィグファイル(MODOxx.x.CFG)に保存します。UIを意図せず変更して壊してしまうのを避けるため、コンフィグに設定を保存したくないという場合があるかもしれません。
そんな時はコマンドラインフラグを使用すると、コンフィグに設定を保存しないようにできます。
-dbon:noconfig
ショートカットのプロパティにフラグを追加すると便利に使えます。
ファイルに「アクセンス許可」で書き込みを禁止する場合と異なり、ファイルメニューの「設定の上書き保存」を使用して好きなタイミングで設定を保存できます。
今回はメッシュの表面に沿ってパーティクルを動かす方法について書いてみたいと思います。
「アイテムのスナップ移動」でも軽く書いてますが、modoのパーティクルシステムは他のソフトと違い、アイテムのリギングで使用するノードをそのままパーティクルシステムで使用することができます。
汎用性が高くて面白い特長ですが、どうすれば欲しい表現を実現できるかわかり難いと感じることもあると思います。そこで「パーティクルをサーフェースに沿って動かす表現」を作る場合の考え方、どんな感じでノードを使えばいいか手順を書いてみます。
パーティクルをサーフェースに沿わせたい場合、まずサーフェースと交差判定できるノードが必要そうだと思いつきます。modoのアニメーション機能でサーフェースと交差判定できる機能といえば、「交差サーフェース」コンストレイントです。
「交差サーフェース」コンストレイントは、サーフェース表面にロケーターをくっつけてくれる機能です。操作の基準となるアイテム、メッシュアイテムの順番で選択してモディファイヤタブの「交差サーフェース」ボタンを押すと、サーフェース表面に沿って移動するロケーターを生成してくれます。
スケマティックでノードの繋がりを見るとこんな感じになってます。
Toroidアイテムと、操作の基準となるアイテム(Locator)がIntersect ノードにつながって、交差位置用のアイテム(Locator_2)に位置が出力されていることがわかります。
このノードの処理をパーティクルで組めば同じようにサーフェースに沿ったパーティクルの移動が作れそうです。
スケマティックはこんな感じです。Intersectの流れを見比べると「交差サーフェース」で作られたノード構成と同じようにリンクされてるのがわかると思います。
Particle Operatorの特性で「位置(Read Only)」「位置」の2チャンネル追加して、「交差サーフェース」と同様にノードをリンクします。Intersect の「位置出力」のチャンネルタイプはマトリクスなので、Matrix Vectorを使用して「位置」チャンネルにリンクできるようXYZ軸に変換します。
パーティクルは「位置(Read Only)」「位置」の2つのチャンネルを使用することで、他のノードで計算した結果を戻すことができるようです。
modoは1つのノードであれば依存ループにならずに計算出来るのですが、パーティクルの場合は1つだけでは複雑な計算ができないため、このような動作になってるのかもしれません。
VDB Voxelを使用してメッシュを作成すると、サーフェース表面を水が流れるような表現にも使えそう。
パーティクルをサーフェースに沿って動かすのは Particle Snap Modifierを使用しても同じような表現は可能ですが、Particle Snap Modifierはパーティクルそのものの位置には影響がありません。
例えばサーフェースに沿って動いてるパーティクルから、さらにパーティクルを発生させたい場合には今回紹介した方法が便利だと思います。
暑いのでmodoのプロシージャルモデリングでソフトクリーム作ってみた。プロシージャルにこだわって作ったので、モデルの形状は雰囲気です。
スケマティックはこんな感じです。
クリームの螺旋はSpiral Curveアセンブリを使用してます。Transform Effectorを使ってカーブをアニメーションしてます。そのカーブをmodo13.1で追加されたCurve Sweepを使用してクリームのメッシュを生成してます。クリームのシルエットやカップコーンに入る部分の調節にはラティスデフォーマを使用してます。
Curve Sweepは複数のパスを使用して押し出したり、ミニグラフを使用してカーブの太さを制御できるので便利です。
クリームのふりかけ(スプリンクル)は、ReplicatorとLinear Falloffのイージングを使用してアニメーションしてます。カラフルな色のレンダリングにはVariation Textureを使用してます。
変形するメッシュにSurface Particle Generatorを使用するとフレーム単位でポイントの位置が変わってしまうことがあるので、中央のソフトクリームはアニメーション終了時のメッシュを別アイテムとしてコピーしてSurface Particle Generatorのソースとして使用しています。
プロシージャルモデリング用のメッシュにダイレクトモデリングしようとすると警告が表示されますが、ポリゴン選択してコピーすることはできるので便利です。
コーンカップはコーン断面のパスを作成し、Radial Sweepを使用してコーンがあらわれるアニメーションにしてます。Radial Sweepには始点と終端のキャップを生成するオプションがあるのですが、あまり形状が綺麗にならなかったのでOFFにしました。
modoのプロシージャルモデリングはアニメーションでは使うには遅いのが気になります。クリームが落ちてくる速度と形状がいまいちなのですが、動作が遅いのでタイミング詰めるのあきらめました。今回はプロシージャルにこだわって作りましたが、クリームのらせん形状はデフォーマを使ってアニメーションしたほうが軽く作れるかも知れません。
プロシージャルモデリングはモデリングするときに便利ですが、アニメーションで使用するにはもう少し速度が改善されると嬉しいですね。今後のバージョンアップで快適に動くようになるのを期待してます。
modoのプロシージャルモデリングを使用して、クラシックなメッシュ粉砕表現について書いてみます。プロシージャルモデリングはアニメーションを想定した機能が弱く、あまりいい表現にはなりませんでした。
現在のように「シャッター&グルー」のようなボロノイ分割があたりまえの表現になる前は、ポリゴンが分かれて縮小するような表現を「粉砕」と呼んでいました。そんなゲームっぽいクラシックな表現ができたらいいなと思ってプロシージャルモデリングでどこまでできるかチャレンジしてみました。下の画像はC4Dの粉砕機能。
modoのスケマティックはこんな感じ。アセンブリとして再利用できるように作ってみた。
アニメーションはLinear Falloffを使用してタイミングを調節しています。レンダリングにはCel Edges Materialを使ってみた。
単純な形状なのでそれっぽく見えるかも知れませんが、ベベルを使用するとポリゴンが小さくなる表現がうまくいかないです。
ベベルの「インセット」は長さ指定なので、大きな値を設定するとベベルが反転します。本来やりたかったポリゴンが小さくなって消える表現をするにはベベルが反転しないオプションか、「インセット」をポリゴンの大きさに合わせて%で指定するようなオプションが欲しくなります。
もしくはTransform Deformerにアクションセンターのローカルようなことができる機能が追加されるといいですね。何かいい方法あるのかな。
あと複雑なモデルを使用したとき、フォールオフが効かなくなったり怪しい動作に遭遇しました。サンプルファイル開くとわかりますがSelect by Previous Operationが原因のような気がします。
ロゴのスライスアニメーションを作ったときにも思いましたが、modoのプロシージャルモデリングはもっとアニメーションを考慮したオプションが増えて欲しいですね。アニメーションの場合は滑らかにモデリング処理を適用したいんですよね。
あとEdge SplitにTool Pipeがあればベベルを使用しなくて済むのでノード数が減らせるはずなので、Tool Pipeのような基本機能は全てのモデリングノードで統一して使えるように整備して欲しいな。
似たようなメッシュを粉砕する表現にはソフトボディーを使う方法もあるので、色々試してみると面白いと思います。