テキストツールで動的に文字を変更するには


https://www.youtube.com/watch?v=Ae_ZeJgy7_w

MODO 10.1で搭載されたプロシージャルモデリングのプリミティブツールに含まれているテキストツールを使うと、シーンの中で動的に変化する値に対応したテキストメッシュをリアルタイムに生成してくれるようになります。

まずはサンプルとなるシーンにプロシージャルプリミティブのテキストを追加します。テキストツールのプロパティは、ダイレクトモデリングにおけるテキストツールとほぼ変わりがありません。テキストの箇所に文字を入力し、フォントを選択します。ビデオ「テキストやカーブに対して四角形で面を貼るには」でも解説している通り、このままの状態ではテキストには面は貼られていません。面を貼るためにメッシュオペレーションCurve Fillを追加してもよいですし、単純にフリーズさせるだけであればアイテム追加編集Freezeでテキストタイプのポリゴンを通常のメッシュへと変換することも可能です。その上でテキストに厚みをつけるためのオペレーションSmooth Shiftを追加すれば、立体的なテキストを作ることができます。

この状態だと、ビューポート上に現れるテキストは固定の状態の文字列となりますが、MODOではこの文字列自体をシーン内の時間軸に沿って変更することが可能です。例えばシーン内の時間に伴い変化する数値の例でいえば、一番簡単なのはフレーム数ですので、このフレーム数をテキストで表示させるようにしてみます。

Textツールのテキストプロパティのラベル上を右クリックし、チャンネルをスケマティックへ追加を選択します。これでスケマティックビュー上でテキストを設定できるようになりました。フレーム数を表す数値から文字列を構成するため、追加文字列String Composeノードを追加します。このString Composeノードの出力をText ツールのテキストへと接続しておきます。

次にフレームの数値を取得するため、追加時間Timeノードを追加し、フレーム整数へと接続します。これでString Compose内で保持する整数の値というのがシーンのフレームの値に相当するようになりましたが、それをどのように出力するのかを指定するのが、String Composeノードのパターンプロパティです。ここにFrame $[i:1]と入力しましょう。Frameはそのままの文字列として出力されますが、その後の$[i:1]は整数値として入力されている一番目の値を出力するという意味になっています。今回整数値として入力されているのはシーンのフレームの値だけですので、それがそのまま出力されることになります。

これでシーンを再生してみると、フレームの変化に伴い、生成されるテキストも変化していくのが確認できます。このようにプロシージャルプリミティブのテキストツールを使うことで、時間軸に沿ったテキストを自動生成することが可能になります。