この記事について

Blenderで作った3DモデルをGodotに持っていきたいときは、まずGLB形式で書き出して読み込む方法から始めると、確認する箇所を絞れます。

この記事では、GLBの書き出しからGodotへの配置までを説明します。あわせて「大きさが合わない」「色や模様が違う」「再インポートでマテリアルが戻る」ときの確認方法も紹介します。

検証環境はBlender 4.3.2/Godot 4.6.3、Linuxです。静的なメッシュを対象にしています。リグ・アニメーション・シェイプキーは今回の検証には含めていません。操作画像もこのLinux環境の実画面で、項目名は英語表記を併記します。Godotのプロジェクトを開き、Blenderを起動できる状態から進めます。寸法とマテリアルの数値は、実際に書き出したGLBを読み込んで確認しています。

画像の赤い番号は、本文の手順番号です。画像に写っている操作箇所や確認結果に番号を付け、対象の手順を画像内とキャプションに示しています。画像はクリックすると拡大できます。

この記事でわかること

  • BlenderからGLBを書き出し、Godotの3Dシーンに配置する方法
  • サイズが違うときに、寸法とScaleのどちらを見るか
  • Blenderのマテリアルがそのまま再現されないときの確認箇所
  • Godotで編集したマテリアルを再インポート後も使う方法

BlenderからGodotへはGLBで読み込む

GLBは、glTF 2.0のバイナリ形式です。メッシュや対応するマテリアル、画像テクスチャを1つのファイルにまとめられます。Godotの公式ドキュメントでもglTF 2.0が推奨されています。

Blenderから初めて読み込む場合は、.blendを直接置くよりも、書き出されたGLBをいったん確認する手順がわかりやすいです。.blendの直接読み込みでは、Godotが外部のBlenderを呼び出してglTFへ変換するため、Blenderのインストールや実行ファイルの場所も関係します。

なお、Godot 4.3以降はFBXも標準のufbxインポーターで読み込めます。この記事では、Blender側の書き出し設定とGodot側の確認手順を揃えやすいGLBを使います。

参考:Godot 4.6 公式ドキュメント Available 3D formats

BlenderからGLBを書き出す

先にGodotで空のプロジェクトを開き、モデルの保存先を用意します。パソコンのファイル管理画面で、project.godotが入っているフォルダーにassetsを作り、その中にmodelsを作ります。ここへtest_cube.glbを書き出します。同じくproject.godotと並ぶ場所に、後半で使うmaterialsフォルダーも作っておきます。

GodotのFileSystemに出るres://は「project.godotがあるフォルダー」を表します。Blenderの保存画面では、res://という文字ではなく、パソコン上の実際のプロジェクトフォルダーを選んでください。

1.確認用にシンプルなモデルを用意する

まずは単色の立方体で試します。複雑なモデルを使う前に、形・大きさ・色のどこまで読み込めているか確認するためです。

  1. BlenderでFile → New → Generalから新しいファイルを開き、左上がObject Modeであることを確認して、中央のCubeをクリックして選択します。オレンジ色の枠が付けば選択できています。
  2. 右側のScene PropertiesでUnitsを展開し、Unit SystemをMetric、Unit Scaleを1.0にします。
  3. サイドバーが閉じていれば、3Dビューにマウスポインターを置いてNキーを押します。右側のItem → Transform(下の画像の赤枠③)で、DimensionsがX・Y・Zとも2 m、Scaleがすべて1.0であることを確認します。
  4. 画面右下のPropertiesでMaterial Propertiesを開きます。マテリアルがなければNewをクリックし、SurfaceのPrincipled BSDFにあるBase Color(赤枠④)をオレンジ色などに変えます。
  5. 3Dビュー右上の球のアイコンからMaterial Preview(赤枠⑤)を選び、材質の色を確認します。
Blenderで選択した立方体のDimensionsが各2m、Scaleが各1と表示された準備画面。操作・確認箇所を赤枠と本文の手順番号で表示
Blender 4.3.2/Linux。本文の手順③はDimensionsとScaleの確認欄、④はBase Colorの色設定欄、⑤はMaterial Previewの切替アイコンです。

画像の例では、オブジェクト名をTestCube、マテリアル名をSample_Materialにしています。初期の名前のままでも進められます。後半に出てくるSample_Material.tresは、自分のマテリアル名の.tresファイルへ読み替えてください。モデルを更新するときも同じマテリアル名を使うようにします。

この時点では「2 mの立方体にマテリアルが割り当てられ、Base Colorが設定されている」ことを確認します。Viewport Displayの色だけを変更しても、書き出すマテリアルの色を設定したことにはなりません。

2.選択したモデルをGLBで書き出す

左上がObject Modeになっていることを確認し、書き出す立方体を選んだ状態で下の画像の赤枠をたどり、①File → ②Export → ③glTF 2.0(.glb/.gltf)の順に開きます。

BlenderのFileからExportを開きglTF 2.0を選ぶメニュー。操作・確認箇所を赤枠と本文の手順番号で表示
Blender 4.3.2/Linux。本文のメニュー操作①File → ②Export → ③glTF 2.0を赤枠で示しています(メニュー部分を拡大)。

ファイルの保存画面が開いたら、次の項目を設定します。

  1. 下の画像の赤枠①の保存先で、先ほど用意したGodotプロジェクト内のassets/modelsを選びます。
  2. 赤枠②のファイル名をtest_cube.glbにします。
  3. 赤枠③のFormatでglTF Binary(.glb)を選びます。メッシュや対応するマテリアルを1ファイルにまとめるためです。
  4. 右側のInclude → Limit toにあるSelected Objects(赤枠④)を有効にします。選択した立方体だけを書き出し、初期カメラやライトが混ざるのを防ぎます。
  5. Transformの+Y Up(赤枠⑤)は有効のままにします。Godot側の上方向に合わせて書き出します。
  6. 設定を確認し、右下のExport glTF 2.0(赤枠⑥)をクリックします。
BlenderのglTF書き出し画面でGLB形式、Selected Objects、+Y Up、test_cube.glbの保存先を設定。操作・確認箇所を赤枠と本文の手順番号で表示
Blender 4.3.2/Linux。本文の書き出し手順①は保存先、②はファイル名、③はFormat、④はSelected Objects、⑤は+Y Up、⑥はExport glTF 2.0ボタンです。

保存先にtest_cube.glbができれば、この工程は完了です。この画像の赤枠①の保存先のパスは今回の例なので、自分のGodotプロジェクト内のassets/modelsへ読み替えてください。

後で形を直せるように、File → Save Asから作業用の.blendも保存します。Godotプロジェクトの外に保存しておくと、GLBと.blendが同時に読み込まれて混乱するのを避けられます。画像の例ではtest_cube.blendという名前にしています。

GodotにGLBを読み込む

1.新しい3Dシーンに配置する

GLBをプロジェクト内へ書き出したら、Godotに戻ります。FileSystemは、プロジェクト内の素材を表示する場所です。assets → modelsを開き、test_cube.glbが表示されるまで待ちます。

表示されない場合は、別のプロジェクトや、その外側のフォルダーへ保存していないか確認します。project.godotと同じプロジェクトのassets/modelsにあるかが確認箇所です。

上部メニューのScene → New Sceneを開き、左のSceneドックで3D Sceneを選びます。Node3Dがシーンの一番上のノードになります。画像では、Node3Dを選んでF2キーで名前をImportCheckに変えています。

Godotの左下FileSystemにtest_cube.glb、左上SceneにNode3DのImportCheckが表示された配置前の画面。操作・確認箇所を赤枠と本文の手順番号で表示
Godot 4.6.3/Linux。本文の手順①のドラッグ元test_cube.glbと、ドラッグ先ImportCheckを赤枠と矢印で示しています。
  1. 上の画像の赤枠①と矢印を目印に、左下のFileSystemからtest_cube.glbを、左上のSceneにある一番上のNode3D(画像ではImportCheck)へドラッグします。
  2. Sceneにモデルの項目が増えたら、そのモデルを選択します。3Dビューへマウスポインターを移してFキーを押すと、選択したモデルへ表示が寄ります。
  3. Scene → Save Scene(Ctrl+S)から、シーンをbeginner_check.tscnという名前で保存します。以降の確認は、この作業用シーンで行います。

FileSystemにファイルがあることと、Sceneにモデルを配置したことは別の段階です。Sceneにモデルが追加され、3Dビューに立方体が見えれば配置できています。

GLBはBlenderから受け取るモデル、.tscnはGodotで配置や追加ノードを保存するシーンです。GLBを修正したら、Blenderから同じファイルへ書き出し直す流れにしておきます。

2.基準の2 m立方体と並べて確認する

読み込めたモデルの大きさを、Godot側で作った基準の立方体と比べます。カメラの遠近感だけでは判断しにくいためです。

  1. Sceneで一番上のNode3Dを選び、子ノードを追加する+ボタンをクリックします。
  2. MeshInstance3Dを検索して選び、Createをクリックします。これは、形状データを画面に表示するためのノードです。
  3. 右側のInspectorでMeshのドロップダウンを開き、New欄からBoxMeshを選びます。
  4. 作成されたBoxMeshをクリックして設定を開き、Size(下の画像の赤枠④)のX・Y・Zをすべて2にします。
  5. Sceneで基準のMeshInstance3Dを選び直し、InspectorのTransform → PositionのXを3.5にします。BoxMesh内の設定ではなく、ノード側のTransformを変更する操作です。Scaleは1・1・1のままにします。
  6. 3Dビュー左上のPerspectiveをクリックし、Front Viewを選びます。Auto Orthogonal Enabledが有効なら、遠近感のないFront Orthogonalへ切り替わります。画像の赤枠⑥は、切り替え後にFront Orthogonalと表示された状態です。この表示になったら、大きさを比べます。

BoxMeshのSizeは形状の寸法、ノードのScaleは倍率です。今回はSizeを2にして、Scaleは1のまま使います。

Godotの正面平行投影で2mのGLBとSizeが各2のBoxMeshを比較。操作・確認箇所を赤枠と本文の手順番号で表示
Godot 4.6.3/Linux。本文の手順④はSize各2の入力欄、⑥はFront Viewへ切り替えた後のFront Orthogonal表示です。

正面から比較し、読み込んだ立方体と基準のBoxMeshが同じ大きさなら、2 mという寸法を保って取り込めています。Godotの3Dは1単位を1 mとして扱います。

ここで確認するのは3Dエディター上の配置です。実行時に表示されない・暗い場合のCamera3Dやライトの確認点は、後の「暗いだけならライトと表示環境を確認する」で補足します。

参考:Godot 4.6 3Dの座標系/BoxMeshのSize

大きさが合わないときに確認すること

Scaleが1であることと、寸法が正しいことは別

BlenderのDimensionsはオブジェクトの大きさ、Scaleはメッシュにかかる倍率です。Scaleを適用すると倍率がメッシュ側へ反映されますが、その場で見えている大きさは変わりません。

今回、同じ2 mの立方体を使って次の3パターンをGLBで書き出し、Godot内で測定しました。回転は追加せず、+Y Upを有効にしています。

Blender側の状態 Blenderの寸法 X・Y・Z Godot内の寸法 X・Y・Z
初期Cube、Scaleは1 2 × 2 × 2 m 2 × 2 × 2 m
Scaleを2・0.5・1.5に変更、未適用 4 × 1 × 3 m 4 × 3 × 1 m
上と同じ大きさでScaleを適用 4 × 1 × 3 m 4 × 3 × 1 m

BlenderはZが上、GodotはYが上なので、この例では高さにあたる3 mがGodotのYに移っています。未適用でも、適用済みでも、読み込まれた大きさは一致しました。「Scaleを適用していないと必ずサイズが壊れる」とは限りません。

ただし、倍率を1に揃えておくと数値を追いやすくなります。静的なモデルで必要な場合は、Object ModeのObject → Apply → Scaleで適用します。リグやアニメーションのあるモデルへ、そのまま同じ操作を広げないようにしてください。

倍率を変える前に確認する順番

  1. BlenderのDimensionsが、作りたい実寸になっているか確認します。
  2. GodotのFileSystemでGLBを1回クリックし、Importタブを開きます。Root Scaleを意図せず変更していないか確認します。基準は1.0です。
  3. 配置したモデルと親ノードのScaleを確認します。親が拡大されていると、モデルもまとめて拡大されます。
  4. 基準のBoxMeshと並べて、大きさを比較します。

Godot側で0.01倍や100倍にして見た目だけ合わせる前に、どこで倍率が入ったのかを確認しておくと、別のモデルを追加するときも揃えやすくなります。

マテリアルが同じ見た目にならないとき

まずはPrincipled BSDFの単色で確認する

最初に、Principled BSDFのBase Colorへ直接色を設定したマテリアルで試します。別途行った数値比較のテストでは、Base Colorに加え、Metallicの0.25、Roughnessの0.6がGodot側のマテリアルへ引き継がれました。

単色は合っているのに模様が消える場合は、モデルの読み込みよりも、模様を作っているノード構成を確認します。

Noise Textureの模様はそのままGLBへ渡らない

BlenderのNoise TextureをPrincipled BSDFのBase Colorへつないだだけのマテリアルも検証しました。この構成では、書き出したGLBに模様の画像が含まれず、Godot側でもNoiseの模様は再現されませんでした。

このような手続き型の模様を持ち込みたい場合は、Blenderで模様を画像へベイクし、その画像をImage TextureからBase Colorへつないで書き出す方法があります。UV展開とベイクが必要なので、まず単色で読み込めるところまで確認してから進めてください。画像の作成だけでなく、マテリアルへの接続まで必要です。Godot側のShaderMaterialで模様を作り直す方法もあります。UV展開やベイク自体の詳しい手順は、この記事の対象外です。

Base Colorの画像を使う場合は、次の順番で確認します。

  1. Image Textureノードに、使いたい画像が読み込まれているか
  2. Image TextureのColorがPrincipled BSDFのBase Colorにつながっているか
  3. モデルにUVがあり、BlenderのMaterial Previewでも模様が正しく見えるか
  4. GodotのFileSystemでGLBを1回クリックしてImportタブを開き、Embedded Texture HandlingをDiscard All Texturesにしていないか

参考:Blender公式 glTF 2.0のマテリアル仕様(4.5 LTS)/Godot 4.6 インポート設定

暗いだけならライトと表示環境を確認する

色の値が合っていても、BlenderとGodotでライトや環境が違えば同じ見た目にはなりません。すぐにマテリアルを書き直す前に、ライトと環境の条件を確認します。

特に、Godotのエディターで表示されるプレビュー用の太陽・環境は、ゲーム実行時には引き継がれません。編集画面では見えるのに実行すると暗い場合は、シーンにDirectionalLight3Dなどのライトを追加します。ゲーム画面自体にモデルが映らない場合は、Camera3Dも確認してください。

再インポートでマテリアルの編集を残す

形はBlenderで直し、色や質感はGodotで調整したい場合は、マテリアルを外部の.tresファイルへ取り出します。モデルを更新しても、Godot側のマテリアル調整を残すための準備です。

1.Extract Materialsで外部ファイルにする

  1. FileSystemのtest_cube.glbをダブルクリックします。Advanced Import Settingsという、モデルの読み込み設定画面が開きます。
  2. 下の画像の赤枠②を目印に、左上のActionsを開き、Extract Materialsを選びます。
  3. 保存先の選択画面で、用意しておいたmaterialsフォルダーを開き、Select Current Folderをクリックします。
  4. Extract Materials to Resource Filesの画面で、対象のマテリアルにチェックが付いていることと、Pathがres://materials/自分のマテリアル名.tresになっていることを確認します。初回はStatusにWill create new fileと表示されます。
  5. Extractをクリックします。読み込みが終わったら、Advanced Import SettingsのCloseをクリックして作業用シーンへ戻ります。
GodotのAdvanced Import SettingsでActionsからExtract Materialsを選ぶメニュー。操作・確認箇所を赤枠と本文の手順番号で表示
Godot 4.6.3/Linux。本文の手順②で開くActionsと、そこから選ぶExtract Materialsを赤枠で示しています(メニュー部分を拡大)。

元のシーンに戻り、FileSystemにmaterials/Sample_Material.tresができたことを確認します。ファイル名はBlender側で付けたマテリアル名によって変わります。

Extract Materialsを使うと、取り出した.tresを使うUse Externalが自動で設定されます。これで、GLB内のマテリアルとGodotで編集するマテリアルを分けて管理できます。

2.変更は作業用シーンで確認する

  1. FileSystemにあるSample_Material.tres(下の画像の赤枠①)をクリックします。右側のInspectorにマテリアルの設定が表示されます。
  2. Albedoを開いてColor(赤枠②)をクリックし、色の選択画面で緑色に変更します。画像の例はHexに28c9abを入力しています。
  3. Roughness(赤枠③)を開き、値を0.82にします。数字も変えておくと、再インポート後に編集が残ったか確かめやすくなります。
  4. Ctrl+Sで変更を保存し、作業用シーンのbeginner_check.tscnに戻ります。3Dビューのモデルが緑になっていることを確認します。画像の赤枠④は、この保存後の確認結果を示しています。
Godotで外部Sample_Material.tresを緑色、Roughness0.82に変更したInspectorと作業シーン。操作・確認箇所を赤枠と本文の手順番号で表示
Godot 4.6.3/Linux。本文の手順①は外部.tres、②はColor、③はRoughnessの設定欄、④は保存後にモデルが緑になった確認結果です。

Advanced Import Settingsのプレビューは、外部マテリアルを使う設定にしたあとも、Blender側の元のマテリアルを表示します。

.tresを編集したのに変わらないと感じたら、確認している画面を見直してください。色の変更を見る場所は、GLBを配置したbeginner_check.tscnの3Dビューです。

3.形状を更新して再インポートする

次に、Blenderでモデルを直し、Godot側の調整が残るか試します。

  1. Blenderで先ほど保存した.blendを開き、立方体のDimensionsを3 m・3 m・3 mに変更します。
  2. 元のマテリアルのBase Colorを青へ変えます。マテリアル名は、最初の書き出し時から変更しません。画像の例ではSample_Materialのままです。
  3. File → Export → glTF 2.0から、同じ保存先のtest_cube.glbへ書き出し直します。上書きするファイルを確認して確定します。
  4. Godotに戻り、読み込みが終わるのを待ちます。自動で反映されない場合はFileSystemでGLBを選び、ImportのReimportで読み込み直します。
  5. beginner_check.tscnを開きます。下の画像の赤枠⑤を目印に、基準BoxMeshのSizeも3・3・3へ変更して正面から比べ、モデルが同じ3 mになったことと、緑色が残っていることを確認します。
  6. FileSystemで外部.tresを選び直し、InspectorのRoughnessが0.82のままか確認します。設定場所は、前の「変更は作業用シーンで確認する」で示したRoughness欄です。
Godotで再インポート後の緑の3mモデルをSize各3の基準BoxMeshと正面から比較。操作・確認箇所を赤枠と本文の手順番号で表示
Godot 4.6.3/Linux。本文の手順⑤の確認結果です。左のGLBは緑色を保ち、Sizeを各3にした右の基準BoxMeshと大きさが揃っています。

この確認で「モデルの形は更新され、Godot側の色や質感は残る」という動きを確かめられます。外部マテリアルを使っている間は、Blender側で変更した青色がそのまま使われるわけではありません。形はBlender、色や質感はGodotというように、編集する場所を決めておくと整理しやすくなります。

Blender側のマテリアル名は維持してください。名前を変えると、元のマテリアルと外部.tresの対応が切れる場合があります。変更した場合はAdvanced Import SettingsのMaterialsで対象を選び、Use Externalを有効にして、Pathに既存の.tresを指定し直します。

参考:Godot 4.6 マテリアルを外部ファイルへ取り出す方法

まとめ

BlenderのモデルをGodotへ持っていくときは、最初に単色の立方体をGLBで読み込んでみると、設定を確認しやすくなります。

  • GLBで書き出し、別の.tscnへ配置する
  • サイズはScaleの値だけで判断せず、寸法と親ノードの倍率を確認する
  • マテリアルはPrincipled BSDFの単色から試し、模様が消える場合は画像とノード接続を確認する
  • Godot側の編集を残したい場合はExtract Materialsを使い、確認は配置先のシーンで行う

まずは「2 mの立方体が、指定した色で表示される」ところまで確認してから、実際に使いたいモデルへ置き換えてみてください。