ノード一覧に戻る

文字リビール

text_reveal_by_glyph

TextLayout の指定範囲を 1 文字ずつ index 順に表示します

下書き
解説あり

入力ポート

名前説明
レイアウト
layout
TextLayout
必須
1文字単位で表示制御する TextLayout

出力ポート

名前説明
レイアウト
layout
TextLayout
1文字ごとの表示状態を更新した TextLayout

パラメータ

名前既定値範囲説明・選択肢
進行度
progress
Float
10–1 / step 0.01

選択した文字範囲の表示進行度です(1 = 完全表示)

先頭文字
first_glyph
Int
00–4096

表示対象に含める先頭文字番号(0 = 1文字目)

末尾文字
last_glyph
Int
40960–4096

表示対象に含める末尾文字番号

逆順
reverse
Bool
false

選択した文字範囲を末尾から先頭へ向かって表示します

遅延
delay
Float
00–0.95 / step 0.01

リビール開始前に待つ正規化遅延量です

どう考えればいい?

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

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 も確認できます

使用例

[Text Input] -> [Text Layout] -> [Text Reveal By Glyph] -> [Text Rasterize] -> [Preview]
[Text Input] -> [Text Layout] -> [Text Reveal By Glyph]
[TimeSource] ----------------------^ progress
ノード一覧に戻る