【Godot】GodotのStandardMaterial3D入門:MetallicとRoughnessで質感を塗り分け、テクスチャを貼る

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

StandardMaterial3DのMetallicとRoughnessで木・金属・ゴムを作り分け、テクスチャを貼る方法を解説します。

3Dシーンに置いた箱や球を、木・金属・ゴムのように見せ分けるには、StandardMaterial3D の Metallic と Roughness の2つの数値を決めます。テクスチャは、そのあとに乗せます。

何も設定しないと、どれも同じ白い粘土のように見えます。金属にしようと Metallic を 1 にしても、Roughness が 1 のままではつやが出ず、空もライトも無いと黒く沈みます。

この記事では、StandardMaterial3D の数値だけで木箱・金属の樽・ゴムのボールを作り分け、テクスチャを貼る方法を解説します。

空の下の床に、数値だけで作り分けた茶色の木箱・銀色の金属の樽・青いゴムのボールが並んでいる

この記事でわかること

  • 見える色が「塗った色」と「映り込み」でできていること
  • Metallic を 0 か 1 で決める理由と、Roughness で磨き具合を決めること
  • マテリアルを付ける場所と、テクスチャの貼り方
  • 複製した1つだけ色を変える方法

動作確認環境: Godot 4.7(レンダラーは Forward+)

Sponsored

塗った色と映り込み

3Dの面に見える色は、2つの色を混ぜてできています。

  • 塗った色: 光を受けて、四方へ散らばって返る色。どこから見ても同じに見える。木やゴムの色はほとんどこれ
  • 映り込み: 周りの景色やライトが、鏡のように映った色。見る向きで変わる
球の見え方は、塗った色と映り込みの2つを混ぜたもの。Metallic は映り込みの割合、Roughness は映り込みのぼけ具合を決める

Metallic は、この2つの割合を決めます。0 なら塗った色が主役で、映り込みはうっすら乗るだけです。1 にすると塗った色がほとんど消え、見えるのは映り込みだけになります。

Roughness は、映り込みのぼけ具合です。0 に近いほど鏡のようにくっきり映り、1 に近いほどぼけて、映っているものが分からなくなります。

新しく作ったマテリアルが白い粘土に見えるのは、既定値が「白・Metallic 0・Roughness 1」だからです。塗った色が白で、映り込みはぼけきって形が見えません。金属にしてもつやが出ないのは、Roughness が 1 のままで映り込みがぼけきっているからです。空もライトも無いまま実行して黒く沈むのは、映り込みだけで見えている面に、映すもの(空やライト)が無いからです。

マテリアルを付ける場所

StandardMaterial3D は、既製のマテリアル(面の見た目の設定)です。画素の色を決める小さなプログラム(シェーダー)を書かずに使えます。数値を入れるだけで、木にも金属にもゴムにもなります。

付ける場所は3つあり、上にあるものが優先されます。

マテリアルを付ける3つの場所。上ほど優先され、Surface Material Override はそのノードだけに効く
  • Material Override: そのノードの全部の面を上書きする。ここが埋まっていると、ほかの2つを変えても見た目が変わらない
  • Surface Material Override の 0: そのノードだけに効く。入門ではここに付ける
  • メッシュ自身の Material: BoxMesh などの中にある欄。そのメッシュを使う全員に効く

MeshInstance3D を選び、インスペクタの Surface Material Override を開きます。0 の欄で New StandardMaterial3D を選びます。作ったマテリアルをクリックすると中身が開きます。0 はマテリアルを割り当てるまとまりの番号で、箱や球は全部の面が1つのまとまりなので 0 だけです。

Metallic(金属かどうか)

Metallic は「金属かどうか」を決めます。木・石・ゴム・プラスチック・塗料は 0 、むき出しの金属は 1 です。

同じ緑の Albedo でも、Metallic 0 は緑に塗った缶、Metallic 1 で Roughness を下げると緑がかった鏡になる

同じ緑を塗っても、Metallic が 0 なら緑に塗った缶です。1 にして Roughness を下げると、緑がかった鏡になります。金属では Albedo(塗った色の設定)の色が「塗った色」ではなく、映り込みに付く色として働くからです。緑のドラム缶を作るなら、それは塗装なので Metallic は 0 です。

Metallic を 1 にして黒っぽく沈んだら、見るのは2つです。

  • 映すものがあるか。空が無い、または空の地面側が暗いと、映り込みも暗くなる。空は WorldEnvironment の Background を Sky にしたもの。地面側は、地平線より下に描かれる部分
  • Albedo が暗くないか。暗い色は映り込みも暗くする。鉄や銀でも明るい灰色を入れる

黒くはないのに金属らしいつやが分からないときは、Roughness が高すぎます。映り込みが広がって、映っているものの形が消えています。

Roughness(表面のざらつき)

Roughness は表面のざらつきです。下げるほど磨かれて、映り込みがくっきりします。

色もテクスチャも変えずに、石の Roughness を 0.9 から 0.3 に下げると、濡れたようにつやつやします。木箱を 0.8 から 0.35 にすると、ニスを塗った木になります。

最初の値は次のあたりから始めて、画面を見ながら動かします。

  • 未塗装の木・石: 0.8 〜 0.9
  • ゴムのボール: 0.5 くらい。タイヤのようなマットなゴムは 0.85
  • プラスチック: 0.3 くらい
  • 磨いた金属: 0.2 〜 0.3。0 に近づけるとメッキの鏡になる

2つの数字の組み合わせを並べると、こうなります。

Metallic を横軸、Roughness を縦軸にとった4つの球。左下は粘土、左上はつやのあるプラスチック、右上は鏡のような金属、右下はざらついた金属

他のエンジンでいうと: Unity(URP)の Lit マテリアルの Metallic と Smoothness にあたります。Smoothness は Roughness と逆向きで、Smoothness 0.7 が Roughness 0.3 です。Unreal Engine の Material の Metallic と Roughness は、Godot と同じ向きです。

Sponsored

Albedo の色とテクスチャ

Albedo は塗った色の設定です。Color に色を入れるか、Texture に画像を入れます。両方入れると、画像の色に Color が掛け算されます。

同じ画像を貼って、Color が白なら画像のまま、Color が茶色なら全体が茶色がかる

Color が白なら、画像がそのままの色で出ます。茶色にすると、白い部分は茶色に、青い部分は暗い色に変わります。写真のテクスチャを貼ったのに泥っぽく見えるときは、Color が白以外のまま残っています。

箱に画像を貼るときは、1つ気をつけることがあります。BoxMesh は1枚の画像を横3つ・縦2つに分けて、6つの面に割り当てます。

BoxMesh の各面には画像の6分の1しか映らず、UV1 の Scale を (3, 2, 1) にすると画像全体が映る

どの面にも画像全体を貼りたいなら、マテリアルの UV1 の Scale を (3, 2, 1) にします。UV1 は、画像を面にどう貼るかの設定です。Texture は、ファイルシステムの画像を欄へドラッグすれば入ります。

複製とマテリアルの共有

木箱を1つ作って Ctrl+D で複製し、片方の色を変えると、もう片方も変わります。

Ctrl+D で複製した2つの箱は、同じ1つのマテリアルを指している。Make Unique を選んだ側だけが、自分専用のマテリアルを持つ

複製されたのはノードだけで、マテリアルは2つの箱が同じものを指しています。変えたのは箱ではなく、共有しているマテリアルのほうです。メッシュ(BoxMesh)も同じように共有されていて、片方の Size を変えると両方変わります。

1つだけ変えたいときは、変える側の欄のメニューで Make Unique を選びます。その箱だけが、自分専用のマテリアルを持つようになります。サイズも分けたいなら、Mesh の欄でも Make Unique を選びます。

ゲームの実行中に1体だけ色を変えるときは、コードで複製してから割り当て直します。Surface Material Override の 0 に StandardMaterial3D を入れた箱で使います。

# 1体だけ赤くする(_ready() などの中に置く。mesh_instance は対象の MeshInstance3D)
var mat := mesh_instance.get_surface_override_material(0).duplicate() as StandardMaterial3D
mesh_instance.set_surface_override_material(0, mat)   # 複製を自分の欄に入れ直す
mat.albedo_color = Color.RED

Unity の renderer.material は、取り出した時点でそのオブジェクト専用の複製を作ります。Godot は、取り出しただけでは複製しません。

Sponsored

実践:木箱・金属の樽・ゴムのボールを数値だけで作り分ける

ダンジョンの宝物庫、港の倉庫、子ども部屋のおもちゃ箱 —— 3Dのステージに置く小物は、どれも木・金属・ゴムのような素材の組み合わせです。まず数値だけで3つの素材を作り分け、そのあと木箱にテクスチャを1枚貼ります。

① 置くもの

新しい3Dシーンを1つ作ります。角度はインスペクタの Rotation に度で入れ、すべてのノードの Scale は (1, 1, 1) のままにします。

  • ルートに Node3D を置いて Main にする
  • Main の子に WorldEnvironment を置き、Environment に New Environment を作る。Background の Mode を Sky にする。Sky に New Sky を作り、その Sky Material に New ProceduralSkyMaterial を入れる。Tonemap の Mode は AgX (明るい部分の白飛びを抑える設定)
  • 作った ProceduralSkyMaterial を開き、Ground の Bottom Color を #A0A0A0 にする
  • Main の子に DirectionalLight3D を置き、Rotation を (-45, -30, 0) 、Shadow の Enabled をオン
  • Main の子に MeshInstance3D を置いて Floor 。Mesh に New PlaneMesh を作り、Size を (10, 10) に
  • Main の子に MeshInstance3D を3つ置く
名前Mesh形の設定Position
WoodBoxBoxMesh既定のまま(1×1×1)(-2, 0.5, 0)
MetalBarrelCylinderMeshHeight を 1.2 (半径は既定の 0.5 )(0, 0.6, 0)
RubberBallSphereMesh既定のまま(半径 0.5 )(2, 0.5, 0)
  • Main の子に Camera3D を置き、Position (0, 2, 5) 、Rotation (-15, 0, 0) にする

空の地面側を明るい灰色にしたのは、樽に映る色を見やすくするためです。既定の地面は暗い茶色で、樽の側面はその色を映します。シーンに空とライトを置いたので、3Dビューにも同じ空とライトが反映されます。ここから先は実行しなくても、数値を動かすとその場で変わります。

② 3つのマテリアルを作る

3つの MeshInstance3D それぞれで、Surface Material Override の 0 に New StandardMaterial3D を作ります。値は次のとおりです。Specular は非金属の映り込みの強さで、ふつうは既定の 0.5 のまま触りません。

名前Albedo の ColorMetallicRoughness
WoodBox#A0703C(茶色)00.8
MetalBarrel#D8D8D8(明るい灰色)10.3
RubberBall#3050A0(青)00.5

③ 動かして確かめる

Reflected Light を Disabled にすると樽だけ大きく暗くなり、木箱とボールは色を保つ比較

Camera3D を選び、3Dビュー左上の Preview にチェックを入れると、カメラの画で見比べられます。見るのは3つです。

木箱はつやの無い茶色、ボールは青で、太陽の側に柔らかく広がるつやが乗ります。樽は落ち着いた灰色の金属です。上の面は空の青みがかった色を、側面は空の地面側に入れた灰色を映しています。樽が黒っぽいなら、Albedo が暗いか、空の Bottom Color が既定の暗い茶色のままです。

次に、Environment の Reflected Light の Source を Disabled にします。すぐ上の Ambient Light(環境光)ではなく、映り込みのほうの設定です。消えるのは空からの映り込みだけで、環境光とライトの光は残ります。樽は大きく暗くなり、木箱とボールは色を保ったままです。Source を Background に戻すと樽が戻ります。

仕上げに、木箱へテクスチャを貼ります。WoodBox のマテリアルで、Albedo の Color を白に戻します。Texture に res://icon.svg をドラッグし、UV1 の Scale を (3, 2, 1) にします。どのプロジェクトにも最初から入っている Godot のアイコンで、見えている面すべてに1枚ずつ貼られます。面によっては横向きや逆さになり、アイコンの角の外側は透けずに色が付いて見えますが、この設定ではそれで正常です。面ごとに絵が切れて見えるなら、Scale が (1, 1, 1) のままです。Color を茶色に戻すと、アイコンの白い部分は茶色に、青い部分は暗くくすんだ色になります。画像の色に茶色が掛け算されるからです。

ポイントは2つです。

  • 金属は周りを映して見えている: Metallic 1 の樽は、映り込みを止めると大きく暗くなります。塗った色で見えている木箱とボールは、色が残ります
  • 質感は2つの数字で決まる: 金属かどうかは Metallic の 0 か 1 、磨き具合は Roughness 。色やテクスチャは、そのあとに乗せます

空とライトの決め方は 3Dライティング入門 にあります。夜の空にすると、映すものが暗くなるぶん、樽がいちばん大きく変わります。

うまくいかないときは

症状原因直し方
テクスチャを入れたら、青紫色の模様が出た法線マップ(表面の細かな向きを色で記録した画像)を Albedo に入れているAlbedo から外し、Normal Map をオンにして、その Texture へ入れる
Make Unique したのに、複製した箱が一緒に変わるマテリアルを BoxMesh の中に入れていて、メッシュごと共有している変えたい箱の Surface Material Override の 0 にマテリアルを入れ、その欄で Make Unique を選ぶ
葉や金網の抜けたところが、半透明にするとちらつく半透明の面どうしは、前後の描画順が崩れることがある透明な部分を持つ画像なら、Transparency を Alpha Scissor(透けた部分を描かずに抜くモード)にする。裏から見える板なら、Cull Mode(裏向きの面を描かない設定)を Disabled にする

おまけ:先に知っておくと良いこと

  • 自分で光る Emission: Emission の項目をオンにして、色(既定は黒)と Energy Multiplier を決めると、面が自分で光ります。光って見えるだけで周りは照らさないので、周りも明るくしたいなら同じ場所にライトを置きます。光をにじませるのは WorldEnvironment の Glow です(3Dライティング入門)
  • 透かす Transparency: Transparency を Alpha にして、Albedo の Color の A(不透明度)を下げると透けます。このモードの物体は影を落としません
  • マテリアルはファイルにもできる: マテリアル欄のメニューの Save As... で .tres に保存すると、ほかのシーンでも同じ木を使い回せます。変えると使っている全部が変わるのは、複製のときと同じです
  • 描き方そのものを変えるなら ShaderMaterial: 波打つ水面や、溶けて消える演出のように、数値では作れない見た目はシェーダーを書きます。考え方は フラグメントシェーダー入門 から入れます

まとめ

  • 見える色は2つの混ぜ合わせ: 塗った色と、周りの映り込み
  • 質感は2つの数字: 金属かどうかは Metallic の 0 か 1 、磨き具合は Roughness 。金属では Albedo が映り込みの色になり、映すものが暗いと黒く沈む
  • 付ける場所は Surface Material Override: Material Override が埋まっていると、そちらが勝つ
  • Albedo は色×テクスチャ: 写真の色をそのまま出すなら Color は白。箱は UV1 の Scale を (3, 2, 1) に
  • 複製はマテリアルを共有する: 1つだけ変えるなら Make Unique 、実行中なら duplicate()

まずは球を1つ置いて、Metallic を 1 に、Roughness を 1 から 0 までゆっくり動かしてみてください。映り込みがくっきりしていく途中で、金属に見え始める瞬間があります。あなたのゲームの小物は、どの素材から作りますか。

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

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

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