myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

Custom Preferences

昨日からPreferencesを残すスクリプトを作ろうとしていました。

作ったことがなかったので、色々読みながら、やっていました。なかなか難しいですね。

まずはPPGを作って、CPWizardでやってみました。
結果はなぜかレイアウトがめちゃくちゃになってしまいました。

このCPWizardはカスタムプロパティまでは作ってくれるけど、プリファレンスまでは登録してくれないので、色んなプラグインを参考にしながら手動で作っていましたが、なかなか上手く行かないんですね。意外と難しいし、ググっても役に立つ情報があんまり出てこないんです。もちろんStep by Step的なチュートリアルがありません。(あったら教えて下さい!)

Trial & Error で少しずつこの init, define, definelayout 等 の仕組みが分かってきました。
そして、基本的にSceneRootにカスタムパラメーターを作って、InstallCustomPreferencesというコマンドでこのパラメーターをプロパティに変更することが分かりました。

ここまではそう難しくはなさそうですね。PPGを作ってをのままプロパティに変えるだけですからね。

すると、なんかのエラーが出てました。

ヘルプに載っていなかったけど、

siInt4, siString, siBool and siDouble しか対応していない。

Preferencesのヘルプには載ってるけど、InstallCustomPreferencesには何も書いてないからこれに気づくのは少し時間が掛かってしまいました。マニュアル担当の方:書いてくださいよ~。

その他、あっちこっち直してて、やっとプリファレンスにプロパティを登録することが出来ました。

問題はですね、ちゃんとプリファレンスにはなっていたけど、なぜか空っぽでした!

DefineLayoutとか何回も読みなおして、2列ぐらいのシンプルなレイアウトに変えてみたけど、なぜか空っぽのまま。

Custom Preferenceを作る時に、「Softimage\Data\Preferences」にPresetファイルが作成されます。
なので、まずはこのファイルを消しておいたほうが良さそう。
よし、削除。

もーっかい・・・ また空っぽか。


じゃあ、まずはちゃんとしたPPGが出るようにしないと上手く行く分けないんですね。で、プリファレンス登録コマンドを外して、シーンにプロパティを作るようにしてみました。


この流れでもうお分かりでしょうね。


そう!空っぽだぁ!


なにがいけないんだよー!!

やっぱ俺のコードがどこか可笑しいのかな。エラーが出ないけど。

じゃあ、コードの問題だったらSoftimageのサンプルをそのままコピーペーにしてみたら・・・


まさかの?


そう!

空っぽだ!!



もう頭まで空っぽになっちゃったから、あきらめてXSIを閉じました。

ネットサーフィンやって、ハリーポッターのハーマイオニーより好きだったルーナちゃん可愛くなくなっちゃったことに驚いて少しテンションが下がりました。
アナキン写真で少し笑っちゃって元気が出たからまたXSIをたちなおしてみることにしました。

失礼でした。ファンの皆様すみませんでした。

話に戻ります。

すると、なにかいじる前にそのままコマンドを実行してみようと

サンプルのPPGが開いた!

なんなんだよーーーー!!

自分のコードを入れ替えてすべて上手くいきました。
めでたしめでたし。



これで学んだことをまとめると:

● 自動インストールプラグインでプリファレンスをいじってる時にXSIがなんか可笑しくなっちゃうようなので、上手く行かない時に再起動でリセットしたほうが良い。
● レイアウトのアイテムは siInt4, siString, siBool と siDouble だけにしましょう。
● PPG を Refresh すれば、上手くいくはずですが、やはり、上手くいかない時もあります。
そういう時に、プリファレンスプロパティ(プリファレンスメニューにある)、プリセットファイル(Data\Preferencesフォルダの中にあるファイル)とカスタムパラメーター(Scene_RootにあるPPG)を削除してからもう一回試してみましょう。それでもダメでしたら、XSI再起動するしかないかもしれません。

お疲れ様でした、俺。


一応コードをメモっておく (JScript):
Read more