Text Reveal By Glyph
Reveals a TextLayout range one glyph at a time in index order
intermediate
Since P00
Input Ports
Layout
1文字単位で表示状態を更新する元レイアウト
Output Ports
Layout
1文字ごとの `visible / opacity` を更新したレイアウト
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| 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にはしない
- 最後は
TextRasterizeやTextOutlineでimage化する
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 も確認できます
Usage Examples
[Text Input] -> [Text Layout] -> [Text Reveal By Glyph] -> [Text Rasterize] -> [Preview][Text Input] -> [Text Layout] -> [Text Reveal By Glyph]
[TimeSource] ----------------------^ progressRelated Nodes
text-input
text-layout
text-rasterize
preview
timesource