チュートリアル / 3ds Maxではじめるエフェクト制作
第1回:Particle Flow 基礎
- 3ds Max
- エフェクト
- コラム
- チュートリアル
- 学生・初心者
初めまして、トリプルアディショナル小張です。
色々とエフェクトに関して書いていこうと思っています。
初回はエフェクト作成にて、様々な場面で使用することになるParticle Flowの基礎的な使い方を説明していきます。
※今回の使用ツール:3ds Max 2018
初めての方にとっては一見ハードルが高そうに見えるかもしれませんが、基本的なルールだけを知ってしまえば、非常に簡単に操作していけます。
特にParticle Flowを使用するメリットとしては、他のパーティクル機能である程度複雑なことをさせようとしたときに、キーフレームが増え、ちょっとしたタイミングの修正も大変になりがちですが、Particle Flowでは少ないもしくはキーフレーム無しでも完結させていけるところでしょうか。
まずはParticleFlowのルールについて。
Particle Flowはイベント形式と言われ、例えばパーティクルがある一定の寿命を越えた時点で次のイベントに送って別の動きを付けるといった感じで作成していきます。
まず、必ず必要になるのがグローバルイベントと呼ばれるもので、フローをドラッグ&ドロップして作成します。
次にオペレーターの組み合わせでイベントを作り、必要に応じてテストを挿入し別のイベントに送ります。
基本的に、この作業の繰り返しで構築していきます。
実際に作っていってみましょう。
以下のようなパーティクルアニメーションを作っていこうと思います。
以降青文字部分は何のために作業したかの解説になります。
Createパネル→Particle System→PF Sourceで、SetupのPartice View をクリックで開く。
もしくは
Keyboard Shortcut Override Toggle がオンの場合は「6キー」を押して、particle Viewを開きます。
とりあえず、Standard Flowをドラッグ&ドロップしてみます。
グローバルイベントとイベントで構成された、基本的なセットが作成されます。
さらにオペレーターが必要な場合はドラッグ&ドロップで追加、不要なものはデリートしていきます。
必要に応じてテストを挿入し、既存のイベント以外の部分へオペレータをドラッグ&ドロップし新しいイベントを作成し繋いでいく。
基本的なParticle View での操作はそれだけです。
ゼロから作りたい場合はEmpty Flowをドラッグ&ドロップします。
Speed(速度)は、今回はフォースのみで動きを付けようと思うので不要なためデリートします。
Speed 001を選択した状態でDeleteキーを押すか、右クリックでDeleteを選択します。
Rotation(回転)は、パーティクルの回転方向になります。ワールド軸に対してや速度に沿わせたりなどありますが、追々必要になった場合にまた足せばよいので削除してしまいます。
次に、もっと大き目で多少厚みのある発生源にしようと思うので、PF Source 001を選択してIcon type
をBoxに変更。
Length widthを共に100。heightを2.0に変更しました。
その他のオペレーター説明
Birth(発生)はパーティクル自体の発生なので、このまま使用します。
Position Icon(位置アイコン)は、PF Sourceのアイコン自体を発生源にするものです。
これもこのまま使用しました。
Shape(シェイプ)は、パーティクルのレンダリング時の形状です。
これは、とりあえずそのまま保持しておいます。
Display(表示)は、ビューポート上での表示方法です。デフォルトではTicsという十字のようなもので表示されます。レンダリング時の形状で表示したい場合はGeometry(ジオメトリ)に変えて上げます。
DisplayをGeometryにすると、現状ではShapeで指定されているCubeが表示されます。
次にフォースを加えてみましょう
まずCreateパネル→Space Warps→Forces→Motion Fieldsをビューポートの任意の位置でドラッグして Motion Fieldsを作成します。(Motion FiledsはMax2018.3以降より搭載されています。)
Particle Viewに戻り、フォースを選択しイベントへドラッグ&ドロップします。
次に、そのフォースを選択した状態でForce Space WarpsにあるAddをクリックして、ビューポートから先ほどのMotion Fieldsを追加します。
さらにInfluienceの値をデフォルトの1000%から100%に変更します。
ここまで出来たらMotion Fieldsの設定をしていき、望む動きになるまで調整していきます。
さらにイベントを構築していきます
次にCollision(衝突)を作成して、地面のようなものを用意しパーティクルが下方に行かないようにしていきます。
Collision(衝突)自体はテストに相当するものですが、今回は別のイベントに送信させず通常のオペレーターとして使用します。
Createパネル→Space Warps→Deflectors→Deflecftorをビューポートの任意の位置でドラッグして
Deflecftorを作成します。
Particle Viewに戻り、イベントにCollisionをドラッグ&ドロップ。
フォースの時と同様に、そのCollisionを選択した状態でAddからDeflectorを追加してあげます。
そうするとDeflectorの位置でパーティクルが跳ね返り、下方に行かなくなるのが確認できるかと思います。
バウンドさせず、滑っていくようにしたいのでDeflectorのBounceを0にしてあげます。
細かな調整をしていきます。
現状ではパーティクルのサイズが全て同じためランダムさを出していきます。
さらにサイズに応じてフォースのかかり具合を変え、小さいパーティクルから飛ばされていくようにします。こちらに関してはTutorialにあるスクリプトをそのまま使用させて頂きました。
加えて、流れるように動いて見えるように方向に沿わせたスピンも加えていきます。
まずScaleをイベントに追加します。
サイズからの効果を調節していった結果、Scale Factorを200。Scale Variationを400。
大きくなりすぎなのでShapeの方でSizeを0.5にしました。
次にScript Operatorをイベントに追加。
Edit ScriptでスクリプトエディターにTutorialにあるスクリプトをコピペします。
on ChannelsUsed pCont do ( pCont.useScale = true pCont.useFloat = true ) on Init pCont do () on Proceed pCont do ( count = pCont.NumParticles() for i in 1 to count do ( pCont.particleIndex = i pCont.particleFloat = 1.0/(pCont.particleScale^3) ) ) on Release pCont do ( )
Foeceにスクリプトを影響させるため、Forceを選択。右クリックしてUse Script Wiringを適用します。
Influenceにチェックが付いてることを確認します。
そうすると、小さいパーティクルから先に飛び散っていくのが確認できるかと思います。
さらにSpinを追加し、Speed Space Followにします。
ShapeもCircle12に変え、0フレ目でパーティクルが発生しきるようにBirthも調整しました
テストを使用してみます。
このままだとあまり変化がないので、あるタイミングで一気にパーティクルが吹き飛ぶようにしてみます。今回はAge Testを使用して140フレーム目で次のイベントに送り、そのイベントで一気に吹き飛ぶようForceを加えてみました。
まずAge Testをイベントに加えます。Absolute Ageにし変えtest値を140としてあげます。
次にイベント以外の空きスペースへForceをドラッグ&ドロップし別のイベントを作成します。
さらに、Createパネル→Space Warps→Forces→Windで任意の位置にWindを作成します。
先ほどのForceにWindを追加し、influenceを100%に変更しました。
そこまで出来たらWindを調整し、一気に吹き飛ぶようしていきます。
このイベントでも地面より下に行かないよう、Event01のCollisionをドラッグ&ドロップしインスタンスコピーします。
最後にパーティクルの量を増やし(BirthのAmountを5万に変更)
グローバルイベントにマテリアルを追加しました。
(グローバルイベントにオペレーターを追加すると、全イベントに共通のオペレーションが加えられます。)
さらにCache Diskを加えたシーンを用意したので、任意のフォルダーにキャッシュを取って頂ければ確認しやすくなるかと思います。
次回はmParticles Flowを使用してリジッドボディーを作成していきます。
今回のシーンファイルがダウンロードできます。