ゲーム開発
Unity
UnrealEngine
C++
ゲーム数学
ゲームAI
サウンド
アニメーション
GBDK
制作日記
3DCG
Houdini
Blender
USD
グラフィックス
テクノロジ
ツール開発
フロントエンド関連
サーバサイド関連
ソフトウェア設計
ハードウェア関連
おすすめ技術書
音楽
DTM
楽器・機材
ピアノ
その他
都会のエレキベア
ラーメン日記
四コマ漫画
おすすめアイテム
おもしろコラム
  • ゲーム開発
    • Unity
    • UnrealEngine
    • C++
    • ゲーム数学
    • ゲームAI
    • サウンド
    • アニメーション
    • GBDK
    • 制作日記
  • 3DCG
    • Houdini
    • Blender
    • USD
    • グラフィックス
  • テクノロジ
    • ツール開発
    • フロントエンド関連
    • サーバサイド関連
    • ソフトウェア設計
    • ハードウェア関連
    • おすすめ技術書
  • 音楽
    • DTM
    • 楽器・機材
    • ピアノ
  • その他
    • 都会のエレキベア
    • ラーメン日記
    • 四コマ漫画
    • おすすめアイテム
    • おもしろコラム
  1. ホーム
  2. 20260112_01_houdini_weight_blend

【Houdini21.0】Heightfield VisualizeでレイヤーをWeightBlend(順不同)で表示する

Houdini地形制作VEX
2026-01-12

ぷらずも
ぷらずも
みなさんこんにちは! ぷらずもです!
エレキベア
エレキベア
こんにちクマ~~
ぷらずも
ぷらずも
今回紹介するのは、Heightfield Visualize に関するTipsになります。 これは Heightfieldの高さやレイヤーを可視化 する機能になります。

参考:HeightField Visualize | Houdini

20260112_01_19
▲Heightfieldの高さやレイヤーを可視化する機能

エレキベア
エレキベア
状態を確認するのによく使う機能クマね これの何に不満があるクマ?
ぷらずも
ぷらずも
可視化する時に複数レイヤーを重ねることができるのですが、 この時デフォルトだと 下のレイヤーから上のレイヤーに重ねる形で表示 されます。 そのため レイヤーの順番を変えると表示状態が変わって しまいます。
20260112_01_01
▲上に重ねるように表示される

ぷらずも
ぷらずも
対してUnrealEngineの場合は WeightBlend というブレンド方式があり、こちらは各箇所で重みづけされて表示されるので順不同な表示になります。 こちらの表示と合わせて レイヤー順不同なブレンドにしたい、というのが今回の目的になります。
エレキベア
エレキベア
複数レイヤー設定されていたら割合でブレンドしてくれるというわけクマね
ぷらずも
ぷらずも
なお今回検証で使用したバージョンは以下になります。 バージョンによって挙動が異なる可能性もある点にはご了承ください。
✔ 検証したバージョン
  • Houdini
    • Houdini Indie 21.0.512
  • Unreal Engine
    • 5.3.2

前提知識:UEにおけるブレンド方式

ぷらずも
ぷらずも
まず前提知識として UnrealEngineでのブレンド方式 について記載します。 先ほど触れた通り、WeightBlendとは 全てのレイヤー間で重みづけられてレイヤーの順番に依存しないブレンド方式 のことです。
✔ WeightBlendとは
  • 全てのレイヤー間で重みづけられたブレンド方式で、レイヤーの順番に依存しない
ぷらずも
ぷらずも
他には以下のようなブレンド方式もあります。 Height BlendはWeight Blendの特殊版のようなものなので、大きくは 順不同なWeightBlend順序が影響するAlphaBlend の2つが存在すると考えていていいと思います。
Landscapeレイヤーブレンド方式
ブレンド方式
概要
LB Weight Blend
・全てのレイヤー間で重みづけられたブレンドを使用する
・0-1の間で補間され、順不同になる
LB Alpha Blendd
・アルファブレンドされたオーバーレイを実装する
・下のレイヤーに重ねる形で表示され、順番が影響する
LB Height Blendd
・ウェイトブレンドと基本は同じだが、レイヤー間の遷移にディテールも追加する
・ディテールはHeightmapに基づいたものになる

参考:
Unreal Engine でのランドスケープ マテリアル | Unreal Engine 5.7 ドキュメンテーション

エレキベア
エレキベア
対等にブレンドしたい場合は WeightBlendで、雪や草とか上に被せたい場合は AlphaBlend の方が向いてそうクマね

Heightfield Visualizeの挙動を確認

ぷらずも
ぷらずも
それでは次にHeightfield Visualizeの、レイヤーが順に重なる挙動について見ていきます。

確認用のレイヤー構造

ぷらずも
ぷらずも
確認用のレイヤーは以下の2つ(layer_1、layer_2)で、0-1の間で重みづけした状態 にしてあります。 それぞれ 赤、青単色で設定 して確認してみます。
20260112_01_15
▲layer_1

20260112_01_16
▲layer_2

20260112_01_17
▲レイヤーの値はVolume Normalize Weightノードで正規化している

レイヤー順を変えて可視化する

ぷらずも
ぷらずも
この状態でHeightfield Visualizeで 表示するレイヤーの定義順を変えてそれぞれ確認 してみます。
layer_1 → layer_2の順
20260112_01_02

20260112_01_01
▲少し青が強い

layer_2 → layer_1の順
20260112_01_04

20260112_01_03
▲今度は赤が少し強くなった

ぷらずも
ぷらずも
このように下から上に重なるような挙動になることが確認できます。
エレキベア
エレキベア
UEのAlphaBlendの挙動に近いクマね

WeightBlendで表示する

ぷらずも
ぷらずも
それではここから本題となるWeightBlend表示の方法について記載します。 諸々調べましたが、結果としてHeightfield Visualizeに Color Layer というレイヤーをRGB情報として可視化する機能 があったため、こちらに計算した色情報を計算して設定する方針にしました。
20260112_01_06
▲Color Layerの設定、r・g・bというレイヤーを設定している

エレキベア
エレキベア
おお~~ これがあれば自由にカスタマイズできそうクマね

最終的なノード構成

ぷらずも
ぷらずも
最終的なノード構成は以下のようになりました。 しっかりと中間色である紫が表示されていることが確認できます。
20260112_01_05
▲中間色が表示され、レイヤーを入れ替えても結果は同じ

20260112_01_18
▲ノード構成

  • 処理内容
    1. Volume Normalize Weight でレイヤーの値を正規化
    2. Heightfield Copy Layer で可視化用レイヤー(今回はrgb)を作成
    3. 各レイヤーのウェイト値を見て色の計算を行い、可視化用レイヤーに設定する
    4. 可視化用レイヤーを表示する
エレキベア
エレキベア
色は手計算して表示する、というわけクマね
ノード設定内容
ぷらずも
ぷらずも
参考までに、各ノードの設定内容は以下のようになっています。
  • Volume Normalize

    • 平均化するレイヤー名を設定することで重みづけされる
    20260112_01_07

  • set_visualize_color (Heightfield Wrangle)

    • volumesampleでレイヤー情報を取得してrgbレイヤーに色を設定する
    20260112_01_08

    • コード内容(VEX)
    int layer_count = chi("layers");
    
    vector col = {0, 0, 0};
    for (int i = 1; i <= layer_count; i++)
    {
        string layer_name = chs("layer_name" + itoa(i));
        vector layer_color = chv("layer_color" + itoa(i));
    
        float layer_ratio = volumesample(0, layer_name, @P);
        col += layer_color * layer_ratio;
    }
    
    @r = col.r;
    @g = col.g;
    @b = col.b;
    
  • Heightfield Visualize

    • rgbレイヤーを可視化する
    20260112_01_06

ぷらずも
ぷらずも
VEX部分でメインとなる色の計算を行っています。 今回はWeightBlendにあわせていますが、調整することで様々な可視化にも対応できそうですね。
エレキベア
エレキベア
汎用性がありそうクマ~~~

UnrealEngine側での動作確認

表示結果

ぷらずも
ぷらずも
最後にUnrealEngine上での表示も確認してみます。 HoudiniEngineで出力して以下のように単純なブレンドシェーダーを設定したところ、想定通りの表示が行われることが確認できました。
  • UnrealEngine側での表示確認

    • ブレンドされて表示されることが確認できた
    20260112_01_09

  • マテリアルの設定

    • WeightBlendで単色設定するのみの状態
    20260112_01_10

    20260112_01_11

エレキベア
エレキベア
想定通りの表示になっているクマね

注意点

ぷらずも
ぷらずも
一転注意点として、正規化されていないレイヤーをHoudiniから出力する場合、unreal_landscape_layer_nonweightblended アトリビュートを設定して出力しないと、勝手に値が補間されて出力されてしまう、といったことがありました。

参考:
アトリビュートとグループ | Houdini Engine for Unreal

20260112_01_12
▲正規化されていないレイヤーをそのまま出力すると出力時に補間されるような挙動になった

20260112_01_13
▲unreal_landscape_layer_nonweightblendedアトリビュートを付与して出力するとそのままの値で出力される

エレキベア
エレキベア
おおう・・・これは不思議クマね
ぷらずも
ぷらずも
このアトリビュートは LayerInfoの「No Weight Blend」フラグを制御するもの なので、はじめはUnrealEngine側の挙動かと思っていましたが、出力後にフラグを外しても結果が変わらなかった ので出力された値自体が異なっている気がします。
20260112_01_14
▲出力後に「No Weight Blend」フラグを外しても結果が変わらなかった

ぷらずも
ぷらずも
細かい部分まで検証出来ていないですが、恐らく デフォルト状態がWeightBlend扱いということで自動で補間するような挙動 になっているのかもしれません・・・。
エレキベア
エレキベア
まあ詳しくはHoudiniEngineのコード見るしかないクマかね・・・

おわりに

ぷらずも
ぷらずも
というわけで今回はHeightfield Visualizeに関する話でした! どうだったかな?
エレキベア
エレキベア
ブレンドについてやWrangleでの制御が知れたのはよかったクマね 今後も応用が利きそうクマ
ぷらずも
ぷらずも
Heightfieldを扱えると幅が広がるから、今後も積極的に触っていこう! それでは今日はこの辺で!アデューー!
エレキベア
エレキベア
クマ~~~~

【Houdini21.0】Heightfield VisualizeでレイヤーをWeightBlend(順不同)で表示する ~完~


Houdini地形制作VEX
2026-01-12

関連記事
【Houdini21.0】Solaris徹底入門:USD構成を意識した基本的な作業フローについてまとめる
2025-12-31
【Houdini21.0】Otisによる筋肉シミュレーションと筋肉情報転送機能の使い方【Otis Muscle and Tissue Simulation】
2025-11-29
【Houdini】Mardini2025の振り返りと制作物解説
2025-11-24
【Houdini Indie】通常版とSteam版の挙動の違いをまとめる【2025年版】
2025-11-03
【ゲーム数学】第十回 p5.js(+α)で学ぶゲーム数学「複素数とフラクタル」
2025-11-02
【プロシージャル】Pythonで学ぶ波動関数崩壊アルゴリズム(Wave Function Collapse)
2025-06-22
【Houdini20.5】主要な環境変数と設定方法についてまとめる【Windows/Mac】【Steam版】
2025-05-05
【Houdini20.5】観覧車をプロシージャルに作ってみる【SOP・VEX】
2025-01-03