Path Stroke

ベジェパスに沿ってピクセルパーフェクトなラインを描画するノード。

intermediate
Since P00

Input Ports

Path

描画するベジェパス

Path
Color

線の色(接続時はパラメータより優先)

Color
Fill Color

閉じパスの塗り色(接続時はパラメータより優先)

Color

Output Ports

Image

描画されたパス画像(透明背景)

Image
Pixel Line

描画前のピクセル座標列(下流のピクセル処理用)

PixelLine

Parameters

NameTypeDefaultDescription
WidthInt64キャンバスの幅(ピクセル)
HeightInt64キャンバスの高さ(ピクセル)
ThicknessInt1線の太さ(ピクセル)
ColorColor白 (1,1,1,1)線の色(入力ポート未接続時に使用)
ピクセルパーフェクトBooltrueL字ダブリを除去して1pxラインを補正(太さ=1のみ有効)
PP モードEnumRemoveCornerピクセルパーフェクト補正モード(下記参照)
閉パス外積モードBoolfalse閉じたサブパスに外積ベースの内/外エッジ削除を適用
閉パス削除側EnumOuter閉パスのどちら側のエッジを削除するか(Inner / Outer)
閉パス塗りつぶしBoolfalse閉じたサブパスの内部を塗りつぶす
Fill ColorColor白 (1,1,1,1)塗り色(入力ポート未接続時に使用)

描画アルゴリズム

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

  1. 各セグメントを rasterize_bezier_segment() でサンプリング → ピクセル座標列に変換

- .5 境界上の端点は round() 突き出し防止のためスキップ

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

thickness ≥ 2

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

fill_closed = true

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

使用例

基本的なパス描画

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

色付きパス

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

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

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

注意事項

  • pixel_perfect 補正は thickness = 1 のときのみ 適用されます
  • パス未接続時は空の透明画像を出力します
  • is_generator: true のため、キャンバスサイズバインドの対象になります
  • .5,.5 アンカーポイントの角ピクセル復元は rasterize_subpath 内部で自動的に処理されます

💡 Tips

  • `pixel_perfect` 補正は **thickness = 1 のときのみ** 適用されます
  • パス未接続時は空の透明画像を出力します
  • `is_generator: true` のため、キャンバスサイズバインドの対象になります
  • `.5,.5` アンカーポイントの角ピクセル復元は `rasterize_subpath` 内部で自動的に処理されます

Related Nodes

bezierpath
pathstroke
preview
colorrgb
blend
pixellinenode
Path Stroke — PixPipeline Node Reference