UE4にSDユニティちゃんを召喚

Unreal Engine 4
ユニティちゃん。こんな名前なのに、キャラクター利用のガイドラインのFAQに、他のゲームエンジンで使っても良いと書いてあったので、Unreal Engine 4 の練習に使ってみました。

モデルのインポート

準備

下準備として、SDユニティちゃんを Unity でインポートします。
そこから tga と fbx ファイルを持ってきます。

プロジェクトの作成

新規プロジェクトを作成

  • サードパーソン
  • スターターコンテンツなし

なしって書いても最低限置いてありました。
以下のものを、右上のアウトライナーから削除します。

  • CubeMesh
  • DocumentationActor1
  • TextRenderActor

CubeMesh の影が残っているので「ビルド」を実行。

Generic と Humanoid

ファイルに Generic と Humanoid がありますが、Generic を使用します。

【Unity】Humanoid / Genericアニメーションについての基礎知識

http://light11.hatenadiary.com/entry/2019/01/29/234442

Humanoid って ue4 でも使えるのかな? と思って試して一応みました。
ボーンの割り当てが失敗するようで、エラーが多数出たのでやめました。(エラーの画像は、一番下に)

SDユニティちゃんをインポートする

以下のフォルダを作成します。

  • Character/UnityChan
  • Character/UnityChan/Texures
  • Character/UnityChan/Materials

fbxファイルをインポート

  • Assets/UnityChan/SD_unitychan/Models/SD_unitychan_generic.fbx
  • Skeletal Mesh, ImportMesh にチェックを入れる
  • Import Animations のチェックを外す
  • Material を Do Not Create Material
  • Import Textures のチェックを外す

インポートを実行すると以下2つの警告が出ます。

このFBXシーンにはスムージンググループ情報がありません。ファイルをエクスポートする前に必ずFBX Exporter プラグインの[Export Smoothing Groups] オプションを有効にしてください。スムージング グループをサポートしないツールの場合でも、インポート中に正しい頂点法線を推測するため、FBX Exporter はエクスポート時に適切なスムージング データを生成します。
インポート後に正しい向きに置かれない場合、頂点に重みづけがされていないボーンに発生する可能性があります。
「Use T0 as ref pose」オプションを設定するか、バインドポーズにボーンを追加してスケルタルメッシュを再インポートしてください。

黙って閉じたw

こんな感じに読み込まれているはずです。

Texture をインポート

utc_all2 は、utc に名前を変ます (特に意味はないです)

マテリアルを作成

– Texture で右クリック–>「マテリアルを作成」

  • 名前を utc_Mat にする
  • マテリアルをダブルクリックでマテリアルの設定を開く
  • ウィンドウの最大化をやめる
  • normalmap と specular をドラッグアンドドロップする

それぞれの Texture Samle のRGBを ノーマル と スペキュラ に接続する。
スペキュラとノーマルパップの使い方がよく分かっていないのですが、とりあえず、表示できるのでこれで進めました。このあたりの勉強は後日することにします。

マテリアルを設定

SD_unitychan_genereic スケルタルメッシュをダブルクリック
エレメント 0 ~ 4 に utc_Mat を設定する
マテリアルをドラッグアンドドロップで設定可能

モデルを反映する

エディタのアウトライナの「ThirdPersonCharacter」の編集を行う
左ペインのコンポーネントで「Mesh」 を選択し、右ペイン「詳細」の「Mesh」を「SD_unitychan_generic」にする


選択後、こうなる

コンパイルを実行
–> メイン画面で、マネキンが ユニティちゃん変わっているはず

動作テスト

  • 一応、「ThirdPersonCharacter」のAnimation を ThirdPerson_AnimBP にしてみる
  • 再生を実行する
  • アニメーションは動かなかった。ボーンの名前が違うから当然か。

* 影が付きすぎるので、マテリアルの Shading model を unlit に変更してみる
–> 真っ黒に。作って本に書いてあったけど、何か作業が足りないのだろう。
今は、やめておく。

アニメーションの設定

とりあえず、ユニティちゃんのアニメーションをインポートしてみる

インポートで、SDユニティちゃんのアニメーションを選択する
– メッシュを unitychan にする
– X方向のroitation を 90にすると方向が合う。やらないとユニティちゃんがあおむけ向けになって、地べたで駄々をこねる状態になります。

アウトプットログを見ろ!って出てたから見ようとしたらフリーズしたのかと思うくらい重くなってしばらく動かなかった
ログはクリアしておく (右クリックして「ログをクリア」)

– アニメーションを割り当てようとするが割り当てられない。
多分エラーのせいだな。

ユニティちゃん付属のアニメーションを使うのをあきらめて、UE4 のマネキンについているアニメーションをつけることにする。

ユニティちゃんのスケルトンにリグを設定

SD_unitychan_generic_Skelton を開く

リターゲットマネージャを開き

リグを選択で humanoid を選択する

Root から順に、ターゲットのボーンを全部指定する

※ 一度設定したら「保存」しておく。これで使いまわせる

他で使いたい場合、正しいやり方は知らないけど、Character\UnityChan フォルダに入れておいたら認識してくれた

※ なので、今回は、前回保存したものをロードした

面倒だが、初回はちまちま登録していく必要がある。設定は以下の通り。

一番下にある「リターゲットベースポーズを管理」って使い方がわからないな。なんだろう。Modify Pose で新規のポーズアセットを作って使うっぽい。あとで勉強する。

マネキンのアニメーションをリターゲット

UnityChan に Animations フォルダを作成する

Mannequin\Animatiopns\ThirdPerson_AnimBP を開く

右上でスケルトンを選ぶ

リターゲットマネージャを選択する

「リグを設定」の「リグを選択」で「Humanoid」を設定する

その後、「自動マッピング」を実行する。すると以下のようになる。

コンテンツブラウザで、ThirdPerson_AnimBP を右クリック

「Animブループリントをリターゲットする」–> animブループリントとリターゲットを複製

リターゲットボタンを押す前にターゲット側で以下を設定する

  • 置換「ThirdPerson」
  • with 「UnityChan」
  • フォルダ「/Game/Character/UnityChan/Animations」

以下のようにファイル一式のコピーが作られる

間違えたら、消してやり直せばOK

アニメーションを設定

– エディタのアウトライナの「ThirdPersonCharacter」の編集を行う

UnityChan_AnimBP_C を選択する

位置の調整

* 動かしてみたら浮いてた

そういえば、CapsuleComponet をいじっていなかった

– エディタのアウトライナの「ThirdPersonCharacter」の編集を行う
– タブをビューポートに切り替える

以下を設定

CapsuleComponet の Shape で

  • CapsuleHeight : 50
  • CapsuleRadius : 30

Mesh (継承)の トランスフォームで以下を設定

  • X: 3.0
  • Y: 0.0
  • Z: -56.0 (要微調整:idleアニメーションで少し沈むのでこのくらいにした)

アウトライナーで、ThirdPerson のトランスフォームの位置を (-750, 370, 186) にする

完成

以上で完成です。

Humanoid をインポートした時のエラー




あれ?よく見るとgeneric になっている。別の何かを間違えていたのかも。

 

ライセンス

この作品はユニティちゃんライセンス条項の元に提供されています