テキスト シェイプ内のテキストを動的に変更する方法はありますか。
 
 
 

MAXScript FAQ に関する質問と回答 > オブジェクトのプロパティへのアクセス > テキスト シェイプ内のテキストを動的に変更する方法はありますか。

通常、Text シェイプのテキストはアニメートできません。結果のメッシュは、レンダリングの開始時に 1 度評価され、それ以降は静的なもの (時間が経過しても変化しない) と考えられているため変更されません。スクリプト コントローラをテキスト シェイプのプロパティに割り当てるための対応策として、次の 2 つが実行されます。 それは、テキスト シェイプがアニメートされることをレンダラーに通知して各フレームで再評価を行うように要求することと、テキスト プロパティに実際のテキストを設定することです。

警告:

テキスト オブジェクトに適用されたコントローラ以外のすべてで、テキスト オブジェクトのテキスト プロパティを変更すると、レンダラーがクラッシュする可能性があります。

例:

-- ボックスとテキスト シェイプを作成します。
b=box name: "ControlBox" wirecolor:blue
t=text name: "ControlledText" wirecolor:red
t.baseobject.renderable=true -- シェイプをレンダリング可能に設定します。
theCtrl = float_script() -- 実数スクリプト コントローラを作成します。
theCtrl.addNode "TheText" t -- 変数を追加し、テキスト ノードに接続します。
theCtrl.addNode "TheBox" b -- 変数を追加し、ボックス ノードに接続します。
-- ボックスの高さを文字列としてテキスト シェイプの .text プロパティに代入し、
-- 次の行に 0 を返す式を設定します。
theCtrl.SetExpression "TheText.text = TheBox.height as string\n0"
t.kerning.controller=theCtrl -- コントローラをカーニングに割り当てます。
animate on at time 100 b.height*=2 -- ボックスの高さをアニメートします。
max tool zoomextents all -- 2 つのオブジェクトにズームインします。
playAnimation() -- アニメーションを再生します。
 
-- シーンは何の問題もなくレンダリングされ、
-- テキストによってボックスの高さが標準単位で示されます。
関連事項