3DCGで何をどう作るか考え中

ZbrushとBlenderの使い方、ヒント、コツなど。たまにZbrushプラグイン開発も。

Unityに自作FBXをインポートしてみる(Unity学習8回目)

(約 5,700文字の記事です。)

f:id:yamato-tsukasa:20220327062823j:plain

なんだかUnity公式のチュートリアルだけやっていてもゲーム方向にしか進化できなさそうなので、いったん休止して色々とYouTubeを見て勉強中。UnityでアニメーションについてYouTubeなどで学習してみた。

対象読者はUnity初心者で、Unityで動画を作りたい人。ゲームはいらんと言う人。

なおこの記事は私の学習メモなので、読者に分かりやすく解説する記事ではないので、その点にご注意を。

環境

学習環境はWindows 10 Pro 、Unity 2020 LTSの最新版です。

Unityでのアニメーションは2通り

1つめはゲームエンジンとして真っ当な、ゲーム中のキャラの動きだったり、ゲーム中のムービーシーンでのアニメーションの話。ゲームエンジン用としては当然ながら「ユーザーの操作+それに応じたアニメーション、そのアニメーション遷移」のテクニックに入っていく。

2つめはゲームでも要所に挿入される「ムービーシーン」でのキャラの制御。映画作りためのキャラクターの制御だ。台本通りに動かせばいい。ユーザーからの入力は受け付けない。

私に必要なのは2だけ。Unityでアニメーション動画だけを作るためにはユーザー入力操作は不要だ。だからシーン遷移やアニメーションブレンドの知識も不要だ。

むしろ「どうやってUnityでメッシュをボーンアニメーションさせるのか?」という基本のほうが重要だったりする。なのでC#のコーディングの話は私には不要だったりするのだ。

で、Unityのアニメーションについて勉強になったYouTube動画はこちら。

youtu.be

このシリーズのVol. 20~23がとても分かりやすい。

ウワン先生の動画はBlenderの勉強中によくお世話になった。ボーンやリグ、IKの話などで勉強させてもらった。そして再び勉強させていたくことになろうとは、お世話になっております。特にUnity+Blenderとなると、ジャストフィットじゃないか!というわけで勉強させて頂いた。感謝。

ただ、これを見て、めまいがした(笑)アニメーションというのは当然ながら時間軸変化をモーションに反映させる。そして動かすべきボーンは全身のボーンだ。だから手数がめちゃくちゃ増える。おまけにモーションブレンドの話となるとかなり複雑だ。その対処方法としてUnityのノウハウが山のようになる。

今の自分には手に負えない。

だからまずはUnityでモーションを付けることは諦めて、とにかく最初の目的であるセル画1枚の絵をUnityで作ることに集中することにした。アニメーションはその次のステップにしようと思っている。そうしないとやることが多すぎて挫折しそうだ。

Unity上でリグアニメーションは無謀?

ウワン先生の動画を見ていると、どうやらUnity上でリグアニメーションは結構大変みたいだと感じた。BlenderやMayaなどでアニメーションを作り、それをUnity上でセットして動きを再現させる、というのが常套手段らしい。

どうりでUnityアセットストアでも高額なアセットとしてアニメーション修正ツールなどが人気を博している分けだ。デフォルトでは超絶大変なのだろうと予感。

となるとアニメーションをやるならばBlenderで動き作りをしてUnityで再生、というパターンなのか?やはりBlenderで上でアニメ作りをまた学ばねばならないのか……。面倒臭そうだから避けていたが、やはり避けられないようだ(笑)ただしそれは将来的な話。今はセル画1枚絵を作りたい。



というわけで、Unity公式のチュートリアルを進めても自分のセル画調1枚絵作りには近づきそうもないと感じたのでまずは体当たりでテストしてみることにした。

Blenderでテクスチャ付きFBXをUnityに入れる

f:id:yamato-tsukasa:20220327034126j:plain

キューブを縦長メッシュに変更して簡単にボーンを入れて自動ウェイト、そして適当に変形ポージング。UVもシンプルに展開して落書きテクスチャをpng画像で保存。

こちらの記事に従ってマテリアルは画像テクスチャを指定した。そしてそもそもマテリアル設定はデフォルトから変更していない。

BlenderからUnityへ引き継げるマテリアルの情報を確認する - MRが楽しい

有料アドオンのBetter FBX Exporter/Importerを持っている(Blender純正FBXエクスポーターよりも高性能なことは知っている)のでそれを利用してエクスポート。以前に他者のツイートでBlender純正FBXエクスポートで変になった点がBetter FBXではすんなりいったという話を聞いたことがある。余計なエラーにつまづきたくはない。

結果、心配した割にはあっさりとUnityにテクスチャがそのまま反映された。上記サイトの情報が適切だったからか、あるいはUnityが高性能になっただけなのか分からない。

そんなテストをしながら色々気付いたことをメモ。

座標系の違い?Y軸周りに180度回転している?

UnityはY-up、BlenderはZ-up。ただBlenderからFBX出力時には有料アドオンのBetter FBX Exporter/Importerを利用しているのでUnityというゲームエンジンである点を考慮して出力パラメータを適当にセットしたら何の問題もなかった。

気になったのはデフォルトのプロジェクトのライティングとカメラ設定と、インポート後のオブジェクトの向きがY軸周りに180度異なる点。なぜか背中が見える。

f:id:yamato-tsukasa:20220327032002j:plain

Googleで調べてみるとよく出てくる問題点「メッシュの向きとローカル軸の向きが異なる」という問題は発生していないが、カメラビューでY軸周りに180度ターンしているのは気になる。これをトランスポーズでYに180を入れてそれでいいのだろうか……。

で調べてみた結果。

ゲーム開発者と動画撮影者では「視点」が違う!

結論から言えば「ゲームカメラと動画撮影用カメラの視点の違い」なのだ。

f:id:yamato-tsukasa:20220327062823j:plain

図の左側、動画撮影用カメラとは、あなたが現実で実際にカメラを持って撮影する場合を考えてみればいい。「正面から見た絵」が欲しい。

図の右側、ゲームカメラとは、エースコンバットやPUBGをイメージすればいいだろう。動かすキャラの「背面からの絵」が欲しい。

これ、同じ問題を感じた人が質問していた。

Default Scene settings seems backwards - Unity Forum

Blenderなどは撮影カメラの目線が重要なので、正面から見える見え方がカメラで撮影されるべきだ。

ところがゲームカメラは、例えばフライトシミュレーターを考えれば分かるが「操作する自機の後ろからのカメラ目線」が重要になる。なので対象物が正面向きならばゲームカメラは後ろからの視点になるのが通常なわけだ。

だから業界標準の「普通のカメラの向き」が正反対なわけだ。Unityはゲームエンジンなので後者が「普通」なのだ。ややこしい。

ちなみに図を見て分かるように、BlenderとUnityとでは正面から見た場合のグローバル座標軸の向きが前後も左右も逆だ。要注意。

f:id:yamato-tsukasa:20220327063219p:plain

まぁ比べてみれば「上方向だけが座標の正の向き」であること以外、何一つ同じじゃないね(笑)

というわけで撮影メインの人はデフォルトのカメラとライティングの向きを180度回転させてからスタートがいい。

そうすれば問題なし。インポート後のFBXの軸の向きもおかしいと言うことはない。

ギズモは初期値がグローバル座標

f:id:yamato-tsukasa:20220327063726p:plain

Blenderではデフォルトでローカル軸・ローカル座標だがUnityだとグローバルになっているので、ギズモ操作後に他のオブジェクトを選んだ後に再選択するとギズモの回転がリセットされていて驚く。画面のボタンをクリックしてグローバルとローカルを切り替え可能。ローカルのほうがしっくりくる。

そのとなりのボタンはギズモ操作時のピボットの操作位置の指定。デフォルトだとバウンディングボックス中心が基準だが、切替えるとFBX作成時の原点が基準となる。

(なおUnity 2020と2021ではボタンの位置が変わっているがアイコン自体は一緒なので、慣れればいいだけ)

ギズモをCtrl + ドラッグで0.25スナップ移動

豆知識として。何かのチュートリアルで知った小技。

BlenderでFBXファイルを更新してUnityのアセットを自動更新(差し替え)する方法

これが分からない。Blenderで上書きしたFBXを再度Unityにドラッグすると新しい素材として新規登録される。入れ替えて欲しいのだが、色々試したが更新されない。しょうがないので古いFBXをアセットブラウザから削除してから新しい同名FBXをドラッグすると更新される。面倒だなぁ。

What is the best way to update a .fbx file? - Unity Answers

UnityのプロジェクトウィンドウのアセットウィンドウにD&Dするとダメ。Windowsのエクスプローラーでプロジェクトの内のフォルダに同名FBXをD&Dして上書きすると自動的にUnity内で更新されるぞ!何という罠。

他にもPrefabに使っているFBXの更新についてヒットしたが、いずれ見返すかも知れない。

【Unity】Unity2018.3以降でFBXをPrefab化して正しく取り扱う - LIGHT11

glTF形式とは何か分からないけれどメモ。

Unityでコンポーネント調整後にモデルだけ一瞬で差し替える方法。 | Genki Tech

調べたらだいぶ有益な情報だったので次の記事にて。

メモが長くなったのでいったん終了。

Unity学習履歴のブログの付け方を変更

(後日追記)

今までは自分用メモの他にも調べ物して出てきた情報のURLなどを積極的に貼り付けてきました。ですがこの作業時間が結構手間になって学習のペースを妨げることが分かったので、今後はURLの貼り付けは省略します。なので完全に単なる学習者の記録メモになります。

というのも、URLを紹介するとなると、その情報が正しいのか否か、また今後に更によりよいやり方が今後出てきたならば以前の情報が間違っていたり不要だったりするとなると、読者を混乱させるだけだと思ったからです。自分自身が学習途中なので、その過程で色んな状況がコロコロ変わることはよくあること。なので最終的に安定した「手堅い情報」が出そろったときにまとめ記事を書いてURLなどを紹介したほうが情報の質が高まるだろうという判断です。

今はまだ超絶初心者なので、したり顔で紹介した情報が「実は業界の常識」だったりすることもあるわけです。なので今は浴びるように情報収集するほうが先で、アウトプットはその後のそしゃく後であっても遅くないな、と思ったのでした。

というわけで今後はしばらく学習メモが続きます。(できるだけ情報参照性の高い日記にしようと努力はしますが、お約束はできません😊)





今回の創作活動は約2時間30分(累積 約2,744時間)
(803回目のブログ更新)

筆者はAmazonアソシエイト・プログラムに参加しています。(AmazonアソシエイトとはAmazon.co.jpの商品を宣伝し所定の条件を満たすことで紹介料をAmazon様から頂けるという大変ありがたい仕組みのこと。)
以下のリンクを経由してAmazonでお買物をするとその購入額の1~3%ほどのお小遣いが私に寄付されます(笑)以下のリンクを経由して頂ければ紹介商品以外のご購入でもOKですよ~。