Blenderでアニメーション付モデルをGLBで書き出すエクスポート設定

スポンサーリンク
3DCG
スポンサーリンク

はじめに

WebやAR向けのコンテンツ制作では、glb形式でのモデルの書き出しが頻繁に必要となります。
またFBXやOBJなどの他の形式と異なって、glb形式では特有の設定項目があるので、シンプルに書き出したいだけなのに躓くパターンもあるかと思います。

本記事では、Blenderを使用して、基本的なモデルが表示され、作成した複数のアニメーションを正しく含めた形でglb形式にエクスポートする方法を紹介します。

今回は例として、以下画像のモデルを用いたエクスポート設定の例を紹介します。
モデルはmixiamoからダウンロードしてきたもので、アニメーションについても同様にmixiamoからダウンロードして、Blender上でセットアップしました。

これらのアニメーションをすべて含みつつ、もちろんメッシュとアーマチュアの親子関係やマテリアルテクスチャを維持したまま、glb形式に書き出す手順を解説します。

使用環境

  • Blender 4.1.1

手順

まずシーンにある書き出したいオブジェクトをすべて選択します。
今回はこのモデルである「Armature」を選択します。このとき、子のオブジェクトも含んで選択するのを忘れないようにしてください。Armatureを右クリック>“階層の選択”をすると一番確実かと思います。

次にファイル>エクスポートから“gltf 2.0(glb/gltf)”を選択します。

そうすると保存先とエクスポート設定を行うウィンドウが表示されます。
保存先については、ご自分で用意されたプロジェクトファイル内など、任意のフォルダで構いません。
ファイル名についても、ご自分で理解できるファイル名をご用意ください。

では、ウィンドウ右側のサイドバーを見ていきます。

フォーマット

.glb形式と.gltf形式の2種類があります。
この2つの違いとしては、モデルの情報やテクスチャ画像をファイル内に含むかどうかで、含む場合はglb、含まない場合はgltfです。

ここは.gltfが指定されていない限りは、glTF Binary(.glb)で良いかと思います。
.gltfにしないとうまく表示・動作しないということは極稀な状況なので、特別な状況でもない限りは1つのファイルで完結して取り回しのしやすいglb形式で問題ないかと思います。

内容

ここは選択したオブジェクトにチェックです。これにより一番最初で選択したモデルだけが書き出されます。
もしこのチェックがない場合は、関係ないカメラやライト、その他オブジェクトなども書き出されて余計なデータを増やすことになります。

なおGLBを書き出したあと、何故かメッシュが表示されていないとか、メッシュデータが含まれていないとかという状態になった場合には、子のオブジェクトの選択を忘れているか、うまく出来ていなかった可能性が高いです。
結構よくやるミスなので、繰り返すとすぐ思い当たるようになりますが、ご参考ください。

トランスフォーム

これはデフォルトのまま、“+Yが上”にチェックが付いた状態で問題ありません。

データ

ここでパラメーターが増えますが、必要なところだけ説明します。

メッシュ

この項目については、デフォルトのままでも問題は有りません。

ただし一番上の“モディファイアの適用”については、もしかしたらモデルによってはチェックは必要です。
例えばモデルにミラーのモディファイアを適用していたり、サブディビジョンサーフェスをかけている場合、書き出し後のモデルにもその結果を適用したい場合はこのモディファイアを適用にチェックが必要です。

ただ、できるだけ書き出し時のモデルは、モディファイアをモデルに適用させてしまうのが無難かと思います。

なお、アーマチュアのモディファイアについてはここにチェックがなくても書き出されるので、例えばここにチェックをしないからといって親子関係が崩れるということはありません。

マテリアル

ここも普通であれば変更する必要はないのですが、もし書き出したあとにデータサイズが大きいことで困る場合は、ここで2つの手段が取れます。

まず画像を自動からwebpフォーマットにするのが1つです。自動だと基本的にはjpgフォーマットで書き出されます。これを明示的にwebpフォーマットにします。

試しにこのモデルで書き出しの差を出してみました。
jpgが7MB程度になるのに対して、webpは1.4MBになりました。

または画質の値を下げてみるのも手です。
数値が低ければ低い分、画質は下がりますが、データサイズは小さくなります。

このような方法でデータサイズを小さくすることが出来ますが、webpに関しては、もしかしたらglbの再生環境によってはテクスチャが表示されなくなることがあるかもしれません。

また画質については、出来るのであればBlender上で圧縮するよりテクスチャ画像を作る段階、例えばPhotoshopなどの段階で画質を抑えて、エクスポート時にはノータッチのほうが意図しない見た目の違いを生み出さないためには良い方法のように思われます。

未使用テクスチャと画像については、なにか事情がない限りはチェックする必要はないです。

シェイプキー

シェイプキーを使っていないのであれば、ここは明示的にチェックを外しておくと良いかと思います。
逆にフェイシャルなどで使用している場合は、外さないようにしましょう。

圧縮

ここもデータサイズとの相談になります。
もしデータサイズが大きくて、圧縮の必要がある上に、メッシュのリダクションやテクスチャ画像の画質調整だけでは解決しきれない場合はこの圧縮(Draco圧縮)を使う手が考えられます。

ただし、圧縮をかけたら見た目や表示が変になるケースも稀にあるので、これは使う環境に応じて調整が必要かと思います。試しに圧縮したglbを書き出して、使用したい環境でプレビューし、それで問題なければそのまま使えるし、なにか問題があれば圧縮は使わないというように判断するのが良いかと思います。

アニメーション

最後の項目です。ここは2つチェックしておきたいポイントがあります。

アニメーションモード

まずアニメーションモードです。
これが何を指しているかと言うと、どのアニメーションを書き出すかという話です。といってもここで使うのは4択のうち2択のことが多くて、“アクション”か“NLAトラック”を選ぶことになるかと思います。

ご自身で作ったアニメーションがどのような状態になっているかによってこの二択を選ぶことになるのですが、ここはざっくり言ってしまうと、NLAトラックを使っていなければ“アクション”、NLAトラックでアニメーションの調整や必要なアニメーションだけを抽出した場合には“NLAトラック”です。

画像でいうと、以下のビュワーでアニメーションを調整しているかいないかです。

特にどっちが良いというわけではないのですが、私の意見としては、必要なアニメーションだけをNLAトラックに追加して、“NLAトラック”で書き出すほうが良いかなと思います。

“アクション”の場合、アニメーションが必要最低限だけ入っている場合はいいのですが、使わないアニメーションもアクションに残っていたりすると、それも書き出されることになります。
ただ、最近アクションフィルターという機能が追加されて、書き出すアニメーションを選べるようになったので、それを使えば問題はなさそうです。

あと、“アクティブアクションを統合”については現在再生されているアニメーションを1つ書き出すような形です。
複数のオブジェクトがあって、それをそれぞれ動かしているときに1つのアニメーションに統合するという使い方になるかと思いますが、今回は不向きです。

“シーン”は同じく現在再生されているアニメーションを書き出す形ですが、シーンのフレームがアニメーションの長さよりも短い場合、そこでアニメーションがトリミングされます。これも使う場面は限られてきそうです。

それからアニメーションモードの下に“全オブジェクトアニメをベイク”とあります。
これはチェックしておいたほうが無難です。

静止と範囲

そして静止と範囲の“全gltfアニメーション開始を0”にもチェックしておきましょう。
負のフレームは“スライド”にしておきます。

もしこれを適用しなかった場合、例えば作ったアニメーションの開始まで数フレーム空いていた場合にはそのフレームを空けてからアニメーションを再生することになります。つまり、変な間が生まれてしまいます。
逆にチェックしておけばその空白を詰めて、0フレームからのスタートにしてくれます。ループアニメーションなどはその設定が必須なので、これも特に理由がなければだいたいチェックしておくのが無難です。

確認方法

glbを保存したら、ちゃんと書き出しができているかチェックします。
Blenderで開き直しても良いのですが、私はgltf Viewerを使って確認することが多いです。

gltf Viewerはブラウザ上でglb形式のモデルを確認できるビュワーです。アニメーションの表示・切替も可能です。
Blenderで書き出したものをBlenderで確認すると、もしなにか不具合があってもBlender側で補ってくれて、その不具合に気づけ無さそうという心理から、私は外部ツールで使いやすいgltf Viewerを選んで使っています。

gltf Viewerの使い方は、画面にglbモデルをドラックアンドドロップするだけです。
正常に読み込まれれば、画面にモデルが表示されます。

右上のAnimationからは書き出したアニメーションが確認できます。

Jump, Run, Walkの3つの項目があることから、正しくアニメーションが書き出されたことがわかります。チェックが付いているものが現在再生中のアニメーションなので、チェックを変えれば別のアニメーションになります。
複数つけるとブレンドされたアニメーションになるのでご注意ください。

おわりに

GLB周りはBlender3.xくらいのときにはアップデートがそこまでされていなかった印象なのですが、Blender4.xになってから盛んにアップデートが増えてきた印象があります。

ですのでここに書いてある内容も古くはなってしまうかもしれませんが、それでもある程度は共通した機能が残り続けているので、もう少しくらいはこの知識で問題ないのではと思っています。

あとは、モデルやアニメーションを最適化するパラメータもあるのですが、正しく再生されなくなることも多いので今回は割愛しました。
というより正直なところ、私自身も最近追加されたものが多くて把握しきれていないというのもあります。
もし試せるのであれば、挑戦してみるとさらに最適化されたGLBが作成できるかと思います。

コメント

タイトルとURLをコピーしました