moyasiエフェクト館

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


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

このブログについて

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

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

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

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

 

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

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

 

 

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

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

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

 

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

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

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

discord.gg

 

【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のファイルとなります。

【Niagara】BPで動的にNiagaraを制御する

f:id:tktknkyo:20190410173413p:plain

Niagaraにて、BPと連動する事で、数値を動的に変える方法を一つ紹介します。

 

バージョンは4.22.0です。

 

 

まずは確認用のデータを作ります。

 

f:id:tktknkyo:20190411051528p:plain

NiagaraSystemから

 

f:id:tktknkyo:20190411051623p:plain

 

Create a new system from a set of selected emitters

から

Fountain
を選択してNiagaraSystemを作ります。

 

f:id:tktknkyo:20190411052005p:plain

 

上に向かってparticleが放出され、重力によって下に落下する動きのものが、生成されています。

 

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

少し弄ります。

 

f:id:tktknkyo:20190411052454p:plain

まずは、Calculate Size by Massのモジュールから、particleの大きさを小さくします

今回はXとYに0.25にします。

 

f:id:tktknkyo:20190411052737p:plain

次に、Colorのモジュールから色を変更します

見やすいように、今回は青色でエミッシブに高い数値を入れて発光させましょう

Bを100に設定しました。

 

f:id:tktknkyo:20190411052922p:plain

発生数が少ないと確認しにくいので

SpawnRateを1000にして、発生数を増やします。

 

f:id:tktknkyo:20190411053025p:plain

放出位置にブレ幅があり、少し確認しにくい部分もあるので

Sphere Locationの

Sphere Radiusを0に設定して、発生位置のブレ幅をなくしましょう。

 

f:id:tktknkyo:20190411053233p:plain

 

これにて確認用のparticleとしては完成です

青い粒子が、大量に上昇し、重力によって落下します。

 

 

 

 

今回は、BPで制御して、この様な動きを作りたいと思います。



今回はレベルブループリントで発生させています。

 

f:id:tktknkyo:20190411054610p:plain

単純にレベルブループリントで発生させる場合は

このようになります。

発生の基準の座標は、レベルに配置したCubeから座標を取ってきています。

 

 

ブループリントで動的に制御する場合。

まずはNiagara側で、ブループリントで制御する用のパラメータが必要になります。

 

f:id:tktknkyo:20190411055157p:plain

 

パラメータの部分の+のアイコンから出てくるメニューで

Vectorを選択し、Vector型のパラメータを追加します。

名前はUser.Locationとしました。

名前は自由と言いたい所ですが

最初のUser.までは必須なので注意です、全て小文字でも恐らく大丈夫です。

 

追加したパラメータが、ユーザーの中にあるかを確認してください。

ここの名前で判断しているようで、ここ以外の場所に入っている場合は

名前が間違っていると思われます。「.」まで必要なので注意してください。

 

f:id:tktknkyo:20190411055657p:plain

次に、作ったパラメータをNiagaraのデータ内に挿入する必要があります。

Positionをこのように書き換えます。

Engine.Owner.Position は、エフェクトを配置した座標を取ってきてくれます。

今回の場合、User.Locationで配置した座標もとってこれば不要とはなりますが。

計算をわかりやすくする為に、この用に今回は設定しておきます。

 

これにて、Niagara側での設定は完了です。

 

 

f:id:tktknkyo:20190411060322p:plain

 

今回は、円を描くように発生位置を制御したいので

この様に作りました

SinとCosを使って円を描く処理です。

また、最後にLocationの変数にSetしておきます。

 

f:id:tktknkyo:20190411060622p:plain

 

最後に、このように繋げれば完成です。

先ほどの円を描いて、Locationの変数にSetした後に

Set Niagara Variable(Vector3)

を繋ぎます。

 

また、このノードには、Niagaraそのものを発生させているノードから
Retum Valueの情報をターゲットに接続して、発生させたエフェクトと関連付けます

In Variable Nameには、Niagaraで設定しておいたパラメータ名にしておきます。

最後に、SetしていたLocationの変数をGetしてきて繋げます。

 

 

これにより、BeginPlayにてエフェクトを発生させ

その発生させたエフェクトに対して

Set Niagara Variable(Vector3)
をTickで毎フレーム処理をさせる事で

User.Locationのパラメータに毎フレーム円を描く座標を持ってきて、それを更新させます。

 

このUser.LocationはNiagara上の設定で

エフェクトを配置した座標から加算しています

それにより、配置した場所を基準にくるくる回る処理が完成しました。

 

【AE】aftereffect始めました

タイトル通り、aftereffectを触りだしました。

 

「SubstanceDesigner使ってるのに使ってなかったの?」

と思われる方居るかもしれませんが、使っていませんでした

Photoshopも同様で、aftereffectとようやく同時購入。

 

Photoshopもそうですが、aftereffect関係の記事も今後かけていけたらなと思います。

 

最初というのもあるので、少し解った作り方の基準みたいなのを。

 

作り方の基準として定番になりそうなのは

f:id:tktknkyo:20190324114624p:plain

この様なオーラをベースに使います

 

f:id:tktknkyo:20190324114717p:plain

次に、コントラストを調整します

 

f:id:tktknkyo:20190324114750p:plain

色をつけます

 

f:id:tktknkyo:20190324115054p:plain

色を調整します

 

大まかな流れはこんな感じになると思います。

 

この辺だけなら、SubstanceDesignerと作り方の根本は大差はないと思います。

 

ノイズをベースにつくる場合、SubstanceDesignerの場合

ノイズ同士をブレンドで合成して細かい調整したりする。

というのは定番になってくると思いますが。

 

aftereffectの場合は、ノイズ同士で合成するというより、ノイズのパラメータで変えていく感じになりそうです。

f:id:tktknkyo:20190324115421p:plain

タービュレントノイズ、というノイズだけでこれくらいのパターンが用意されています。

一つのノイズで出来る事が比較的多いと思われます。

 

 

また、加工したりする処理の場合

SubstanceDesignerの場合は、加工する為のノイズを使う場合は比較的に多いですが

aftereffectは加工自体にノイズ使うことは少ないと思います(今の段階では憶測でしかありませんが。)

f:id:tktknkyo:20190324115711p:plain

 

 

f:id:tktknkyo:20190324115831p:plain

また、その影響もあるのか

ノードグラフのようになっているのが、縦に並んでいます。

単純に上からの処理となっているので。

順番などは解りやすく、どこにどの処理を入れたのか?を探す手間そのものは減ると思います。

 

また、最終結果を確認しながら、ベースのノイズを変えたりして結果確認したりするのも、aftereffectでも可能です。

 

比較的にaftereffect解りやすくて便利そうというのはあるのですが。

ただ、ノイズはシームレスでは無かったりしやすいので

シームレスな加工は、別途する必要が出てきやすいとは思います。

 

シームレスに作りたいものをつくる場合は、この辺は注意したほうが良いかもしれません。

 

【GameSynth】Modularモデルで音を鳴らしてみる

f:id:tktknkyo:20190217092523p:plain

GameSynthという、効果音作る為のツールがありまして
エフェクトには効果音も欠かせないので、効果音も少しづつ作っていこうかなと思ったので、少しづつ記事を書いていこうと思います。

 

f:id:tktknkyo:20190217092644p:plain

このソフト、効果音を作る為にいくつかタイプがあります
その中でも、ノードベースでもある、Modularモデル(左から3番目)

でいろいろ作ったりしていこうかなと思っています。

 

f:id:tktknkyo:20190217092903p:plain

これはどのモデルでもそうなのですが、結構最初から沢山のプリセットが用意されています。

 

f:id:tktknkyo:20190217093122p:plain

最初からあるプリセットでも、特に複雑そうなのがこちら

ノードの色分けがある分かなり解りやすいと思います。

 

f:id:tktknkyo:20190217093333p:plain

簡単に音を鳴らす場合だけれあれば、緑色のノードから黄色のOutputに繋げましょう

 

f:id:tktknkyo:20190217093949p:plain

ノードは右クリックから出すことができます、一番上にある【Audio Generation】は一番基本となる音源です。

 

いろいろプリセットを見ているとよくあるのが、この音源の上にある水色のノードは緑色の音源そのものを加工するイメージでしょうか。

 

f:id:tktknkyo:20190217094319p:plain

例えばこの、Noiseの音源のみ再生した場合
Noiseのノード自体で調整出来るパラメータこそありますが、全体の音量や、音の長さなどしかありません。

 

f:id:tktknkyo:20190217094514p:plain

そこで、調整するノードである【Envelope】を繋げます、これは音量のカーブを作る様なノードになっています。

デフォルトでカーブが入っているので、繋ぐだけで、一定音量のみだったNoiseの音量に、フェードイン、フェードアウトを追加する事ができます。

 

f:id:tktknkyo:20190217094747p:plain

ノードベースを普段から使っている方なら、大体想定出来るとは思いますが、当然ながら、この一つの音量のフェードイン、フェードアウトの情報を、他のノードと共有する事ができます。

赤色のノードは、受け取った音源を後から加工するイメージで大丈夫と思います。

 

f:id:tktknkyo:20190217095321p:plain

例えばこのようにすれば、同じフェードイン、アウトのカーブを共有した二つのノイズを混ぜた音、となります。

 

今回は短いですがこの辺で。

またいろいろわかってきたら記事を書いていきたいと思います。

【SD】歪み機能を作ろう

f:id:tktknkyo:20190103110045p:plain

今回はSubstanceDesignerで歪み機能を

Verは2018.2.0です

 

【どういう処理を作るか】

ワープ系での歪ませるものだと、若干イメージが湧きにくいので

エフェクトを作るツールでよく見る、RとGの情報をそれぞれX,Yに置き換えて動かす処理を作ります。

 

 

f:id:tktknkyo:20190103111146p:plain

ノードの全体図はこんな感じになります。

 

f:id:tktknkyo:20190103111258p:plain

パラメータはFloat型のこの一つのみになります。

移動量の量を調整する用のパラメータです。

 

f:id:tktknkyo:20190103111454p:plain

インプットノードは、グレースケールとカラースケールを一つづつ。

グレースケールは、歪ませる元の情報で、カラースケールは、歪ませるのに使用する情報です。

 

f:id:tktknkyo:20190103111618p:plain

チャンネルのこのノードを使い、RGBAを分離させます、今回はRとGしか使いません。

 

f:id:tktknkyo:20190103114529p:plain

まずは、Rチャンネルの0.5を越える数値を持ってきます。
今回はpixel Processorで処理します。

 

f:id:tktknkyo:20190103122035p:plain

Pixel Processorの中身はこうなっています。

非常に単純な計算です、まず0.5を引き算する事で、移動量として使わない部分が全て0以下になります。(-0.5~0.5)

その後、2倍にすることで、-1~1になります。
Pixel Processorの外に出ると、0~1に切り取られるので、これをそのまま、右方向への移動にします。

 

f:id:tktknkyo:20190103123339p:plain



あとは、Directional Warpで、角度を180に設定して右方向にしてから

※処理が分かりやすいように、ベースと、歪みに使うノイズを表示しています。

※処理がわかりやすいように、Levelの強さを50に設定しています。

 

f:id:tktknkyo:20190103123042p:plain

Intensityには、このノード自体に作ったLevelを入れておきます。
これで右方向は完了です。

 

 

あとは、これを各方向にしていくだけです、次は左方向

f:id:tktknkyo:20190103124323p:plain

Pixel Processorの中身はこうなりました。
赤枠が追加したノードです。

これにより、0~1の数値が反転した状態になりました。

 

f:id:tktknkyo:20190103124458p:plain

後は、角度を変更して終了です。

 

次は上にずらす処理です。

f:id:tktknkyo:20190103124635p:plain

右にずらした処理を複製して、RではなくGチャンネルから情報をとってきた後に。

DirectionalWarpで上方向に設定します。

 

 

f:id:tktknkyo:20190103124813p:plain

上方向を作ったのと同じ容量で、左に移動している処理を複製して、
下方向へ移動させるようにします。

 

 

f:id:tktknkyo:20190103124943p:plain

最後に、この移動を全て繋げれば完成です。

 

今回はここまでです。

今回はちょっとした小ネタみたいになりましたが、エフェクトを作っている方には馴染み深い処理かなと思いますので、使っていただけたら幸いです。