Simulation

CG News

Clothify Pro for 3ds Max

布のモデリングとアニメーションを簡単に作成することができる3ds Max用のモディファイア「Clothify Pro」がリリースされました。

https://mariussilaghi.com/products/clothify-pro

価格

  • インディーライセンス €80 (収益10万ドル未満)
  • プロラインセンス €160 (収益10万ドル以上)

非破壊的なクロス

Clothify Proは3ds Max用のモディファイアです。布のモデリングとアニメーションを簡単に、制御可能に、アーティストが使いやすいように、素早く、非破壊的に行うことができます。シミュレーションが終わるのを待つ必要はなく、すぐに結果を得ることができます。また、布のスカルプトに手間取ることもありません。

パラメータを編集して、それが何をするかをすぐに確認できます。すべてのパラメータは、ソフト選択、頂点ウェイト、頂点カラーでコントロールでき、これまでにないコントロールが可能です。

モディファイアの下で適用された変形はすべて布に影響するので、ポリゴン編集、スキン、FFD、ベンド、領域の影響、パスの変形など、3ds maxが持つ数多くのモディファイアを利用することができます。また、Freeformブラシにも使用できます。実際には、メッシュを変形させるものであれば何でも使用できます。

現在のところ他のオブジェクトとの衝突や自己交差は扱っていませんが、基礎となるメッシュが自己交差していない場合は、ほとんど起こりません。また、ボリュームの保存もまだできません。

互換性

2013/2014/2015/2016/2017/2018/2019/2020/2021 (64 Bit)で動作します。

Tips

modoでパーティクルクラウドをフリーズする方法

modoでパーティクルクラウドと、サーフェイスパーティクルジェネレータをフリーズする方法について書いてみます。

パーティクルクラウドやサーフェイスパーティクルジェネレータは、いわゆる後から再編集可能なプロシージャルオブジェクトです。プロシージャルオブジェクトをモデリングツールで編集可能にするにはフリーズする必要があります。

 

Particle Cloudをフリーズ

Particle Cloudをフリーズする場合は、particle.freezeCloud コマンドを実行します。

particle.freezeCloud

 

Surface Particle Generatorをフリーズ

Surface Particle Generatorをフリーズする場合は、アイテムメニュー /リプリケータで「パーティクルジェネレータ」を実行します。

 

ちなみに同じメニューにある「サーフェイス ジェネレータ」はシェーダーツリーを使ったパーティクルジェネレータをフリーズするコマンドです。

 

サーフェイスパーティクルジェネレータはメニューからアクセスできますが、パーティクルクラウドのフリーズはメニューにないのでメモとして書いておこうと思いました。

Tips

modoの頂点カラーでリプリケータを制御

Foundryのフォーラムでウェイトマップを使用してリプリケータを制御できないのか?というスレッドを見かけたのでまねてみました。

https://community.foundry.com/discuss/post/1215164

 

現在modoではParticle Sieve Modifierだけウェイトマップを読み取ることができますが、残念ながらParticle Sieve Modifierはリプリケータを消すことしかできません。また、Weight Map Falloffパーティクル モディファイヤで動作しないようです。


そこでウェイトマップの代わりに、頂点カラーとParticle Expression Modifierを使用する方法が提案されていました。

Particle Expression Modifierを使うと、CR、CG、CBという変数を使用してRGBマップから値を読み取ることができます。頂点カラーツールを使用してリプリケータのトランスフォームを編集することができます。

サンプルファイル

 

スケマティックではRGBそれぞれParticle Expression Modifierをわけてますが、エクスプレッションはサンプルが少ないので、どう式を書けばいいのかよくわからないです。
単純な計算A+B程度なら問題ないですが、1つのノード内でCR、CG、CB全部の計算結果を出力できるのか?とか、記述をミスった場合に何が問題なのかフィードバックがないので使うのが難しいです。

とりあえず、Particle Expression Modifierノードを使うと他のパーティクル モディファイヤでアクセスできないチャンネルを読み取ることができるようです。

 

関連

今回はParticle Expression Modifierの使い方みたいな記事でしたが、単純にリプリケータを個別に編集したい場合はパーティクルペイントツールパーティクルマップを使用すると頂点単位でリプリケータを編集することができて便利です。

modo 14.2からプロシージャルウェイトマップが強化されたので、今後ウェイトマップとパーティクルモディファイヤが連携できると、アニメーション用途で面白い使い方ができそうですね。

Tips

Bifrost 2.0でシミュレーション キャッシュを保存する方法

Bifrostのシミュレーション キャッシュの保存方法に関するメモです。シミュレーションを試そうと思った時に、キャッシュの保存方法がわからなかったので調べました。

BifrostはMayaや3ds Maxに標準搭載されているに流体シミュレーションソフトです。元々Naiadという流体シミュレーションソフトで、2012年にAutodeskが買収した後、Bifrostに名称を変えてMayaやMaxに機能追加されました。
Bifrostは2.0からビジュアルプログラミング環境として大きな変更が加わり、以前のバージョンからキャッシュの保存方法が変わってます。

 

file_cache

シミュレーション キャッシュを保存する場合はfile_cacheノードを使用します。

本来はwrite_OpenVDB_volumeのようにwrite系のノードを使用する物らしいですが、サンプルを見るとfile_cacheが使用されていました。
file_cacheノードは現在のところ実験的な機能で、将来的に変更される可能性があるとのことです。

 

Mode

キャッシュの書き込み、読み込みを設定します。Write Modeでキャッシュを作成した後、Read Modeに切り替えるとタイムラインのスクラブが可能になります。

 

Filename

キャッシュファイルの保存先を設定します。キャッシュファイルはアニメーションを再生すると自動的に保存されます。

  • ファイル名には#を入れます。#入れないとフレームごとに連番保存できません。
  • キャッシュの保存形式は拡張子(.bob、.vdb、.abc)で指定します。

 

Propertys

保存するシミュレーションデータプロパティの指定です。Propertysに保存したいプロパティ名をスペース区切りで記述します。*の場合すべてのプロパティを保存されます。

使用可能なプロパティ名はノードのライン上で右クリックしてWatch Pointを追加すると確認できます。

 

Bifrostのシミュレーション結果をvdbで保存してaiVolumeに読み込むと、プロパティが読み込まれるのが確認できました。

 

modoのVDBVoxelでも同じプロパティが読み込まれるのが確認できます。

 

参考

Bifrost 2.0チュートリアル
https://area.autodesk.com/tutorials/?tag=bifrost

https://area.autodesk.jp/product/maya/bifrost2/

参考資料

CYMATIC

金属板の上に砂をまいて共振させて作るクラドニ図形っぽくて面白いですね。

Tips

modoでおきあがりこぼし

mdooのダイナミクスでおきあがりこぼしの作り方について書いてみます。ダイナミクスの特長を使った小ネタです。

サンプルファイル

mdooのリジッドボディ ダイナミクス(Bullet Dynamics)は、アイテムのセンターを中心に回転します。この特長を利用してセンターをアイテム底に配置すると、アイテムをおきあがりこぼしのように倒れにくくすることができます。

倒れないドミノも作れます。


特に使い道のあるTipsではありませんが、もしかするとモーショングラフィックで役立つかもしれません。

 

参考

Tips

modoでプロシージャルなドミノ倒し

modoでプロシージャルなドミノ倒しの作り方について書いてみます。

 

ダイナミクスのチュートリアルでよく見かけるドミノ倒しですが、1個ずつドミノを並べるのは面倒です。カーブを使用してドミノを配置すると、カーブを編集するだけで手軽に並べ替えができるようになって便利です。

サンプルファイル

 

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

大まかな流れとしてカーブからパーティクルを発生させます。ドミノにはコリジョンを設定したいので、Dynamic Replicatorを使用してドミノ通しが衝突するように設定しています。

このとき問題になるのが、ドミノをカーブに沿って配置する方法です。modoにはCurve Particle Generatorというカーブに沿ってアイテムを配置する便利なノードがあります。

残念なことにCurve Particle Generatorを元にパーティクルを発生させても、回転した状態でパーティクルを発生させることができません。下の画像のような方法ではカーブに沿わせることができない。

この問題を回避するためにCurves to ArrayとArray Element By Indexを使用します。
ドミノのスケマティックではParticle Generatorを使用してX方向にパーティクルを生成します。Curves to Arrayでカーブの挑戦数を設定して、Array Element By Indexを使って頂点の「位置」と「回転」をParticle Operatorに出力します。

「回転」はそのままParticle Operatorに繋ぐことができますが、「位置」はMatrix Vectorを使ってマトリクスからベクターチャンネルに変換してからParticle Operatorに接続します。

こうすることでカーブに沿ったパーティクルを発生させることができるようになり、手続き的にドミノを配置することができます。

 

Replicatorをフリーズしてダイナミクス適用する方法もありますが、今回はパーティクルを使用する方法を紹介してみました。ちょっと複雑ですが、パーティクルに回転を渡したい場合、Arrayを使うといいようです。
modoには様々なノードがありますが、似た役割のノードでも読み取れる情報に差があるため無駄に複雑に感じることがあります。似た機能のノードは全て同じ情報にアクセスできるように機能を統一して欲しいですね。

 

参考

今回のカーブに沿って回転したパーティクルの発生方法は、Warrenさんが公開していたファイルを参考にしています。
https://community.foundry.com/discuss/post/1214020

Tips

modoのパーティクルオペレータ タイプ

modoのパーティクルオペレータ タイプについて書いてみます。

パーティクルを制御するパーティクルオペレータには「タイプ」というチャンネルがあります。タイプには「適用」「統合」「新規」「トリガー」の4種類があり、タイプによってパーティクルオペレータの適用方法が変わります。

 

まずは比較のためにパーティクルオペレータを使用していない状態のパーティクルシミュレーションです。平面の頂点からパーティクルが発生し続けます。変化がわかりやすいようにパーティクルは発生位置にとどまるようにしました。

 

 

適用

「適用」は毎フレーム値を設定します。

このスケマティックでは「位置 Y」に 2m、「回転 Z」に45°の値を設定してます。

 

 

統合

「統合」は毎フレーム値を加算します。

このスケマティックでは「位置 Y」に 2m、「回転 Z」に45°の値を設定してます。毎フレーム値が加算されるため、パーティクルはY軸方向に移動します。
回転が加算されないのはよくわからないです。「サイズ」「速度」は加算されるので行列チャンネルは非対応なのかな?

 

新規

「 新規」はパーティクル発生時に1度だけ値を設定します。

このスケマティックでは「位置 Y」に 2m、「回転 Z」にTimeノードを使用して毎フレーム異なる値を設定してます。

 

トリガー

「トリガー」はトリガーチャンネルがTrueになったフレームで値を設定します。

このスケマティックでは「位置 Y」に 2m、「回転 Z」にに45°の値を設定してます。
トリガーチャンネルにキーフレームを設定したチャンネルを接続して、1秒間隔でTrueを設定してます。

 

 

オペレーターの接続順

Particle SimulationのOperatorは接続された順番で計算します。

例えば画像のようにSource Emitter、Particle Operatorの順番で接続した場合、Source Emitterが先に計算されるため、平面の頂点位置にパーティクルが発生し、次のフレームでParticle Operatorの「位置」と「回転」が計算されるため一瞬だけ平面上にパーティクルが発生してるのがわかります。

Particle Operatorの順番は重要で「新規」を使用する場合は、エミッターよりも先にParticle Operatorを接続していないとパーティクル特性が動かないように見えます。

 

パーティクルオペレータ タイプの「新規」を使用すると、螺旋のように少しずつ角度の違うパーティクルを発生させることができて便利です。

サンプルファイル

CG News

DeepFX Studio

去年からベータ版が公開されていたードベースのシミュレーションソフト「DeepFX Studio」が正式リリースされました。

DeepFX StudioはLightwaveの流体シミュレーションプラグインにDeep FXRisingを元にしたスタンドアロンの物理アニメーションツールです。流体、粒状、破砕、Bullet Physics、マルチフィジックスの手続き型シミュレーションを作成できます。OpenVDBとAlembicがサポートされています。

https://www.deepfxworld.com/deep_fx_studio.php

価格

  • インディー $ 650 (収益10万ドル未満)
  • プロフェッショナル $ 950 (制限なし)

 

なぜDeep FX Studioなのか?

誰もが使いこなせるツール。アートに集中したいアーティストや、パワフルなプロシージャルワークフローを必要とするテクニカルアーティストのために、直感的に使えるように一から構築されています。

優しい学習曲線

学ぶのも覚えるのも簡単です。Deep Fx Studioはあなたの邪魔にならず、あなたの目標を達成するのに役立ちます。厳密なレジメンはありませんが、問題は複数の方法で解決することができます。

 

プロシージャル

プロシージャルコンテンツの作成は可能ですが、Deep FX Studioで生産性を高めるためには必須ではありません。しかし、あなたのスタイルに合っていれば、プロシージャルエンジンは無限の可能性への扉を開きます。プロシージャルエンジンは余計なものではなく、基礎の一部なのです。

 

流体シミュレーション

当社独自の技術を使用して最先端の流体シミュレーションを作成します。結果は視覚的にも楽しいものになることが保証されています。

 

Bullet Physicsの統合

業界標準の物理エンジンであるBulletを使用して、ムービー品質の物理シミュレーションを作成します。

LuxCoreRenderとの統合

LuxCoreRenderは最先端のアルゴリズムに基づいた物理ベースのアンバイアスレンダリングエンジンです。あなたの想像力をかきたてるような、心を揺さぶるフォトリアリスティックなイメージを生成します。

 

OpenVDBのサポート

OpenVDBは業界標準を変えるもう一つのゲームです。この強力なボリュームツールキットは様々なことに使用できます。

破壊

オブジェクトを簡単に破壊し、破壊的な混乱を作成するためにシミュレーションにそれらを供給します。

 

他にもたくさんの機能があります!

これは氷山の一角に過ぎません。Deep FX Studioには、多くの課題に取り組むためのツールが用意されています。

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

Tips

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

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

 

 

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

 

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

 

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

■サンプルファイル

 

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

 

 

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

■サンプルファイル

 

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

 

 

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

 

参考

参考資料

Houdini 18.5 Sneak Peek

ゲームエンジンプラグイン、PDG、SOP、パイロ、FLIP流体、レンダリングなど、機能範囲全体にわたる拡張機能と新機能を備えたHoudini 18.5の新機能。