« this_model の恐怖。 | トップページ | 果てしなきコンストレイン。果てしないプラグイン。 »

2008年4月 1日 (火)

サブちゃんの恐怖。

                  
Sub1_button 自作プラグインを作っていると、XSI のインターフェース上のメニューに入れるか、ただのスクリプトコマンドにしておいてボタンから起動する仕様にするか、悩む。 しかし過去にボタンが増えす ぎてどれが何だかわからなくなっていた経験から、もう最近ではほぼ100%メニューに入れることにしている。そもそもボタンを置いておくためにはツール バーが必要で、ツールバーが占有する面積が惜しい。


                                     
Sub2_transform ということで片っ端からメニューに ぶち込んで来たわけなんだが、今度はメニューが長くなりすぎて困っている。インターフェース右側にある Transform タブなどは、もともとすげー長いメニューである。タテ1200ピクセルの画面の半分以上を占める。ここに、さらに自作プラグインの項目を足したらもう、そ れはそれは長いながーいメニューになってしまうわけで。
            
そうなるともう、サブメニューを使うしかなくなる。つまりメニューの階層化である。目的のコマンドにたどり着くまでのクリックが若干増えるが、長過ぎて目的のコ マンドが探しにくいよりはずいぶんマシである。自作プラグインでは、バッチィぬるぬるでサブメニューを使っている。 サブメニュー、便利ですね。
            
            

      
  便利ですか。
 そうですか。
 ほんとに便利ですか。
 いや、便利ですよ、確かに。
 しかし。



      
      
XSI のスクリプティングに興味のある方は、このファイルをダウンロードして、プラグインフォルダにぶち込んでみて下さい。サブメニューのテスト用プラグインで す。 右側の Snap メニューに、SubMenuTest という項目と、SubSubSub というサブメニュー階層が現れます。

Sub3


      
ソースを見てみます。


Sub4



赤文字の  は、oMenu に直接コマンドを追加しているのでサブメニューではありません。そしてそのコマンドとはこのファイルで定義しているコマンド自身ですので、 function SubMenuTest_Execute(  ) が実行されます。 その中身は  の部分です。 Logmessage コマンドで "SubMenuTest -- サブメニューじゃないやつを実行。" とログするだけですね。試しに実行してみましょう。

Sub5


するとスクリプトエディタに

Sub6

このようにログされています。問題ありません。いい子です。


      
次にソースのサブメニュー部分を見てみます。上の画像の oSubLevel という名前でサブメニューを追加しています。以下に続く3行のうち、最初の2行は AddCallbackItem となっていて、このファイル内のファンクション  を呼び出しています。 最後の1行は AddCommandItem となっていて、NullNullEXE という外部コマンド(このコマンドにとっては外部のコマンド)を呼び出しています。これは自作プラグインぬるぬるに含まれる1コマンドです。
      
ではサブメニューの項目を実行してみましょう。

Sub7

最初の2つは、ソースの の部分を見ればわかるように、Logmessage コマンドが実行されて "SubMenuTest -- サブメニュー 1 を実行。" などと、スクリプトエディタ内にログされるはずです。

しかし。

Sub8

何も起こりません。 なにっ。
      
3つ目の NullNullEXE は、当然プラグイン「ぬるぬる」をインストールしていなければ存在していないコマンドです。 でも、もちろんここの環境にはインストール済みです。ここで 作ったんですから。

しかし。

Sub9

何も起こりません。 なんだとっ。 悪い子です。
      
      
・・・・。
      
      
ところで自作コマンドをXSI のインターフェース上のどのメニューに登録するのかは、ソースの前半、XSILoadPlugin ファンクション内で指定します。

Sub10

この in_reg.RegisterMenu(siMenuMCPSnapID,"SubMenuTest_Menu",false,false);  ですね。SDK マニュアルを見ると、登録できる全てのメニューのリストが載っています。ここでは siMenuMCPSnapID としているので、XSI インターフェースの右側、Snap メニューのところに登録されたわけです。
      
しかし、サブメニューじゃないコマンドはちゃんと実行されるのに、サブメニューのコマンドは実行されない。そこでものは試し、他のメニューに登録してみます。  ソースの siMenuMCPSnapID を、siMenuTbModelCreateModelID に書き換えました。

Sub11

なので、今度は Model メニューに現れます。

Sub12

ってことで、実行します。

Sub13

あらっ。 こんどはちゃんとコマンドが実行されました。 サブメニュー1も2も、NullNullEXE もちゃんと実行されました。
Model メニューからは動いているのに、なぜ Snap メニューからは動かなかったんだ?
      



結論を言うと、バグだそうです。アフォか Softimage。


      
      
全部のメニューを試したわけではないのですが、左側のメニューはどれも問題無いようです。上のメニューも問題ありませんでした。右クリックのコンテキスト メニューも大丈夫でした。しかし右側のメニューは全滅です。 下の Animation メニューもダメでした。 でもなぜか Playback メニューは問題なく実行されます。 メニューに登録できる場所はすげーいっぱいあるので、全部試すことはできませんが、どうもメニューの ID に MCP という名前が付くものは全滅のように見えます。しかし上に書いたように問題なく実行される Playback メニューは、MCP の分類に入っています。よくわかりません。アフォです。
      
自分が試した限りの実験結果。クリックで拡大。

Sub14


      
      
これが XSI の不具合だと気づくまでにずいぶん時間がかかりました。なにせ素人スクリプター、絶対に自分がどこかを書き間違えているだけだ、とか、そもそもメニューの 概念をよく理解できてないからだ、などと謙虚な姿勢でさんざん調べまくっていたのです。 馬鹿でした。
      
ということで、サブメニューにしたくてもできない場合が多くて非常に困っております。しかたなくサブメニューをあきらめて第一階層にズラッと並べるか、メ ニュー項目を選んだら XPOP コマンドが立ち上がるようにして擬似的にサブメニューを作ったりしながら、なんとか運用しています。とても不便です。不便だよ Softimage さん。特に右側のメニューが使えないのがイタすぎだよ。そもそも、ユーザが好きな場所にメニューを仕込めるようにわざわざ SDK を改良したんでしょ? そのときに、実験しなかったの? 全部のメニューでちゃんと動くかどうかテストしなかったってこと? 左側のメニューだけ実験して 上手く行ったから右は実験してないとか? それじゃまるで素人スクリプターの俺みたいじゃないですか。あなた素人じゃないんだから。頼むよほんとに。次の バージョンで直してよ。いいですね。約束ですよ。



      
XPOP 起動による擬似サブメニュー以外に今のところ代替案無し。
次バージョンを待つ。
      
毎日ボヤいているうちに顔が野村克也に似てくる。
あなたのせいよ Softimage さん。
      
      
      

|

« this_model の恐怖。 | トップページ | 果てしなきコンストレイン。果てしないプラグイン。 »

コメント

怖いですね。
バグよりも、まともにデバッグをやってなさそうな神経が怖いです・・
車とかで不備あると大問題なのに、ソフトウェアは大事なニュースになりませんね。
泣き寝入りですね。それを見てSoftimageさんは狸寝入りですね。使う人が対策を頑張るしかないですね。

自分は上のメニューを使ってます。model、rigなどメニュー作ってそれぞれに格納を。

バグな情報助かります。ありがとうございます。

投稿: 肉だんご | 2008年4月 2日 (水) 11時17分

肉だんごさま

他のソフトウェアを深く使ったことがないので比較しての話ではないのですが、
自分はなんとなく、Softimage さんは、ユーザの言うことをよく聞いてくれる
というイメージを持っています。海外のフォーラムでも、皆、そう言います。
でもこれは、自分が使っている道具を良いものだと思いたい心理と切り離せ
ないと思います。自分の彼氏・彼女、自分の旦那さん・奥さん、自分の子供が
一番カッコいい・かわいいのと同じです。

自分の彼氏や彼女だったら、色々なことに目をつぶります。
XSI や Softimage さんは、好きな人ではありますが、私の彼氏でも彼女でも
子供でも情婦でも金ヅルでも師匠でも何でもありません。
なので目をつぶりません。

金のことだけ言えば、今までに買ったライセンスの数や年間保守料を考えると、
車より高い金を出しています。

身体への影響のことだけ言えば、不具合の数や程度が仮に今の半分だった
とすると、私の2月の平均睡眠時間は4時間は確保できたでしょう。

さあ、今日も自分の身を守るために、対策を頑張りましょう。
肉だんごさまも一緒に戦いましょう。
そしてモントリオールの爆撃を続けましょう。
けけけけけけけけ。

ところで肉だんごさまもプラグインなどを開発されておられるのでしょうか。
どこかで公開しておられますでしょうか。
拝見してみたいです。

投稿: junki | 2008年4月 2日 (水) 12時18分

そうですね。6が出たころ自分でもバグ報告をいくつかして一応なおったりしてきてますが、まだ落ちたりするのは自分で何とか守る対策をしないと・・
5で仕様と思って便利便利と思ってたことが6で出来なくて、聞いてみたら仕様じゃなくて「たまたま出来てた」ってこともあるし、あぁ怖い・・

プラグイン開発してますが、何せペーペーです。
CGもペーペーです。
高校の頃カジったVBの記憶だけで作っててまともな勉強せねばと思ってる所です。
大掛かりなものはサポートに頼っちゃってますので、自作では汎用性あって結構な工数減るものは・・ビミョウです。

いつか公開したらお知らせしますね。

投稿: 肉だんご | 2008年4月 2日 (水) 12時49分

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: サブちゃんの恐怖。:

« this_model の恐怖。 | トップページ | 果てしなきコンストレイン。果てしないプラグイン。 »