たぬの技術のメモ帳

Unity、Vroid、3DCGとかのこと書いていきます。

【Unity】MeshEffectsを使って、Vroidモデルに武器を持たせて動かし撮影しよう!

 

f:id:tanuh_yy:20210803214702p:plain

 

Unity アセット真夏のアドベントカレンダー 2021 Summer!」 10日目の記事です。

 

9日目はkakoさんの「ShapesでDOTweenのすゝめ」です。

明日はAmeoさんの「Curvyを使って3D横スクロールステージを作ろう!」です。

 

はじめに

 

 

プロジェクトの作成から「MeshEffects」を導入し、Vroidモデルに武器を持たせ動かし、撮影する方法を紹介します。
※Vroidモデルは他のモデルに変更することも可能です。

 

 

はじめまして、Unity等を使って自主制作アニメーションをしている、たぬと申します。 

 

 

本記事では次のとおりの環境下で行います。

Unity初級者向けを想定しております。

  1. Unity 2019.4.16
  2. Mesh Effects 1.4.1
  3. UniVRM-0.66.0_39d5(Vroidモデルを使用する場合)
  4. Post Processing Stack 3.0.3
  5. Recorder 3.0.1

1.「MeshEffects」の概要

リッチなエフェクトが簡単に実装できてしまう、素晴らしいアセットです。

以下、公式の動画になります。

 

youtu.be

 

かっこいいですね。

こういったことを自分の好きなモデルできないものかと考えてしまいます。

「MeshEffects」なら、そんな願いをすぐ叶えてくれます。

 

アセットストアの「MeshEffects」のページを見ておきましょう。

 

 

このパッケージには 21 のメッシュエフェクトが含まれています。

注:アップグレードする前に、古いバージョンのパッケージを削除する必要があります。

URPHDRP には、プロジェクトフォルダに含まれているインポートパッチが必要です。Unity 2019.2.19f 以降で利用可能な URP および HDRP レンダリング

PC / コンソール / Motules / VR に対応しています。
2D スプライトでは動作しません

PC デモ
モバイルデモ

- 購入後そのまま使用可能(ドラッグアンドドロップのみ)
- どんな色もワンクリック
- 実際のメッシュサイズに対するエフェクトスケール
- 「メッシュレンダラー」と「スキンメッシュレンダラー」で動作
- デモシーンには(アニメーション / キャラクター / 武器 / 環境)が含まれます
重要!Unity3d はサブメッシュ当たり 1 つ以上のマテリアルはサポートしません。正しく機能させるには、サブメッシュを分割する必要があります。

(AssetStoreからの引用文)

 

 とありますように、

21種類のメッシュエフェクト

・Built-in RPに加え、URPHDRP で使用可能

PC / コンソール / Motules / VR に対応

 

Timeline上でモーションやエフェクトに手を加えたり、テクスチャを変更することで大きく表現の幅が広がり、ゲーム内でのカットシーンでも活躍することでしょう。

 

2.「プロジェクト」の作成

3Dを選択し、お好きなプロジェクト名を入力してください。保存先を選び、作成をクリックしてください。

f:id:tanuh_yy:20210729183029p:plain

本作業では、レイアウト下記のように配置しています。レイアウトが設定については、次をご参照ください。

 

freesworder.net

右上から「2by3」を選択します。

f:id:tanuh_yy:20210729183653p:plain

f:id:tanuh_yy:20210729183807p:plain

 

上記のようになれば、成功です。

 

3.「MeshEffects」の導入

AssetStoreのウィンドウを表示させます。

f:id:tanuh_yy:20210729184343p:plain

検索から「MeshEffects」を入力、検索してでてきたものをクリックすると

f:id:tanuh_yy:20210729184514p:plain

※記事作成時にセールだったため、価格が半額で表示されています(20210730)。

f:id:tanuh_yy:20210729184726p:plain

「Import」画面がポップアップされますので、「Import」をクリックしてください。購入されてない方は購入してください。

f:id:tanuh_yy:20210729185052p:plain

「Import」をクリックしてください。すぐに「Import」されますので、完了までしばらくお待ちください。

 

4. デモシーンの確認

1.AssetStoreの画面はいらないので、Sceneに切り替えます。

2.プロジェクトのファイルが見づらいので〇を「←」によせておきます。また、レイアウトを微調整していきます。このあたりはやりやすいようにお好きにしてください。

3.「Impot」に成功していると、「KriptoFX」というフォルダができているはずなので、

「KriptoFX」→「MeshEffect」と開きます。

4.「PC_Demo」を選択します。

f:id:tanuh_yy:20210729185734p:plain

 

f:id:tanuh_yy:20210729190358p:plain

 

f:id:tanuh_yy:20210729190745p:plain

「Please read the readme :) 」とのことなので、ReadMeを読んでおきましょう。

今回の記事で必要な部分の要点をまとめますと 、

・正しく動作させるには"\Assets\KriptoFX\MeshEffect\PostProcess Profile.asset"を導入して、デモシーンのようにします。

EffectのPrefabをエフェクトをつけたいオブジェクトにドラッグアンドドロップします。次に、設置したメッシュオブジェクト"PSMeshRendererUpdater"の "Update Mesh Renderer"をクリックします。

そうすると、パーティクルとマテリアルが自動でオブジェクトに追加されます。

 

まず、さっそく再生ボタンをクリックして、プレイしてみましょう。

f:id:tanuh_yy:20210729191214p:plain

エフェクトが適応された剣を振り回す男「Character(Clone)」と球「TestSphere(Clone)」が表示されるはずです。

 

f:id:tanuh_yy:20210729191608p:plain

 左側の赤〇部分で、色の変化やエフェクト21種類をプレビューできますので、お試しください。

 

この状態では問題があります。

一度再生をやめて、ヒエラルキーの「PostProcessing」を選択してください。

f:id:tanuh_yy:20210729193308p:plain

ScriptがMissingとなっていますので、「PostProcessingStack」を導入することで、解決します。

「PostProcessingStack」は、画面に様々な変化を与えてくれる機能です。

 

※詳しく知りたい方は下記URLをご参照ください。

docs.unity3d.com

 

creator.cluster.mu

 

 

5. 「Post Processing」の導入

1.「Window」→「PackageManager」を選択します。

f:id:tanuh_yy:20210729193810p:plain

左上の部分がUnityRegistryになっていることを確認し、検索タブに「post」と入力します。

f:id:tanuh_yy:20210729193958p:plain

f:id:tanuh_yy:20210729194202p:plain

上記のように表示されているのを確認し、「Install」をクリックします。

 

f:id:tanuh_yy:20210729194826p:plain

ScriptがMissingが「Post-processVolume」と表示されるようになっています。

 

 

ConsoleにErrorが出続ける場合があります。次のように対応してください。

NullReferenceException: Object reference not set to an instance of an object.
UnityEngine.Rendering.PostProcessing.AmbientOcclusion.IsEnabledAndSupported
.」のErrorが出た場合の対処法

 f:id:tanuh_yy:20210729202823p:plain

ヒエラルキーから「Camera」→「Camera」を選択、「Post-processLayer」を「RemoveComponent」します。

f:id:tanuh_yy:20210729203406p:plain

 「AddComponent」で「Post」と入力し「Post-processLayer」を追加し、

f:id:tanuh_yy:20210729203308p:plain

f:id:tanuh_yy:20210729204230p:plain

1.「Layer」「Default」を一時的に設定します。 

 

2. 「Anti-Aliasing」に「SMAA」を設定します。

スペックや状況に応じて設定してください。スペックが低い場合は「FXAA」をおすすめします。

 

それぞれの設定は下記のとおりになっています。

  • Fast Approximate Anti-aliasing (FXAA) - モーションベクトルをサポートしないモバイルとプラットフォーム向けの高速アルゴリズム
  • Subpixel Morphological Anti-aliasing (SMAA) - モーションベクトルをサポートしないモバイルやプラットフォーム向けの、高品質だが低速のアルゴリズム
  • Temporal Anti-aliasing (TAA) - モーションベクトルを必要とする高度な技術。デスクトップとコンソールプラットフォームに最適。

 creator.cluster.mu

docs.unity3d.com


 

次にヒエラルキーにある「PostProcessing」→「Post-processVolume」を「RemoveComponent」します。

f:id:tanuh_yy:20210729224726p:plain

 

  「AddComponent」で「Post」と入力し「Post-processVolume」を追加します。

f:id:tanuh_yy:20210729224938p:plain

f:id:tanuh_yy:20210729195703p:plain

プロジェクトの「MeshEffect」内にある「PostProcess Profile」を「None(PostProcess Profile)」にドロップ&ドラッグします。

f:id:tanuh_yy:20210729195750p:plain

 

f:id:tanuh_yy:20210729200711p:plain

「Is Global」にチェックをいれましょう。

 

成功すると、赤まるのColorGradingBloomが追加されます。「AddEffect」をクリックすると、他のエフェクトが追加できますが、今回は追加せずにいきましょう。

 

※いろいろ弄りたい方は、下記URLをご参照ください。ほかアセットでも追加できますので、ぜひ色々なポストプロセスを楽しんでください。

 

docs.unity3d.com

  
再生して、Errorが出ないことを確認してください。

 

f:id:tanuh_yy:20210729225418p:plain

 

※参考にさせていただいたもの

kamishirolab.com

 

6. Vroidモデルの導入

 Vroidモデルを導入するために、UniVRMを導入します。

モデルを、アセットストアやMixamo等で導入する方はアセットストアから適宜Importしてください。

下記URLの最下部にある、

github.com

f:id:tanuh_yy:20210730152450p:plain

UniVRM-0.66.0_39d5.unitypackage」を導入します。ダウンロードし、デスクトップ等に保存したら、

画面上から「Assets」→「ImpottPackage」→「CustomePackage」を選択します。

f:id:tanuh_yy:20210730152841p:plain

先ほどダウンロードした、「UniVRM-0.66.0_39d5.unitypackage」を選択して、

f:id:tanuh_yy:20210730153229p:plain

「Import」します。

f:id:tanuh_yy:20210730153439p:plain

上記の3つのフォルダが追加されます。

続いて、モデルを保存するためのフォルダを作成します。

プロジェクトの「Assets」上で右クリック→「Create」→「Folder」を選択します。

f:id:tanuh_yy:20210730152121p:plain

「NewFolder」というフォルダが作成されますので、とりあえず、「Vroid」と命名しておきます。

f:id:tanuh_yy:20210730153804p:plain

あらかじめ「VroidStudio」等から、モデルをVRM形式でエクスポートしておきます。f:id:tanuh_yy:20210730154443p:plain

なお、今回はHulaFlatWorks様の衣装をお借りしております。

hulaflat.booth.pm

※VroidStudioでのモデルの説明ついては下記をご参照ください。

vroid.com

 

「Vroid」フォルダを選択した状態で、

f:id:tanuh_yy:20210730154130p:plain

エクスポートしたVRM形式のファイルをドラッグアンドドロップします。

f:id:tanuh_yy:20210730154941p:plain

Importに時間がかかりますので、しばらく待ちます。成功すると下記のようにファイルが生成されます。

f:id:tanuh_yy:20210730155140p:plain

青い箱のPrefabの「YB_Gospan」をヒエラルキードラッグアンドドロップします。

そうすると、下記のように表示されるはずです。

f:id:tanuh_yy:20210730155539p:plain


一度シーンを再生してみましょう。

f:id:tanuh_yy:20210730160111p:plain

「Tポーズ」を取ったモデルが画面に表示されれば、Importは成功しています。

 

7. モーション、エフェクト、武器の確認・設定

ではここから、デモシーンのようにキャラクターのように武器を持たせ動かしたいと思います。

 

一度再生してみて、デモシーンのキャラクターがどのような振る舞いをしているのか、「Inspector」を見てみましょう。

f:id:tanuh_yy:20210730161529p:plain

アニメーションシステムをコントロールしている「Animator」という「Component」の「Controller」に「Anim1」というものが設定されています。

 

また、「ME_AnimatorEvents」のなかの、

 

「EffectPrefab」に「Effect1」

「SwordPrefab」に「Dragonblade」

 

が設定されています。それぞれをクリックしてみましょう。

 

「Effect1」

1~21のエフェクトのPrefabが「MeshEffects>Prefabs>PCDemos」に格納されているがわかりました。

f:id:tanuh_yy:20210730161810p:plain

 

「Dragonblade」をクリックするとシーン上に選択された状態になり、「MeshEffects>DemoResources>Prefabs」に格納されていることがわかりました。

f:id:tanuh_yy:20210730162042p:plain

 

順にこの3つをモデルに配置すれば、同じようなことができそうです。

では、やってみましょう。

 

 

モーションの設定

プロジェクトの「MeshEffects>DemoResources>Animation」を開きます。「Animator」Windowが表示されます。

 

「Anim1」

f:id:tanuh_yy:20210730165030p:plain

 

「Anim2」

f:id:tanuh_yy:20210730165126p:plain

のように設置されています。

 

「Anim2」を元に新たな「Controller」を作成します。

「Anim2」を選択した状態で、「Ctrl+D」を押して、ファイルを複製します。

f:id:tanuh_yy:20210730165632p:plain

「Anim3」が生成されます。そこに、AnimationClipファイルである「SwordRotating 1」をドラッグアンドドロップします。

 

f:id:tanuh_yy:20210730170204p:plain

以下のようになります。

f:id:tanuh_yy:20210730170516p:plain

橙色の「idle」の上で右クリックをします。

f:id:tanuh_yy:20210730170632p:plain

「MakeTansition」を選択します。

f:id:tanuh_yy:20210730170740p:plain

→が表示されますので、「SwordRotating 1」を選択し、上記のようにつながった状態にします。

 

 

f:id:tanuh_yy:20210730163155p:plain

ヒエラルキーの「YB_Gospan」を選択し、インスペクターの「Animator」の「Component」を確認します。

「Controller」が「None」になっていますので、●をクリックして、「Anim3」 を選択します。

f:id:tanuh_yy:20210730171921p:plain

選択後、再生してみましょう。

f:id:tanuh_yy:20210730172046p:plain

このように、Animationの矢印が遷移し、Game画面で剣を振り回す動作「SwordRotating 1」をしていれば、「Animator」の「Controller」の作成は完了です。

このように、AnimationClipを追加していけば簡単にモーションを追加していけれます。アセットストアには無料有料の様々なモーションがおいてありますので、ぜひチャレンジしてください。

 

なお、本記事投稿日時点で、アニメーションアセットが無料(2021/08/16まで)になりますので、ぜひ入手されることをおすすめします。

クーポンコードの入力をくれぐれをお忘れないようにしてください。

 

 


Animatorの詳しい使い方については下記をご参照ください。

light11.hatenadiary.com

 

「ReadMe」の文字も必要ないと思いますので、ヒエラルキーからチェックを外しておきます。

f:id:tanuh_yy:20210730172547p:plain

 

 武器の配置

プロジェクトから「dragon」と検索し、「Dragonblade」のPrefabを見つけ、

f:id:tanuh_yy:20210730174007p:plain



f:id:tanuh_yy:20210730174801p:plain

「YB_Gospan」の「Root」から順に開いていき「J_Bip_R_Hand」「Dragonblade」ドラッグアンドドロップします。

f:id:tanuh_yy:20210730175047p:plain

「Dragonblade」が離れた位置にありますので、

f:id:tanuh_yy:20210730175228p:plain

f:id:tanuh_yy:20210730175301p:plain

PositionをすべてXYZの値を0にします。そうすると、以下のように表示されます。

f:id:tanuh_yy:20210730175403p:plain

Tポーズを取ったモデルの右手(「J_Bip_R_Hand」)の上に剣が載っているかたちになります。

一度、再生をしてみましょう。

f:id:tanuh_yy:20210730175613p:plain

武器がそのまま右手首あたりの上のままあった状態で、モーションが再生されているので、隣のキャラクターのように剣を握っているようになりません。

 

では、剣を握っているように微調整をしていきます。

f:id:tanuh_yy:20210730180732p:plain

 

アバターの身長や腕の長さで位置はかわってきます。

右手の親指の下あたりに剣の柄がくるといい感じに握ってくれます。以下、本アバターにおいての数値です。

PositionやRotation、Scaleを使って修正してください。

f:id:tanuh_yy:20210730180827p:plain

一度、再生して、

f:id:tanuh_yy:20210730180934p:plain

しっかり握れていることを確認します。

 

 エフェクトをつける

 長い道のりでした。大変お疲れ様です。

では、本記事の目的であるエフェクトをつけましょう。

ご自分の好きなエフェクトを1~21の中からお選びください。

f:id:tanuh_yy:20210730182032p:plain

私は火遊びが大好きなので、「effect7」を選びます。

 「MeshEffects>Prefabs>PC Effects」からお好きなEffectを「Dragonblade」にドラッグアンドドロップします。

f:id:tanuh_yy:20210730182252p:plain 

ヒエラルキー上の「Effecr7」を選択し、

f:id:tanuh_yy:20210730182703p:plain

インスペクター上の「PSMeshRendererUpdater」の「MeshObject」「Dragonblade」をドラッグアンドドロップします。

 

そして、「UpdateMeshRenderer」をクリックします。

f:id:tanuh_yy:20210730183118p:plain

成功すると、剣から火を出てきます。

お選びいただいたEffectごとでシーンに再生されるものは変わります。

 

8. デモシーンでの再生

では、シーンを再生してみましょう。

f:id:tanuh_yy:20210730183505p:plain

f:id:tanuh_yy:20210730183611p:plain

Colorを弄ることで炎の色をかえることができます。

f:id:tanuh_yy:20210803214014p:plain

蒼炎というものをやってみたかったので、青色にして、再生してみます。

 

f:id:tanuh_yy:20210730184441p:plain

 

youtu.be

 

以上、お好きなようにカスタマイズしてエフェクトを楽しんでください。


EffectのPrefabのなかのパーティクルなどを弄ることで、より細かな演出に拘ることができます。

f:id:tanuh_yy:20210730184712p:plain
パーティクルシステムについては下記をご参照ください。

docs.unity3d.com

 

 

 

9. Recoderで撮影する

せっかく武器も持てて、モーションできたのに綺麗に撮影ができなければもったいないですね。

 

 参考:

dkrevel.com

 

撮影をしてみましょう。

1.「Window」→「PackageManager」を選択します。

f:id:tanuh_yy:20210801215353p:plain

2.「Recoder」と入力し、「Install」を選択します。

f:id:tanuh_yy:20210801220249p:plain

3.しばらくImportの時間がかかりますので、待ちます。完了したら、PackageManagerを閉じます。

4.「Window」→「General」→「Recorder」→「RecorderWindow」を選択します。

f:id:tanuh_yy:20210801221038p:plain

5.「Recording Mode」を「SingleFrame」に変更します。

f:id:tanuh_yy:20210801221353p:plain

6.「ImageSequence」を選択します。(Movieを選択すれば動画も撮影できますが本記事では割愛いたします)

f:id:tanuh_yy:20210801221525p:plain

7.OutputResoulutionを選択します。FHDを選択します。

f:id:tanuh_yy:20210801221751p:plain

8.FormatをJPGからPNGに変更します。

f:id:tanuh_yy:20210801221955p:plain

9.初期設定では、保存されるファイルの名前は「image<Take><Frame>+Wildcards.png」で保存されます。

保存先は、プロジェクトのあるフォルダにRecordingsというフォルダが作成され、保存されます。

※変更したい方は変更してください。

赤●のところをクリックすると保存先が開くことができます。

f:id:tanuh_yy:20210801222217p:plain

10.シーンビューのFreeAspectをクリックし、「(Recordings resolution)(1920x1080)」に変更します。

f:id:tanuh_yy:20210801222929p:plain

11.再生します。GameWindowを大きくして撮影しやすくします。ひとまずこの状態で、撮影してみます。

f:id:tanuh_yy:20210801223924p:plain

12.「STARTRECORDING」をクリックすると、その瞬間が撮影されます。

f:id:tanuh_yy:20210801224402p:plain

先ほどの赤〇をしている保存先のフォルダを開いてみて、確認してみましょう。

左上のUI操作の部分も撮影されています。

それは「Source」が「GameView」になっているため、「GameView」そのままが撮影されてしまいます。

f:id:tanuh_yy:20210801224149p:plain

色々な方法で解決できますが、今回は「Source」を変更することで解決します。

「Caputure」の「Source」「TargetedCamera」に変更します。

f:id:tanuh_yy:20210801224515p:plain

もう一度「STARTRECORDING」をクリックします。

f:id:tanuh_yy:20210801224714p:plain

 

無事にUIがなくなったものを撮影することができました。
以上、カメラの方向の調整、いらないものを消したりして、ベストショットを撮ってくださいね。

※暗すぎる場合は下記の「Directional light」「Intensity」を調整してください。

f:id:tanuh_yy:20210803214523p:plain

 

f:id:tanuh_yy:20210803214702p:plain

 

 

 

 

 おわりに

以上で、「MeshEffects」を使って、Vroidモデルに武器を持たせて動かし撮影しよう!は終わりになります。

 

長く細かな作業、大変お疲れ様でした。少しでも皆様の制作のきっかけになれば幸いです。

 

今回の記事だけでは、カメラが狙ったように動かせない、モデルの動きとタイミングがあわない、静止画だけじゃなくてアニメーションを作ってみたい方向けに、

 

tanuh-yy.hatenablog.com

 

執筆いたしましたので、引き続きご覧ください。

 

ぜひ様々な制作を楽しんでください。

 

お読みいただきありがとうございました。

 

 

www.youtube.com

  

Unity等を作って、自主制作アニメ「おかえりの柳橋さん」や色々な作品をTwitterYoutubeで発信しておりますので、こちらも見て頂ければ幸いです。

 

では。