夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

HoloLensでファンタジーな世界を作る VFXGraphでガンプラ用のビームサーベルを作る

本日はHoloLensでファンタジー世界を作る応用枠です。

今回はHoloLensを用いてプラスチックモデル(プラモデル)でデジラマを作成します。

f:id:Holomoto-Sumire:20211010183734j:plain

〇デジラマとは?

デジラマはデジタルジオラマの略で、フィギュアやプラモデルなどの立体物の写真を撮りフォトショップなどの画像加工を用いてエフェクトや背景などを加えるデジタルアートを指します。

立体物のスケールに合わせ背景なども作りこみアニメや映画の世界の切り抜きを再現するジオラマと同様世界を作りこみながらも、炎や爆発などのジオラマでは再現しにくいものを再現できる点などで魅力があります。

 一般的にデジラマは2Dの画像作品ですが、今回はMicrosoft HoloLensのMixedRealityを用いて3Dでデジラマを再現します。

ビームサーベル

ビームサーベルガンダム作品に登場する架空の武器です。

筒状の持ちてからビームの刀が伸びるもので、劇中では近接戦闘で使用されます。

プラモデルはクリアパーツで再現されることが多いですが、今回はこれをHoloLensで置き換えます。

〇VFXGraphで基盤を作る

VFXGraphはUnityで提供されるノードベースのエフェクト作成環境で、従来のParticleSystemの後継機に当たります。

f:id:Holomoto-Sumire:20211010174037p:plain

①Unityの上部ワールドタブから[Window]、[Package Manager]を開きます。

f:id:Holomoto-Sumire:20211010174146p:plain

②[Visual Effect Graph]がインストールされているかを確認します。 もしインストールされていない場合インストールします。

f:id:Holomoto-Sumire:20211010174349p:plain

③Projectウィンドウから[Create]→[Visual Effects]→[Visual Effect Graph]を選択します。

f:id:Holomoto-Sumire:20211010174522p:plain

以上でVFXGraphが作成されます。

f:id:Holomoto-Sumire:20211010174639p:plain

④作成されたグラフをクリックしVFXGraphを開きます。

f:id:Holomoto-Sumire:20211010174833p:plain

⑤すでにあるノードを[Delete]キーで削除してからのグラフにします。

VFXGraphには[System]と呼ばれるテンプレートが用意されています。これを使用するために既にあるノードを削除しました。

⑥グラフ上で右クリックし[CreateNode]→[System]→[Simple Heads And Speaks(System)]を選択します。

花火のようなエフェクトのテンプレートが作成されます。

f:id:Holomoto-Sumire:20211010175347p:plain

このテンプレートをもとにビームサーベルを作ります。

ビームサーベルを作る

まずは色を変えます。 

ガンダムシリーズビームサーベルはピンクが使用されることが多いためピンクで作成します。

①VFXGraphを開き[Output Particle Quad]の[Set Color over Life]のColorを差し替えます。

f:id:Holomoto-Sumire:20211010175524p:plain

f:id:Holomoto-Sumire:20211010175849p:plain

これによって粒子の色が変わります。

f:id:Holomoto-Sumire:20211010175927p:plain

次に散らばっている粒子を束ねます。

②[Update Particle]ブロックで設定されている[Turbulance(乱流)]のチェックボックスを外し無効化します。

VFXGraphではいくつかのブロックによって成り立っていますがこの[Update Particle]ブロックではC#のUpdate関数同様生成されたそれぞれの粒子が消えるまでの間に加わる処理です。

[Turbulance(乱流)]ノードは空気の乱れのように粒子を乱れさせる効果があり、これによって粒子がばらばらに散るエフェクトになっていました。

f:id:Holomoto-Sumire:20211010180114p:plain

③[Update Particle]ブロックで右クリックを行い[Create Block]→[Force]を加えます。

f:id:Holomoto-Sumire:20211010180824p:plain

これでまだ束ねられていないものの大まかな形ができました。

f:id:Holomoto-Sumire:20211010180955p:plain

④次に[Initialize Particel]ブロックの[Inherit Source Position(Set)]を無効に、[Inherit Source Velocity(Blend)]の値を0にします。

f:id:Holomoto-Sumire:20211010181203p:plain

これによって粒子の束がまとまり、ビームの刃を形成します。

f:id:Holomoto-Sumire:20211010181520p:plain

最後にビームサーベルの刃の長さを設定します。

⑤[Initialize Particel]ブロックの[Set Lifetime Random]のBの値を2にします。

f:id:Holomoto-Sumire:20211010181638p:plain

この[Set Lifetime Random]ノードは生成された粒子の寿命(秒)を設定します。これで1~3秒の間で粒子が消えていたものを1~2秒で消えるようにしたため、粒子がより早く消失し結果的に粒子の束であるビームが短くなります。

⑥最後にグラフ上部の[compile]および[Save]で保存します。

f:id:Holomoto-Sumire:20211010182155p:plain

以上でビームサーベルのサーベル部分が完成しました。

f:id:Holomoto-Sumire:20211010182253p:plain

ガンプラに合わせてデジラマを作る

ビームが完成したため実際のプラモデルと合わせます。今回はガンダム作品から[RX-79NT-1 ガンダムNT-1]のプラモデルを使用します。

f:id:Holomoto-Sumire:20211010184832j:plain

この機体はOVA作品[機動戦士ガンダム ポケットの中の戦争]に登場するガンダムですが、相性がAlexとHoloLensの生みの親Alex Kipmanと同じでもあり筆者の一番好きなガンダムの一つです。

あらかじめビームサーベルの発振器(柄の部分)を持たせ、ポーズをつけます。

f:id:Holomoto-Sumire:20211010184845j:plain

次にHoloLensアプリ内でビームを現実の座標と合わせることができるようにします。

①作成したビームサーベルをMRTKを導入しHoloLens用にプロジェクトとシーンを設定したシーンに配置します。

②Inspectorウィンドウから[BoxCollider]、[ObjectManiplator]、[NearInteractionGrabbable]コンポーネントを加えます。

f:id:Holomoto-Sumire:20211010182907p:plain

これでビームをHandTrackingを用いて動かすことができるようになります。

しかし当たり判定が大きいため調整します。

③[BoxCollider]コンポーネントの[Edit Collider]のアイコンを選択しシーン上で手動でコライダーの大きさを調整します。

f:id:Holomoto-Sumire:20211010183103p:plain

以上で完成しました。実機にデプロイします。

〇実機で確認

実機で確認します。

www.youtube.com

今回問題なくエフェクトを再現できましたが、現実のモデルとの座標合わせが難しく大変でした。微調整できる仕組みを作る必要はありそうですがよりファンタジーと現実が融合できた気がします。