ノード一覧に戻る

画像から高さマップ

height_from_image

普通の画像から高さマップを推定します。シルエットモードは輪郭から内側ほど高く膨らませ、明るさ・不透明度モードはピクセル値をそのまま高さとして読みます。

確認済み
解説あり

入力ポート

名前説明
画像
input
Image
必須
高さマップを推定したい画像です。

出力ポート

名前説明
高さ
output
Image
推定した高さマップです。白いほど高く、黒いほど低くなります。「画像からサーフェース」の高さ入力につなげます。

パラメータ

名前既定値範囲説明・選択肢
読み取り方
mode
Enum
Silhouette

画像のどこから高さを読み取るかです。

  • シルエットSilhouette
    不透明な形を膨らませます。輪郭から離れて中心に近いほど高くなります。ベタ塗りのドット絵で使えます。
  • 明るさLuminance
    明るいピクセルほど高くなります。陰影が既に塗られている絵で使えます。
  • 不透明度Alpha
    不透明なピクセルほど高くなります。
立体の形
profile
Enum
Round

輪郭から中心へ向かう盛り上がり方です。

  • 丸いRound
    風船のように丸く膨らみます。キャラクターや柔らかい物に向きます。
  • とがるLinear
    円錐のように直線的に盛り上がります。結晶やトゲに向きます。
天面の平らさ
plateau
Float
00–0.9 / step 0.05

中心側を最大高さで平らにします。レンガや箱のような形に向きます。

反転
invert
Bool
false

高低を入れ替えます。くぼみや穴を作る時に使います。

概要

普通の2D画像から高さマップ(白=高い)を推定する、「手描き絵の3D化」の入口です。 ベタ塗りのスプライトでも、シルエットから風船のように膨らませて立体感を作れます。 出力はライティング系(image_to_surface の高さ入力)や slope_blur のマップに使います。

使い方のポイント

  • モードの選び方: ベタ塗りの絵→Silhouette(輪郭から膨らませる)、 陰影が既に塗ってある絵→Luminance(明るさをそのまま高さに)
  • Silhouette の形状は profile で決める: キャラ・丸物→Round、結晶・トゲ→Linear、 レンガ・箱→Round+plateau 0.5前後(天面が平らになる)
  • 定番パイプライン: image_load → height_from_image → image_to_surface(高さ入力) → surface_light_preview。手描き絵に後から光と影が付けられる
  • 出力はImage型なので、Surface型を受け取る surface_light_preview へは直接つながらない。 必ず image_to_surface の高さ入力を経由する
  • slope_blur のマップ用途にも便利: 絵自体の形に沿って模様を流せる

よくある失敗

  • 内部の段差(窓のくぼみ等)が出ない: シルエットモードは輪郭情報だけで推定する 仕様(下記「限界」)。内部段差は Luminance で陰影塗りを再利用するか、高さを手描きする
  • 高さがガタガタ: 入力のふちがアンチエイリアスされているとシルエットが暴れる。 前段で threshold(Alpha) を挟んできれいな2値シルエットにする
  • 凹ませたいのに膨らむ: invert をONにすると彫り込み・くぼみになる

技術詳細

  • Silhouette: アルファシルエットに chamfer 3-4 距離変換をかけ、「縁から遠いほど高い」高さ場を作る。Round は半球の断面カーブ、Linear は円錐状。plateau は中心側を最大高さで頭打ちにする
  • Luminance: ピクセルの輝度をそのまま高さとして読む。陰影が既に塗られた絵の再利用向け
  • Alpha: 不透明度をそのまま高さとして読む
  • 透明ピクセルは透明のまま出力される

使用例

  • 画像読み込み → 画像から高さマップ → 画像からサーフェース(高さ入力) → サーフェース光プレビュー で、ベタ塗りスプライトに後から光を当てる
  • 反転 を ON にして、くぼんだ装飾や彫り込みを作る

限界

シルエットの輪郭情報だけから推定するため、絵の内部にある段差(例: 家の窓のくぼみ)は表現できない。内部の段差が必要な場合は高さマップを手描きするか、明るさ モードで陰影塗りを再利用する。

関連ノード

  • image_to_surface — 高さマップをSurfaceに組み込んでライティングへ渡す
  • quick_shade — 「膨らませて光を当てる」を1ノードで済ませる入門版
  • slope_blur — 高さマップの傾きに沿って模様を流す
  • distance_field — 距離場そのものが欲しい場合
ノード一覧に戻る
画像から高さマップ — PixPipeline ノード解説