【Godot】Godotの3Dモデル読み込み入門:glTFを取り込み、大きさと向きを直し、別のモデルの歩きを移す

作成: 2026-09-23最終更新: 2026-10-10

読み込んだ3Dモデルの大きさと向きを直し、BoneMapで骨の名前をそろえて、Mixamoの歩きを別の人型モデルへ移す方法を解説します。

素材サイトやBlenderから持ってきた3Dモデルを使うときは、大きさと正面の向きをそろえ、Mixamo(無料のアニメ素材サイト)の歩きのような既存のアニメを付けて動かすところまでが、最初の一区切りです。

そのまま置くと、モデルが巨大だったり後ろを向いていたりします。別のモデルの歩きを付けても、Tポーズのまま動かないか、腕がねじれます。アニメは骨の名前あての指示なので、骨の名前と向きの基準がそろっていないと届かないからです。

この記事では、大きさと向きを直し、BoneMap で骨の名前をそろえて、別のモデルに歩きを移す方法を解説します。

左の人形の歩きが矢印で右の体形の違う人形へ移り、2体が同じ歩きの姿勢をとっている

この記事でわかること

  • 直すのはインポート設定、足すのは継承シーンという分け方と、大きさと正面の向きを直す場所
  • アニメが骨の名前あての指示であることと、Tポーズのまま・腕がねじれる原因
  • BoneMap で骨の名前を人型の共通名にそろえる手順
  • Mixamo の歩きを、別の人型モデルで再生する方法

動作確認環境: Godot 4.7

Sponsored

インポート設定と継承シーン

3Dモデルのファイル(.glb や .fbx)をプロジェクトに入れると、Godot は既定でそのファイルからシーンを作ります。このシーンは元のファイルから作った写しで、設定を変えて再インポートするたびに作り直されます。

モデルのファイルからインポート設定を通ってシーンが作られ、再インポートのたびに作り直される。自分で足すノードは、別に作る継承シーンに置く

直す場所は2つに分かれます。

  • インポート設定: 大きさ、アニメのループ、骨の名前のそろえ方など、ファイルからシーンを作るときの決まり。FileSystem でファイルを選ぶと Import ドックに出る
  • 継承シーン: 自分で足すノードの置き場所。当たり判定、スクリプト、アニメを再生する AnimationPlayer など

継承シーンは、ファイルを右クリックして New Inherited Scene を選ぶと作れます。元のモデルを土台にした別の .tscn で、ここに足したノードは、元のファイルを再インポートしても消えません。

大きさ・ループ・骨の名前はインポート設定で直し、足したノードが再インポートで消えるなら継承シーンへ移します。

大きさ(Root Scale)と正面の向き

モデルが巨大、または点のように小さいときは、Import ドックの Root Scale(大きさの倍率)を変えます。変えたら Reimport を押します。インポート設定で直しておくと、どのシーンに置いても同じ大きさで出てきます。

Root Scale が合っていないとモデルが巨大になり、合わせると1メートルの箱2個より少し低い、人の背丈になる。正面は +Z を向く

大きさは、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ポーズのまま。右は名前は合ったが骨の向きの基準が違い、腕がねじれる
  • Tポーズのまま動かない: 指示の宛先が見つからない。骨の名前か、骨を入れた Skeleton3D の場所が合っていない。アニメの時間は進んでいるのに、体は最初の姿勢のまま
  • 腕がねじれる、膝が逆に曲がる: 宛先は合ったが、骨の向きの基準や最初の姿勢が違う。最初の姿勢には、腕を横へ伸ばしたTポーズと、腕を下げたAポーズがある

名前をそろえるのが1段目、向きの基準をそろえるのが2段目です。Godot では、次の BoneMap で骨の名前を、同じ画面の Rest Fixer で向きの基準を、インポートのときにそろえます。

Sponsored

BoneMapで骨の名前をそろえる

BoneMap は、モデルごとにばらばらな骨の名前を、人型の共通の名前に対応づける表です。共通の名前は Hips や LeftUpperArm のようなものです。一覧は SkeletonProfileHumanoid に入っています。

動き元の骨の名前と動き先の骨の名前が、真ん中の人型の共通名にそれぞれ対応づけられる

設定はインポートの画面で行います。

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

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 にも読み込めます。

動き元のファイルをアニメの束として取り込み、Load Library で動き先の AnimationPlayer に入れて、名前をつないで再生する
  1. Import ドックで、動き元のファイルの Import As を Animation Library にする。Reimport を押す(エディタの再起動を求められたら、再起動する)
  2. そのあとで Advanced... を開き、BoneMap とループを設定する。もう一度 Reimport を押す
  3. 動き先の継承シーンに AnimationPlayer を足す。下のパネルの Animation から Manage Animations... を開く
  4. Load Library で動き元のファイルを選ぶ

ループは、左のツリーでアニメを選んで Loop Mode を Linear(最後まで再生したら最初に戻る)にします。

AnimationPlayer に入ったアニメは、ライブラリの名前とアニメの名前をつないで呼びます。ライブラリ名が walk 、アニメが mixamo_com なら play("walk/mixamo_com") です。どちらの名前も素材やファイル名で変わるので、Manage Animations... の一覧に出た名前を使います。

Sponsored

実践: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... を開くと、プレビューで歩きが再生できます。ここで歩かないなら、ダウンロードの設定からやり直します。

② 骨をそろえて、歩きを渡す

  1. walk.fbx の Import As を Animation Library にして再インポートする
  2. walk.fbx の Advanced... を開き、Skeleton3D に BoneMap を作る。Profile は SkeletonProfileHumanoid 。人型の図の割り当てと、Bone Renamer の Rename Bones と Make Unique がオン(既定)で、Skeleton Name が GeneralSkeleton であることを確かめる
  3. 同じ画面の左のツリーで歩きのアニメを選び、Loop Mode を Linear にする。Reimport を押す
  4. hero.glb にも、hero.glb 用の BoneMap を2と同じ手順で作る。Reimport を押す
  5. hero.glb を右クリックして New Inherited Scene を選ぶ。hero_walk.tscn として保存し、ルートの名前を HeroWalk にする
  6. HeroWalk の直下に AnimationPlayer を足して Motion にする。Root Node は既定の ..(親の HeroWalk を指す)のまま
  7. Motion を選び、Manage Animations... を開く。Load Library で walk.fbx を読み込み、一覧に出たライブラリ名とアニメ名を控える
  8. 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 を映す)

③ 動かして確かめる

実践の結果。動き先のモデルが、Mixamo の歩きと同じ順で腕と脚を交互に振り、その場で歩き続けている

再生して見るのは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 を作ってみてください。人型の図に骨が割り当てられるのを見ると、骨の名前をそろえるという意味がつかめます。あなたのゲームで、最初に歩かせたいのはどのキャラでしょうか。

次に読む学習パスの次の記事
3D

CharacterBody3Dで作る3Dキャラクター移動 - 重力・ジャンプ・三人称カメラ

この記事を読む
Godot このセクションのノート104