Text Reveal By Glyph(文字リビール)
`TextLayout` の文字を index 順に 1文字ずつ表示するノード
中級
Since P00
入力ポート
Layout(レイアウト)
1文字単位で表示状態を更新する元レイアウト
出力ポート
Layout(レイアウト)
1文字ごとの `visible / opacity` を更新したレイアウト
パラメータ
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| 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は「そのうちどの文字を見せるか」を決める- まだ画像にはしない
- 最後は
TextRasterizeやTextOutlineで画像化する
glyph について
- v1 では
glyphは実質 1文字単位 と考えてよいです - したがって
先頭文字 = 0は 1文字目、1は 2文字目、という意味です - つまり
先頭文字/末尾文字は 文字番号 を指定していると思えば大丈夫です
挙動
first_glyph〜last_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関連ノード
text-input
text-layout
text-rasterize
preview
timesource