素材サイトやBlenderから持ってきた3Dモデルを使うときは、大きさと正面の向きをそろえ、Mixamo(無料のアニメ素材サイト)の歩きのような既存のアニメを付けて動かすところまでが、最初の一区切りです。
そのまま置くと、モデルが巨大だったり後ろを向いていたりします。別のモデルの歩きを付けても、Tポーズのまま動かないか、腕がねじれます。アニメは骨の名前あての指示なので、骨の名前と向きの基準がそろっていないと届かないからです。
この記事では、大きさと向きを直し、BoneMap で骨の名前をそろえて、別のモデルに歩きを移す方法を解説します。
この記事でわかること
- 直すのはインポート設定、足すのは継承シーンという分け方と、大きさと正面の向きを直す場所
- アニメが骨の名前あての指示であることと、Tポーズのまま・腕がねじれる原因
- BoneMap で骨の名前を人型の共通名にそろえる手順
- Mixamo の歩きを、別の人型モデルで再生する方法
動作確認環境: Godot 4.7
インポート設定と継承シーン
3Dモデルのファイル(.glb や .fbx)をプロジェクトに入れると、Godot は既定でそのファイルからシーンを作ります。このシーンは元のファイルから作った写しで、設定を変えて再インポートするたびに作り直されます。

直す場所は2つに分かれます。
- インポート設定: 大きさ、アニメのループ、骨の名前のそろえ方など、ファイルからシーンを作るときの決まり。FileSystem でファイルを選ぶと Import ドックに出る
- 継承シーン: 自分で足すノードの置き場所。当たり判定、スクリプト、アニメを再生する AnimationPlayer など
継承シーンは、ファイルを右クリックして New Inherited Scene を選ぶと作れます。元のモデルを土台にした別の .tscn で、ここに足したノードは、元のファイルを再インポートしても消えません。
大きさ・ループ・骨の名前はインポート設定で直し、足したノードが再インポートで消えるなら継承シーンへ移します。
大きさ(Root Scale)と正面の向き
モデルが巨大、または点のように小さいときは、Import ドックの Root Scale(大きさの倍率)を変えます。変えたら Reimport を押します。インポート設定で直しておくと、どのシーンに置いても同じ大きさで出てきます。

大きさは、1メートルの箱と並べて確かめます。人型なら、箱1.7個ぶんくらいの背丈です。
正面の向きにも決まりがあります。Godot では、キャラクターなどの3Dアセットは +Z を正面にそろえます。カメラが前として扱う -Z とは逆です。回転を 0 のまま置いたモデルの顔が、移動ギズモ(ノードを選ぶと出る、動かすための 矢印)の青い矢印(+Z)と同じ向きならそろっています。
ずれているモデルは、親の Node3D の子として置き、その子を Y で回します。後ろ向きなら 180 度、横向きなら 90 か -90 度です。キャラの向きを変えるのは親のほうです。モデルを直接回すと、ゲーム中に向きを変えたときに補正が上書きされて消えます。
持ち込むファイルは、形・骨・アニメ・テクスチャが1つに入り、単位もメートルの glTF(.glb)から始めると迷いません。Mixamo のように FBX で配られている素材も、Godot 4.3 以降はそのまま入れられます。
アニメと骨の名前の関係
人型のモデルには、体の中に骨(Skeleton3D)が入っています。アニメは、その骨を1本ずつ「この時間に、この向きへ回す」という指示の並びです。腰の骨は、体の位置を動かす指示も持っています。Mixamo の In Place は、腰の上下の揺れは残したまま、前へ進む分だけを抜いたアニメです。

指示には、宛先として Skeleton3D の場所と骨の名前が書いてあります。たとえば Mixamo の歩きは、左腕への指示の宛先が mixamorig_LeftArm です。別のモデルで同じ骨が upperarm.l という名前なら、この指示は届きません。
別のモデルでアニメが動かないとき、起きていることは次の2つです。

- Tポーズのまま動かない: 指示の宛先が見つからない。骨の名前か、骨を入れた Skeleton3D の場所が合っていない。アニメの時間は進んでいるのに、体は最初の姿勢のまま
- 腕がねじれる、膝が逆に曲がる: 宛先は合ったが、骨の向きの基準や最初の姿勢が違う。最初の姿勢には、腕を横へ伸ばしたTポーズと、腕を下げたAポーズがある
名前をそろえるのが1段目、向きの基準をそろえるのが2段目です。Godot では、次の BoneMap で骨の名前を、同じ画面の Rest Fixer で向きの基準を、インポートのときにそろえます。
BoneMapで骨の名前をそろえる
BoneMap は、モデルごとにばらばらな骨の名前を、人型の共通の名前に対応づける表です。共通の名前は Hips や LeftUpperArm のようなものです。一覧は SkeletonProfileHumanoid に入っています。

設定はインポートの画面で行います。
- FileSystem でモデルのファイルを選び、Import ドックの Advanced... を押す
- 左のツリーで Skeleton3D を選ぶ
- 右の Retarget の Bone Map で New BoneMap を作る
- BoneMap の Profile に New SkeletonProfileHumanoid を入れる
- 人型の図の点の色を見る。緑が割り当て済み、マゼンタは必須の骨が空いている、赤は同じ骨への重複や親子の並びの食い違い、灰色は必須ではない骨(指など)の空き
- マゼンタか赤の点があれば、その点をクリックする。図の下にその骨の欄が出るので、右の選択ボタンからモデル側の骨を選ぶ
- Reimport を押す

BoneMap は、動き元と動き先のそれぞれで作ります。どちらの表にも、そのモデル自身の骨の名前が入ります。
名前を書き換えるのは、同じ画面の Bone Renamer です。Rename Bones がオンなら、再インポートで骨の名前が共通の名前に変わります。Make Unique がオンなら、アニメは Skeleton3D を場所ではなく、シーンで1つだけの名前で参照します。その名前が Skeleton Name で、両方のモデルで GeneralSkeleton にし ておきます。これでノードの並びが違っても宛先がそろい、片方のアニメがもう片方にも届きます。
向きの基準のずれは、同じ画面の Rest Fixer が受け持ちます。骨格の基準の姿勢(レスト)や骨の向きを補正する設定の集まりです。まずは既定のまま試します。割り当てが正しいのに腕の開き方が合わないときは、腕を下げたAポーズのほうのモデルで Fix Silhouette をオンにします。Aポーズのシルエットを、Tポーズへ寄せる設定です。
他のエンジンでいうと: Unity の Humanoid Avatar や、Unreal Engine の IK Retargeter と同じく、別の人型モデルへ動きを移すための仕組みです。Godot では、インポートのときに BoneMap で骨の名前をそろえておく方式です。
AnimationLibraryでアニメを渡す
骨の名前がそろったら、動き元のアニメを動き先の AnimationPlayer へ渡します。動き元のファイルは、モデルとしてではなく、アニメだけの束(AnimationLibrary)として読み込ませます。こうすると、どの AnimationPlayer にも読み込めます。

- Import ドックで、動き元のファイルの Import As を Animation Library にする。Reimport を押す(エディタの再起動を求められたら、再起動する)
- そのあとで Advanced... を開き、BoneMap とループを設定する 。もう一度 Reimport を押す
- 動き先の継承シーンに AnimationPlayer を足す。下のパネルの Animation から Manage Animations... を開く
- Load Library で動き元のファイルを選ぶ
ループは、左のツリーでアニメを選んで Loop Mode を Linear(最後まで再生したら最初に戻る)にします。
AnimationPlayer に入ったアニメは、ライブラリの名前とアニメの名前をつないで呼びます。ライブラリ名が walk 、アニメが mixamo_com なら play("walk/mixamo_com") です。どちらの名前も素材やファイル名で変わるので、Manage Animations... の一覧に出た名前を使います。
実践:Mixamo の歩きを、別の人型モデルで歩かせる
アクションRPGの主人公、ホラーゲームの住人、パーティーゲームの参加者 —— 人型のキャラは、同じ歩きで動かせます。歩きを1本用意すれば、全員で使い回せます。Mixamo の歩きを、Mixamo 以外で作られた人型モデルで再生させます。
① 用意するもの
新しいプロジェクトで始めます。素材は2つです。
- 動き元: Mixamo の歩き。無料で使えるが、Adobe のアカウントが要る。人型のキャラを1体選び、アニメの Walking を開く。In Place にチェックを入れる。Format は FBX Binary(.fbx)、Skin は With Skin でダウンロードする。プロ ジェクトに
walk.fbxとして入れる - 動き先: Mixamo 以外で作られた人型モデルの
.glbを1つ。骨(Skeleton3D)が入っていて、骨で体が動く「リグ付き」のもの。CC0(誰でも自由に使ってよいライセンス)の Quaternius や KayKit の人型キャラクターなど。プロジェクトにhero.glbとして入れる
先に、動き元が自分で歩けることを確かめます。walk.fbx の Advanced... を開くと、プレビューで歩きが再生できます。ここで歩かないなら、ダウンロードの設定からやり直します。
② 骨をそろえて、歩きを渡す
walk.fbxの Import As を Animation Library にして再インポートするwalk.fbxの Advanced... を開き、Skeleton3D に BoneMap を作る。Profile は SkeletonProfileHumanoid 。人型の図の割り当てと、Bone Renamer の Rename Bones と Make Unique がオン(既定)で、Skeleton Name が GeneralSkeleton であることを確かめる- 同じ画面の左のツリーで歩きのアニメを選び、Loop Mode を Linear にする。Reimport を押す
hero.glbにも、hero.glb用の BoneMap を2と同じ手順で作る。Reimport を押すhero.glbを右クリックして New Inherited Scene を選ぶ。hero_walk.tscnとして保存し、ルートの名前を HeroWalk にする- HeroWalk の直下に AnimationPlayer を足して Motion にする。Root Node は既定の
..(親の HeroWalk を指す)のまま - Motion を選び、Manage Animations... を開く。Load Library で
walk.fbxを読み込み、一覧に出たライブラリ名とアニメ名を控える - HeroWalk に次 のスクリプトを付ける。文字列は、7で控えた名前に合わせる
次のコードは、一覧のライブラリ名が walk 、アニメ名が mixamo_com だった場合です。
# hero_walk.gd(HeroWalk のルート)
extends Node3D
@onready var motion: AnimationPlayer = $Motion
func _ready() -> void:
motion.play("walk/mixamo_com") # 「ライブラリ名/アニメ名」。一覧の名前に合わせる
最後に、新しい3Dシーン Main を作って Main Scene に指定し、次の4つを置きます。
hero_walk.tscn(FileSystem からドラッグ。位置は原点のまま)- 床の MeshInstance3D(PlaneMesh、Size は
(10, 10)) - DirectionalLight3D(Rotation は
(-45, 30, 0)) - Camera3D(Position は
(2, 1, 2.5)、Rotation は(0, 39, 0)。斜め前から HeroWalk を映す)
③ 動かして確かめる

再生して見るのは3つです。
動き先のモデルが、その場で足を交互に踏み出して歩きます。体が止まったままなら、指示が届いていません。下の Debugger に「Animation not found」と出ていたら、play() の名前が違います。名前が合っているなら、両方のモデルの Skeleton Name を見ます。その次が骨の割り当てです。
腕と脚は、Mixamo のプレビューと同じ順で交互 に振れます。体格が違うので、歩幅まで同じにはなりません。腕がねじれる、膝が逆に曲がるなら、人型の図で左右の腕と脚の割り当てを見直します。割り当てが正しいのに腕の開き方が合わないなら、Fix Silhouette を試します。
仕上げに、1サイクルが終わったあとを見てください。体ごと画面の外へ進んでいくなら、Mixamo の In Place を見直します。1回で止まるなら、歩きの Loop Mode です。止まらずに次の一歩へつながり、同じ場所で歩き続ければ完成です。
ポイントは2つです。
- 両方のモデルを、同じ人型の名前にそろえる: アニメは骨の名前あての指示です。BoneMap を動き元と動き先のそれぞれに作ると、宛先の名前が一致します
- 足すものは継承シーンに置く: Motion とスクリプトは
hero_walk.tscnにあります。hero.glbを再インポートしても消えません
歩きを移せたら、待機・歩き・走りを速度でなめらかに混ぜる 3Dスケルタルアニメーション入門 へ進めます。
うまくいかないときは
| 症状 | 原因 | 直し方 |
|---|---|---|
Load Library で walk.fbx を読み込めない | Import As が Scene のままで、アニメの束として取り込まれていない | Import As を Animation Library にして Reimport する |
| 一部の骨だけ動かない(腕は振るのに頭が固まる、など) | その骨が BoneMap で割り当てられていない | 人型の図でその骨の点を探し、マゼンタや灰 色なら手で割り当ててから再インポートする |
look_at() で敵やカメラの方を向かせると、背中を向ける | look_at() は -Z を前として回すが、正面を +Z にそろえたモデルは逆を向く | look_at() の3つ目の引数 use_model_front を true にする |
| BoneMap をあとから設定したら、継承シーンに足したノードの参照が切れた | 骨の名前は Hips などの共通名に、Skeleton3D のノード名は GeneralSkeleton に変わった | BoneMap は継承シーンを作る前に設定する。作ったあとなら、足したノードの親や参照先を新しい名前に直す |
おまけ:先に知っておくと良いこと
- 同じリグどうしなら BoneMap なしで動く: 骨の名前とノードの並びが同じなら、宛先がそのまま届きます。同じパックのモデルとアニメは、まずそのまま試してください
- Make Local はつながりを切る: シーンに置いたモデルがただのノードの集まりになります。元のファイルでノードを増減しても届きません。キャラには継承シーンを使います
- 質感を変えるのも継承シーンで: 読み込んだシーンの中のマテリアルを書き換えると、再インポートで戻ります。継承シーンの MeshInstance3D の Surface Material Override に、自分のマテリアルを付けます。StandardMaterial3D入門
まとめ
- 直すのはインポート設定、足すのは継承シーン: 読み込んだシーンは、再インポートのたびに作り直され る
- 大きさは Root Scale、正面は +Z: 大きさはインポート設定で直す。後ろ向きのモデルは、親の子として置いて回す
- アニメは骨の名前あての回転の指示: 宛先が見つからないとTポーズのまま、向きの基準が違うと腕がねじれる
- BoneMap は動き元と動き先のそれぞれに: 人型の共通名にそろえる
- アニメは束で渡す: Animation Library として取り込み、Load Library で読み込む。呼ぶ名前は一覧に出た
ライブラリ名/アニメ名
まずは手元の人型モデルで、Skeleton3D に BoneMap を作ってみてください。人型の図に骨が割り当てられるのを見ると、骨の名前をそろえるという意味がつかめます。あなたのゲームで、最初に歩かせたいのはどのキャラでしょうか。