CG 日記

Tips

modoでキャラクターリグ作ってみた

modoの機能を使用してキャラクターリグを作ってみたので紹介したいと思います。

modoにはコマンド範囲などリグ作成やアニメーションに便利な機能が色々搭載されていますが、あまりキャラクターリグ関連のデモを見かけないように思います。modoの機能をフル活用してキャラクターリグを作るとどうなるかチャレンジしてみました。

 

modoのアニメーション機能

このビデオではmodoのキャラクターアニメーション機能紹介を簡単に紹介してます。

 

アクション

アクションは1つのシーンで複数のアニメーションを管理する機能です。今回はリグ紹介用のアニメーションを管理するのに使用しています。
アクションはFBXファイルにマルチテイクとして出力することができるため、Unityに複数のAnimationが作成された状態でインポートできるので便利です。

アクションはいわゆるアニメーションレイヤーのような機能ですが、まだ開発途上の機能のためmodo 14.2 ではアニメーションのブレンドはできません。アニメーションの管理に使用するのが実用的です。

関連記事

 

 

Rig Clay

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を使ったリギングがどんなものか参考になったなら嬉しいです。

Tips

modoのテクスチャオフセット

modoのテクスチャオフセットについて書いてみます。テクスチャオフセットはレイヤーをテクスチャを使って歪める機能です。

modoには他のソフトに比べて数多くのプロシージャルテクスチャが入っていますが、タイルのように規則的なテクスチャを使うと、正確すぎてCGっぽく感じることがあります。テクスチャオフセットを使用するとノイズテクスチャを使ってランダムに揺らぎを加えることができて便利です。

サンプルファイル

 

テクスチャオフセットを使用する場合は、変形したいテクスチャの下にレイヤーを移動して、レイヤーエフェクトを「テクスチャオフセット」に変更します。次に歪みを加えたいテクスチャロケータのプロパティで「テクスチャオフセット強度」を変更します。10.0 で元の位置から 最大 100% オフセットされます。

 

テクスチャによっては「乱れ」というノイズを加えるプロパティがある場合もありますが、テクスチャオフセットはグラディエントなど様々なテクスチャに歪みを加えることができます。

例えばオブジェクトにウェイトマップを設定してVertex Map Textureで色を設定。Vertex Map Textureにはテクスチャレケータがないので、グラディエントで再度色づけしたものにテクスチャオフセットで歪みを加える。というような使い方ができます。

 

modoのシェーダーツリーは便利な機能が多くて助かりますね。

 

参考

Tips

modoのFlood WeightとGrow Weight

modo 14.2では14.1に引き続きプロシージャルウェイトマップが強化されました。

  • Flood Weight
  • Grow Weight
  • Jitter Weight
  • Remap Weight

なかでもFlood WeightとGrow Weightが面白いので簡単に紹介してみます。

 

Flood Weight

Flood Weightはポリゴンアイランド単位でウェイト値を最大または最小値で塗りつぶすノードです。

下の画像では等高線状にポリゴンを分割して、テクスチャ使ってSet WeightしたものをFlood Weightで塗りつぶした物です。Flood WeightがOFFの場合はノイズテクスチャの濃淡でウェイトが設定されてますが、Flood Weightを使うと繋がったポリゴン単位で同じウェイト値が設定されます。

Gradientで地形っぽい色を設定すると山岳立体模型キットみたいな感じになります。

 

Grow Weight

Grow Weightはウェイトマップを成長させる定番のノードです。境界マップを使うとウェイトの成長を止めることができるのが面白いですね。

ウェイトマップはウェイトマップテクスチャと組み合わせて質感を設定できるので、指先から質感が変わるアニメーションやエフェクトのような効果が手軽に作れるようになりました。

 

古いバージョンもTransfer Vertex Map選択モディファイヤを使うとウェイトマップをアニメーションすることができましたが、Grow Weightの方がカーブを使用してなめらかなグラデーション状のウェイトマップを作ることができて便利です。

後はウェイトマップとシミュレーションとの連携が簡単になれば完璧ですね。

Tips

modoのパーティクルアイテムマップ

modo 14.2でパーティクルアイテムマップが追加されました。パーティクルアイテムマップはパーティクルアイテムIDを制御するマップです。リプリケータを使用してアイテムを複製したときに、どのアイテムを複製するかを指定することができます。

メッシュオペレーターと組み合わせてパーティクルアイテムマップを編集する場合は、Remap Weight使います。

 

これまでもパーティクルシミュレーションでは同様のことが出来ましたが、パーティクルアイテムマップはモデルの頂点を直接選択して編集することができるので便利になりました。

modo 14.2ではパーティクルアイテムマップを編集できるのノードがRemap Weightに限定されてるのがちょっとわかり難いですね。Vマップ関連のノードは他にもパーティクルサイズマップなど使用できないマップが多いのが残念です。今後のバージョンで他のマップにも対応して欲しいですね。

 

参考

Tips

modoのエレメントとソフト選択 フォールオフ

modoのモデリングに関するちょっとしたTipsです。

アクションセンターの「エレメント」を使用すると、クリックしたエレメント(頂点、エッジ、ポリゴン)にセンターとアクシスが自動的に整列します。
アクションセンターのエレメントはとても便利でよく使うのですが、同じく便利なフォールオフの「ソフト選択」を組み合わせて使用すると、エレメントをクリックしてもアクションセンターは整列しません。

エレメントとソフト選択 を併用する場合は、Shift + クリックするとアクションセンターがエレメントに整列します。

 

 

参考

Tips

Syflex for modoのパラメータ

Syflex for modo のよく使うパラメータの覚え書きです。他のソフトでもだいたい同じように動くと思います。

 

Syflexとは

SyflexはModo、Maya、3ds Max、LightWave、Cinema 4D、Softimageなど様々なプラットフォームにリリースされてるクロスシミュレータプラグインです。2001年に公開された映画ファイナルファンタジーで使用されたクロスシミュレータの技術が元になった製品です。

ソフトは古い時代の作りのままなので少し使い勝手はよくない所もありますが、高速で比較的安定したシミュレーションを行うことができます。

 

メリット
  • シミュレーションの計算速度が速い。
  • シミュレーション結果が比較的安定している。震えが発生しにくい。
  • modo内でシミュレーションできる。
デメリット
  • サブフレームの計算ができない。速い動きでり抜けが発生しやすい。
  • ホストアプリケーションとの統合が弱い。例えばモーフなどデフォーマリストの前の変形を考慮しない。
  • シミュレーションキャッシュをファイル保存する必要があるのがやや面倒。
  • 恐らくMarvelous Designerの方がシミュレーション安定してそう(使ったことない)。

 

デフォーマリストはsyClothでシミュレーション後のメッシュをスケルトンやモーフ変形できるけど、スケルトン変形した後にsyClothでシミュレーションすることができません。

 

Softimageでは標準機能のクロスシミュレーションとしてSyflexを搭載していました。完全に同じものではありませんが、シミュレーションの注意点などSoftimageのマニュアルも参考になると思います。

http://docs.autodesk.com/SI/2015/JPN/#!/url=./files/GUID-1A8166A7-7768-42FC-8A6A-D4CC9913F845.htm

 

仮想のバネ

Syflexはmodoのソフトボディと同じくstretch、shear、bendの3つの仮想のバネを使用して計算します。

 

パラメータの設定が同じでもメッシュの細かさによってクロスの伸縮が若干変わります。今回テストに使用したのは正方形1メートル、Subdivision 6のメッシュです。

 

 

Syflexのパラメータ

 

syCloth

クロスシミュレーションに必須のノードです。

mass

クロス オブジェクトの質量です。単位はグラム。

•綿(シャツ) 100
•フリース(パーカー) 250
• デニムジーンズ) 500

 

stiff

バネの硬さです。3つのバネ、stretch、shear、bend全体の硬さを設定します。
一般的な値の範囲は0.1〜10。20、30など10以上の値の場合は変かが少なくなる。

 

damp

バネのダンピング係数です。クロスの振動を抑えることができます。
一般的な値の範囲は0.00001〜0.1。0.1以上の値を設定すると計算が遅くなります。0.5以上は変化が少ない。stretch、shear、bendの値に応じて設定を変える必要があります。

 

stretch

ポリゴンメッシュのエッジに沿ったバネです。 stiffの値を基準にしたバネの強さです。
1.0=100%=stiffという感じらしい。

 

shear

ポリゴンメッシュの対角線状のバネです。stiffの値を基準にバネの強さを設定します。
stretch、shear、bendの順番で値を小さく設定するといいらしく、bendとのバランスが重要なようだ。

 

bend

頂点を 1 つおきにつないだバネです。stiffの値を基準にバネの強さを設定します。

 

 

syDamping

移動速度を低下させるダンピング フォースです。空気抵抗や水中での動きっぽくなる。

damp

 

syNail

クロスをウェイトマップで固定するフォースです。トランスフォームにオブジェクトやロケーターに接続することで固定箇所を移動できるようになります。
同様のフォースにsyPinがありますが、syNailはアイテムへの「位置コンストレイント」で、syPinは変形するメッシュに固定する「ジオメトリコンストレイント」という違いがあります。

dist

固定する頂点の距離です。0は完全に固定、0以外にすると仮想のバネが作られて吊された状態になります。

 

stiff

固定する頂点のバネの硬さです。distが0以上の場合に動作します。
stiffの値を上げても頂点を完全に固定することができないので、頂点を完全に固定したい場合はdist 0に設定したNailフォースをもう一つ追加するといいです。

 

damp

バネのダンピング係数です。振動を抑えます。

 

map

Nailの影響をウェイトマップで指定します。

画像左はリニアフォールオフを使ってウェイトを設定したもので、画像右はリニアフォールオフのイーズアウトを使用してウェイトに偏りを持たせた設定です。

 

syCollideMesh

メッシュと衝突させるフォースです。

friction

摩擦係数です。一般的な値の範囲は0~1。

 

damp

接触している頂点の移動を減速させます。

 

sticky

濡れた布がひっつくような設定になります。

 

envelopeExt

衝突オブジェクトからの距離を指定します。単位はメートル。

 

envelopeInt

衝突判定の反応エリア距離です。単位はメートル。envelopeIntの範囲に頂点が入るとenvelopeExtの距離だけ押し戻します。
マニュアルには高速移動時には値を小さくした方がよいと書かれてますが、envelopeIntの値が小さいと速い移動でCollisionがすり抜けてしまうようです。逆に値が大きすぎてシミュレーション開始時に衝突オブジェクトと重なった状態だと計算が不安定になります。

 

sySelfCollision

クロス自身の衝突です。計算に時間がかかるのと震えが止まらない。

 

syVolume

体積維持するフォースです。風船のような閉じたオブジェクトで機能します。

pressure

オブジェクト内の圧力です。パラメータの単位はわからないですが100で元の形状を維持するように見えます。

 

volume

volume単体で値を上げても効果がなくpressureと併用して使います。
volume 3、pressure 100にするとサイズが3倍なってるように見えます。

 

damp

オブジェクトの移動速度が遅くなります。

 

 

syPinの使用方法

Syflexはフォースの設定方法が少し複雑です。毎回Pin追加に失敗するので画面キャプチャしました。

  • 頂点選択(アイテムを選択してると追加に失敗する) + syClothモディファイヤ選択 + メニューからAdd Pin

 

 

Syflexは専用プラグインなので当然ですがmodo標準のソフトボディよりクロス表現に適してます。セルフコリジョンの計算はそれなりに時間が掛かり、クロスが折り重なる場合はdampの値を10以上に設定しても頂点の震えを抑えるのが難しいことがあるようです。

syWindも試そうかと思いましたが単純なメッシュでも布が極端に柔らかくなる現象に遭遇てしまい、安定して動かすのがちょっと困難なのであきらめました。サンプルファイルだとちゃんと動いてるのですが、新規シーンに適用しようとするとクロスが暴れてしまいます。たまに上手く動くんですけどね。

CG 日記

ScreenToGifで2GB以上の無圧縮AVIを出力する方法

画面キャプチャして手軽にGifを作成できるソフト「ScreenToGif」から2GBを超える無圧縮AVIを出力する方法について書いてみます。

ScreenToGifでエンコーダー「システム」を選択すると、無圧縮のAVIとしてファイルを保存することができます。しかしシステムのコーデックを使用すると、ファイル容量が2GBを超えた場合に編集ソフトで読み込めないファイルになります(AVIの仕様と思われます)。

2GB以上の無圧縮AVIファイルを出力したい場合は、FFmpegをインストールして以下のコマンドを使用します。

-vcodec rawvideo

 

ロスレス圧縮(可逆圧縮)を使用したい場合は「Ut Video CodecSuite」をインストールして以下のコマンドを使用します。単純な画面キャプチャだと3.7GBが617MBに圧縮されました。

-vcodec utvideo

 

rawvideoを使用した場合、出力されたビデオはメディアプレイヤーによってはエラーが出て再生できませんでしたが、After Effectsに読み込んで編集することが出来たので、自分の使用用途としては問題ありませんでした。ビデオとソースファイルを比較しましたが、劣化することなくAVI化されてました。

utvideoはコーデックをインストールしてればメディアプレイヤーで再生可能ですし、After Effectsに読み込んで編集することもできます。

rawvideoとutvideoを比較するとビデオの長さが変わってました。何が影響してるのか不明です。絵は圧縮による劣化はありません。

手軽な画面キャプチャソフトは「OBS Studio」もありますが、ScreenToGifの方がフレーム単位で編集出来るので便利な場合があるので、細かく編集したい場合はScreenToGifを使ってます。

Tips

FBXファイルを標準マテリアルで読み込む方法

3dsMax 2021以降のバージョンでFBXファイルを読み込む場合に、標準マテリアル/ Standard (Legacy)として読み込む方法について書いてみます。

概要

3dsMax 2021からデフォルトのマテリアルが「フィジカル マテリアル」に変更されました。

この変更により、FBXファイルを読み込んださいに生成されるマテリアルがフィジカル マテリアルになりました。Arnoldを使用する場合はフィジカル マテリアルでいいのでしょうが、スキャンラインを使用したい場合は標準マテリアルの方が便利な場合があります。

 

読み込み設定の変更方法

「3dsMax.ini」内のオプション、StandardMtlFBXImport=0 を StandardMtlFBXImport=1 に書き換えます。

C:\Users\ ユーザー \AppData\Local\Autodesk\3dsMax\2021 - 64bit\JPN\3dsMax.ini

 

これでFBXファイルの読み込み時に生成されるマテリアルが、標準マテリアルになります。

Tips

マテリアルスロットのデフォルトを標準マテリアルに変更する方法

3dsMax 2021以降のバージョンで、マテリアルスロットのデフォルトマテリアルを標準マテリアルに変更する方法について書いてみます。

概要

3dsMax 2021からデフォルトのマテリアルが「フィジカル マテリアル」に変更されました。

この変更によりマテリアルスロットのデフォルトマテリアルがフィジカル マテリアルになりました。これまで通りスキャンラインを使用したい場合は「標準マテリアル / Standard(Legacy)」の方が便利な場合があります。

 

デフォルト設定の変更方法

カスタマイズメニューの「カスタム UI と既定値の切り替え」を起動し、「Max.Legacy」を選択して「設定」を押します。

 

Maxを再起動すると以前のバージョンのMaxと同様に、デフォルトのレンダラーがスキャンラインになり、マテリアルスロットのデフォルトが標準マテリアルになります。

Tips

modoのクラッシュコマンド

modoのdebug.crashコマンドについて書いてみます。

modoでUIをカスタムしたとき、カスタム結果に納得がいかず設定を保存せずにmodoを終了したい場合があります。そんなときはクラッシュコマンドを使用してmodoを強制終了することができます。

debug.crash

 

debug.crashを実行するとmodoはクラッシュするので、コンフィグファイルに編集結果を保存することはありません。まさか自爆コマンドがあるとは驚きですね。

Tips

modoのダイナミックリプリケーターと変形したメッシュのコリジョン設定

modoのダイナミックリプリケーターと、デフォーマ使用して変形したメッシュとのコリジョン設定について書いてみます。

 

 

modoにはダイナミックリプリケーターと言う、リプリケーターを使用して複製したアイテムをリジッドボディダイナミクスとして使用する機能があります。ダイナミックリプリケーターとコリジョン設定する場合、通常は「キネマティック」または「スタティック」リジッドボディを適用します。

 

しかし、スケルトン変形などデフォーマ使用して変形したメッシュに「キネマティック」や「スタティック」を適用しても、デフォーマのアニメーションが無視されてしまいます。

 

コリジョンメッシュに「ソフトボディ」を適用すると、デフォーマでアニメーションしたメッシュとコリジョン判定するすることができます。

■サンプルファイル

 

コリジョン用のアイテムに「ソフトボディ」を適用すると重力の影響を受けてメッシュが落下してしまうので、メッシュが元の位置を維持する用に「ゴールマップ」にウェイトマップを指定し、「ゴールを一致」を100%に設定してメッシュが落下しないように設定します。

 

 

ソフトボディを適用したメッシュと、デフォーマで変形したメッシュのコリジョン判定する場合も同様に「ソフトボディ」を使用します。

■サンプルファイル

 

ソフトボディとソフトボディのコリジョン設定はとてもシビアです。ソフトボディの「マージン」が短いとメッシュのすり抜けが発生します。また、solverアイテムの「演算頻度」が低いと、素早い動きでメッシュが交差してしまい、頂点が震えたり爆発したりします。正直あまり実用的ではありません。

 

 

ソフトボディを使用したコリジョンは少しハックな使い方です。ソフトボディを使用してるので「跳ね返り」を設定できないなど制限があるので、他のソフトと同じようにキネマティックやスタティック状態のメッシュでデフォーマに対応して欲しいですね。

 

参考

Tips

modoでオブジェクトの形状をハイライトに使用する表現

modoでオブジェクトの形状をハイライトように見せる表現について書いてみます。作りかけの不完全な内容ですが、興味があれば試してみてください。

アニメやNPR表現では特長的なスタイライズドされたハイライトが使用されることがあります。こういう表現を使用したい場合、従来はテクスチャを使用するのが一般的ですが、今回はReycastノードを使用してオブジェクトの形状をハイライトのようにレンダリングしてみました。

 

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

Reycastの「ヒットした色」をマテリアルの「ディフューズ色」に入力すると、反射のようなディフューズ色を設定用することができます。

「ヒットした色」を「ディフューズ色」に直接入力すると環境色も完全に反射してしまうため、条件式の「AはBより大きい」を使用してReycastの「ヒットした距離」が一定以上離れている場合は、任意の色に置き換えるという処理にしてます。
距離が近い場合はTrue値としては「ヒットした色」をそのまま出力し、距離が離れてる場合はFalse値として任意の色を出力します。

反射してるオブジェクトはルミナンスを設定使用して、シェーディングしない単色になるように設定しています。

 

 

このままの方法だと近くにあるオブジェクトが全て反射してしまうので、反射対象のオブジェクトを制限する方法を追加する必要があります。今回はそこまで考えていないので、興味があるひとは続きを作ってみてね。

オブジェクト形状を使用する方法はテクスチャと異なり、カメラが近づいても荒くならないというメリットがあります。またリグを組んでアニメーションできるというのも面白いと思います。Reycast以外にUV Transformを使用する方法でも似た表現ができるような気がします。

 

3dsMaxにはShape Mapというスプラインをテクスチャでレンダリングする機能があり、リグを組めば表情用のテクスチャを動的に作ることがでそうだなと思ってましたが、Mayaで再現してる人を見かけました。modoもシーン内のパスやオブジェクトからテクスチャ作れたら似たようなことができて夢が広がりそう。

 

2023年3月3日 追記

modo 16.1で追加されたSurface Probe Textureを使用すると、手軽に同様のことが出来るようになりました。

 

参考

Tips

3ds Maxで選択セットのコピー

3ds Maxで「編集可能ポリゴン」で作成した選択セットを、「ポリゴンを選択」モディファイヤにコピーする方法について書いてみます。

3ds Maxはモデリングツールがモディファイヤとして提供されているため、「編集可能ポリゴン」で作成した選択セットを、「ポリゴンを選択」のような他のモディファイヤで直接使用することができません。一度グラファイト モデリング ツールを使用して選択セットをコピーする必要があります。

コピー手順

  1. 「編集可能ポリゴン」でサブオブジェクトを選択して「選択セット作成」する
  2. グラファイト モデリング ツールの選択タブの「セット」で、名前付き選択セットの「コピー」を押す
  3. 「名前付き選択をコピー」ダイアログでコピーする選択セットを選択してOKを押す
  4. 「ポリゴンを選択」モディファイヤのサブオブジェクトを選択して、名前付き選択セットの「貼り付け」を押す

 

 

 

モデリングは基本的にmodoを使用してるのですが、modoから出力した選択セットを使用したい場合があったので忘れないためのメモです。

Tips

CBOXのマッスルで車体を揺らしてみた

modo用のキャラクターリグプラグイン「CharacterBox」のマッスル機能で車体を揺らししてみました。

 

CharacterBoxにはマッスル機能というメッシュを筋肉のように伸縮するためのデフォーマが搭載されています。マッスルにはアイテムの移動量からメッシュを揺らす「ジグル」という機能が搭載されていて手軽に揺れを設定することが出来ます。
マッスルはメッシュだけでなくIKゴールにも適用することができるため、車体のよにアイテムを揺らすような表現に使用することが出来ます。

 

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

マッスルはアイテムインフルエンスを使用してIKゴールを動かしています。リグに車体を直接ペアレントしてもいいのですが、位置や回転の影響を調節したいのでコンストレイントを使用しました。
コンストレイントのプロパティには「出力オプション」ボタンがあり、ボタンを押すとMatrix Channel Effectを追加してくれます。Matrix Channel Effectを使用するとXYZ軸ごとにコンストレイントの強さを制御できるので便利です。

コンストレイントを使用する場合は「コンストレイント補正オプション」を使用するとアイテムの位置関係を維持したままコンストレイントすることができます。

 

マッスルを使用すると自動で揺れをつけることができるので便利です。

 

今回は試しということで腕リグ1本で揺らしてるためおもちゃのような動きになってます。実際の車のように前後それぞれマッスルを分けてリグを配置すれば、もう少しリアルな挙動が作れる気がします。

マッスルのように揺らすmodo標準機能として「ソフトラグ」があります。ソフトラグを使用しても似たようなことができると思いますが、ソフトラグはアイテムインフルエンスを使用することができないため少し手間がかかりそうです。

 

参考

Tips

ZBrushにクリースをインポートする方法

Maya、3ds Max、modoからZBrushにサブディビジョンサーフェイスの「クリース(折り目)」をインポートする方法について書いてみたいと思います。

一般的な3Dソフトのサブディビジョンサーフェイスには、クリースと呼ばれる鋭角なエッジを設定する機能が搭載されています。クリースは曲線と直線で構成された機械的なモデルを作るときに便利です。
FBXファイルはクリースの情報を保存することができるので、3DソフトからZBrushにクリース情報を持ったままモデルを読み込むことができます。

 

 

ZBrushにクリースをインポートする

一般的な3Dソフトではクリースに0~100など、重みを無段階で設定することが出来ます。しかし、ZBrushは特定の値が設定されたクリースしか読み込みまないので注意する必要があります。

 

Maya

Mayaからクリースを出力する場合は polyCrease で「折り目」の値を 10 に設定します。

 

3ds Max

Maxからクリースを出力する場合はエッジプロパティで「折り目」の値を 1.0 に設定します。画像はOpenSubdivですがターボスムーズでも出力できます。

 

modo

modoからクリースを出力する場合はサブディビジョンのウェイトを 100% に設定します。modoではマイナスや100%以上の値で保存することができますが 100% 以外は無視されます。

 

ZBrushに読み込んだ結果

ZBrushにFBXをインポートし、ダイナミックサビディビジョンを適用したモデルです。エッジに破線が表示されクリースの設定が読み込まれるのを確認できます。

 

 

ZBrushからクリースをエクスポートする

ZBrushから クリースを出力する場合は「FBXエクスポートインポート」の「スムースレベルをエクスポート」をONにします。

「スムースレベルをエクスポート」はマニュアルに説明がないので何を意図した機能なのかわかりませんが、恐らくキャットマルクラークサブディビジョンの折り目(Crease、エッジウェイト)の出力に関連する機能だと思われます。
スムースレベルという名称なのでSubDivの値を変更してエクスポートして見ましたが、折り目の出力意外に目立った変化はないように見えました。

 

ZBrushのFBXは特定の値のクリースしか読み込まないという仕様が罠ですね。本来は無段階に設定できるクリースをZBrushではON/OFFしかできないのはいいのですが、その値がキャットマルクラークの実用的な値の範囲である0~50%ではなく最大値以外読み込まないのはわかり難いかもしれません。FBXインポート時には少しでも値が入ってたらクリースとして読み込んでくれる方が動作がわかりやすい気がします。

 

参考

このビデオではクリースを1000に設定していますが、ZBrush 2020でFBX2020で出力したファイルをMayaに読み込むとクリースの値は 10 でした。Mayaで出力する場合は一度ZBrushからファイル出力して値を確かめるといいと思います。