Text Reveal By Glyph

Reveals a TextLayout range one glyph at a time in index order

intermediate
Since P00

Input Ports

Layout

1文字単位で表示状態を更新する元レイアウト

`TextLayout`

Output Ports

Layout

1文字ごとの `visible / opacity` を更新したレイアウト

`TextLayout`

Parameters

NameTypeDefaultDescription
Progress`Float``1.0`選択範囲の表示進行度。`1` で完全表示
First Character`Int``0`表示対象に含める先頭文字番号。`0` が 1文字目
Last Character`Int``4096`表示対象に含める末尾文字番号。実際は入力レイアウトの文字数に合わせてクランプ
Reverse`Bool``false`末尾から先頭へ向かって表示する
Start Delay`Float``0.0`リビール開始前に待つ正規化遅延量

どう考えればいい?

  • TextLayout は「文字がどこにあるか」の構造
  • Text Reveal By Glyph は「そのうちどの文字を見せるか」を決める
  • まだimageにはしない
  • 最後は TextRasterizeTextOutline でimage化する

glyph について

  • v1 では glyph は実質 1文字単位 と考えてよいです
  • したがって 先頭文字 = 0 は 1文字目、1 は 2文字目、という意味です
  • つまり 先頭文字 / 末尾文字文字番号 を指定していると思えば大丈夫です

挙動

  • first_glyphlast_glyph の範囲だけがリビール対象になります
  • 範囲外の文字は非表示になります
  • reverse = true の時は、同じ範囲を末尾から表示します
  • delay は全体の開始待機です。0.5 なら progress が半分進むまで何も表示しません
  • 既に visible = false の glyph は、このノードでも表示されません

進行度の考え方

  • progress は常に 0..1 の正規化値です
  • 先頭文字末尾文字 で選ばれた 対象文字数11 なら、1文字ぶんの刻みは 1 / 11 = 0.0909... です
  • 1文字ずつ一定間隔で表示したい時は、この刻みごとに progress を進めます
  • 文字数が変わっても同じアニメーション系の制御へ載せやすいように、文字数そのものではなく 0..1 を使っています

インスペクター補助表示

  • 文字リビール補助 には、次が表示されます

- 全体の文字数

- 現在選んでいる範囲の文字数

- 現在選んでいる範囲に対する 1文字ぶんの刻み値

- 現在の進行度で何文字表示されるか

  • 末尾文字 は、入力 TextLayout の実際の文字数に合わせて自動で上限が更新されます
  • 出力 TextLayout は Inspector の 文字レイアウト(デバッグ) で glyph index / bbox も確認できます

Usage Examples

[Text Input] -> [Text Layout] -> [Text Reveal By Glyph] -> [Text Rasterize] -> [Preview]
[Text Input] -> [Text Layout] -> [Text Reveal By Glyph]
[TimeSource] ----------------------^ progress

Related Nodes

text-input
text-layout
text-rasterize
preview
timesource
Text Reveal By Glyph — PixPipeline Node Reference