« 2017年12月 | トップページ | 2018年2月 »

2018年1月

2018年1月23日 (火)

ワイからさん2012。

.








XSI 遺跡としてアップロードするシリーズ。


大昔、ワイからさん というツールを書いたんですがね。

これはワイヤのカラーを設定するツールですね。 もともとは、XSI 標準のワイヤカラー機能だと複数のオブジェクトをいっぺんに設定できなかったので書いたものでした。 たぶん 2005年頃の話。


その後、もうちょっと使いやすくしたつもりのものを、2012年に書いていたようです。 それをアップロードしておきます。



ワイからさん2012。

Waikara2012_2

ダウンロード WaikaraSan2012.zip (5.2K)


ZIP を解凍すると、.js ファイルが2つ出てくるので、両方をプラグインフォルダに入れて XSI を再起動すると、Get > Property メニューワイカからさん2012 が現れます。


Waikara2012_1





使い方は以下のビデオでどうぞ。
って、誰も使わねえか。







2012年以来、使い続けてはいるものの、メンテナンスはゼロです。 これ以上改造・改良することもないだろうなあ・・・・







ところで、Maya さまのワイヤカラーって、実は俺、よく分かってないんだよな。 

インデックスカラーと RGB カラーと両方あるし、アウトライナ用のカラーもあるようだし、トランスフォームノードシェイプノードとそれぞれ用のカラーもあるし、ディスプレイレイヤに入れた瞬間、レイヤ側で色指定してないにもかかわらず元のワイヤカラーは消えちゃったり。 

アトリビュートエディタじゃなくてメニューの方からワイヤ色を指定することもできるよね?  この場合はレイヤに入れても影響受けないんだっけ? でもじゃあ、このやり方で決めた色って、どのアトリビュートをいじってることになるの?



とかなんとか。

なんでこんなに分かりにくくなってるんですか Maya さま。
わざとやってんですか。

XSI と同じような感じで十分じゃないですか。
色が決まったら、あとはアウトライナでもビューポートでも同じ色で。
アウトライナ側でその色を反映させるかどうか選べればそれでいい。オブジェクトごとに、アウトライナ用の色を別に持つ必要なんてないでしょう。

しかもディスプレイレイヤとの影響力の関係が非常に分かりにくい。
あっちこっちに設定があって。
こんなに複雑にしちゃって。
なんか悪意を感じますよ。

いっそ視んで下さい Maya さま。







.

| | コメント (0) | トラックバック (0)

2018年1月12日 (金)

ポリゴンメッシュだけ見つけろとか。

.





だからなんでいまさら XSI のスクリプトの話なんかすんのよ。



まあ、数千年後に遺跡として発掘してもらえるように、覚えているうちにせっせと詰め込んでいるような・・・・w



さっきちょっとスクリプト書いたんですが、非常に汎用性はあるので、書き留めておこうと思っただけなんですが。



JScript
-------------------------------------------------------

var models = Selection(0).FindChildren( "", siModelNullPrimType );
logmessage( "total models found : " + models.count );
selectObj( models );
-------------------------------------------------------
何かひとつ選んで実行すると、その子供以下で Model を見つけて選択します。 そんだけ。



人からもらったデータで、なんか Model の子供にいっぱい Model があったりしていったいいくつ Model あるんだよ Mixer とか管理めんどくせえじゃねーかよ Model 分けた方がラクなこともまああるにはあるけどなでもとりあえず Model どんだけあんだよ Explorer で階層下りてって見つけるとか面倒くせえよゴルァ
とかよくあるじゃないですか。 よくあるんですよ俺は。


だから、こういうスクリプトで Model のみイッキに集めてしまう。選択状態になるので、すかさず ctrl + G でグループとか作ってしまえば、あとはいつでもサッとアクセスできる。



FindChildren の魔法はこういうのすごく簡単でいいですね。 よく使うメソッドです。 X3DObject に対して効くメソッドです。 X3DObject ってのは普通の3Dオブジェクトですね。 たぶん。 階層を持つことができる、SRT を持っている普通のオブジェクトならばこの魔法は有効です。 指定した3Dオブジェクト以下で、指定された形式のオブジェクトとか、指定された名前のオブジェクトを見つけてくれます。 

上記のスクリプトの場合は、 Selection(0) なので、最初に選択した3Dオブジェクトの階層以下で捜索されます。 Scene_Root も3Dオブジェクトなので、 ActiveSceneRoot.FindiChildren( xxx, yyy ); などとやると、シーン全体で検索されますね。


FindChildren ドキュメント:
http://docs.autodesk.com/SI/2015/ENU/Softimage-Developer-Help//index.html#!/url=./si_om/X3DObject.FindChildren.html






もちろん、ポリゴンオブジェクトだけ選択とかもできますね。


JScript
-------------------------------------------------------
var polys = Selection(0).FindChildren( "", siPolyMeshType );
logmessage( "total polygon meshes found : " + polys.count );
selectObj( polys );
-------------------------------------------------------


siModelNullPrimType の部分を siPolyMeshType に変更しただけです。 これで、選択したオブジェクトの子供でポリゴンメッシュだけを取得できますね。  ハイドされていてビューポートから選択できないやつとかも、これで一網打尽ですね。

ドキュメントを読むと、指定できる Type が網羅されています。 俺はちっとも覚えられないので、毎回ドキュメントをカンニングします。




すんげえ簡単なスクリプトだけど、汎用的です。 人様からもらったデータ(特に未整理で不統一な汚ったねえデータ)をいじる時に、まず整理ということで、こういうスクリプトよく使います。








あれ? そういえば Maya さまでこういうことやろうと思ったら、どんなコマンド書くのだろう?  やったことないや。 いずれ必ず必要になる。  誰か教えて下さいませ。








.

| | コメント (0) | トラックバック (0)

2018年1月11日 (木)

このパーティション以外オフって下さい。

.



またもや唐突に、XSI スクリプト。



XSI でいまだに仕事しているあなた、これけっこう便利ですよ。
Pass 分けてレンダするなら。




このパーティション以外オフって下さい。

Jjjhidepartitionexceptthis

ダウンロード jjjHidePartitionsExceptThis.js (1.1K)



まあ、別にそんな大したツールではないのですが、俺は便利に使っているもので・・・・


たくさん Pass が分かれていて、キャラごとに別レンダとか、背景は別レンダとか、よくあるじゃないですか。


その時に、その Pass に行って、パーティション選んだら、PPG 開いて Hide Members とか設定したりするの、1つならともかく多いと面倒だし、 PPG 開かなくても H キーとかで設定はできるけど、やっぱり面倒ですよね。


そこで、レンダしたいパーティションだけ選択してこのスクリプトを実行すると、選択していたパーティションは No Effect on Members に設定され、それ以外のパーティションは全部、Hide Members に設定されます。 つまり、残したいパーティションだけ選んで実行すれば、それ以外は一気にオフになるという、そんだけです。




上の画像だと、Partition3Partition4 が選択されてますね(画像の左)。 この状態で実行すると、この2つのパーティション以外はオフになるわけです(画像の右)。


上記はデフォルトの挙動でして、スクリプト冒頭の数値を書き換えると違う挙動にできます。  例えば、選択中のパーティションを No Effect じゃなくて Show にしたければ、スクリプト冒頭の visSel の値を、2 から 1 に変更します。  2 は No Effect です。 1 は Show です。 0 は Hide です。



真逆の設定にすることももちろん可能です。 オフにしたいパーティションを選んで実行すると、選択中のパーティションはオフ、それ以外はオンみたいな挙動にすることもできるということです。 冒頭の数値を書き換えれば。



現在 Pass にのみ有効です。 各Pass でオンオフを変える時に使うというこのツールの性質上、当たり前ですが。 


ただのスクリプトなのでインストールとか必要ないです。ボタンにしてもいいし、スクリプトエディタから実行してもいいし、ランチャから起動してもいいし、どのようにでも。  

カンケーないけどガルさんのスクリプトランチャ(Script Library)は今でもよく使っています。こういうちょっとしたツールの起動に便利ですね。


このスクリプト、昔公開した 「パッていしおん」 というパーティション関係のツール群に組み込みたいですね。 いつかやろう。  パッていしおんけっこう便利ですよ。 いつも使う。 まあ使う機能を自分で書いてるわけだから、当たり前だけど。











.

| | コメント (0) | トラックバック (0)

2018年1月10日 (水)

本気(マジ)マージ。

.





昔書いた XSI ツールを投下してみるシリーズ。

そんなシリーズあったっけ。

以前存在した俺ツールのダウンロードページでは公開してなかったものだと思う。 (いつか復活させますそのページ。遺跡として)




本気マージ
ダウンロード MajiMerge.js (16.3K)

Majimerge1

本気(マジ)でマージするツールです。

いや、まあ、標準のマージも本気は本気なんですがね・・・・


プラグイン形式のファイルなので、自分のプラグインフォルダに入れます。 再起動すると Model > Create > Poly Mesh メニューに現れます。

標準機能のマージと同じく、ポリゴンオブジェクトのマージ(結合・アタッチ・コンバイン)をするツールなんですが、いくつか追加機能があります。



オブジェクト1個だけ選択して実行すると、そいつを親として子供全部を対象にマージします。

ブランチ選択で実行すると、ブランチ内のオブジェクト全部を対象にマージします。

複数選択して実行すると、普通にそれらを対象にマージします。


なんでこれこんなにオブジェクト多数に分かれてるんだよゴルァ 別に1オブジェクトでいいじゃねえかよオルァ 無駄にオブジェクト数増やすなよドルァ ちゃんとマージして軽くしてからアセットリリースしやがれノルァ

ってことあるじゃないですか。 そんな時に、大量に、バカスカと、ずんどこずんどこ次々にマージしていくツールが欲しくて書いたんだったと思います。 後述する機能はおまけみたいなもので、とにかく、大量のマージを次々にやりたくて、それを便利にしようとしたのが主眼でした。

2012年とかに書いたはず。その後、ちょっとずつ改良してって、俺としては今でも使うことがあるツールです。 S谷さん、たぶんあの仕事で最初に書いたやつですよ。


Shift を押しながら起動すると、オプションが表示されます。

Majimerge2


通常のマージのオプションに加えて、いくつか独自のオプションがあります。





UI 真ん中くらいにある Retrieve のグループは、元のオブジェクトの属性を再現させる機能ですね。 標準機能のマージって、例えばレイヤとかパーティションの所属先は再現されないじゃないですか。 それを再現させる機能ですね。 親子とか、センターの位置とか、アニメーションも。 最初に選んだオブジェクトの属性が、マージ結果の新規オブジェクトにコピーされます。  ちゃんと機能するかなあ。テストはいい加減ですw





UI 下の方、Material のグループは、ええと、なんだっけこれ。 

最初のは、1番目に選んでいたオブジェクトのマテリアル(オブジェクトレベル)を、マージ後のオブジェクトに、オブジェクトレベルで適用するってやつですね。 クラスタレベルのマテリアルは、UI 上の方にある、標準機能にもあるマテリアル再現のオプションがオンならば、そのままクラスタレベルで再現されます。

次のは、アレか、クラスタレベルのマテリアルがオブジェクトレベルのマテリアルと同一だった場合、無駄だからクラスタを削除するというオプションですね。

最後のは、クラスタレベルのマテリアルがあった場合、クラスタの名前をマテリアルの名前に合わせてリネームするというやつです。



この辺の設定は、User 以下の自分のフォルダにテキストファイルで設定が保存され、次回以降そのオプションで実行されます。 一度オプション開いて設定したら、あとはもう、いちいち設定を出さずにズンドコマージしていくという使い方を主眼に書いたものだったと思います。



今さら XSI のこんなツールを投下してもどうというアレでもないのですが、俺まだ XSI の仕事もやることがあるので、これらの自作ツールもちゃんと使ってはいます。 しかし書いたのが昔過ぎて、メンテナンスが難しいねw  もう忘れちゃって、自分で書いたコードを読むのもめんどくさいからねw







ところで Maya さまのマージ(コンバイン)って、まだちょっとしか使ったことないのですが、XSI の標準機能と同じくらい、色んな属性は再現できるのでしょうかね?  クラスタでもなんでも再現されるし、エンベロープ(スキニング)もそのまま生き残るので、XSI のマージはなかなか良い機能だなあと思っていたんですよね。  


俺は普段の仕事では、Maya ではアニメーションやちょっとしたリグの作業がほとんどなので、コンバインとか使う機会が少ない気がするな。 今度調べてみよう。 そしてまた絶望しよう。 そうしようそうしよう。





.

| | コメント (0) | トラックバック (0)

« 2017年12月 | トップページ | 2018年2月 »