1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Blender】モノとの距離に対応して光るランプをつくる

Last updated at Posted at 2025-04-29

Blenderのジオメトリノード / Geometry Node を使って、モノとの距離に応じて光の強さを変えるランプ群を作る方法のメモです。
(実行環境:Blender4.4.1/Windows11)

完成像

Animation.gif
こんなふうに、ターゲットオブジェクトとの距離の変化に応じて、複製配置したランプの光の強さが変化します。
node.png
ノードの全体像はこのような感じです(後で詳しく解説)。
(左:シェーディングエディタ、右:ジオメトリノードエディタ)

用意するもの

3Dビューポート上に以下の設定をしたオブジェクトを用意します。
(名前は自由ですが後の説明の便宜上以下のように設定)
image.png

  • Lamp : ランプ(発光体) として使いたいオブジェクト
    • 適当なマテリアルを設定しておき、名前は Light としておく
  • Target : 光の強さを調整する距離計測の対象とするオブジェクト

残りは全てジオメトリノード上で作成します。

完成形

ジオメトリノードとマテリアルノードでできています。

  • ジオメトリノード↓
    image.png
  • マテリアルノード↓
    image.png

作り方

大まかに3つの部分で構成されます。

1️⃣LampをGrid上のポイントに複製配置

まずジオメトリノードから。
image.png

手順

  1. Lampを選択した状態で、ジオメトリノードエディタで➕️ボタンを押すと、1-1 (Group Input) と1-2 (Group Output)が作成されるはず (Group Inputには Lampオブジェクトが入る)
  2. Gridノードで、Lampを配置するための基準となる頂点ポイントを作成
  3. Instance on Pointsノードで、LampをGridの頂点ポイント上に配置

結果:Lampが、Gridの格子ポイント上に配置されるはず。

2️⃣複製配置したインスタンスたちに渡す明るさ属性をつくる

引き続きジオメトリノードを編集します。
image.png

手順

  1. Store Named Attributeノードで、Gridから流れてくる各ポイント(複製配置先)にマッピング対応する値を保存できる属性を用意
  2. Set Materialノードで、複製配置したLampのインスタンスたちに対してマテリアル Light を設定
  3. Positionノードを用意 (のちのちこれはGridノードがつくる頂点ポイントたちを読み込む)
  4. Object Infoノードで、オブジェクト Target の Location を読み込む
  5. Vector Mathノードで、3と4の距離を計算・出力
  6. Map Rangeノードで、5から流れ込んだ距離を、適切な値にスケールして、1に流し込む
  7. Store Named Attributeノード上で、属性に名前を付ける (ここでは PowerbyDistance という名前)

結果:Gridの各頂点に紐づく、ターゲットオブジェクトとの距離に対応する明るさ属性がつくられ、複製配列したLamp インスタンスたちにおのおの引き渡せるようになる

3️⃣明るさ属性を、Light マテリアルの情報に紐づけさせる

シェーディングエディタへうつります。
image.png

  • Attributeノードを追加し、EmissionのStrengthに、さきほどつくった属性を流し込む

結果:Lampのインスタンスたちの明るさが、Targetとの距離に反応するようになる。

→完成です。
Animation.gif

補足:属性の確認のしかた

Girdがつくる各頂点に対して付与した属性の値をリアルタイムで確認することができます。

image.png

  • Store Named Attibuteノードに、 Viewerノードを付け、目を開けさせる
  • SpreadSheetを開いて確認 (右上のピンをとめておく)
    Attribute.gif
    Store Named Attributeでつくった、Gridがつくる、0から8までの9つのVertex(頂点)に付与した属性 (ここでは "PowerbyDistance")が、ターゲットとの距離に応じて変化している様子が確認できます。

以上

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?