CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

Babylon.js Editor v4.2.0で魔法剣エフェクトを表示させる方法

今度はBabylon.js Editorで炎の剣を作ってみます。

なお、以前も似たようなことを試したことがあります。

www.crossroad-tech.com

この時の違いは、以下の通りです。
・Babylon.js Editor v2.5 → v4.2 に変更

・作った炎の剣をキャラクタと一緒に動かしている

環境
・Babylon.js Editor v4.2.0

使用させていただいた3DCGモデルの剣

www.turbosquid.com

1. Babylon.js EditorにはParticle Systemがあるが、v4.2.0では動かない

以前の記事と同様にBabylon.js EditorにはParticleオブジェクトをViewの中にドラッグ&ドロップすると、Particleが調整できます。

そのはずなのですが、実行すると画面が真っ暗になってしまって動きませんでした。

Failed to load particle system on Babylon.js Editor v4.2.0

ログをみるためにブラウザ起動させてDeveloper Toolで見ると、エラーログが出ています。

Failed to particle system on Edge browser

こちらについてはEditorのエラーと思われます。

2. Particle Editorで炎エフェクトを作りjsonで出力する

ということで、今回はParticle Editorでエフェクトを作りました。Particle EditorとはPlaygroundから実行できる機能で、GUI上でParticleを調整し、出来上がったparticleはjson形式で出力することができます。

使い方については以前書いたこちらを参考にしてください。

www.crossroad-tech.com

参考までに、今回作った炎エフェクトです。長い1行になっていますが、このjsonを後述のParticleSystem.Parseで読むと、炎を表示させることができます。

gist.github.com

一部ですが個別の説明です。
■剣のローカル座標に対してparticleを発生させる

"isLocal":true,

■発生方向(今回の剣の刃が-z方向のため)

"gravity":[0,0,-50]

■サイズ

    "minSize": 0.05,
    "maxSize": 0.2,

■発生する時間

    "minLifeTime": 0.1,
    "maxLifeTime": 0.7,

3. Babylon.js Editorのスクリプトでjsonを読み込む

名前はなんでも良いですが、今回はflame.tsとして新しくスクリプトを作ります。flame.tsにはこのように記述します。

gist.github.com

onUpdateでthis.particleSource.position = this.Sword.absolutePosition;とすることで、キャラクターが移動してもparticleの発生場所が常にSwordの刃の根元になるようにしています。

あとはBabylon.js Editorで実行するとこのようになります。

youtu.be

4. おわりに

色々手探りが続きますが、次はキャラクタの腕に剣を持たせて振るところを作ろうと思います。