2012年4月10日火曜日

選択の解除

先週末に大阪のユーザーグループミーティングに参加した際、柳村さんに選択状態にある頂点やポリゴンをフレームのブランクエリアをクリックして解除できないかという質問をいただきました(大阪ではお世話になりました)。汎用的な用途で使えるチップスになりそうなのでこのブログで紹介いたします。

modoでは3Dビュー上の空白部分をクリックすると選択解除できるのですが、画面いっぱいに選択されたポリゴンが表示されている場合、ブランク部分が3Dビュー上に存在しないため選択が解除ができなくなってしまいます。LightWave 3Dでは、UIの空白の部分をクリックすると選択を解除することができます。

エレメントの解除は、select.dropというコマンドで行うことができます。例えばポリゴンの選択を解除したい場合、select.drop polygonというコマンドを実行します。頂点の場合は、select.drop vertexになります。現在の選択モードに応じてエレメントを解除するには、select.typeFromコマンドで選択モードをテストしてから対応したモードでselect.dropを実行すれば良いので下記のようなスクリプトを実行すればOKです。スクリプトは、ユーザーのスクリプトフォルダにコピーして置くと絶対パスの指定無しで、@SelectDrop.plのようなシンタックスで実行できるようになります。私のOSXでのユーザースクリプトフォルダは


/Users/taz/Library/Application Support/Luxology/Scripts

になります。スクリプトはこちらからダウンロードできます。下記をテキストエディタにコピペして使用してもOKです。



#! perl

if (lxq( "select.typeFrom {vertex;edge;polygon;item;ptag;center;pivot} ?" ) ) {
lx ("select.drop vertex");
}
if (lxq( "select.typeFrom {edge;vertex;polygon;item;ptag;center;pivot} ?" ) ) {
lx ("select.drop edge");
}
if (lxq( "select.typeFrom {polygon;edge;vertex;item;ptag;center;pivot} ?" ) ) {
lx ("select.drop polygon");
}
if (lxq( "select.typeFrom {item;edge;vertex;polygon;ptag;center;pivot} ?" ) ) {
lx ("select.drop item");
}
if (lxq( "select.typeFrom {ptag;item;edge;vertex;polygon;center;pivot} ?" ) ) {
lx ("select.drop ptag");
}
if (lxq( "select.typeFrom {center;item;edge;vertex;polygon;ptag;pivot} ?" ) ) {
lx ("select.drop center");
}
if (lxq( "select.typeFrom {pivot;item;edge;vertex;polygon;ptag;center} ?" ) ) {
lx ("select.drop pivot");
}

次にこのスクリプトがフレームのブランクエリアをクリックしたときに実行されるようにInput Editorで設定すれば良いのですが、この場合FramesのRegionsのLeft Clickに割り付けます。Input Editorでは、イベントが実行される条件をビューポートやツールなどさまざまなカテゴリで指定することができます。





この方法はmodo 601から実装したレイジー選択を常にオンにしたいときにも便利です。レイジー選択は常にマウスカーソル位置に一番近いエレメントが選択されてしまうので、3Dビューのブランクエリアをクリックしても選択が解除できません。

よろしかったらお試しください。modo 501でも使用可能です。


0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。