ノード一覧に戻る

パスストローク

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

線の太さ(ピクセル)

終端の太さ
end_thickness
Int
00–64

テーパー(先細り/先太り): 線の終わりの太さです。0なら全体が「太さ」のまま均一。太さ3→終端1のようにすると草・毛・尻尾・炎の先細りの線になります

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

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

概要

パスを「手打ちのようなドット線」に変換するラスタライザです。ベジェパスに沿って 線を引き、既定でL字の余分なドットを除去したピクセルパーフェクトな1px線を出します。 PixPipeline のパス→ドット絵変換のいちばん基本の出口です。

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

使い方のポイント

  • 基本形は bezier_path → path_stroke → (blend等)。まず既定(太さ1・ ピクセルパーフェクトON)で引き、線の性格は pp_mode で微調整する (対角的な線にしたい→Diagonal、水平垂直寄り→Cardinal。迷ったら既定のRemoveCorner)
  • 閉じた形の中も塗りたい場合は fill_closed をON。線と塗りを別の色にできる (輪郭色+中身色のドット絵イディオムがこれ1つで完成)
  • 線の色は color 入力ポートにつなぐとパレット・変数管理に乗せられる
  • テーパー(先細り): 「終端の太さ」を1以上にすると、始端の「太さ」から 終端へ線幅が滑らかに変わる。太さ3→終端1で草・毛・尻尾・炎の定番の線になる (0のままなら従来どおり均一)
  • キャンバスサイズはパス側(bezier_path)と揃える。両方ともキャンバスバインドが 既定なので、通常は何もしなくても揃っている

よくある失敗

  • 太さを2以上にすると線の性格が変わる: pixel_perfect太さ1のときだけ 効きます。太線は同じ中心線へ円形ブラシを適用し、偶数幅では右・下へ半ピクセル 寄せて指定どおりの太さにします
  • 塗りが効かない: パスが閉じていない。bezier_path のエディタでパスを閉じる (fill_closed は閉じたサブパスにしか作用しない)
  • 何も出ない: パス未接続時は透明画像を出力する仕様。パス入力の接続を確認する
  • マルチパスの一部だけ描きたいのに全部出る: sub_path_scope = Single にして sub_path_index で対象を選ぶ

描画アルゴリズム

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

曲線を適応分割して 8 方向接続の中心線へ変換し、その各点へ円形ブラシを描画します。 偶数幅は右・下へ半ピクセル寄せるため、水平・垂直断面が指定した thickness と一致します。 pixel_line には太さに関係なく、この描画元の中心線が出力されます。

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 のときのみ 適用されます
  • pp_mode / pp_closed_cross / pp_closed_side も太さ1の時だけ表示されます
  • pixel_line は太さに関係なく、ブラシを載せる前のラスタライズ済み中心線です
  • パス未接続時は空の透明画像を出力します
  • パス未接続時も空画像と空サーフェースを返します
  • サーフェース関連のパラメータはインスペクターの「サーフェース関連」に折りたたまれます
  • is_generator: true のため、キャンバスサイズバインドの対象になります
  • .5,.5 アンカーポイントの角ピクセル復元は rasterize_subpath 内部で自動的に処理されます
  • sub_path_scope = Single の時だけ sub_path_index が表示されます
  • sub_path_index の上限は、入力パスのサブパス数に合わせて UI が更新します

関連ノード

  • bezier_path / multi_path_editor — 描く元になるパスを作る
  • path_fill — 線ではなく塗りだけが欲しい場合
  • pixel_line — ピクセル座標列を直接指定して線を引く場合
  • outline — 出来上がった絵に後から輪郭を付ける場合
ノード一覧に戻る