moyasiエフェクト館

主にエフェクト関係の記事を上げていこうかと思います。


エフェクトに関係する記事上げてきます
エフェクト関係の記事の内容は緩く募集中
自分がわかる範囲であれば書いていこうかなと。

このブログについて

ブログの名前の通り、エフェクトに関係することを上げていこうかと思います

自分がわかる範囲で、エフェクトに関係することであれば何でもいいかな?とは

エフェクト自体の作り方は勿論の事

エフェクトの再生手段や、エフェクトに使うテクスチャ等

 

エフェクト素材の配布も始めました

(http://tktknkyo.hatenadiary.jp/entry/2017/12/31/095520)

 

 

なお、情報はTwitter(moyasi@エフェクト垢 (@torisutamoyasi) | Twitter)

でも出していたりするので、興味のある方は是非

Twitterではmoyasiという名前になっていますので、tktkでもmoyasiでもどちらでも呼びやすい方で

 

また、Discordにて「エフェクト交流所」というサーバーというのも作りました

ここは、エフェクトを作ろうとしているor作っている人同士で

相談したり、情報の共有したりするのを目的としております。

discord.gg

 

【GameSynth】Whooshモデルで少し効果音に触れてみる

f:id:tktknkyo:20190604200021p:plain

今回は久々になりますがGameSynthの内容を

 

今回はWhooshモデルという、風系の音を作るモデルでちょっとした作り方を

というワケで簡単にいくつかの機能に触れてみようかと思います。

機能の一部のみ触れる形になります、ご了承ください。

 

デフォルトの時点でから、ある程度線をサムネのように引っ張ってあげるだけでも

ある程度それらしい効果音が作ったりはできます。

 

f:id:tktknkyo:20190604200530p:plain

画面の左下にある、ここのアイコン

これは、引いた線をランダムに配置しなおすような機能です

ランダムに配置しなおすといっても、引いた線の数などは色々引き継がれます。

 

f:id:tktknkyo:20190604200636p:plain

例えば、このような太さがある程度違い、比較的に長めの線が複数ある

という場合にこの機能で配置をしなおすと

 

f:id:tktknkyo:20190604200741p:plain

この様になりました。

向きなどはかなり変わっていますが、線の長さや本数などは、比較的維持されています。

 

なので、ある程度本数を引いたら、この機能を配置を変えて音を調整して、ある程度いい感じになったら、それをベースに使う...

といった事が比較的にやりやすいです。

 

線を引いて音を作れるといっても、どうやって引けばいいのか?となった場合に

この機能を使っていけば、比較的につくりやすいと思います。

 

また、これで配置を変えたあとに、更に追加で線を加えたりもできるので

最初のベースはランダムで配置し、その後自分で新しく線を引いたりする、というのも便利です。

 

 

f:id:tktknkyo:20190604201240p:plain

画面の左上にあるこのグラフは、時間と音量を設定しています。

デフォルトがこの状態で

右側に並んだアイコンから、ここを自動で変えることができます。

自分自身で微調整も可能です。

 

右側に6種類アイコンが並んでいますが。

使い勝手がいいのが、特に下の二つになります。

 

f:id:tktknkyo:20190604201648p:plain

このグラフの上部にあるここが、効果音全体の長さになります。

作るものによって、長さもだいぶ変わりやすいので

再生しながら、ちょうどいい長さにここで調整しましょう。

 

f:id:tktknkyo:20190604201908p:plain

画面右上にはパラメータが並んでいます。

LFO という項目の中には、4つ並んでいます。

 

LFO Rate

こちらは、音に加えるノイズの間隔です

右側になるほど、ノイズの間隔が狭くなります。

 

LFO Amount

こちらは、音に加えるノイズの強さになります。

強くすると、荒ぶるような音になります。

強くすると、かなり濁った感じで目立ちやすくなります。

 

LFO Delay

こちらは、音に加えるノイズの発生遅延になります。

最初は綺麗だけど、あとから荒ぶるようにしたい、という場合などに

 

LFO Attack

こちらは、上げると恐らくですが、ノイズが滑らかになる、という感じでしょうか

RateやAmountが高くても、こちらも高くすれば
ノイズでの荒ぶり感は比較的に小さくなります。

ただ、こちらは微調整というイメージになると思います。

 

 

最初に重要になってきそうなのは、恐らくこの辺の機能だと思います。

まだまだ機能が多くて自分自身理解できていないところも多いですが

定期的に記事に書いていけたらな、と思います。

 

 

【UE4】ノイズ+スクロールによるフェードアウト

 

f:id:tktknkyo:20190528161312p:plain

Verは

UE4.21.2

となります。

 

今回作ったものは、このような動きを作るためのものとなります。

 

 

調整していくと、このようにグラデーションでのフェードアウトに対して

ノイズを混ぜたような描画を作ることが可能となります。

 

 

 

f:id:tktknkyo:20190528164936p:plain

全体の構造はこのようになっています。

 

 

構造の解説

 

f:id:tktknkyo:20190528165521p:plain

 

まずは左側のこの部分から

ここは、フェードアウトに使うノイズの調整となります。

 

今回は、ベースと歪み用は、同じテクスチャを使用しています。

上部の方は、タイリング数をXとYでそれぞれ調整する為の場所となります。

 

TexCoordに、定数を乗算すればその分がタイリングされるので
XとYをそれぞれパラメータ化して、インスタンス側でもいじれるように設定し。
それをタイリング数となるようにしているので

インスタンス側から、自由にタイリング数を変更させる事ができます。

 

下側は、テクスチャに追加するノイズとなります。

歪みには、XとYがRとGのみ必要になるので、この二つのチャンネルを取り出します。

ノイズはそのまま歪みに適用すると、大きすぎる事が多いので

低めの定数を乗算して、ノイズの強度を調整しておくと綺麗になりやすいです。

 

今回は、インスタンス側でも調整できるように、パラメータ化してあります。

 

 

こうして出来上がった、タイリングと歪みの処理を加算してから

テクスチャのUVsに接続します。

 

 

f:id:tktknkyo:20190528170249p:plain

 

次にこの部分となります。

ここは、グラデーションとノイズを混ぜ合わせる役割となっております。

 

テクスチャからSqrtに接続しています、これは必須ではありません

使用するテクスチャに大きく影響しますが、フェードアウトの調整として、入れたほうが自然になりやすいかなと思います。

 

TexCordからGチャンネルを抜き出しているのは、単純にグラデーションを持ってくる為です。

当然ですが、ここを自身で容易したテクスチャを使っても構いません。

 

その後は、ノイズとグラデーションを乗算します。

その後に再度Sqrtに接続します。

 

2回Sqrtを使っていますが、このノードは平方根を出してくれます。

最後に平方根を入れているのは

グラデーションとノイズを乗算すると、かなり色が黒くなってしまうので、そこからの調整をする為となります。

f:id:tktknkyo:20190528171406p:plain

グラデーションとノイズを混ぜた結果がこのようになっています。

ノイズの模様も維持しつつ、グラデーションが掛かっているのが解ると思います。

 

f:id:tktknkyo:20190528171030p:plain

 

最後にこの部分となります

 

OPMとなるパラメータが、フェードアウトさせる場合の基準となる部分になります。

エフェクトで使う場合は、ここを動かすことになるので

DynamicParameterに置き換えてください

BPで制御する場合は、ScaleParameterで問題ありません。

 

OPMは基本的に0~1でフェードアウトの範囲を決定します。

そこに対して、先ほど作ったノイズとグラデーションを合成したものも、0~1の数値になっています。

また、グラデーションを混ぜているので、上は数値が低く、下が数値が高くなっています。

 

OPMのパラメータから減算する事により
1から0になるにつれて、全体の数値が少なくなります。

グラデーションが混ざっているので、下のほうから少しづつ0になる領域が増えていきます。

 

最後に、Clampを使い0~1からはみ出た部分を0~1に収めます。

 

エミッシブカラーは今回はあくまで機能説明なので、単色を使っています。

是非ParticleColorやノイズを混ぜたりしてみてください。

 

マテリアルとしては終わりですが、最後に一つやることがあります。

デフォルト設定の場合、オパシティマスクの数値は、1/3以下で消される設定になっています。

今回の、この設定の場合では、制御がどうしてもしにくいので

ここを変更しておきます。

 

f:id:tktknkyo:20190528172006p:plain

 

作成したマテリアルから、インスタンスを作り
下にある、ここのパラメータを変更してください。

0にしたいところですが、0にした場合、うまく描画されないようなので
小さめの数値を入れておきます。

 

あとは、インスタンスのOPMのパラメータをいじると、ノイズが混ざったようなフェードアウトになってくれていると思います。

ただし、今回比較的に使用するテクスチャに依存する部分がどうしても大きいので、そこはご了承ください...

 

今回はここまでとなります。

 

今回文字ばっかりで、解りにくくてごめんなさい...

 

 

【UE4】【Houdini】VATをカスケードで制御する

今回使用するVerは

UE4・・・4.21.2

Houdini・・・17.5.229

 

今回は、HoudiniとUE4の連携的な内容をしていきたいと思います。

 

UE4にVATで持っていく手段は、色々な所に情報はありますが

私のような知識の乏しい人の場合

書いてある手段とちょっとでもずれると、途端に解らなくなってしまい...

 

という事があったので、記事に書いておこうと思います。

 

今回は基本的なRBDによるシミュレーション前提となります。

ほかのシミュレーションなどの場合は手段も恐らく変わってくると思います。

 

 

VATについて

まずはそもそもVATについて

Vertex Animation Textureの略称です

Vertexは頂点

Animationはアニメーション、ざっくり言うと動き

Textureはテクスチャ、ざっくり言うと画像

 

3Dモデルの動きデータを画像に入れ込んだもの、と考えればいいと思います。

 

VATを使うには

 

VATを作る機能は、Houdiniに最初から入っているわけではないので

データをDLする必要があります。

f:id:tktknkyo:20190502181233p:plain

シェルフの部分の、UpdateでDL出来るはずです。
ただ、具体的な手順が若干解っていない所もあります、ご了承下さい

また、自身はsteamのIndie版です

ここが違うと、DLの仕方も変わってくるかもしれません。

 

まずはシミュレーションを作ってみる

とりあえず、定番のシミュレーションを作ります。

 

f:id:tktknkyo:20190502181708p:plain

とりあえず、でBoxを作ります。

上空から落とすので、Centerをとりあえず2程度に設定しておきましょう。

 

 

f:id:tktknkyo:20190502181916p:plain

その後の設定はこのようにします。

ノードの設定そのものは初期設定で問題ありません。

最後はNUllノードを作り、解りやすくする為に、名前を「OUT」にしています。

 

 

f:id:tktknkyo:20190502182215p:plain

その後、OBJまで戻り

ここのシェルフにてシミュレーションを作ります。

 

f:id:tktknkyo:20190502182314p:plain

シミュレーションを作る際に

この様なメッセージが出てきます。

 

左側をクリックしておきましょう。

VATでもっていくには、シミュレーションをパック化しておく必要があります。

ほかのシェルフなどで作る場合、UE4にもって行ったときに変な動きになることがあります。

 

f:id:tktknkyo:20190502182452p:plain

OBJネットワーク上に、DOPのノードが作られるので、中に入ります。

 

今の段階で再生しても、ただ重力で落ちるだけとなっています。

 

f:id:tktknkyo:20190502182641p:plain

地面が作られていないので、地面を作ります。

 

これで、地面に落ちて割れるシミュレーションが作られました。

 

 

f:id:tktknkyo:20190502183021p:plain

次に、VATに変換してUE4に組み込みます。

 

VATの作成

 

f:id:tktknkyo:20190502183259p:plain

まずは、破壊したBOXを作ったノードに入ります

OUTの下が、シェルフでシミュレーションを作った時に自動で作られたノードです。

このままでは、若干解りにくいので

f:id:tktknkyo:20190502183408p:plain

最後にNULLノードを接続しておきます。

名前はOUT_Simとしました。

 

f:id:tktknkyo:20190502183536p:plain

 

OUTネットワークに移動し、VATを作るノードを作成します。

 

f:id:tktknkyo:20190502183726p:plain

 

今回はRBDのシミュレーションを作ったので
Rigid、を選択します。

 

f:id:tktknkyo:20190502183857p:plain

Export Nodeは、変換するノードを選択します。

シミュレーション自体はDOPで作っていますが。

DOPで作ったシミュレーションは、SOPで読み込んでいます

なので、SOPの方のパスを選択しておきます。

 

最後に作ったOUT_Simを設定しておきましょう。

 

f:id:tktknkyo:20190502184054p:plain

 

設定できたら、Renderのボタンで出力します。

プロジェクトのExportというフォルダに出力されたデータが出てくると思います。

 

UE4への組込み

 

f:id:tktknkyo:20190502184258p:plain

RBD用の場合は、メッシュと最後にPOSとあるテクスチャとROTとあるテクスチャが書き出されます。

ここは書き出す種類によって変わってきます。

まずは、この書き出した三つのデータをUE4にインポートします。

 

次にマテリアルが必要になるので、新規でマテリアルを作ります。

 

f:id:tktknkyo:20190502184644p:plain

 

HoudiniのVATを作ったノードにこの様な部分があります。

+のボタンを押すと開くので、この中身をコピー&ペーストでUE4に持っていきます。

コードをコピーしたら、UE4のマテリアル上で貼り付けをすると、ノードが作られます。

 

f:id:tktknkyo:20190502185049p:plain

詳細設定の、ここの矢印をクリックで展開して

 

f:id:tktknkyo:20190502185228p:plain

ここの設定を3にしておきます。

 

f:id:tktknkyo:20190502185324p:plainHoudiniから持ってきたノード群には

コメントで何処に接続すればいいのか?が書いてあるので

それに従い設定していきます。

 

マテリアルは完成ですが

VAtで動かすには、インスタンスを作っておきます。

作ったマテリアルからインスタンスを作成します。

 

f:id:tktknkyo:20190502185637p:plain

インスタンスのこの5つのパラメータは編集する必要があるので

チェックを入れて編集します。

 

ここに入れる数値は

f:id:tktknkyo:20190502185747p:plain

Houdini側の、この部分と同じ数値を入れる必要があります。

 

f:id:tktknkyo:20190502185918p:plain

 

インスタンスにある、ここの部分も編集する必要があります。

Houdiniで生成したテクスチャを、ここでそれぞれ設定していきます。

 

最後に、メッシュに、このインスタンスを設定すれば完成です。

 

カスケードにて調整する

 

では次に、カスケード側で調整できるようにしていきます。

 

まず、VATの動きが、どこで動いているのか、という部分ですが

f:id:tktknkyo:20190502190346p:plain

左の方にひっそりとTimeのノードがあり、ここで制御されています。

 

f:id:tktknkyo:20190502190510p:plain

なので、ここをDynamicParameterに差し替えればできます。

 

ただし、時間の制御は、フレーム数ではなく、秒数なので注意が必要です。

 

ここで一つ問題が出てきます。

恐らくこの時点でそのまま読み込むと、変な形になると思います。

 

f:id:tktknkyo:20190502192220p:plain

 

地面に落ちて割れるシミュレーションのはずが

カスケードで読み込むと、変な動きをするようになります。

 

原因は大きさで、InitialSizeを1に設定すると解決します。

 

ただ、大きさが完全固定では面倒なので、制御できるようにします。

 

おそらくですが、カスケード側で大きさを変えると、移動量の計算がおかしくなるようです。

 

f:id:tktknkyo:20190502192833p:plain

 

マテリアル側で、ここの大きさを制御してる部分に、DynamicParameterを乗算します。

こうする事で、カスケード側で大きさを変えれる...ようにはなりますが。

InitiarSizeの大きさと同じにする必要が出てくるようです。

 

ちゃんと乱数で制御したい場合は、どうしてもBPでの制御が必要になってきそうではあります。

 

今回はここまでになります、VATに関してはまだまだ解っていない部分が多いので、判明次第色々情報纏めていこうかと思います。

 

 

【UE4】Materialで極座標の処理を自作してみる

f:id:tktknkyo:20190426104909p:plain

はじめに

今回の記事はかなり憶測部分が多いので、間違っている部分が有ると思いますのでご了承下さい

(コッソリ教えて頂けれると幸いです)

 

VerはUE4.21.2です

 

画像の加工などで便利な極座標の処理

便利なので、デフォルトの時点で関数で極座標の処理をするノードが用意されています。

f:id:tktknkyo:20190426105354p:plain

Vector To Radial Value というマテリアル関数です

基本はこれで問題無いのですが、スクロールなどの
ほかの移動などと合わせる際に、どうしてもややこしくなりやすい、うまく制御しにくい。

という部分が多少あったので
極座標の処理そのものから作れば制御しやすくなるのでは?

となったのが、今回処理を自作した理由となります。

 

 

そもそもマテリアルのUVs接続について

 

変形の処理を作る際に、このUVsの接続する情報をある程度把握する必要があるのかなと

 

 

f:id:tktknkyo:20190426110055p:plain

まずはタイリングさせたりする基本である

TextureCoordinateをそのまま接続
単体では全く変化がありません。

 

f:id:tktknkyo:20190426110236p:plain

加算すると、座標が動きます、スクロールの処理を入れたりするときに

使ったりする手段でもあります。

 

f:id:tktknkyo:20190426110412p:plain

乗算すると、タイリングされます。

インスタンスでタイリング数を制御したい場合などに使う手段でもあります。

 

f:id:tktknkyo:20190426110907p:plain

加算でノイズテクスチャを混ぜることで

マテリアルそのものの歪み処理なんかも。

ただ、ちゃんと制御するには、ある程度仕組み解ってないと厳しい部分はあるのでは?と。

 

処理内容としては、恐らくですが、UVsに接続されたRとGチャンネルをそれぞれXとYに置き換え

どこの位置にある数値を取得してくるのか?を定義しているのかなと思います。

 

f:id:tktknkyo:20190426112058p:plain

例えば、RとGが0.5の場合は、ちょうど中心を指定します
そして、このように定数を繋げる場合
Texの情報のXとYが0.5の位置にある数値を、TextureSampleに適用する事になります。

定数を接続する場合、色の情報を、一箇所からとってきて、それを全ての場所に適用する事になります。

 

 

極座標を掛ける処理を考える

 

f:id:tktknkyo:20190426115529p:plain

こちらはHoudiniで作ったものですが
極座標で、いわゆるこの様な処理を作ります。

 

X軸を半径

Y軸を角度

にするようにUE4のマテリアルで処理を作ります。

 

半径の処理を作る 

まずは半径から

 

UVsの接続に使われる情報は、接続している情報の座標をもってきます
なので、Xを半径にしたい場合

 

f:id:tktknkyo:20190426120253p:plain

この右側のグラデーションの数値が、そのまま半径にします。

つまり左側が中心に、右側が外側になるようにします。

左側の数値の低い部分を中心に
右側の数値の高い部分を外側に持ってくるので

円を描くようにすれば大丈夫です。

 

f:id:tktknkyo:20190426120814p:plain

0~1の数値になっていますが、黒い部分を中心に持ってきたいので
0.5を減算する事により、-0.5~0.5になり、中心に0が来るようになります。

 

次に、円を作る手段としては、三平方の定理を利用し、中心からの距離を取得します。

但し、三平方の定理には、XとYが両方必要になってくるのでGチャンネルも必要となります。

 

f:id:tktknkyo:20190426121019p:plain

三平方の定理は、高さと幅を2条し、その平方根が距離となるので

XとYを2条し、それぞれを加算のあと、平方根を出します
そうすると、中心からの距離を取得が可能となります。

この数値はそのまま半径として使用できます。

 

角度の処理を作る

次に角度を生成します。

Y軸が角度になるように処理を作りましょう

先ほどの半径は、中心からの半径を出しました

同じように、こちらは中心からの角度を出しましょう。

 

この時にピッタリなArctangent2というノードがあります。

Atan2と検索すれば出てきます。

 

f:id:tktknkyo:20190426125137p:plain

 

Atan2には、XとYの情報から開き角度を取得してくれるノードとなります。

RがXでGがYなので、合うように設定します。

上半分が真っ黒の理由は、0以下の数値になっているからです。

ほかのツールでもそうですが、Atan2は角度を0~360ではなく、-180~180で取得する事が多いので

上半分が0以下になってしまう、というワケです。

また、真っ白の範囲が広いですが、これは角度をラジアン単位で持ってきているのが原因となります。

 

ラジアン単位の場合、-180~180は、-π~π に変換されます。 

 

この状態では非常に扱いにくいので、扱いやすい数値に変換しましょう。

 

f:id:tktknkyo:20190426125544p:plain

 

左下の3.142とあるのが、πの変わりとなります。

表示上では3.142とありますが、数値的には3.141592になっています(これ以上の小数点以下は設定できないようです)

これを加算する事で、全て正の数となります。

(0~2π)

この数値を0~1にしたほうが扱いやすいので

2πで除算する事で、0~1に変換する事が可能です。

 

最終合成

 

f:id:tktknkyo:20190426130857p:plain

作った角度を半径の処理を、それぞれ合わせて、UVsに接続する事で、極座標の処理が完成します。

 

f:id:tktknkyo:20190426131122p:plain

半径の処理のみで接続すると、このようになります。

これは、RとGが同じ数値になるので、中心からの距離が同じ位置には、同じ場所の情報を参照してくる為です。

 

f:id:tktknkyo:20190426131300p:plain

角度の処理のみで接続すると、このようになります。

半径は、同じ半径の部分に同じ情報を持ってきていましたが

こちらは、同じ角度の部分に同じ情報を持ってくるのでこのようになります。

 

調整部分

最後に調整の部分です。

最初の方で、持ってくる位置の情報は、小数点以下の数値を参照して持ってくる。

とありました。

なので、この仕様を使えば、中心から外に動いたり、回したりする処理が簡単に作れます。

 

f:id:tktknkyo:20190426131822p:plain

半径の処理に、Timeで数値を加算すると、外側から中心に移動するようなスクロールとなります。

ここの数値は、そのまま中心からの距離を取得しています。

その数値が増えると、取得する距離が、どんどんと遠くなっていきます。

一番中心であれば、0→0.25→0.5→0.75→1(小数点以下取得なので0)となる為です。

 

f:id:tktknkyo:20190426132231p:plain

こちらは角度の処理にTimeで数値を加算したものです

こちらは左回りとなります。

原理的には、半径のと同じとなります。

 

原理が分かってくれば、非常に色々流用できる部分はあると思います。

 

今回はここまでとなります。

 

 

 

 

【Houdini】途中からシミュレーション結果に切り替える

f:id:tktknkyo:20190421100728p:plain

Verは17.5.173です

 

少し久しぶりな気もする、Houdiniの内容です。

タイトルの通り、途中のフレームからシミュレーション結果を読み込みます。

サムネイル見たら予想はできそうですが、RBDによるシミュレーションを今回使用しました。

 

 

具体的にはこの様なものを作りました。

 

 

 

今回の動き、最初の伸びる部分は、SOPで動きを作っています。

高さなどを、操作できるようにしておいて、キーフレームで、時間に応じて変形するように作っています。

 

今回、例えとしてBoxを使います。

 

今回の目的としては

SOPで横に移動する動きの後に
DOPのシミュレーションによって、Boxが落下してバラバラになる
というのを作ります。

 

f:id:tktknkyo:20190421102742p:plain

f:id:tktknkyo:20190421103220p:plain



Boxの下にTransformを接続し
TranlateのZを時間で動くようにしました。

当然ですが、Z軸に向かってBoxが動きます。

この後にシミュレーションも入れるので、大きめにして、宙にも浮かせています。


f:id:tktknkyo:20190421103409p:plain

シミュレーションなので、ボロノイで割る処理も追加しておきます。

Scatterのポイント数は100にしています。

 

f:id:tktknkyo:20190421103617p:plain

この時点でシミュレーションを追加します。

シェルフから作りました。

 

f:id:tktknkyo:20190421103746p:plain

DOPの中に衝突用のメッシュは置いておきましょう、特に理由がなければ
GroundPlaneで良いと思います。

 

 

f:id:tktknkyo:20190421103923p:plain

SOPに戻り、シミュレーションを確認すると、このように割れています...が
Transformによって、時間で移動させていた部分が、シミュレーション結果に入っていません。

右上のワイヤーフレームが、Transformにて移動させた部分になります。

 

 

シミュレーションに読み込む際に、最初のフレームの情報を読み込んで

そこからシミュレーションを開始する用な仕様になっている様です。

 

シミュレーションの結果の後から、動きをSOPで追加はできるのですが。
場合によっては、それでは不都合な場合がどうしても出てくると思います。

 

f:id:tktknkyo:20190421104709p:plain

なので、TimeShiftというノードを使います。

このノードの下にある三つのノードは、シェルフでシミュレーション追加したときに自動で追加されてものです。

 

f:id:tktknkyo:20190421104852p:plain

ここのFrameという部分は、何フレーム目を表示するか?を設定する事ができます。
デフォルトでは、現在のフレーム数と連動しています。

 

ここを、30の固定にすると、常に30フレーム目の情報を持ってくることができます。

今回のように接続すると
OUTの前にあるノードで30フレームの位置から、シミュレーションを開始してくれます。

 

但し、TimeShiftで表示するフレーム数を固定してしまうので。
Transformで横に動かした動きは、30フレーム目を常に取得してしまうので
横への移動が一切なくなってしまいます。

 

なので、1~29フレーム目は、Transformで動かす挙動を作ることができません。

また、シミュレーションが1フレーム目から始まってしまうので
横に移動してから、という動きも作れなくなってしまいます。

 

f:id:tktknkyo:20190421105853p:plain

TimeShiftはフレーム数を固定してしまっているので。

最初の1~29フレーム目では、TimeShiftを通らないように、この様にしました。

 

新しくOUT_simが出来ていますが

これはシミュレーションの結果を参照しやすくするために作りました。

 

switchノードによって、1~29フレームと、30フレームで読み込むノードを切り替えます。

 

f:id:tktknkyo:20190421110234p:plain

29フレーム目に設定したら、switchノードのSelectInputに0のキーフレームを打ちます。

続けて、30フレーム目に1のキーフレームを打ちます。

これにより、フレーム数により、接続情報が切り替わるようになります。

 

f:id:tktknkyo:20190421110518p:plain

切り替わるまでは出来ましたが

シミュレーションは1フレーム目から始まっていますので

動きが可笑しくなると思います。

上のBoxが29フレーム目の位置で

下のBoxが30フレーム目の位置になります。

 

これは、シミュレーションの結果を途中から表示してしまっているのが原因となります。

 

 

f:id:tktknkyo:20190421110912p:plain

これの対処の為に、もう一つTimeShiftを追加しましょう。

今回は、30フレーム目から、1フレーム目のシミュレーション結果が欲しいので

 

f:id:tktknkyo:20190421111027p:plain

$F - 29

と設定します、$Fが現在のフレーム数なので、そこから29を引き算しています。

これにより、30フレーム目にシミュレーションの1フレーム目を読み込むことができます。

 

今回はここまでとなります。

第1回 サブスタンスワークフロー会 にて登壇してきました!

タイトル通り、第1回 サブスタンスワークフロー会 にて登壇させてもらいました。

 

sd-studyosaka.connpass.com

 

こちらのイベントですね。

 

後日公開としていた、スライドとSDのファイルを公開します。

 

www.dropbox.com

 

www.dropbox.com

 

上のファイルがスライドで

下のファイルがSDのファイルとなります。