ノード一覧に戻る

レイヤーからサーフェース

layers_to_surface

部位ごとにレイヤー分けした画像群からサーフェースを組み立てます。レイヤーごとに独立して立体を推定するので、複雑な形でも破綻しにくくなります。重なり順からは接触影を作り、レイヤーIDは面IDとして記録します。

確認済み
解説あり

入力ポート

名前説明
レイヤー
layers
List<Image>
レイヤー画像のリストです(先頭が最背面、末尾が最前面)。ピクセルキャンバスの「レイヤー」出力をそのままつなげます。
パス
paths
Path
サブパスがそのままパーツになるベジェパスです(S4)。閉パスはシルエット充填、開パスは断面半径つきのチューブになります。役割タグ(盛る/彫る/稜線/枠/穴)はマルチパスのレイヤーで付けられます。
領域
regions
RegionMap
各領域がパーツになるリージョンマップです(ID昇順)。石畳などプロシージャルな供給源に使います。
レイヤー名
layer_names
List<Text>
「レイヤー」と同じ並びのレイヤー名リストです(任意)。ピクセルキャンバスの「レイヤー名」出力をつなぐと、インスペクタのレイヤー別設定が名前で表示されます。

出力ポート

名前説明
サーフェース
surface
Surface
レイヤーごとの高さ・接触影(AO)・レイヤー面IDを持ったサーフェースです。「サーフェース光プレビュー」につなげます。
プレビュー
preview
Image
レイヤーを合成した見た目のプレビューです。
高さ
height
Image
レイヤーごとに推定した高さマップです。確認や独自パイプラインに使えます。
接触影
ao
Image
重なり順から作った接触影マップです。白が影なし、暗いほど影です。

パラメータ

名前既定値範囲説明・選択肢
立体の形
profile
Enum
Round

各レイヤーをシルエットからどんな立体として推定するかです。

  • 丸いRound
    風船のように丸く膨らんだ立体として扱います。キャラクターや柔らかい物に向きます。
  • とがるSharp
    円錐のように直線的にとがった立体として扱います。結晶やトゲに向きます。
  • 平らな天面Flat
    縁は丸く、中心は平らな立体として扱います。レンガや箱に向きます。
レイヤー別の立体の形
layer_profiles
Text

「立体の形」をレイヤーごとに上書きします(先頭が最背面。Round / Sharp / Flat / Curve / CylinderV / CylinderH / Relief / Engrave / Decal / Emission をカンマ区切り)。空欄は共通の「立体の形」。Curve は行のカーブ編集で自由設計、CylinderV/H は軸方向に平らで直交方向だけ丸い円柱(樽・柱・横丸太)、Relief は浮き彫り、Engrave は彫り込み(口・溝)、Decal は色だけ、Emission は色だけ+発光(ランタンのガラス・窓明かり)です。

レイヤー別プロファイルカーブ
layer_profile_curves
CustomData

レイヤー別設定の行から編集するカスタムプロファイルカーブです(JSON。形が Curve のレイヤーで使用)。縁からの正規化距離 t → 高さの対応を持ちます。

レイヤー別の高さ追加
layer_height_offsets
Text

レイヤーごとの高さ指定です(先頭が最背面。例: "0, 0.5")。構造レイヤー(丸い/とがる/平ら)ではレイヤー全体の底上げ、Relief / Engrave では盛り上がりの厚み・彫り込みの深さになります(0=パーツの太さから自動)。

レイヤー別の傾き方向
layer_tilt_angles
Text

レイヤーごとの傾き方向(度)をカンマ区切りで指定します(先頭が最背面。0=右へ向かって高く、90=上へ向かって高く)。インスペクタの行から編集します。

レイヤー別の傾き強さ
layer_tilt_amounts
Text

レイヤーごとの傾き強さ(0〜1)をカンマ区切りで指定します(先頭が最背面)。0=傾きなし、1=低い側の端が高さ0まで落ちます。グラデーションの範囲はレイヤー自身の幅から自動で決まります。

レイヤー別彫刻データ
layer_sculpt_data
CustomData

ビルダーエディタが管理するレイヤー別ブラシストロークです(JSON、レイヤーindexごと)。合成前に各レイヤーの高さ場へ適用されるため、他のレイヤーへ影響せず、接触影も彫った後の形で再計算されます。

パス断面半径
path_widths
Text

パスのサブパスごとのチューブ断面半径(px)のカンマ区切りです。ソース側タグの半径を上書きします。空欄はタグの値(無ければ既定2px)を使います。

パスのピクセルパーフェクト
path_pixel_perfect
Bool
false

パスパーツの輪郭を、ドット絵らしい「設計された階段」(角の2重ピクセルなし)でラスタ化します(outline ノードの pixel_perfect と同じ規約)。高さは従来どおり正確距離から作るため陰影は変わらず、マスクの縁ピクセルの選び方だけが変わります。オフ(既定)は距離ベースの縁のままです。

接触影の濃さ
contact_strength
Float
0.50–1 / step 0.01

手前レイヤーのすぐ隣をどれだけ暗くするかです。0にすると接触影を作りません。「レイヤー別の高さ追加」で持ち上げたぶんは自動で弱まります。

接触影の広さ
contact_radius
Int
20–16

接触影が手前レイヤーから何ピクセルまで届くかです。

概要

レイヤー分けが、そのまま立体の分解になるノードです。quick_shade は絵全体を 1つのシルエットとして膨らませるため複雑な形で破綻しますが、このノードは 腕・体・頭のように部位ごとにレイヤー分けされた画像を1枚ずつ独立に 膨らませてから組み立てるので、部位同士が溶けません。重なり順からは接触影 (手前レイヤーが奥レイヤーに落とす境目の暗さ)を自動で作ります。

使い方のポイント

  • 定番: pixel_canvas(レイヤー出力) → layers_to_surface → surface_light_preview。 ピクセルキャンバスで部位ごとにレイヤーを分けて描くだけで、破綻しにくい 自動陰影の入力になる
  • ピクセルキャンバス側でフォルダにまとめると1枚扱いになる。線画と塗りを 別レイヤーにしている場合は部位単位のフォルダに入れる
  • ダブルクリック(またはインスペクタの「プレビュー付きで編集」)でビルダーエディタが開く: ライト適用後の段階化プレビューと3Dレリーフを並べて見ながら、レイヤー別設定を その場で追い込める。設定値はインスペクタと同じもの(自動で同期)で、 エディタ内の照明ノブは確認用の作業照明(出力には影響しない)
  • エディタ内で「レイヤー単位の彫刻」ができる: 行をクリックして対象レイヤーを 選び、盛る/彫る/ならす/平らのブラシでそのレイヤーだけを修正できる。 合成前の高さ場に効くので他のレイヤーには一切影響せず、接触影も彫った後の 形で再計算される。使い分け: ここでの彫り=パーツの形を整える(レイヤー別)、 下流の surface_sculpt=仕上がり全体を直す(合成後・AO描き込みも可)
  • レイヤー別設定は行UIで編集できる: インスペクタの「レイヤー別の立体の形」は レイヤーごとの行(名前 / 形 / 高さ+)で編集できる。ピクセルキャンバスの 「レイヤー」出力を直結していればレイヤー名は自動で表示される(ワイヤ追加は不要)。 間に別ノードを挟む場合だけ「レイヤー名」出力→レイヤー名 入力をつなぐ (内部保存はCSVのままなので、ヘッドレスやAI生成では従来どおりテキスト指定も可)
  • 「手前の腕を体より少し高くしたい」ときは行UIの 高さ+ に数値を入れる(例: 0.5)。 0なら全レイヤー同じ高さ範囲
  • 地面や背景の板を混ぜるときは、そのレイヤーの行だけ形を Flat にする。 風船のように膨らまなくなる
  • 盛り上がり方を自由に設計したいレイヤーは「カスタムカーブ(Curve)」: 行の下に断面カーブ(横=縁→中心、縦=高さ)が開き、頂点をドラッグして なだらか/急斜面/広い天面/段々などを直接作れる。プリセット (丸い/とがる/平らな天面/釣鐘)から始めて微調整するのが早い
  • 行の下の「傾き」で山ごと斜めにできる: 方向(度。0=右へ向かって高く、 90=上へ向かって高く)と強さ(0〜1)を指定すると、そのレイヤーの高さに 「低い端→高い端」のグラデーションが掛かる。始点・終点の指定は不要で、 レイヤー自身の幅(方向に沿った射影範囲)から自動で決まる。 坂道は Flat+傾き、片側に傾いたドームは Round+傾き、のように どの形とも組み合わせられる(色だけ/浮き彫り/彫り込みは対象外)
  • 樽・柱・横丸太は「円柱(縦)/円柱(横)」: 軸方向は平らなまま、直交方向だけ 半円で丸まる。丸い(Round)だと縦にも丸まって球寄りになるパーツ向け
  • ランタンのガラス・窓明かりは「発光(Emission)」: 色だけ乗せた上で発光マップにも 書き込まれ、ライトで沈まず光って見える。光量は後段ライトの emission_strength (0.3〜0.5が目安、1.0は白飛びしやすい)
  • 目・模様のような数pxの描き込みレイヤーは「色だけ(Decal)」にする。 下のレイヤー(頭など)の丸みがそのまま続き、描き込みは色として乗る
  • 口・溝・くぼみは「彫り込み(Engrave)」: 下の面から凹ませ、凹みの中は AOで自然に暗くなる(口の中に影が入る)。ボタン・鼻のように盛るなら 「浮き彫り(Relief)」。どちらも厚み・深さは行UIの 高さ+ で指定できる (0=パーツの太さから自動)
  • 接触影は光の向きに依存しない「隙間の暗さ」としてAOマップに入る。 光方向つきの影は後段の surface_light_preview(落ち影)が担当する。 レイヤー別の高さ追加 で持ち上げたレイヤーの接触影は自動で弱まるので、 浮いている物の接地感は落ち影(cast_shadow_strength)で作る
  • surface 出力にはレイヤーIDが面ID(layer:0, layer:1, …)として入っており、 surface_id_mask でレイヤー単位のマスクを取り出せる
  • 画像を部品として配置・合成する part_composer(パーツコンポーザー)とは別物。 こちらは「1枚の絵の中の部位分け」を立体推定に使うノード

よくある失敗

  • 全体が1つの風船のように膨らむ: レイヤーを分けずに1枚で描いている。 部位ごとにレイヤー(またはフォルダ)を分けると独立して膨らむ
  • 重なり順を変えたら高さ指定がズレた: レイヤー別の高さ追加 はリストの 並び順(背面→前面)に対応する。レイヤーを並び替えたら数値も並び替える
  • 小さい描き込みの周りがモザイク状に荒れる: 数pxのレイヤーも独立の山として 膨らむため、下のレイヤーの高さにクレーターが開き、接触影とハイライトが 境界に密集する。そのレイヤーの形を「色だけ」(または「浮き彫り」)にすれば直る

関連ノード

  • pixel_canvaslayers 出力がこのノードの入力になる
  • surface_light_preview — 組み立てたサーフェースに光を当てる
  • quick_shade — レイヤー分けが無い1枚絵向けの簡易版
  • contact_shadow_from_order — 接触影だけを画像として使いたい場合
  • surface_id_mask — レイヤー面IDからマスクを取り出す
ノード一覧に戻る