Houdiniで作成したリグだそうです。珍しい。
Houdiniで作成したリグテンプレート。ボディはオブジェクトベースのボーンを使用しており、フェイスはワイヤーデフォーマー+シェイプです。
Houdiniで作成したリグだそうです。珍しい。
Houdiniで作成したリグテンプレート。ボディはオブジェクトベースのボーンを使用しており、フェイスはワイヤーデフォーマー+シェイプです。
modo用の人型リグ作成スクリプト「Auto Character Setup」の無料版が公開されました。ACSは現在バージョン3を開発中ですが、この無料版はACS1が基になってるようです。無料で使えるのはいいですね。
https://www.autocharactersetup.com/free
modoの機能を使用してキャラクターリグを作ってみたので紹介したいと思います。
modoにはコマンド範囲などリグ作成やアニメーションに便利な機能が色々搭載されていますが、あまりキャラクターリグ関連のデモを見かけないように思います。modoの機能をフル活用してキャラクターリグを作るとどうなるかチャレンジしてみました。
このビデオではmodoのキャラクターアニメーション機能紹介を簡単に紹介してます。
アクションは1つのシーンで複数のアニメーションを管理する機能です。今回はリグ紹介用のアニメーションを管理するのに使用しています。
アクションはFBXファイルにマルチテイクとして出力することができるため、Unityに複数のAnimationが作成された状態でインポートできるので便利です。
アクションはいわゆるアニメーションレイヤーのような機能ですが、まだ開発途上の機能のためmodo 14.2 ではアニメーションのブレンドはできません。アニメーションの管理に使用するのが実用的です。
Rig Clayはクレイアニメのようにモデルをダイレクトに操作する感覚で制御するリグです。コマンド範囲を使用して非表示状態の制御用ロケータを選択しています。
コマンド範囲はmodoのコマンドをメッシュをクリックして実行できる自由度の高いリグ機能です。複数のアイテムを選択するしたり、アイテムの表示を切り替えたり、ポップアップメニューを表示したり、スクリプトを実行するなど、modoの多くのコマンドを実行することができます。
Mayaや3ds Maxなどではキャラクター制御用のカーブアイテムが大量にビューポートに表示されているのを見かけることが多いと思います。現在のキャラクターリグでは主流ですが、コントローラが多いとモデルが見づらい、数が多いとアイテム選択しづらい、ビューポートのパフォーマンスが低下するなどの問題もあります。
このためPixarの「Presto」やドリームワークスなどインハウスのアニメーションソフトでは、コントローラを使用するのではなく、モデルを直接操作するようなリグが試されてました。最近だと「Rumba」も同じような機能が搭載されていますね。
コマンド範囲は901で追加されましたが、modo 14.2で機能拡張されて表示や使い勝手が良くなりました。今回はじめて本格的に使って見ましたが14.2ではマウスオーバー表示に問題があるのと選択中のアイテムがわかりにくいので、もう少し改善が必用に感じます。
ちなみに「Rig Clay」という名称はPixarのキャラクターTDだったRichardさんがmodo向けに考案したワードのようです。
ビューポートのアイテム表示やデフォーマの計算を切り替えるポップアップです。このポップアップはロケータにユーザーチャンネルを追加して、ロケータが選択された場合にチャンネルポップアップを表示するコマンド item.channelPopover を実行してます。
アイテムの表示はグループの「可視」チャンネルを使って切り替えています。modoには複数のアイテムを管理するためにアイテムリストとは別にグループビューポートがあります。
グループを使用するとアイテムの表示をまとめて切り替えたり、選択したり、ロックしたり、チャンネルにキーを作成したりと色々できて便利です。
アイテムごとにデフォーマをON/OFFする機能もつけました。これは不要な計算を省きたいときに使用すると便利です。デフォーマはNormalizing Folder の「有効」を制御することで、フォルダ内のインフルエンスをまとめてON/OFFすることができます。
アイテム選択を便利にするアイテムピッカーです。Webビューを使用してコマンドを実行しています。
WebビューはHTMLからコマンドを実行できる自由度の高いビューポートです。ビューポートで選択し難いアイテムを選択する場合に便利です。アイテムのトランスフォームにキーの追加/削除、ポーズのリセットなどアニメーションで便利なボタンを追加しています。
modoのリグ構築に使うスケマティックビューポートです。スケマティックはリグごとにワークスペースを分けることができるので処理を管理するのが楽です。またフェイシャルリグのスライダーのようなパーツはアセンブリとして使い回すことができて便利です。
modoのスケマティックはオブジェクト、プロシージャルモデリング、マテリアル、シェーダーノード、パーティクルなど多くの機能を全て同じように使うことができるので便利です。ノードやバックドロップに色を設定したり、コメントノードを使用したりグラフィカルに管理することができます。
今回作ったキャラクターリグの紹介です。元々素体用の簡素なモデルを作ってたのですが、modoのアニメーション機能をテストするうち楽しくなって過剰に自動制御のリグを追加してしまいました。
本職のリガーやTDさんが公開しているビデオを参考に、見よう見まねで作りましたがそれっぽく動かせてる気がします。
キャラクターリグのベースにはCharacterBoxを使用しています。CharacterBoxはモジュラーリグプラグインで、いくつかのリグを組み合わせてオリジナルのキャラクターリグを作ることができます。
表情はスライダーを使用して複数のモーフを制御してます。モーフはリニアに補完されるためモーフを単純にミックスするとメッシュがめり込むことがあります。スライダーを使用することでモーフの中間で変形を補正するモーフを加えて表情をブレンドしてます。
モーフで表情を制御する場合は他のソフトでは左右別々にモーフを作成するのが一般的だと思いますが、条件式ノードを使ってフォールオフを回転して左右のどちらか一方向のモーフの影響をマスクしてみました。
モーフマップを左右分けて管理する必要がないのでモーフの数が少なくてすみ、モーフの修正も楽になります。
表情を微調整するためのコントローラも仕込んでます。これはmodo標準のトランスフォーム デフォーマを使用しています。
赤色のロケータは頂点コンストレイントを使用してモーフに合わせて移動してます。本来は微調整用の緑色のロケータを赤色のロケータにペアレントしたかったのですが上手くいかなかったです。
眼球の動きに合わせてまぶたを動かす処理も入れてみたのですが、あまり効果が感じられなかったかも。
キャラの髪はCharacterBoxの尾リグを使ってます。キーは全部同じフレームに作成してますが、遅延の設定をリグごとに少しずらして動きにバリエーションを持たせてます。
スケルトンだけ表示したビデオ。
体はCharacterBoxをベースにしていますが、プリセットそのまま使うのではなくカスタムした構造にしました。例えば鎖骨、手の甲の骨は関節数が1つの指リグを追加して、IKで制御できるようにしています。
好みの問題ですが鎖骨や手の甲にアニメーションをつけるとき、移動と回転でツールを切り替えるのが面倒です。CharacterBox標準の鎖骨は使用せず、移動ツールで制御できる指リグに置き換えました。
腕や脚のツイストはCharacterBoxのセグメントを使用してます。メッシュの細かさによりますがセグメント数は3~5個くらいあると綺麗にツイストできる気がします。
関節はホース状につぶれないように変形を補助するボーンを4個追加して、角度に合わせて自動で動くように制御してます。筋肉の収縮や皮膚のスライドも補助ボーンを使用して制御しています。この補助ボーンは全てチャンネル リレーションシップを使って制御してます。
補助ボーンの設定についてはMayaのウェビナーが参考になると思います。
スケルトンの角度を取り出す方法は以前書いたワールド回転からローカル角度を計算する方法と同じで、ヒジやヒザのように1方向にしか回転しない関節はMatrix To Eulerの「回転順」を変更して欲しい軸の角度を取得しています。肩や股関節のように回転軸が多い関節はTwist Extractorを使用するのが便利だと思います。
角度とチャンネル リレーションシップ使ってスケルトンの位置、回転、スケールを制御しました。チャンネル リレーションシップを使うと自動制御はとても簡単に作成することができます。
自動制御は体の左右で同じ制御を使いたいので、ノードをインスタンスコピーして管理や修正が楽になるようにしています。下の画像では紫色のリレーションシップがインスタンスされたノードです。
自動制御にはCharacterBoxの単体のスケルトンを使用してます。modo標準のスケルトンを使用してもリグは作れるのですが、筋肉のようにスケールしたときmodo標準のスケルトンは変化がわかり難いのでCharacterBoxのスケルトンを使用してます。
耳、胸、二の腕、腹、太もも、ふくらはぎはCharacterBox のマッスルで揺らしてます。
呼吸っぽくお腹動かすリグも仕込みましたが、少し効果がわかり難かったですね。
作ったリグを使用して簡単にアニメーションつけてみました。スカートはSyflex。
3ds MaxやMayaには標準で人形リグが入っててポーズやアニメーションのコピーやミラーに対応してたりしますが、カスタムで追加したリグは自分で何とかする必要があります。運よく作ったリグで動くコピースクリプトが見つればいいのですが、スクリプト書けないとカスタムリグを作るのは面倒です。
その点CharacterBoxは1.2.0からカスタム追加したロケータやスケルトンに簡単に対称編集やポーズのコピーができるようになり、スクリプトを書かなくてもカスタムリグの構築が楽にできるようになりました。
この機能を使用するとフェイシャルで微調整用のロケータを対称編集したり、ミラーコピーがプラグイン任せできるようになります。
今回手の込んだキャラクターリグを作ってみようと思えたのは、セットアップするときに面倒くさいカスタムリグの対称編集をプラグイン任せにできるというのが大きな理由です。
補助ボーンの自動制御やコマンド範囲の設定はそれほど難しいことはないので単純に根気です。コマンド範囲はとても可能性を感じる機能なので、自動生成する機能を標準で追加して欲しいですね。
以上ザックリとした紹介と解説ですが、modoを使ったリギングがどんなものか参考になったなら嬉しいです。
ABCアニメーションスタジオのリグシステム「ARS」の紹介記事が公開されています。
国内のMayaのリグ関係を調べると「ローカルリグ」「ローカル空間リグ」「ローカルセットアップ」と言うような表現がよく出てきます。どんな物なのか定義が書かれてなかったりよくわからなかったのですが、何となくイメージしてた物で合ってたみたい。
旧来のMayaは、高速に動作するリグを作るために「ローカル計算」を多用することが多くありました。
例えば「腕から手まで」という範囲内にひねりやカーブリグ等複雑なギミックを入れ込んでいく際、ワールド計算(コンストレイン等)をしてしまうと他の部位(例えば背骨)が動いた際も、このギミックの計算が走ってしまいます。
https://area.autodesk.jp/column/tutorial/maya-rigging-technique/01-ars-overview/
modo 14.2では14.1に引き続きプロシージャルウェイトマップが強化されました。
なかでもFlood WeightとGrow Weightが面白いので簡単に紹介してみます。
Flood Weightはポリゴンアイランド単位でウェイト値を最大または最小値で塗りつぶすノードです。
下の画像では等高線状にポリゴンを分割して、テクスチャ使ってSet WeightしたものをFlood Weightで塗りつぶした物です。Flood WeightがOFFの場合はノイズテクスチャの濃淡でウェイトが設定されてますが、Flood Weightを使うと繋がったポリゴン単位で同じウェイト値が設定されます。
Gradientで地形っぽい色を設定すると山岳立体模型キットみたいな感じになります。
Grow Weightはウェイトマップを成長させる定番のノードです。境界マップを使うとウェイトの成長を止めることができるのが面白いですね。
ウェイトマップはウェイトマップテクスチャと組み合わせて質感を設定できるので、指先から質感が変わるアニメーションやエフェクトのような効果が手軽に作れるようになりました。
古いバージョンもTransfer Vertex Mapや選択モディファイヤを使うとウェイトマップをアニメーションすることができましたが、Grow Weightの方がカーブを使用してなめらかなグラデーション状のウェイトマップを作ることができて便利です。
後はウェイトマップとシミュレーションとの連携が簡単になれば完璧ですね。
modo 14.2でパーティクルアイテムマップが追加されました。パーティクルアイテムマップはパーティクルアイテムIDを制御するマップです。リプリケータを使用してアイテムを複製したときに、どのアイテムを複製するかを指定することができます。
メッシュオペレーターと組み合わせてパーティクルアイテムマップを編集する場合は、Remap Weight使います。
これまでもパーティクルシミュレーションでは同様のことが出来ましたが、パーティクルアイテムマップはモデルの頂点を直接選択して編集することができるので便利になりました。
modo 14.2ではパーティクルアイテムマップを編集できるのノードがRemap Weightに限定されてるのがちょっとわかり難いですね。Vマップ関連のノードは他にもパーティクルサイズマップなど使用できないマップが多いのが残念です。今後のバージョンで他のマップにも対応して欲しいですね。
去年から開発中だったオートリガーACS3 (Auto Character Setup)の早期アクセス販売が開始されました。ACS3ではCharacterBoxのようにモジュールを使用してリグを作ることが出来るようです。早期アクセスということで開発中の機能が含まれてない状態のようです。
ACS2は人型固定リグでバイドできるのも1メッシュでしたが、ACS3ではその辺りの問題が改善されてるようです。Pythonを使用したカスタムリグにも対応予定とのことで、将来的にはカスタムリグを共有することもできるようです。
ACS2はmdoo標準機能で組み立てられたリグと、リグを構築スクリプト群という内容のキットだったこともあり体験版はありませんでした。ACS3では一部独自の機能開発してるようなので体験版でるかな?Youtubeのデモ映像見たいのに字幕追加されないですね。
https://www.autocharactersystem.com/
アニメーションプロセスがすでに進行中であっても、リグはいつでも再調整できます。これはガイドのフィッティング、リジッドメッシュのアタッチ、バインドメッシュのプロキシの生成など、リグの様々な側面に関係しています。
しわをすばやく作成できるMayaの新しいツールのビデオプレビューらしい。
Snappers Wrinkles Designer(Snappers Character Designer Suiteの一部)を使って、高品質でリアルなシワマップのフルセットを数分で作成するための新しいモデリングコンセプト(パラメータ化されたカーブモデリング)をご紹介します。トポロジーやUVレイアウトに関係なく、あらゆるモデルと互換性があります。
J CubeがDCCアプリケーションを必要とせずに、USDファイルを開いたり、表示したり、非破壊的に編集したりするための新しいツール「MUSE」のアルファ版をリリースしました。現在はMultiverseProユーザー向けに無料公開中のようです。
https://j-cube.jp/solutions/multiverse/docs/setup/muse-faq.html#what-is-muse
MUSEは日本の横浜にあるJ CubeIncによって作成されたまったく新しいソフトウェアアプリケーション「MultiverseUsdStandaloneEditor」です。
MUSEを使用するとユーザーはDCCアプリケーションを必要とせずに、インタラクティブに視覚化して、USDアセットとコンポジションを再生できます。MUSEの目的はUSDファイル内の属性の高速で非破壊的なマルチ編集を提供し、他のUSDファイルへの参照を追加し、USDオーバーライドを書き込み、オーバーライドを使用してUSD構成を書き込むことです。
現時点では次のことができます。
注意:MUSEはまだ開発のアルファ段階にあり、「技術プレビュー」としてのみ提供されています。私たちはそれをベータ版に移行し、将来のリリースでその機能を拡張し始めるために一生懸命取り組んでいます。
modo用のキャラクターリグプラグイン「CharacterBox」のマッスル機能で車体を揺らししてみました。
CharacterBoxにはマッスル機能というメッシュを筋肉のように伸縮するためのデフォーマが搭載されています。マッスルにはアイテムの移動量からメッシュを揺らす「ジグル」という機能が搭載されていて手軽に揺れを設定することが出来ます。
マッスルはメッシュだけでなくIKゴールにも適用することができるため、車体のよにアイテムを揺らすような表現に使用することが出来ます。
スケマティックはこんな感じです。
マッスルはアイテムインフルエンスを使用してIKゴールを動かしています。リグに車体を直接ペアレントしてもいいのですが、位置や回転の影響を調節したいのでコンストレイントを使用しました。
コンストレイントのプロパティには「出力オプション」ボタンがあり、ボタンを押すとMatrix Channel Effectを追加してくれます。Matrix Channel Effectを使用するとXYZ軸ごとにコンストレイントの強さを制御できるので便利です。
コンストレイントを使用する場合は「コンストレイント補正オプション」を使用するとアイテムの位置関係を維持したままコンストレイントすることができます。
マッスルを使用すると自動で揺れをつけることができるので便利です。
今回は試しということで腕リグ1本で揺らしてるためおもちゃのような動きになってます。実際の車のように前後それぞれマッスルを分けてリグを配置すれば、もう少しリアルな挙動が作れる気がします。
マッスルのように揺らすmodo標準機能として「ソフトラグ」があります。ソフトラグを使用しても似たようなことができると思いますが、ソフトラグはアイテムインフルエンスを使用することができないため少し手間がかかりそうです。
フェイシャルキャプチャデータを使用するためのキット「Applicator Kit for Modo」がリリースされました。価格は$49、9月末までお試し価格$ 35。
このキットはTrueDepthカメラを搭載したiPhoneで、Apple ARKit Face Trackingを使用してキャプチャしたデータをmodoに読み込むためのキットです。フェイシャルキャプチャするには別途ソフトウェアが必要です。
https://gumroad.com/l/applicatorkit
アプリケーターキット for Modoを使えば、iPhoneやiPadのTrueDepthカメラで撮影したApple ARKit Face TrackingデータをModoのキャラクターに適用することができます。
Apple ARKit Face Trackingは、あなたのiPhoneやiPadでパフォーマーの頭の位置だけでなく、50以上のユニークなブレンドシェイプ係数(Modoではモーフターゲット)を60フレーム/秒で追跡することができます。アプリケーターキット for Modoを使えば、このデータを取り、4つの簡単なステップでModoのキャラクターに適用することができます。
注意: アプリケーターキットは顔のトラッキングデータをキャプチャしません、これはModoであなたのシーンにデータを適用するだけです。顔のパフォーマンスをキャプチャするには、以下のアプリのいずれかを使用してください。
modoのシェーダーノードを使って、カメラのレンズゆがみのような効果を制御する方法が解説されてたので写経してみました。
カメラの回転とShader Inputのレイ方向をそろえた後、レイ方向のXYを任意に編集した結果をRayCastでFinal Color Outputに戻すというのが基本的な流れのようです。
球面のようにレンダリング。
あーそゆーことね、MODOのプロジェクションの数式 完全に理解した ←わかってない pic.twitter.com/bPxkm6i1mj
— クールなびじゅつかん館長 (@TheCoolMuseum) May 16, 2020
カーブを使用してゆがみ制御。
ピーキー過ぎてオレにゃ無理だ pic.twitter.com/qgudjYkgzi
— クールなびじゅつかん館長 (@TheCoolMuseum) May 22, 2020
テクスチャを使用してゆがみを制御。
レイ方向を制御する方法はポストエフェクトによるゆがみと異なり、ピクセルが荒くなったりせずシャープな画像を維持できるのがメリットです。しかし、欲しいゆがみを計算で求めるのが難しいです。
シェーダーノードはレンダリングも遅いので、テクスチャオフセットのように、もう少し手軽に使えるような機能があると嬉しいですね。
詳細な解説をしてくれた館長さんに感謝です。
変なカメラを作るときには、パースペクティブ 18mm(フィルム 36mm)で作り始めてます。
これは何かって言うと視野角が90度になるので、上下左右方向に視野がそれぞれ45度となり、キューブの中心にカメラを置いたときに角がピッタリフレームに来るので、思った計算ができてるかわかりやすいんですね pic.twitter.com/DnPlDqHwcC— クールなびじゅつかん館長 (@TheCoolMuseum) May 22, 2020
ここでレイZを繋がずに固定値-1(m)を入れるとこんな感じに歪んだ像になります pic.twitter.com/o4GoSzXilF
— クールなびじゅつかん館長 (@TheCoolMuseum) May 22, 2020
ここでXの方だけZで割ってあげるとこんな感じに縦の線が垂直に等間隔に補正されます pic.twitter.com/SfP1WyxTd8
— クールなびじゅつかん館長 (@TheCoolMuseum) May 22, 2020
なんでかって言うとZはマイナスの値なのでマイナスで割ることによって反転しちゃってたんですね、なのでZに-1かけて補正します pic.twitter.com/dHcLBn0mWR
— クールなびじゅつかん館長 (@TheCoolMuseum) May 22, 2020
ふたたび、カメラの画角を18mm 90°に戻しまして、先程Zにかけた-1.0を例えば-0.5にするとどうなるかって言うと、画角が広がった感じになります。これは焦点距離が18mmから9mmになったのと同様の効果があります。3枚目は-0.1に戻してカメラを9mmにしたものです pic.twitter.com/tIg5nT7oVV
— クールなびじゅつかん館長 (@TheCoolMuseum) May 22, 2020
レイのベクトル(X, Y, Z)がZ=1で表される面上のどこにヒットしたかを考えるとき、(X, Y, Z)がZ=1になるようにするには(X, Y, Z)/Zとすればよく、つまりその座標は(X/Z, Y/Z, 1)と表せると
要するにレイのX,YをZで割ったものは投影面上の座標を表していると言えるというわけです— クールなびじゅつかん館長 (@TheCoolMuseum) May 22, 2020
ところで先程X,YをZで割って変換したレイのノードのままカメラを回転すると……すると?……は? ってことが起こってしまうのですね。これカメラを回転したことによってレイのZのプラスマイナスが反転する境界を超えてしまい、そこから計算がおかしくなるわけです pic.twitter.com/2Dy7SA5QnF
— クールなびじゅつかん館長 (@TheCoolMuseum) May 22, 2020
一体なにが問題なのかというと、カメラの回転や移動とは関係なく、この世界の基準座標を元にしてレイを取り扱っているためです
レイはカメラから出ているのですから、レイの操作は「カメラから見た」座標内で行わないといけません— クールなびじゅつかん館長 (@TheCoolMuseum) May 22, 2020
反対に世界空間でのベクトルがこのカメラからみてどちらを向いているかを知るためには、ワールド回転の反対の操作を行う行列が必要です。反対の操作を行う行列は逆行列と呼ばれ、手計算では厄介ですがMODOでは簡単に作成できます
これにワールド空間のレイを入れるとカメラ空間のレイに変換できます pic.twitter.com/ClDlIqw2Qa— クールなびじゅつかん館長 (@TheCoolMuseum) May 22, 2020
さきほど説明したとおりワールド回転で変換すると、カメラから見た方向を世界の方向に変換できるので、ワールド回転行列にカメラ空間のレイをかけ合わせてあげると、やっとカメラの方向に正しく追従するレンダリング画像が得られるようになりました。 カメラの画角などを変更しても正しく反映されます pic.twitter.com/aIW5k64n4N
— クールなびじゅつかん館長 (@TheCoolMuseum) May 22, 2020
超魚眼レンズもできた #modo pic.twitter.com/qchtmelNVo
— クールなびじゅつかん館長 (@TheCoolMuseum) May 20, 2020
縦パノラマができると試したくなるアニメのPAN美術風のパースのとり方 pic.twitter.com/b0vNO2MQjt
— クールなびじゅつかん館長 (@TheCoolMuseum) May 16, 2020
modoでカメラの視野角を計算することができたのでメモしときます。
modoのカメラではプロパティで「視野」を確認することはできますが、「視野」チャンネルをスケマティックに追加することができません。Expressionノードを使用すると「視野」を計算することができます。
一般的にカメラの視野角は以下の計算式で求めるそうです。
視野角=2*atan(イメージセンサー幅/(2*焦点距離))
これをmodoのExpressionで計算します。Expressionノードには入力Aに「焦点長」、入力Bに「フィルム幅」を接続します。atanを使うとラジアンになるらしいので、最後に角度に変換します。
2*atan(B/(2*A))*180/3.141592
modoの視野チャンネルと同じ値が計算できています。
カメラの視野角が計算できるとカメラから見える範囲にだけ処理を行うことができるので、ビューポートが重い場合に効果的です。例えばカメラの見える範囲だけReplicatorを表示することができます。下の画像では視野に合わせて自動的にReplicatorの表示が切り替わってます。
ファーには「視錐台カリング」という同様の機能がありますが、Replicatorにはありません。そんな時に視野角を使ってリグを組みます。フォールオフを使用してるので、プロシージャルモデリングと組み合わせても便利かもしれません。