【Maya】数値アトリビュートの注釈をビューポート上に表示する

特定の数値( float など)のアトリビュートの注釈をビューポート上に表示したくなり、

通常の注釈 (annotation)ノードでやろうと思ったんですが、

数値のアトリビュートを string のアトリビュートには繋がせてくれません…

 

検索しても、floatToString するようなノードプラグインでやっている方もいました。

きちんと 文字列 + 数値 を注釈として表示するにはその方法しかないですが、

わざわざプラグイン化してしまうと使用範囲によってはめんどうになったりするので、

どうにか標準機能の中で表示できるようにできないかを検証しました。

 

結論からいうと、下記のブログに書かれている「パーティクルを使う方法」を参考にさせて頂き、

それを簡単なスクリプト化しました。

 

TIPS CG: MAYA _ float value annotation in viewport

 


こちらが簡単にスクリプト化したものです。

 

使い方の想定としては、ChannelBox 上で注釈としてビューポートに表示したいアトリビュートを1つ選んだ状態で実行してもらうものです。

displayFloatAttrAnnotation の引数が注釈のポイントコンストレイントの Y オフセットになっているので、そこに対象オブジェクトからオフセットしたい高さを入れてください。

(入れなければ対象オブジェクトと同じ位置です)

 

本当に簡易な注釈なので、欠点としては数値のみしか表示できず、これが設定してあるシーンを

何も知らない人が開いてビューポート上だけでみても何の数値なのか分からない事ですね…


上記のスクリプトがやっていることを、もしも手動でやる場合の手順です。

 

① メインメニューを Fx にして nParticle > パーティクルツール を実行し、シーン上を1クリックしてから Enter を押します。
※注意点としては、作成するのは nParticle ではなく particle (旧パーティクル)のノードです。

 

②生成された パーティクル の レンダーアトリビュート 内の「パーティクルのレンダータイプ」を 数値 に変更して、その下にある「次にアトリビュートを追加」の「現在のレンダータイプ」ボタンを押しておく。

 

③ particle ノード側ではなく, particleShape ノード側に float タイプのアトリビュートを適当な名前で追加する
例)下記では displayAttr という float アトリビュートを追加した場合

 

④  ②で追加したレンダーアトリビュートの「アトリビュート名」を particleId から ③ で追加した float アトリビュート名に変更

 

⑤ ディスプレイ上に表示したい float アトリビュートを particleShape ノードに追加したアトリビュートに接続する
例)シリンダーの回転Yを displayAttr アトリビュートに繋いだ場合

 

 

はい、以上です。

これでビューポート上にはこのように表示されるようになったと思います。

ちなみにディスプレイ上に表示される文字はパーティクルなので色を変更したい場合は、
ウィンドウ > 設定/プリファレンス > カラー設定 を実行し、非アクティブタブのパーティクルの色を変更すると変わります。