ノード一覧に戻る

パスストローク

path_stroke

ベジェパスに沿ってピクセルパーフェクトなラインを描画し、画像とサーフェースを出力します

下書き
解説あり

入力ポート

名前説明
パス
path
Path
必須
描画するベジェパス
color
Color
線の色(接続時はパラメータより優先)
塗り色
fill_color
Color
閉じパスの塗り色(接続時はパラメータより優先)

出力ポート

名前説明
画像
output
Image
生成されたパスストローク画像
ピクセル線
pixel_line
PixelLine
描画前のピクセル座標列(下流のピクセル処理用)
サーフェース
surface
Surface
描画した線に高さ・素材ID・面IDを付けたサーフェースです

パラメータ

名前既定値範囲説明・選択肢
width
Int
641–1024

キャンバスの幅(ピクセル)

高さ
height
Int
641–1024

キャンバスの高さ(ピクセル)

対象サブパス
sub_path_scope
Enum
All

すべてのサブパスを描画するか、1 本だけ描画するかを選びます

  • すべてAll
    すべてのサブパスを描画します
  • 個別Single
    選んだ 1 本のサブパスだけを描画します
使うサブパス
sub_path_index
Int
00–255

個別モード時に使うサブパスを選びます

太さ
thickness
Int
11–64

線の太さ(ピクセル)

color
Color
[1,1,1,1]

線の色(入力ポート未接続時に使用)

ピクセルパーフェクト
pixel_perfect
Bool
true

L字ダブリを除去してきれいな1pxラインに補正(太さ=1のみ)

PP モード
pp_mode
Enum
RemoveCorner

ピクセルパーフェクト補正でどちらの冗長ピクセルを削除するか

  • 対角優先Diagonal
    水平ステップを削除してより対角的なラインに
  • 直線優先Cardinal
    垂直ステップを削除してより水平/垂直的なラインに
  • 角削除(対称)RemoveCorner
    常に角ピクセルBを削除(ミラー対称保証)
  • 角保持(対称)KeepCorner
    常に角ピクセルBを保持(ミラー対称保証)
閉パス外積モード
pp_closed_cross
Bool
false

閉じたサブパスに外積ベースの内/外エッジ削除を適用

閉パス削除側
pp_closed_side
Enum
Outer

閉パスのどちら側のエッジを削除するか

  • 内側Inner
    内側のエッジを削除
  • 外側Outer
    外側のエッジを削除
閉パス塗りつぶし
fill_closed
Bool
false

閉じたサブパスの内部を塗りつぶす

塗り色
fill_color
Color
[1,1,1,1]

閉パスの塗り色(入力ポート未接続時に使用)

素材ID
material_id
Text
core:default

サーフェース出力で、線や塗りがあるピクセルに付ける素材です

面ID
face_id
Text
surface:path-stroke

サーフェース出力で、線や塗りがどの面に属するかを示すIDです

面の高さ
surface_height
Float
0.550–1 / step 0.01

線や塗り部分の高さです。大きいほど出っ張った面として扱います

くぼみの暗さ
surface_ao
Float
0.960–1 / step 0.01

線や塗り部分の暗さです。小さいほどくぼんだように暗くなります

ざらつき
surface_roughness
Float
0.750–1 / step 0.01

光を当てた時の質感です。大きいほどつやが弱い面になります

概要

  • バージョン: 1
  • ジェネレーター: はい(is_generator: true — キャンバスサイズ自動バインド対象)

描画アルゴリズム

thickness = 1(ピクセルパーフェクトモード)

  1. 各セグメントを rasterize_bezier_segment() でサンプリング → ピクセル座標列に変換
    • .5 境界上の端点は round() 突き出し防止のためスキップ
  2. 全セグメントの座標を統合(接合点の重複除去)
  3. 接合点角ピクセル復元: .5,.5 アンカーで対角ギャップが検出された場合、角ピクセルを挿入して正方形等の角欠けを防止(三角形等の非直角頂点では挿入しない)
  4. 閉パス: 終端→始点をブレゼンハムで接続
  5. ensure_8connected() で8方向接続を保証
  6. pixel_perfect が有効なら PP 補正で L字ダブリを除去
  7. 閉パス: ラップアラウンド L字補正
  8. 結果のピクセル座標を画像に描画

thickness ≥ 2

各セグメントを十分な解像度でサンプリングし、隣接サンプル間を太い Bresenham ライン(円形ブラシ)で描画。

fill_closed = true

閉じサブパスの内部をスキャンラインで塗りつぶし(ストロークの下に塗る)。thickness=1 時は PP 補正済み座標列をポリゴンとして使用。

使用例

基本的なパス描画

[BezierPath] → path → [PathStroke] → output → [Preview]

色付きパス

[ColorRGB] → color → [PathStroke] → output → [Blend] → [Preview]
                          ↑
                     [BezierPath]

multipath の 1 本だけ描く

[MultiPath] → path → [PathStroke(sub_path_scope:Single, sub_path_index:1)] → [Preview]

ピクセル座標列の下流処理

[BezierPath] → path → [PathStroke] → pixel_line → [PixelLineNode]

サーフェースとして使う

[BezierPath] → path → [PathStroke] → surface → [Surface Light Preview]

fill_closed をオンにすると、線だけでなく閉じた形の中も同じサーフェースとして扱えます。

注意事項

  • pixel_perfect 補正は thickness = 1 のときのみ 適用されます
  • パス未接続時は空の透明画像を出力します
  • パス未接続時も空画像と空サーフェースを返します
  • サーフェース関連のパラメータはインスペクターの「サーフェース関連」に折りたたまれます
  • is_generator: true のため、キャンバスサイズバインドの対象になります
  • .5,.5 アンカーポイントの角ピクセル復元は rasterize_subpath 内部で自動的に処理されます
  • sub_path_scope = 個別 の時だけ sub_path_index が表示されます
  • sub_path_index の上限は、入力パスのサブパス数に合わせて UI が更新します
ノード一覧に戻る
パスストローク — PixPipeline ノード解説