Skip to content

第14回 メッシュ表面からのパーティクル生成 ​

第13回では、大量にパーティクルを生成することでエフェクトを作成しましたが、その際のパーティクルの生成位置は簡素な範囲設定でした。
計算での生成位置決定では、表現力に限界があります。

VFX Graphでのパーティクル生成は、メッシュなどの複雑な形状からも行うことができます。
今回はウサギに毛を生やす表現を通して、生成位置の操作とパーティクルの応用を学びます。

さらにパーティクルは、生成元となったメッシュ状の情報と連携させることで、より高度な表現が可能です。
ここではテクスチャーを使用したメッシュのディゾルブ表現とパーティクル生成を組み合わせることで、粒子の中に消えていくエフェクト表現を実装します。

配布プロジェクト ​

Unity 6.6(6000.6.0f1)、URP・Visual Effect Graph 17.6.0を使用します。授業用のEffectPracticeプロジェクトを開き、現在のSceneとプロジェクトを保存してください。初回の環境準備は配布ファイルを参照します。

第14回のUnity Packageをダウンロードし、UnityのAssets > Import Asset Packageから取り込みます。項目を全て選択し、ImportまたはImport Anywayを押してください。詳しい操作は共通の取り込み手順を参照します。

Packageには毛、メッシュ表面の粒子、ディゾルブ、Skinned Meshへの追従の4つの見本と、依存素材・ライセンス文書を含みます。第13回の演習が未完成でも、配置済みの見本から始められます。

今回使用するファイルは、次のフォルダーにあります。

text
Assets/UNSLOW/EffectPractice/Lessons/SecondTerm/14_MeshSurface/
  Scenes/
    MeshSurfaceFur.unity
    MeshSurfaceComparison.unity
    MeshDissolveShowcase.unity
    SkinnedSurfaceFur.unity
  Effects/
    MeshSurfaceFur.vfx
    MeshSurface.vfx
    MeshDissolveBoundary.vfx
    SkinnedSurfaceInitialize.vfx
    SkinnedSurfaceFollow.vfx
  Meshes/
    FurStrand.asset
  Materials/
    FurBody.mat
    SkinnedFurBody.mat
    MeshDissolve.mat
  Shaders/
    MeshDissolve.shader
  Scripts/
    MeshDissolveDemo.cs

まずScenes/MeshSurfaceFur.unityを開き、Playしてください。左から100本、2,500本、10,000本の毛を配置したウサギが回転します。根元が表面からずれないことと、密度による輪郭の違いを観察しましょう。

長さと太さをそろえ、毛の本数だけを変えた見本です。一本の形と向きが分かるように、毛を太めに描画しています。

この回のゴール ​

  • メッシュ表面の位置と法線を取得し、パーティクルの位置と向きに使える。
  • 表面に固定した毛を描画し、密度・長さ・太さを目的に合わせて調整できる。
  • 生成した場所を保存し、Skinned Meshの変形へ毛を追従させられる。

今回のポイント ​

メッシュを構成する三角形から位置を選び、同じ場所の法線を取得します。法線は表面の向きを表すベクトルです。位置を毛の根元に、法線を毛の伸びる向きに使うと、モデルの形に沿って毛を配置できます。

毛は生成後も根元を保ち、消滅時の粒子は生成した場所から離れていきます。同じ表面の情報を、用途に応じて使い分けましょう。

制作の手順 ​

完成条件 ​

演習用に複製したSceneとGraphで、ウサギの表面に毛を配置してください。密度・長さ・太さのうち一つを変え、予想した違いと実際の表示を比較します。選んだ設定と、その理由を説明できれば基本課題の完成です。

Skinned Meshの演習では、生成場所を保存したGraphにUpdateのSet PositionとSet AxisYを追加し、変形へ追従できることを確認します。

ディゾルブは応用課題です。見本の「メッシュのみ」「境界の粒子のみ」「併用」を比較し、同じ境界を使う理由を確認してください。

ライセンス ​

アセット作者提供元ライセンス
Stanford BunnyStanford University Computer Graphics LaboratoryStanford 3D Scanning Repository配布元の利用条件。出典を明記した研究利用と無料の再配布が認められ、商用利用には配布元の許諾が必要です。
Chomperのモデルと歩行アニメーションUnity TechnologiesVisual Effect Graph 17.6の公式サンプルUnity Companion License。Unity向けの教材サンプルに組み込み、ライセンス文書を同梱しています。
Liberation SansGoogle Corporation、Red Hat, Inc.TextMesh Pro Essential Resources(Unity)SIL Open Font License 1.1。フォントとSDF Font Asset、ライセンス文書を同梱しています。
TextMesh Proの描画用アセットUnity TechnologiesUnityのTextMesh Pro Essential Resources同梱のUnity Companion LicenseとUPMの利用規約を参照してください。

サンプルのウサギは既存モデルのMeshを複製し、高さを2 Unity units、底面をY=0にそろえています。モデルとライセンス文書はAssets/ThirdParty/Stanford、フォントとその利用規約はAssets/TextMesh Proにあります。Stanford BunnyはCC0ではありません。Chomperのモデル、歩行アニメーション、出典と利用条件はAssets/ThirdParty/Unity/VFXGraph/Lesson14Skinnedにあります。モデルとアニメーションは変更せず、比較SceneでMaterialと大きさを設定しています。毛のMesh、エフェクト、ディゾルブ用のノイズ画像は教材用に作成したものです。