ユニティちゃん。こんな名前なのに、キャラクター利用のガイドラインのFAQに、他のゲームエンジンで使っても良いと書いてあったので、Unreal Engine 4 の練習に使ってみました。
モデルのインポート
準備
下準備として、SDユニティちゃんを Unity でインポートします。
そこから tga と fbx ファイルを持ってきます。
プロジェクトの作成
新規プロジェクトを作成
- サードパーソン
- スターターコンテンツなし
なしって書いても最低限置いてありました。
以下のものを、右上のアウトライナーから削除します。
- CubeMesh
- DocumentationActor1
- TextRenderActor
CubeMesh の影が残っているので「ビルド」を実行。
Generic と Humanoid
ファイルに Generic と Humanoid がありますが、Generic を使用します。
【Unity】Humanoid / Genericアニメーションについての基礎知識
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 になっている。別の何かを間違えていたのかも。