DataLinqのテキストにMaterial Tagを付けて色を変えたい
Material Tagを使ってテキストの色を変えるのを試してみたところ
SequenceのPublish Textに直接Material Tagを書けば色が変わりましたが、
DataLinqのテキストにMaterial Tagを書いた場合、
MasterのPreviewウィンドウでは色が変わりますがNodeのSDI出力では色が変わりません。
Node側も反映するにはどうすればよいでしょうか?
DataLinqは以下のようなJSONを使いました。
{“Text”:”ABC {M:Material1}DEF {M:Material2}GHI”}
質問をありがとうございます!
XPressionのシステムでは、いくつかTesseraシステムでは機能しないファンクションがありますが
Rossに確認したところ、この機能はTesseraシステムでも動作すると回答を得ています。
弊社環境でもテストしてみたいと思いますので、少しお時間を頂けますでしょうか。
現在ご利用のバージョンを教えて頂けますか。
バージョンは11.7です。よろしくお願いいたします。
テストしてみたところVer12.5でも同様の現象が発生しました。
テスト結果からの推測にはなりますが、{M:***}のマクロの部分がNodeにパブリッシュされる時点で展開され、喪失してしまっているようです。
Nodeにマクロを含む文字列を伝達するためには、”{ }”を一旦別の文字列としてTextObjectに保持し、
SceneDirector上のマクロで復元する事で回避可能でした。
流れとしては、非表示のTextObjectにJsonの内容を保存し、
データ更新時に表示されているTextObjectへ()→{}の文字列変換を施したものを代入します。
以下のようなJSONファイルを用意しました。今回は “{” の代わりに “(” を、”}” の代わりに “)” を使用します。
{ “Text”:”123(M:red)456(M:blue)789″ }
手順は以下の通りです。
テキストオブジェクトを2つ準備します。
JSONファイルの内容を読み取る方のオブジェクト(Text1)を非表示にし、更新された際にSceneDirectorが再生されるようにします。

再生されるSceneDirector側には()を{}に変換するスクリプトを記載します。
この時、確実にDatalinqの更新が完了してから変換を行いたいので、先頭フレームにスクリプトを配置しないでください。
変換した文字列は表示用のテキストオブジェクト(Text2)に代入します。

=========TextObjectコピペ用==========
dim dir as xpSceneDirector
Scene.GetSceneDirector(0,dir)
dir.Position = 0
dir.Play()
============SceneDirectorコピペ用===========
dim tObj as xpTextObject
dim dispObj as xpTextObject
Scene.GetObjectByName(“Text1”,tObj)
Scene.GetObjectByName(“Text2”,dispObj)
dispObj.Text = tObj.Text.Replace(“(“,”{“).Replace(“)”,”}”)
解決方法ありがとうございます。
Ver 11.7でもNodeのSDI出力にMaterialが反映できました。
野球のスコアボード画面で使用できたらよいなと思っているのですが
テキストオブジェクトが多いので状況により使ってみようと思います。
上記方法でFont TagもNode側に反映できました。
{フォントID}ABC{フォントID}DEF
これが使えると一つのテキストオブジェクトで「選手姓+小さいサイズで名」が表示できるので便利です。
