MediaTexture

UE4で動画テクスチャーを扱う。

UE4_4.7.6とUE4_4.10.0でテスト。

動画A(*.mp4(H264)、1280*720、30fps)

動画B(*.mov(H264)、720*406、24fps)

 

動画Aは問題なくMediaTextureとして扱えた。

動画Bは上手くいかない。

動画のピクセルサイズが原因のよう。

1280*720に拡大したら問題なく再生される。

 

とりあえずメモ。あとでメディアテクスチャ関連まとめます。

 

 

 

LightwaveでIKやコンストレイントのキーをベイクする方法

アニメーションを作るときも結構使うのですが、ゲームエンジン用にFBX出力する際に3Dソフト側の独自機能でアニメーションをつけると上手く出力できないので、アニメーションの構造を単純にする方法を紹介します。

f:id:matsumoto56:20150115003009g:plain

IKで歩行アニメーションを作ってみました。上腕の回転、足の付け根から足首、頭の回転を赤いNullオブジェクトで制御しています。まずは、普通にFBXで書き出してUE4に読み込んでみます。

 f:id:matsumoto56:20150115011614g:plain

 こんな感じになってしまいました。上腕、太ももがバンク角しか動いてません。

 そこでIKを単純化するためにFKに変換します。Lightwaveの場合、グラフエディタに反映されていればモーションをベイクできるのですがIKやコンストレイントで制御した場合グラフには反映されません。

 

では、どうするかというと、、、ボーンを全部選択した状態で、手動でベチベチとキーを打ちます。全フレーム。マンパワーです。

 

そうするとグラフに反映されていなかったIKのキーもFKに反映されます。もう一度UE4に読み込んでみます。

f:id:matsumoto56:20150115013027g:plain

ちゃんと反映されました。LightwaveでベイクしなくてもFBXでのエクスポート時のベイクで上手くいく場合もあるみたいです。

IKでのボーン制御だけでなく、コンストレイントなど他のオブジェクト依存で制御している場合にはこの手法が使えます。いまいち微調整が効かないスプライン制御の調整やリグに凝りすぎて収拾がつかなくなった時の回避なんかにも使えて結構便利だと思います。

UE4にオリジナルのモデルを読み込む2

前回UE4にLightwaveで作ったモデルとアニメーションをFBXで読み込んでみました。

f:id:matsumoto56:20141231152304p:plain

アニメーションを読み込んでいないモデルとボーンのみのFBXファイルは正常な見た目ですが、アニメーションを適用すると回転軸がずれてしまうようでした。根本的な原因はLightwaveはY軸がUP(垂直方向)で作られていますが、UE4はZ軸がUPで作られているためだと思われます。両方ずれるのならまだわかるのですが、モデルは正常な向きになっているというのが気になります。次のUE4のFBXファイルインポートに関するリファレンスを見てみると、"convert scene"という項目があります。

Unreal Engine | FBX インポート オプションのリファレンス

座標軸をUE4に対応したものに変換してくれる機能らしいのですが、テストで読み込んだときは、モデル、アニメーションともにONになっていたようなのでモデルのほうは正常に変換できたのにアニメーションのほうは正常に変換できなかったものと思われます。確認のため、モデル、アニメーションともにOFFにして読み込んでみると両方とも回転軸がずれてしまいました。

そこで、Lightwave側のオブジェクトの回転を前傾側に90度回転させて出力してみました。”convert scene”をOFFにしてインポートするとモデルは正常な向きで読み込まれましたが、モーションは先ほどと同じように仰向けで読み込まれました。むむむ。。。こうなると、モーションのほうはワールド座標はそんなに関係なさそうです。アニメーションをつける前に変換しておけばなんとかなりそうですが、ワークフローがめんどくさそうです。

色々いじっているうちに解決策は発見できたのですが、内部の処理をちゃんと理解できていないので一般化するのは僕の現状では難しそうです。とりあえず、Lightwaveユーザの助力になればということで、Lightwaveからのインポートで困っている場合は以下を実行してみてください。

f:id:matsumoto56:20150102041810p:plain

FBXのエクスポートで"Re-parent bone hierarchy"のチェックを入れてください。UE4側の”convert scene”はONで読み込みます。設定したボーン構造の親にボーンが一つ追加されたような設定で読み込まれるようですが、回転は正常なようです。MAYAやMaxなどは出力の際に軸変換のオプションがあるようですので、その辺の対応で解決できそうです。

今回は応急処置的な対応なのでFBXの構造については、また別の機会にじっくり調べたいと思います。

UE4にオリジナルのモデルを読み込む

沢山のゲームエンジンが出回っていますが、とりあえず手を出しやすいのは月額2000円ほどで使えるUnrealEngineと無料版があるUnity。今回はUnrealEngine4(以下UE4)を使ってみようと思います。バージョンアップの速度がものすごい上に最先端の技術を導入するというコンセプトがあるらしく、習得の意味でも実用の意味でも有用そうなツールです。

UE4はマーケットプレイスというゲームエンジン内で使える素材を販売(只の物も豊富!)する便利な仕組みがあるのですが、CG屋としてはキャラクタくらいは自前の物を使いたいので今回はLightwave3Dでこんなダミーのキャラクターとアニメーションを用意しました。

f:id:matsumoto56:20141231033034p:plainf:id:matsumoto56:20141231033111g:plain

ゲーム用としてはボーンが多いかも知れませんが、お試しということでアニメーション用で使い慣れたセッティングです。アニメーションは12fpsで最適化しています。ゲームエンジン内でfpsのコントロールをどうしようか悩むところです。おそらくカメラは高めのfps(30?60?もっと?)じゃ無いと気持ち悪くなりそう。棒立ちの画像のシーンはモデルを、走るシーンはアニメーションを、それぞれFBX形式で書き出します。ちゃんと書き出されているかの確認も含めてFBXconverterというフリーソフトで一度変換しておきます。FBXがAutodesk社の形式なので同社のFBXconverterを通すことによって間違いの無いデータにします。ビューワーもついているので確認もできます。

 

UE4を起動します。簡易設定で空のプロジェクトを作成します。

f:id:matsumoto56:20141231041027p:plain

UE4内のコンテンツブラウザにインポートしてみます。

棒立ちのFBXをベースとしてモーション以外、走っている方はモーションをインポートします。

f:id:matsumoto56:20141231152304p:plain

ベースモデルはちゃんと直立しているようですが、ドラッグ&ドロップでモーションを適用すると軸がずれてしまうようです。LightwaveではY軸が上下なのですが、UE4ではZ軸が上下のようです。その辺に起因している現象のようなのでそのあたりはきっちり理解しておいたほうが良さそうです。探るのが大変そうなので、次回の記事でそのあたりを追及していこうと思います。中途半端ですが、今回はモデルとモーション自体は読み込めたので良しとします。