カテゴリー「XSI Plug-ins/Scripts (original)」の146件の記事

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月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年11月23日 (木)

俺のFカーブ。 要ります?。

.





今さら XSI のツールねえ。




いや、マーティンのように今でも XSI をバリバリ使っていて、バリバリといいツールを書いてくれる人はスヴァらしいけど、俺のは、なんつうか、ほんと俺得ですね。 俺の仕事に必要だった機能を書き足していくうちにこうなったというだけの。ちっとも万人向けではないかもしれない。  今さらこんなの欲しい人、いらっしゃいますでしょうか。


「俺のFカーブ」 って呼んでるんですが、 XSI のFカーブエディタ上でアニメーションカーブやらキーフレームやらをごにょごにょ操作するツール群 です。

Oreno


もう何年も機能追加を続けているツールだけど、ここ最近 XSI の仕事が続いたので、特に色々増えた気がする。



選択したキーを1フレずつ前に後ろにショートカットキー使ってガガガガガっと動かすとかね、となりのキーフレームの値にじわっと近づけるとかね、あと、キーの繰り返しコピペとかね。 いろいろです。  ちゃんとバグ取りとか、ちっともしていないので、マトモに動かない機能すら含まれている可能性はあります。 個人的には、業務になくてはならないツールですが。


Maya 用にも似たようなものをだいぶ書いたり、どっかからパクってきたり、色々してます。 アニメーション作業はこの手の機能が必要で、かつショートカット(ホットキー)が絶対必要だと思っているんですが、どうですかね。 標準じゃあんまり無いんだよねこういうの。




どっかにアップロードしようと思ってるんだけど、どうしようかしら。このブログに貼り付けてしまえばいいのかな。 旧 JJJ ツールの置き場所は、閉鎖されてしまって以来そのままです。 バックアップは手元にあるので、またどこかに置きたいんですけどね。 めんどくさがって、なかなか着手してませんw




こういうツールが増えると、ショートカットキーがほんとにもう足りなくなっているので、ボタンがいっぱいついた特殊な入力デバイスを買って、自作ツールの機能を割り当てて使ってみようかとか画策しているんだけど、どうかなあ。便利になるかなあ。 スペースパイロットみたいなやつとか?  ゲーム用のプログラマブルキーパッドみたいなやつとか?  誰か使っていたら、使い心地とか実用性とか、教えて下さい。






.

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

2017年6月22日 (木)

涙のMayaさまペアレント。

XSI のスクリプトですよー





今更誰得。




俺得に決まってるじゃないですか。









脊髄反射的に今書いたばかりの XSI のスクリプト
Maya さまのスタイルで親子付けをします。


JScript
--------------------------------------------------------
// 涙のMayaさまペアレント。
var oSels = FilterX3D( Selection );
var oNewParent = oSels( oSels.count - 1 );
for ( var i=0; i<oSels.count-1; i++ ) ParentObj( oNewParent, oSels(i) );
function FilterX3D(in_Objs)
{
 var oCol = XSIFactory.CreateObject('XSI.Collection');
 for (var i=0; i<in_Objs.count; i++)
 {
 if (in_Objs(i).IsClassOf(siX3DObjectID)) oCol.Add(in_Objs(i));
 }
 return oCol;
}
--------------------------------------------------------

オブジェクトを複数選んで実行。
最後に選んでいたオブジェクトが、親になります。
Maya さまの流儀ですね。



別に Maya さまの流儀が優れているとかそういうわけではなく、単に、この流儀で親子付けしたい場面が何度か出てきたので、書いてしまったというだけのアレであります。 XSI 流儀、つまりピックを伴う親子付けがいつでも最良というわけではありません。 ピック無しに通常の選択動作だけで親子付けができるというのが便利な場面も、たくさんあるということです。

コンストレインもそうですね。ピックがいつでも最良というわけではない。 Maya さま流儀で、選択の順番で出来るというのも、悪くないですよ。 大昔に書いた コンちゃん というコンストレイン関係のツールには、そういうモードもありました。 実は未だに愛用しているコンちゃん。


でもピックが良いことももちろんたくさんある。 しかし Maya さまにはそもそもピックという操作法が無い。 信で下さい Maya さま。




ああ、ちなみに XSI の Explorer での親子付けは、左クリックドラッグができてスヴァらしいですね。 左クリックが一番ラクですからね。  Maya のアウトライナは、親子付け操作は 中クリックドラッグ なんですよね。 中クリック嫌いです。ペンタブ使うので、ボタン押しづらいのですよ。 芯で下さい Maya さま。




アウトライナと言えば、あのうんこたれアウトライナが、いつか XSI の Explorer 並みになってくれるんでしょうかね。 最近はマテリアルの表示ができるようになったのかな。  でもね、まだ Explorer の足元にもおよびませんね。 何が表示できるかだけでなく、例えば XSI でいうグループへの追加とか削除とか、そういう操作体型も整備せねばなりません。 色んなモードがあって、シーン内のあらゆる要素に、あらゆる角度から、あらゆるスコープでアクセスできねばなりません。 XSI のように。  まだ道は長そうですね。  でもグラフエディタ(笑 が最近ずいぶん良くなったから、可能性はあるかも知れませんね。 がんばって下さい Maya さま。








.

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

2017年5月 4日 (木)

フローティングカメラビュー的なアレ。

作業していたら、強烈に欲しくなって、書いてしまった。





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


// フローティングカメラビュー的なアレ。
// カメラを選んで実行して下さい。
var olayout = Application.Desktop.ActiveLayout;
var oView = olayout.CreateView( "Object View", selection(0).FullName );
oView.SetAttributeValue( "camera", selection(0).FullName ) ;
oView.SetAttributeValue( "displayall", "true" ) ;
oView.SetAttributeValue( "autoalign", "false" ) ;
oView.SetAttributeValue( "autoframe", "false" ) ;
oView.SetAttributeValue( "compensate", "false" ) ;
oView.SetAttributeValue( "holdselection", "false" ) ;
oView.SetAttributeValue( "localview", "false" ) ;
oView.SetAttributeValue( "lockstatus", "true" ) ;
oView.SetAttributeValue( "modifycameras", "true" ) ;
oView.SetAttributeValue( "rotatecomp", "false" ) ;
oView.SetAttributeValue( "scalecomp", "false" ) ;
oView.SetAttributeValue( "translatecomp", "false" ) ;

-------------------------------------------------

Jjjfloatingcamviewtekinaare


つまりアレです。
カメラビューをもう1個、フローティングで出したい的なアレです。

やってることは、Object View をひとつ降臨させて、各種設定をいじくっているだけです。 今まではオブジェクトビューを出すところから全部手でやっていたけど、面倒だからスクリプトに書いたというだけ。

カメラビューのただのコピーみたいなもんなので、普通に ABCD のビューと同じように使えると思います。フローティングなのでモニタのどこに置いてもいいし、大きさも自由というところがポイントですね。





最近、昔ながらの4分割の画面じゃ何も操作できなくなりました。小さすぎるんだもん。 なので1つのビューで全画面、もしくは2分割程度で作業することが多いんだけど、最終アウトプットのカメラがね、見づらいことが多くてね。 特にすごく横長とか、ヘンなアスペクトを持った画像を出そうとしていると、カメラビューの配置や大きさにもっと自由度が欲しくなるわけですよね。 だからこうしてフローティングのウインドウにしようとするわけです。


昔、Softimage 社にいたチニーさんが、こんなプラグインを出してたよな。 Viewport Controls とかいう名前だっけ。違ったっけ。 すごく便利だけどメニュー項目が多すぎて肥大してしまって、もうこりゃかなわんとアンインストールしたような記憶がある・・・・10年以上前の話かな。


あー ちなみに Maya さまでは、このスクリプトのような機能は最初からありますね。パネルに Tear Off Copy ってのがあるから、カメラビューでもなんでも切り離してフローティングにできますね。







ところで最近はもう、XSI のスクリプトの書き方を強烈に忘れてしまっていて、なかなか苦労します。 こんなの俺、2分で書いてたのになあとか思うと、涙が出そうになります。 

Maya さまで Python や MEL を書くスピードは上がってきましたが、でもまあ、まだモタモタですね。 なにか不都合を感じるとソッコーでスクリプト書いてアプリケーションを俺様用に調教するというのを、Maya さまでもやりたいんですよ。 XSI でずっとそうしてきたように。   カスタマイズの余地は Maya さまの方がはるかに大きいように見えるので、未開拓エリアは広大です。 すんげえ魔改造もできるみたいだし。

でもなあ、例えばマウスドラッグの操作性とかね、モノのセレクトとかね、そういう部分で Maya さまは Maya さまなので、どんなにカスタマイズしてもそこは変わらないんですよねえ。 ううむ、氏んで下さい Maya さま。






そしてこんなスクリプト書いてるってことは、
まだまだ現役ってことなんだぜ XSI。

現在放送中のアレは XSI で作られているんですよ奥さん。

ヘイルヘイルXSI。

ゴートゥーヘルMayaさま。








.

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

2014年12月27日 (土)

フレームレンジ様。

久々にツールを公開してみたり。
今さら、ねえ。

しかもほんのちょいツールなので、大したアレではないのですが。


フレームレンジ様

Framerangesama_menu

http://homepage3.nifty.com/jjj/XSIFiles/Plugin/JJJ_XSI_Plugins.html




説明はビデオでどうぞ。



まああの、フレーム範囲をいじくるというか、セットするのに少しラクをしたかっただけです。 ほんの少しラクになります。



さて、もうすぐ XSI 男忘年会です。 20人ちょい集まるのかな。 もう何回目になるんだろう。たぶん7回とか。 皆様、当日会いましょう。 

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

2014年9月 9日 (火)

おっぴろげスケマチック。

スケマティックビューで、ノードを畳んだ状態にするってよくやりますけど、それを展開するときに面倒なこと多いですね。 特に人からもらったデータだとね。 


Nキーというショートカットがありますが、キーを押す前にまずはそのノードが選択されていることが前提ですからね。 あちこちに散っている畳まれたノード達。 畳んだ下の階層でさらに畳まれたりしてますからね。 どこがどう畳まれてるかも知らないのにどうやって選択すんのよ、 っていうか知ってても選択したくねえよ って話ですよ。 




例えば、パッと見こんなスケマティックが・・・・・、

Sss2


全部展開してみると・・・・・・

Sss3

実はこんなだったりとかね。 クリックするとでかい画像が出ます。


こんなツリーで、あちこちが畳まれていたら、そりゃブチ切れますよね。 全部おっぴろげろやゴルァ とモニタを窓から射出してしまいます。






・・・・という状況だったらしい。 俺もよくある。 実によくある。





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

//	おっぴろげスケマチック ver 2

var oGodDamnViews = Desktop.ActiveLayout.Views;

//	ドックビューを捜索 -> 浮遊ビューを捜索 -> それでもなきゃ作る
var oFuckinSchematicView = oGodDamnViews.Filter( "View Manager" )(0).Views.Filter( "Schematic" )(0);
if ( !oFuckinSchematicView ) {
	oFuckinSchematicView = oGodDamnViews.Filter( "Schematic" )(0);
	if ( !oFuckinSchematicView ) var oFuckinSchematicView = Desktop.ActiveLayout.CreateView( "Schematic", "おっぴろげスケマチック。" );
}

var oMotherFuckinNodes = oFuckinSchematicView.SelectedNodes;//	選択中のノード
if ( oMotherFuckinNodes.count == 0 ) oMotherFuckinNodes = oFuckinSchematicView.Nodes;//なんもなければ全ノード

for ( var i=0; i<oMotherFuckinNodes.count; i++ ) ExpandMotherFuckinSonOfABitchNode( oMotherFuckinNodes(i) );

function ExpandMotherFuckinSonOfABitchNode(oAssHoleNode){	//	再帰的というらしい
	oAssHoleNode.Expanded = true;//	おっぴろげ
	for ( var i=0; i<oAssHoleNode.Nodes.count; i++ ) ExpandMotherFuckinSonOfABitchNode( oAssHoleNode.Nodes(i) );
}

----------------------------------------------

ダウンロードする


コピペでもダウンロードでもなく、手打ちが推奨なのですが(謎



何も選んでない状態で実行すると、シーンの中の全スケマティックノードが展開されます。 つまり、たたまれた状態のノードはなくなります。 何かを選んでいると、その選んでいるオブジェクトの階層以下全てが展開されます。 そんだけです。 以上。







スケマティックビュー関連は昔、全然スクリプタブルじゃなかったんですよね。 でもおそらく要望が多かったのでしょう、2012 になってようやく Schematic オブジェクトSchematicNode オブジェクトができたんですよね。 俺も 2006 年とかその頃からずーーーっと要望を出していたので、すげえ嬉しかったです。

でも、まだ全然できることが少ない。 必要なプロパティやメソッドがまだ全然整備されてないという印象です。 

でもまあ、最初はこんなものだろう、これからだんだん増やしていくんだなーとか思っていたら、廃村です。 Python じゃありません。 廃村です。  



これはもう、滅び行く村の方言であります。 幻の言語になります。 文化保存の目的で、ここに残します。 いつか XSI 博物館が建ったら収蔵して下さい。




.

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

2014年9月 3日 (水)

選択順で親子づらづら。

どうしたことかなかなか XSI 仕事が途切れなくて、日々 XSI 触ってます。 つまり日々スクリプト書いてます。


最近は、ヌルがたくさんあって直列に親子付けしたいとか、そういう場面が多いです。 


これ、XSI の標準の親子付けで連続的にやろうと思ったら、中クリックで子供から親をピックしていくしかないですよね? 

俺の場合、中クリックがけっこうツラいんですよ。 マウスだと指の筋肉のスジが痛くなってくる。 ペンタブのペンだと指を多く曲げるのがつらい。 

ちなみにペンのスイッチは人差し指で押す派で、かつ下側が右クリック、上側が中クリック派です。 つまり中クリックをしようとすると人差し指をぐりんと曲げた状態にせねばならず、これがつらく感じることもよくあるんですよ。 だから、中クリックや、できれば右クリックもなるべくしないで済むようなスクリプトを書くことがけっこう多いです。


今回もそういうスクリプトですね。


Jscript
------------------------------------------------

//	選択した順で親子づらづら
//
//	オブジェクトを 親 → 子 の順でいくでも選んで実行 → その順番で親子になる。

OpenUndo( "選択した順で親子づらづら" );
for ( var i=Selection.count-1; i>=0; i-- )
{
	if ( Selection(i).IsClassOf( siX3DObjectID ) )
	{
		var oChild = Selection(i);
		var oParent = Selection(i-1);	
		if ( oParent ) oParent.AddChild( oChild );
	}
}
CloseUndo();
------------------------------------------------

このスクリプトのダウンロード




いや、ほんと、毎回どうでもいい小スクリプトですよね・・・。 まあ、俺は便利に使ってますけどね。

親にしたいオブジェクトが最初、次に子供、次にその子供・・・・という順番で選択して行き、このスクリプトを実行すると、その順番で直列に親子関係ができます。  そんだけ。  中クリックとか要らないので、俺は楽なんです。


Zoolazoola



もうちょっと規模の大きな(って言っても大したことないですが)ツールもたくさん書いてるんですが、なかなかブログにアップできないな。 2~3日まとまった時間を作らないとなあ。




しぶとく続く XSI の日々。



.



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

2014年8月 6日 (水)

これ。 このModel。

this this_model ですよ。
エクスプレッションの話です。


PPG 上でドラッグ&ドロップしてエクスプレッションを作成すると、this や this_model で記述できる部分でもそのオブジェクトのフルネームが入ってしまいますね。 

それを this や this_model にイッキに置換してくれるツールが欲しかったのですが、たぶん無いだろうから急に書きました。


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

//	これ。このModel。 this. this Model.
//	エクスプレッションのあるオブジェクトを選んで実行。 
//	this や this_model に置換できる部分を置換

OpenUndo( "これ。このModel。" );
var oObjects = Selection;
for ( var i=0; i<oObjects.count; i++ )
{
	var oObj = oObjects(i);
	var oAnimParams = oObj.NodeAnimatedParameters(siExpressionSource);//Expression駆動のパラメータ取得
	for ( var j=0; j<oAnimParams.count; j++)
	{
		var oParam = oAnimParams(j);
		Hage( oParam );
	}
}
CloseUndo();

function Hage( oParam )
{
	var oObject = oParam.Parent3DObject;	//そのパラメータの所有者であるオブジェクト取得
	
	var oExpr = oParam.Source;	//Expression駆動で既にフィルタ済みなのでSourceで必ず Expression オブジェクトが取得される
	var oDefinitionParam = oExpr.Parameters( "Definition" );//なんか知らんがこれと次の1行でExpressionの中身を取得
	ExprDif = oDefinitionParam.Value;

	//	this
	var RE1 = new RegExp( oObject.FullName, "gi" );
	NewExprDif1 = ExprDif.replace( RE1, "this" );

	//	this_model
	var oModel = oObject.Model;
	var RE2 = new RegExp( oModel.Name, "gi" );
	NewExprDif2 = NewExprDif1.replace( RE2, "this_model" );

	if ( ExprDif.toLowerCase() != NewExprDif2.toLowerCase() )
	{
		oDefinitionParam.Value = NewExprDif2;
		Result = oDefinitionParam.Value;
		if ( ExprDif.toLowerCase() == Result.toLowerCase() ) Logmessage( "なぜか変わってねえっス : " + oParam.Fullname, siWarning );
		else
		{
			Logmessage( "置換しますた。 : " + oParam.Fullname );
			Logmessage( "	" + ExprDif  + " --> " + NewExprDif2 );
		}
	}
}

---------------------------------------------------------

このスクリプトをダウンロード(右クリックで保存とか) Korekonomodel ほんと、それだけのものです。 これ、EKC に組み込めばいいかなあ。 っていうか EKC も長年メンテしてないな。色々不具合あったはず。もっとシンプルなものに書き直したい。昔書いたツールはどれも無駄に複雑で、現在の俺のワークフローに合わなくなってきたりしてますね。 2008年だって。すげえ昔だなあ。 ところでこういう小さいツールは、めんどくさがらずにチマチマ書き溜めていくと、俺様的ワークフローの中にだんだん溶け込んで、効率が上がるんですよねえ。 そのツールを使うために都合が良いようなフローに変わっていくこともよくあって、場合によっては本末転倒のこともあるけどね。  まあアレだ、俺の場合、最初に細かいことを気にせず作り散らして、後で綺麗に整理するというフローが好きなんだなきっと。そのためのツールをよく書いている気がする。 このツールも、ひとまず何も考えずエクスプレッションを書き散らして、あとで this とかに置換できる部分は自動でやってもらおうという発想だな。 毎日暑いですね。 明日は XSI な人と少人数で会って、パワーをもらってきますよ。 甘太郎でビールを吞もう。 .

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

より以前の記事一覧