CrossRoad

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

【2021/8/29 json読み込みサンプルコードを追記】Babylon.jsのInspector上からアニメーションを作成できるAnimation Curve Editorの使い方をまとめました

The post introduce how to use Animation Curve Editor (ACE) in Japanese. I'll write English version soon.

先日、このようなツイートを見かけました。しかしまだ詳しい使い方やマニュアルがなかったのでどんなものか整理してみました。

1. Animation Curve Editorとは?

Babylon.js上でアニメーションを定義できる仕組みです。Github上では2020年の5月頃に提案されていました。

github.com

Inspector上でアニメーションを作成/編集できます。

An example of Animation Curve Editor in Babylon.js

公開されているサンプルコードはこちらです。

Animation Curve Editorのサンプルコード

Animation Curve Editorを開く手順です。まずPlayground上でInspectorを表示させるボタンを押して(1)、Inspectorを表示させます。 (2)

Inspector button in Babylon.js Playground

次に、Inspector上でアニメーションをかけたいオブジェクトを選択して (3)、ANIMATIONを選択します。 (4)
展開された場所に表示されたEditを選択すると、Animation作成用のウインドウが別に開きます。 (5)

Select node and animation feature in Babylon.js Inspector

2. 試してわかったこと

私の問題でもありますが、試した時に詰まった点や気づいた点をまとめました。

2.1 Babylon.js 5.0.0以降でないと動かない

PlayGroundのサイトを開くと、右上部分にBabylon.jsのバージョンが書かれています。

Version selection in Babylon.js Playground

バージョン部分を選択すると他のバージョンを選ぶことができます。ブラウザの設定によりますがこれが4.2だとAnimation Curve Editorが使えません。2021/8/15現在ではLATESTを選択すると5.0.0になります。

2.2 アニメーションはInspectorの中で選択したノード単位に割り当てられる

Animation Curve Editorではオブジェクトを指定する機能はありませんでした。先ほどの(3)で選んだオブジェクト単位で自動的に指定されるようです。
サンプルのドローンオブジェクトが複数のオブジェクトでできていることから、親オブジェクトを指定すればまとめて動作させることもできるようです。

2.3 アニメーション作成だけであればJavascriptのコード記述は不要

Animation Curve Editorを使うだけならばGUI上だけで完結します。ただし、作成したアニメーションを自分のコードで呼び出すにはJavaScriptでのコードが必要です。

2.4 Playgroundの保存ボタンを押さないで再生ボタンを押すと、作ったアニメーションが消えてしまう

Playgroundには再生ボタンがあります。ただ、Animation Curve Editorで作ったアニメーションは、Animation Curve Editor内の再生ボタンを押せば確認できます。
むしろ、Playgroundの再生ボタンを使ってしまうと、作ったアニメーションが消えてしまいます。

作ったアニメーションが消えないようにするには、以下のどれかを実行する必要があります。

[1] Playgroundの保存ボタンを押す

保存ボタンはこの画像の赤枠の場所です。これを押すと、URLの末尾に"#KBS9I5"のような識別子がつきます。

Save button in Babylon.js Playground

[2] Animation Curve EditorでSave Snippetを選択する

Save animation in Animation Curve Editor on Babylon.js

これを選択すると、Babylon.js Playgroundのサーバにアニメーション情報が保存されます。
この画像ではすでにSnippetで保存した後なので、"Snippet ID: VKRF2C"と表示されています。このIDを呼び出すコードを書くとPlayground上で再生ボタンを押した時、アニメーションが再生されます。

IDを呼び出すコードの例は以下の通りです。この場合、boxというオブジェクトに対してアニメーションをかけています。

gist.github.com

[3] Animation Curve EditorでSave Fileを選択する

[2]と同じ画面でSave Fileを選択すると、animations.jsonというファイルが取得できます。これを再生するコードを書けばアニメーションを再生できます。
ちょっと調べた限りではこのanimations.jsonをすぐに再生できる方法は見つかりませんでした。とはいえ、jsonをparseしてキーフレームに指定するコードを書けば良いので、別途作成して公開しようと思います。

2.5 Animation Curve Editorでは、Property 欄に指定したオブジェクトに対応するpropertyを書く

移動させたい場合はposition、大きさを変更したい場合はscalingを入力します。

また、Typeはそのときの変数にあったtypeを選択します。position.xの場合はFloat、positionの場合はVector3のように選択します。

Edit screen in Animation Curve Editor

3. 少し試した例

シンプルな例の方が分かりやすいと思ったので、box (cube) を1つだけ表示したPlaygroundを作り、このboxに対してアニメーションをかけてみました。

アニメーションの例1:position.yだけを変化

second example of animation curve editor in Babylon.js

アニメーションの例2:position.yとscaling (x,y,z)を変化

third example of animation curve editor in Babylon.js

4. おわりに

アニメーションを作る方法はわかったので、次回はjsonを再生する方法をまとめたいと思います。


2021/8/29 追記

生成したjsonを読み込んでアニメーションを再生するサンプルコードを書きました。

An example of executiing animations by loading json texts