myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

SI | 矩形選択・レイキャストの切り替えスクリプト

今日はSteven Blair氏のブログに矩形選択とレイキャスト選択のトグルファンクションが載っていました。

やりかたは良く分からなかったけど、これは昔から欲しかったな。

さっそく使わせて頂きました。

しかし、思うようには行きませんでした。

Blair氏のスクリプトは基本的に「SI3D_RECTSEL_REGION_MODE」のプリファレンスの切り替えボタンになります。

しかし、オブジェクト選択からポリゴン選択に変えると自動的にこのプリファレンスは「矩形選択」モードになります。したがって、このスクリプトで選択モードを変えると自動的に「レイキャスト」になります。

「矩形選択」をデフォルトにしたいので、自分なりのアレンジはこのようになりました:

//JScript

var SelFilter = Selection.Filter.Name;
SetSelFilter("Polygon");
var SelMode = GetUserPref("SI3D_RECTSEL_REGION_MODE");
if (SelFilter == "Polygon") SetUserPref("SI3D_RECTSEL_REGION_MODE", 3 - SelMode);


これをカスタムコマンドにして、キーボードの好きキーにアサインすると完璧です。

参考まで:
DOWNLOAD


このファイルをプラグインフォルダに入れると :
mToggleSelPoint = ポイントの矩形選択・レイキャスト選択の切り替えコマンド
mToggleSelEdge = エッジの矩形選択・レイキャスト選択の切り替えコマンド
mToggleSelPoly = ポリゴンの矩形選択・レイキャスト選択の切り替えコマンド

キーボード設定のカスタムコマンドからアサインできます。


スクリプトの解説

Selection.Filter.Name で 選択フィルタを取得が出来ます。ポリゴン選択モードになっているとこれは「"Polygon"」になります。

GetUserPref("SI3D_RECTSEL_REGION_MODE") で 選択ツールの取得が出来ます。選択ツールはプリファレンスの値になっているんですね。知りなかった~。
これはですね、このようになります:
0 = 不明
1 = Rectangle 矩形
2 = Raycast レイキャスト
3 = Lasso 投げ縄
4 = Freeform フリーフォーム
5 = 不明
6 = Rectangle Raycast 矩形レイキャスト

0 と 5 ってなんだろう。何も選択が出来なくなるだけです。

そういえば、フリーフォームって使ったことないな~。使う人がいますか?なんか便利ですか?
投げ縄は結構使います。矩形レイキャストと同じように裏面は選択しないけどポイント選択には矩形より使い勝手が良いと思います。ん~上記のスクリプトを投げ縄に変えようかな。

あっ、スクリプトの解説の途中だったな、はい

次は

if (SelFilter == "Polygon") SetUserPref("SI3D_RECTSEL_REGION_MODE", 3 - SelMode);

JScriptでは IF を1列でも書けることを知った時にすげーって思いました。なんでこんな便利な書き方知らなかったのか!!
知らない人もいるかもしれないので、ここで使ってみました。

そして、このスクリプトの切り替え数値は 2 と 1 だけですね。でもBooleanじゃないからToggleValueは使えません。でも、1列で書いてみたかったのでこんな感じになりました:
3 - 現在の数値 (SelMode)。
現在の数値(SelMode)は2の場合は新しい値は1になる。1の場合は2になります。

似たような書き方はどこかで読んだことがあって、この発想は面白い!と思ったけど、なかなか使う機会がありませんでした。


まとめると、
選択モードを取得し
ポリゴン選択モードに変え、
最初に取得した選択モードは、「ポリゴン」だった場合、選択ツールをレイキャストと矩形の切り替えになれ!
「ポリゴン」じゃなかったら何もしない。

あとは自分で好きにカスタマイズしてみてください!


追記
ポイント選択ツールは結局こんな感じにしました:

//JScript

var SelFilter = Selection.Filter.Name;
SetSelFilter("Vertex");
var SelMode = GetUserPref("SI3D_RECTSEL_REGION_MODE");
if (SelFilter == "Vertex"){
if (SelMode == 1) SetUserPref("SI3D_RECTSEL_REGION_MODE", 3);
else if (SelMode == 3) SetUserPref("SI3D_RECTSEL_REGION_MODE", 2);
else if (SelMode == 2) SetUserPref("SI3D_RECTSEL_REGION_MODE", 1);
}


矩形選択 → 投げ縄選択 → レイキャスト選択 という切り替えになります。

Comments

Post a comment


Only the blog author may view the comment.

Trackbacks

Trackbacks URL
http://myara.blog.fc2.com/tb.php/118-ff811d8b
Use trackback on this entry.

まとめtyaiました【SI | 矩形選択・レイキャストの切り替えスクリプト】

今日はStevenBlair氏のブログに矩形選択とレイキャスト選択のトグルファンクションが載っていました。やりかたは良く分からなかったけど、これは昔から欲しかったな。さっそく使わせて

  • 2012/05/02(水) 01:31:51 |
  • まとめwoネタ速neo