Distance Shape
Text Render の Distance 出力(距離場)を受けて、塗り・縁取り・等高線のどれかを描くノードです。入れるのは普通の映像ではなく距離場なので、Render Texture 出力を繋いでも意図した絵にはなりません。
距離場は「0.5 が輪郭、輪郭から ±64px を 0〜1 に入れた」画像です。したがってこのノードの Threshold / Width / Rings / Flow / Softness はすべてピクセル単位です。
何が描かれるかは Rings と Width で決まる
- Rings = 0、Width = 0 — 塗り。輪郭の内側が塗られます
- Rings = 0、Width > 0 — 輪郭の帯(縁取り)。
Widthが帯の太さで、輪郭を中心に両側へ半分ずつ広がります - Rings > 0 — 等高線。
Ringspx ごとに線が並びます。線の太さはWidth(1px 未満のときは 1px)。Ringsが入っている間は縁取りモードにはなりません
ポート
- Threshold — 輪郭のずらし(px、初期値 0)。正で太り、負で痩せます。等高線モードでは線の並び全体がずれます
- Width — 帯/線の太さ(px、初期値 0)。負値は 0 として扱われます
- Rings — 等高線の間隔(px、初期値 0)。負値は 0 として扱われます
- Flow — 等高線の位相(px、初期値 0)。
Ringsが 0 のときは効きません。LFOなどで動かすと線が流れ続けます - Softness — エッジの柔らかさ(px、初期値 1)。負値は 0 として扱われますが、内部の下限が 0.01px あるので、0 にしてもわずかにアンチエイリアスが残ります
- Color — 色(初期値 白)。アルファは出力の不透明度に掛かります
- Invert — 白黒反転(初期値 OFF)。反転は最後に行われ、距離場が書かれていない余白も反転の対象になるので、ONにすると形が抜けて周囲が塗られます
距離場が書かれていない画素は「形の外」として扱われます。距離は文字の周囲の限られた範囲にしか書かれていないため、Threshold を大きく取っても、また Rings を粗くしても、データのある範囲より外へは広がりません。
DistanceA / DistanceB と Blend
- DistanceA だけ — Aの形をそのまま処理します。
Blendは無視されます - 両方 — A→B を
Blend(0〜1にクランプ、初期値 0)で補間します。0 でA、1 でB。距離のまま混ぜるので点の対応付けが不要で、穴の数が違う字(A と O など)でも破綻せずに形が溶けます - DistanceB だけ — B を A として扱います(
Blendは無視) - どちらも未接続 — 出力は透明です
書体のモーフに使うときは、A と B の Text Render に同じ文字列を入れ、配置(Pos X / Pos Y / Scale など)も揃えておくと、書体の差だけが補間されます。
出力
Out の解像度は入力の距離場と同じです(DistanceA、未接続なら DistanceB)。入力の解像度が変わると作り直されます。背景は透過で、不透明度は描かれたマスク × Color のアルファです。
入力ポート
| Port ID | 型 |
|---|---|
DistanceA | RenderTexture |
DistanceB | RenderTexture |
Blend | float |
Threshold | float |
Width | float |
Rings | float |
Flow | float |
Softness | float |
Color | Color |
Invert | bool |
出力ポート
| Port ID | 型 |
|---|---|
Out | RenderTexture |
スクリプトから設定可能なメンバー
| パス | 型 |
|---|---|
blendInput | float |
thresholdInput | float |
widthInput | float |
ringsInput | float |
flowInput | float |
softnessInput | float |
invertInput | bool |
Synapse Apps(スクリプティング)
await synapse.modules.create({ type: "DistanceShape" }) 














