« 2011 & 2012 で RCTools45。 | トップページ | カスタムパラメータの順番を入れ替えられないので激怒してプロキシ。 »

2011年12月 8日 (木)

カスタムパラメータの名前にスペースを入れるの。

カスタムパラメータをいじくってたんですよ。


で、カスタムパラメータって、パラメータの名前にスペースを入れると、そのスペースは勝手にアンダーバーに変換されてしまうじゃないですか。 嫌だなあと思っていたんですよ。 スクリプトで作ったカスタムパラメータなら、UI 上での表示用の名前を別に持つことができて、そちらはスペースが使えるので問題ないんですよね。 でも普通に GUI 上からカスタムパラメータセットを作り、そこにカスタムパラメータを追加すると、スペースが許されない。 そして UI 表示用の名前を別で持たせることができない。




・・・・・と思い込んでいたんですが、ごちゃごちゃいじくってたら、なんだか、できました。 以下にそれを書きます。



まず、シーンルートに hoge というカスタムパラメータセットを作りました。
で、その hoge の中に、Number of fuckin Particles という、まあありがちな名前のパラメータを作りました。

Space1

この時点では、単語の間にスペースを入れて入力しています。







すると、出来上がったパラメータには、勝手にアンダーバーが入っています。

Space2

まあ、しかたないですよね。 XSI の中で、オブジェクト名でも何でも、スペースなんて許されていませんから。 これはパラメータ名も同じです。 スクリプトからやれば UI 表示用の名前を持てると上で書きましたが、それはあくまでも PPG への表示用であって、XSI にデータとして保持されているパラメータ名には、やはりスペースなどは許されていません。 当然です。


GUI からやった場合でも、スクリプトからやった時のように、PPG 表示用の名前を別で持てさえすれば、それでいいのにねえ。 なんでそうしないのですか嘔吐デスクさま。






と、あきらめていたのですが、 ふと、 こんなことをやってみましてね。

Space3

Edit Parameter Definition ですね。 これ自体は、よく使います。パラメータの名前を変えたい時はもちろん、値のレンジを変えたい場合とかにもよく使います。 Integer を Float にするみたいな値タイプの変更はできないんですけどね。





で、再度パラメータの名前をいじくったんです。

Space4

勝手に入れられてしまったアンダーバーを、再びスペースに入力し直したということですね。





そしたら。

Space5

できちゃった (゚∀゚;)



なんで?  どうして?  意味分かりません。
わかんないけど、スペース有りの表示ができちゃいました。



でもどうせ XSI のことだから、きっと、一度シーンを保存して、また開き直すと、やっぱり勝手にアンダーバーに戻っちゃってるんでしょう~ と思ってやってみたら、シーンをロードし直してもちゃんとスペースが活きてますた (゚∀゚;)







スクリプトエディタのログを見てみると・・・・



最初にパラメータを作った時、つまりこの時点ではスペースを入れて入力したわけですが、

 SIAddCustomParameter("hoge", "Number of fuckin Particles", siDouble, 0, null, 9999, null, 2053, null, 9999, null, null);

こうなってました。 はい、俺が入力した通り、スペース有りとしてログされています。 しかしこれはあくまでも俺が XSI に送ったコマンドであり、結果として XSI がそのまま受け容れたかどうかは別問題です。 XSI はものの名前にスペースを許していないので、結果としてはスペースがアンダーバーに変換された名前でシーンに残ります。


その後、パラメータをマークすると、

 SetMarking("Number_of_fuckin_Particles");

このようにログされています。アンダーバーです。 上で書いたように、スペースは勝手にアンダーバーに変換されたことがわかります。まあ、GUI 上での見た目でもそうだとわかりますよね。


パラメータの値をいじっても、

 SetValue("hoge.Number_of_fuckin_Particles", 3534.716, null);

このようにログされます。 やはりシーンの中にはアンダーバーに変換後のパラメータ名で保持されているのがわかります。



で、次に、上に書いた Edit Parameter Definition のログですが、

 EditParameterDefinition("hoge.Number_of_fuckin_Particles", "Number of fuckin Particles", 5, 0, 9999, 0, 9999, "Number of fuckin Particles", "Number of fuckin Particles");


このようにログされています。 


マニュアルを見ると、最後の引数が Desctiption というもので、「概要・説明」というような意味ですが、実際のパラメータ名よりも説明的なバージョンの名前で、ここで指定した名前が PPG 上での表示に使われると書いてあります。 つまり、この部分はスペースや記号を含んでも良いんですね、きっと。

でもなあ、GUI でいじった時点では、PPG の中に Desctiption という項目はないわけですよ。 そしてその操作の結果ログされた一文では、 Desctiption をいじったことになっている。 わっかりにくいなあ。 これは、UI へのインプリメントがマズイのではないかという気がします。 Desctiption という項目が存在していて、それをいじれるなら、PPG の中にもそれをインプリメントすればいいだけではないか。 なぜそうしないんだ。 まあ、いかにも XSI らしいですけどね。 けけけけ。



ま、ともかくですね、こうしてめでたくスペースが入ったパラメータ名の表示を実現できたわけですが、上に書いているようにこれはあくまでも表示用の名前だけであり、実際のパラメータ名ではないようです。 その証拠に、スペースが入った後のパラメータをいじくった時にログされたのは、

 SetValue("hoge.Number_of_fuckin_Particles", 413.39, null);

これです。 パラメータ名としては、あくまでもスペースは無しでアンダーバーになって保持されていることがわかります。 しつこく書いているように、ものの名前にスペースは許されてませんから、当然です。






以上。





PPG ではスペース付きの表示にできるって、もう、定説でしたかね? マニュアルに書いてますか? 知らなかったの俺だけ?




っていうか、なんか不具合出ないでしょうね・・・?

俺もまだ発見したばっかりで、長期的にこの状態で運用した実績があるわけではないので、なんか問題が出てきそうな気もします。 悪寒しますよね。 XSI ですもの。




.

|

« 2011 & 2012 で RCTools45。 | トップページ | カスタムパラメータの順番を入れ替えられないので激怒してプロキシ。 »

コメント

興味深い記事です。

先日ICEのコンパウンドでも外部公開パラメータの名前に( )を使おうとすると
アンダーバーに置き換わってしまいましたが
emFluidなどのプラグインのコンパウンドでは( )が普通に使われていました。

ためしに( )の使われている名前の編集をしようとしたらやはりアンダーバーに置き換わりました。

こちらも表示名とパラメータ名が別々にあって
UIからはパラメータ名しか設定できず
自動的にそれが表示名に使われているんでしょうね。
と思って直接.xsicompoundを書き換えてみたらスペースや()が使えました。

投稿: msk | 2011年12月 9日 (金) 15時24分

ほうほう、なるほど! これはいい情報じゃないですか。

実際にその作業をやる場面が来たら、たぶんブログのネタに頂きますね。msk さんクレジットで。

投稿: junki | 2011年12月13日 (火) 12時26分

そういえば2012.5で出来るようになったらしい
パラメータのグループ化ですが
実はこれまでもコンパウンドファイル自体を書き換えれば
レイアウトを変更することが(かなり面倒ですが)可能でした。


ICEコンパウンドもRTコンパウンドもXMLベースらしいので
もしかしたらDreamweaverで編集するのが楽かもしれませんw

SI自体にコンパウンドレイアウトエディターみたいなものがついたらいいですね。

投稿: msk | 2011年12月13日 (火) 14時27分

>SI自体にコンパウンドレイアウトエディターみたいなものがついたらいいですね。

そう、そういうのが昔から欲しいんですよ。
それがないから、友愛シリーズのようなことが必要になる。

Qtだかなんだかわからんが、おそらく XSI が根本から何らかの自由度の高い UI 技術に準拠して作られればいいのではないか、と思うんだが。 パラメータをドラッグすれば順番変わるとか、GUI でグループ化できるとか、そういうのをXSI自前で用意するのではなく、最初からそういうのが実現できている UI 規格を採用し、アプリケーション全部それで作られれば、いいような気がするという意味です。

が、従来の XSI の操作感は失われてしまってゴルァになる悪寒

投稿: junki | 2011年12月17日 (土) 15時12分

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: カスタムパラメータの名前にスペースを入れるの。:

« 2011 & 2012 で RCTools45。 | トップページ | カスタムパラメータの順番を入れ替えられないので激怒してプロキシ。 »