Godot入門:SpotLight3Dの使い方と活用法

はじめに

Godot 4で3Dシーンに奥行きのある照明を加える時、単なる均一な光では足りないことがあります。懐中電灯の光、街灯の明かり、舞台のスポットライト——こうした「特定方向に限定された光」を表現するのがSpotLight3Dです。

本記事では、SpotLight3Dの基本的な使い方から応用テクニックまで、実践的なコード例を交えて解説します。

SpotLight3Dとは?

SpotLight3Dは、光源から特定方向に円錐状に光を照射するノードです。懐中電灯や舞台照明のように、角度と距離で照射範囲が決まります。

継承ツリー:

SpotLight3D → Light3D → VisualInstance3D → Node3D → Node → Object

DirectionalLight3D(太陽のように無限遠から平行光線)やOmniLight3D(電球のように全方向に光る)と異なり、SpotLight3Dは「円錐形の範囲内だけを照らす」という制限があります。この特性が、リアルな局所照明表現を可能にします。

このノードを使うべき場面

活躍する場面:

  • FPS ゲームの懐中電灯・ヘッドライト
  • 街灯や路面照明、夜間ステージの環境光
  • 舞台演出のスポットライト
  • セキュリティカメラの照明範囲表現
  • 車のヘッドライトやテールランプの再現

使わない場面:

  • 太陽光(広大で無限遠:DirectionalLight3Dを使う)
  • 室内の天井照明全体(OmniLight3Dで十分)

主なプロパティと機能

SpotLight3Dの基本的なプロパティを表にまとめました:

プロパティ説明デフォルト値
light_colorColor光の色(RGB)white(1,1,1,1)
light_energyfloat光の明るさ1.0
spot_rangefloat光が届く最大距離(メートル)5.0
spot_anglefloat円錐の広がり角度(度)45.0
spot_angle_attenuationfloat角度の周辺での減衰(0〜1)1.0
shadow_enabledbool影を描画するかfalse

基本的な使用例:


extends Node3D

@onready var spotlight = $SpotLight3D

func _ready():
	# 懐中電灯の設定
	spotlight.light_color = Color.WHITE
	spotlight.light_energy = 2.0
	spotlight.spot_range = 20.0      # 20メートル先まで光が届く
	spotlight.spot_angle = 30.0      # 30度の円錐状
	spotlight.shadow_enabled = true  # 影を有効化

func _process(delta):
	# プレイヤーのカメラに追従(懐中電灯)
	spotlight.global_position = $Camera3D.global_position
	spotlight.global_rotation = $Camera3D.global_rotation
SpotLight3Dの円錐状光の図解
SpotLight3Dは円錐形の範囲内だけを照らします

街灯の実装例:


extends Node3D

@onready var spotlight = $SpotLight3D

func _ready():
	# 街灯の設定:暖色で下向き
	spotlight.light_color = Color(1.0, 0.9, 0.7)  # 暖色黄色
	spotlight.light_energy = 3.0
	spotlight.spot_range = 15.0
	spotlight.spot_angle = 60.0
	spotlight.shadow_enabled = false

	# ノードの方向を下向きに
	rotation.x = PI / 4  # 45度下を向く

func toggle_light():
	spotlight.visible = !spotlight.visible

DirectionalLight3D・OmniLight3D・SpotLight3D の比較

3種類の光源がどう異なるかを理解することは、照明設計の鍵です:

光源照射パターン到達範囲用途例パフォーマンス
DirectionalLight3D平行光線(無限遠から)無制限(シーン全体)太陽光、月光高速(1シーンに1〜2個推奨)
OmniLight3D全方向球面状spot_rangeで制限電球、懐中電灯(無指向)中程度
SpotLight3D円錐状(指向性)spot_rangeで制限街灯、舞台照明、ヘッドライト中程度(指向性で最適化される)

もっと使いこなす:カスタマイズできるパラメータ

まずは基本を動かしてみてから、余裕が出たら試してみてください。

パラメータ設定値の例効果
light_energy0.5 〜 5.0明るさの段階的調整。夜間は低め、ステージ照明は高め
spot_range5.0 〜 50.0懐中電灯(5〜15)、街灯(20〜40)、舞台(30〜60)
spot_angle15.0 〜 90.0狭い(15度)でスポット効果強、広い(60度以上)で拡散光
spot_angle_attenuation0.5 〜 1.0周辺の減衰。1.0で急峻、0.5で緩やか
shadow_enabledtrue/false影の計算。有効化で見栄えup、但し負荷増
light_colorColor値色温度調整。暖色(街灯)、寒色(SF)、RGB指定で演出

まとめ

SpotLight3Dは「限定された方向に光を放つ」という特性により、現実的で印象的な照明を3Dシーンに加えます。懐中電灯から舞台照明まで、多くのゲーム演出で活躍するノードです。

  • spot_range と spot_angle の組み合わせで円錐形を自由に設計できる
  • light_color で色温度を調整し、昼夜や雰囲気の表現が可能
  • shadow_enabled は見栄えと負荷のトレードオフなので、プロトタイプ段階から検討を

次回は WorldEnvironment について解説します。シーン全体の環境(空・霧・グロー)を統合的に設定するノードです。

この記事はGodot 4.xをもとに執筆しています。

関連性の高いノード解説記事

コメント