広告
広告

Blender 2.80 から Unity の Humanoid 互換で fbx をエクスポートする

カテゴリ:blender

バージョンは Blender 2.80 と Unity 2017.4.28f1。.blend ファイルダウンロードはこちら

クリエイティブ・コモンズ・ライセンス

このファイルのライセンスは クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。

エクスポートに関する注意事項全般はBlender のリグ/アニメーション Tipsを参照。

ウェイトの設定

ウェイトのついていないボーンが存在すると Humanod の自動マッピングに失敗する。Unity の configure ウインドウで表示されないボーンがある場合は、ボーンのウェイトがついているかどうか確かめる。

T スタンスにする

humanoid で使う場合スケルトンは T スタンスを強制される。A スタンスでメッシュをモデリングしている場合は、T スタンスにするアクションを作成してエクスポートすれば T スタンス状態でエクスポートできる。エクスポートするアクションは T スタンスアクションだけにする。そうしないと別のアクションが適用された状態でエクスポートされることがある。

t-stance
T スタンスのアクション

Unity の Avatar Configuration 中に調整してもいい。

avatar configuration
Avatar Configuration 中にボーンを調整する

エクスポート設定

FBX のエクスポート設定を変更しても、座標系の違いは吸収できない。以下の手順でメッシュもしくはアーマチュアを編集することで、Unity 側で設定せずにインポートできる。アーマチュアとメッシュとを親子付けしている場合は、アーマチュアにのみ以下の手順を実行する。

1. トランスフォームの適用

この記事で紹介する方法は回転を標準化しない状態でエクスポートする。なのでまずはトランスフォームを適用してトランスフォームを標準化する。オブジェクト > 適用 > 全トランスフォーム(Ctrl + A)を実行する。

2. 回転の設定

回転のXに 90 を、Zに -180 入力して回転を適用する。そして回転のXに 90 を、Zに 180 を入力して、見た目を正しい状態に戻す。Xは両方とも 90 を入力することに注意する。

edit rotation
回転の編集

3. FBX でエクスポート

重要なのは、「スケールを適用:すべてFBX」「前方:ーZが前方」「上:Yが上」「アーマチュアタブのデフォームボーンのみ」。

fbx setting
FBX エクスポートの設定

Unity 設定

インポートして Hierarchy に配置すると、Rotation のデフォルト値が設定されているので0にすると正しく表示される。アーマチュアの場合は、アーマチュアのルートのトランスフォームを初期化する。

result
配置結果

スクリプト

以下のスクリプトはこの記事で説明した回転を設定する。

import bpy
import math
bpy.ops.object.transform_apply(location=True, rotation=True, scale=True)
o = bpy.context.active_object
o.rotation_euler = (math.radians(90), 0, math.radians(-180))
bpy.ops.object.transform_apply(location=False, rotation=True, scale=False)
o.rotation_euler = (math.radians(90), 0, math.radians(180))

外部リンク

Mecanim Humanoid について

【Unity】【Blender】【解説編】BlenderでFBXをエクスポートしてUnityに取り込む(スケールと回転の問題を解消)

関連記事

Rigify を Unity へインポートする(Blender 2.78 より古いバージョン)

Blender 記事の目次


広告
広告