Back to Node List

Path Stroke

path_stroke

Draw a pixel-perfect line along a bezier path as an image and surface

Draft
Guide available
The node name and summary are available in English. Port, parameter, and article details are currently shown in Japanese.

Input Ports

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

Output Ports

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

Parameters

NameTypeDefaultRangeDescription / Options
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 が更新します
Back to Node List
Path Stroke — PixPipeline Node Reference