テキスト シェイプ内のテキストをダイナミックに変更する方法はありますか。

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

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

警告:

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

例:

--Create a box and a text shape
b=box name: "ControlBox" wirecolor:blue
t=text name: "ControlledText" wirecolor:red
t.baseobject.renderable=true --set the shape to renderable
theCtrl = float_script() --create a float script controller
theCtrl.addNode "TheText" t --add a variable, connect to theText node
theCtrl.addNode "TheBox" b --add a variable, connect to the Box node
--Set the expression to assign the height of the box as string to the
--.text property of the text shape, then return 0 on the next line:
theCtrl.SetExpression "TheText.text = TheBox.height as string\n0"
t.kerning.controller=theCtrl --assign the controller to the kerning
animate on at time 100 b.height*=2 --animate the height of the box
max tool zoomextents all --zoom into the two objects
playAnimation() --play back the animation
 
--You should be able to render the scene without any problems
--and the text will show the height of the box in generic units.

関連事項