第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回の演習が未完成でも、配置済みの見本から始められます。
今回使用するファイルは、次のフォルダーにあります。
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 Bunny | Stanford University Computer Graphics Laboratory | Stanford 3D Scanning Repository | 配布元の利用条件。出典を明記した研究利用と無料の再配布が認められ、商用利用には配布元の許諾が必要です。 |
| Chomperのモデルと歩行アニメーション | Unity Technologies | Visual Effect Graph 17.6の公式サンプル | Unity Companion License。Unity向けの教材サンプルに組み込み、ライセンス文書を同梱しています。 |
| Liberation Sans | Google Corporation、Red Hat, Inc. | TextMesh Pro Essential Resources(Unity) | SIL Open Font License 1.1。フォントとSDF Font Asset、ライセンス文書を同梱しています。 |
| TextMesh Proの描画用アセット | Unity Technologies | Unityの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、エフェクト、ディゾルブ用のノイズ画像は教材用に作成したものです。