strange items(楽天)


shade10.5〜15用スクリプト(WINDOWS&MAC用)一覧はこちらです。


bannerst.jpg
リンク用のバナーです。
リンクはご自由にどうぞ。

2010年01月28日

shade用スクリプトその39(ソフトムーブ)

新)ソフトムーブ130123.txt

旧)ソフトムーブ120330.txt

旧)ソフトムーブ110412.txt

旧)ソフトムーブ20100303.txt

旧)ソフトムーブ20100202.txt

旧)ソフトムーブ.txt

<重要>上位パートに変換がかかっている状態で、かつ一時ローカル座標モードかろくろモードONの状態でスクリプトを実行すると、「スクリプトの処理結果をキャンセルした際」に形状が破壊されてしまう不具合を修正しました。(2010.03.03)
修正前の旧版をお使いの方は不具合を修正した新版をダウンロードしなおしてください。
(メッシュツールプラスウィジェットでスクリプトを利用していた方はメッシュツールプラスの最新版をダウンロードしなおしてください。)
shade13.22にあわせて修正(2013.01.23)
shade13.01に対応(2012.03.30)
shade12.02に対応(2011.04.12)
処理速度を高速化しました。(2010.02.02) 


他の3DCGソフトでは「選択している頂点」を移動するとまわりの頂点が滑らかに追随するという機能がついてたりします。
たとえばcarraraではソフトセレクションと呼ばれています。
こちらのページの中盤あたりにcarraraでのsoft selectionの紹介を載せています。)

多少マグネットツールに似ていますが、似て非なるものです。
マグネットツールとソフトセレクションを同時に搭載してるソフトも結構あります。

shadeではマグネットツールは搭載されているのですが、ソフトセレクションツールは搭載されてないため、これをスクリプトでなんとか実装できないかなと作ってみたのが、今回の「ソフトムーブ」というスクリプトです。
滑らかに頂点を移動したり、尖らせたり、へこませたりする時に役に立つかもしれません。
対応しているのは直線移動のみ(回転や拡大は不可)で、また使い勝手は他ソフトみたいに良くありませんが、「特定の頂点のみ移動対象とする」というおまけ機能などをつけてあります。

なお、上位パートに変換マトリクスがかかっていたり、ローカル座標モードでは正常に動作しない場合があります。


「ソフトムーブ」スクリプトのおおまかな流れを書きますと…

1・「基準点(後述)」の位置情報と「カーソルのクリック位置」の位置情報から「方向」と「移動量」を求める

2・選択していた頂点すべてを1で求めた方向へ、1で求めた移動量分移動する

3・選択していた頂点に隣接する頂点(一次接続点)を1で求めた方向へ移動する。ただし移動量は一定量減衰する

4・一次接続点に隣接する頂点(二次接続点)を1で求めた方向へ移動する。ただし移動量はさらに減衰する

5・二次接続点に隣接する頂点(三次接続点)を1で求めた方向へ移動する。ただし移動量はもっと減衰する ・ ・


という風にして「選択頂点」「一次接続点」「二次接続点」「三次接続点」「四次」・・・・の頂点を移動量を減衰させながら移動していくと、滑らかに頂点が移動できるというわけです。

実際にスクリプトを実行して使い方を見ていきましょう。

ソフトムーブ001.png
こういう平べったいポリゴンメッシュがあったとします。
頂点は何個選択状態でもいいですが、この例では真ん中の頂点を一つだけ選択してあります。
カーソルのクリック位置(最後にクリックした位置)は選択している頂点と同一のX,Z座標となっており、Y座標は選択頂点のやや上となっています。
ソフトムーブ003.png
横から見た例
(ラージカーソルONにしてますので、直線が交差している位置がカーソルのクリック位置となってます。)

この「ソフトムーブ」スクリプトを実行すると、以下のダイアログがまず表示されます。

ソフトムーブ002.png

先ほど出てきた「基準点」というのをここで決定します。
頂点が1個しか選択されてない場合はどっちを選んでも同じですが、複数個選択してる場合は、基準点を「最初に選択した頂点」にするのか、「最後に選択に追加した頂点」にするのかをここで選べます。

ここで選んだ「基準点」から「カーソルのクリック位置(最後に図面をクリックした位置)」へのベクトルを求め、このベクトルから「方向」と「移動距離(移動量)」が決定されます。

基準点を選択して「ok」を押すとさらに以下のダイアログウインドウが開きます。

ソフトムーブ004.png

タイプは「減算」「乗算」「二乗減算」「カスタム」の四種類から選びます。
このタイプの選択によって選択頂点のまわりの頂点の移動量の減衰の仕方が変わってきます。

タイプが「減算」の場合は、「値」で入れた分だけ減っていきます。
たとえば値に0.3が入っていた場合、一次接続点の移動量は元の移動量の0.7倍(1-0.3)となり、二次接続点の移動量は元の移動量の0.4倍(1-0.3*2)となり、三次接続点の移動量は元の移動量の0.1倍(1-0.3*3)となります。
四次接続点の移動量は元の移動量の-0.2倍・・・・・ではなく、0倍となります。(「減算」の場合は0以下になったら移動量は0となります。)

ソフトムーブ005.png ソフトムーブ006.png
タイプが「減算」の例
(「値」0.1、「範囲」10次接続点まで)
直線的に減衰していきます。


タイプが「乗算」の場合は、元の移動量に「値」に入れた数値のn乗がかけあわされていきます。
たとえば値に0.3が入っていた場合、一次接続点の移動量は元の0.3倍となり、二次接続点の移動量は元の0.09倍となり、三次接続点の移動量は元の0.027倍・・・・という風になっていきます。

ソフトムーブ007.png ソフトムーブ008.png
タイプが「乗算」の例
(「値」0.7、「範囲」10次接続点まで)
とがったような結果になります。

タイプが「二乗減算」の場合は、元の移動量の「1-( (値xn)の二乗 )」倍で減衰していきます。
たとえば値に0.3が入っていた場合、一次接続点の移動量は元の0.91倍(1-0.3の二乗)となり、二次接続点の移動量は元の0.64倍(1−0.6の二乗)となり、三次接続点の移動量は元の0.19倍・・・・という風になっていきます。
(「減算」と同じく-倍になった場合は移動量は0となります。)

ソフトムーブ009.png ソフトムーブ010.png
タイプが「二乗減算」の例
(「値」0.1、「範囲」10次接続点まで)
丸みを帯びた結果になります。

タイプが「カスタム」の場合は、下の方の各接続点ごとの適用率(元の移動量の何倍か)入力ボックスで数値を入れて各移動量をコントロールできます。


「範囲」は移動に追随する頂点を制限します。
例えば「範囲」を「1次接続点まで」とすると、選択頂点に隣接する頂点(一次接続点)しか移動に追随しません。


「x座標移動」「y座標移動」「z座標移動」のそれぞれのチェックボックスは、移動軸の制限に使います。
たとえば「x座標移動」「z座標移動」チェックボックスをOFFにして「y座標移動」のみONの場合は、それぞれの頂点はy軸方向にしか移動しません。


ソフトムーブ011.png
先ほどの例では選択頂点は一つのみでしたが、こういう風に直線状に頂点を選択して……
ソフトムーブ012.png
二乗減算で山形にふくらませてみたりもできます。


さらに追随して移動する頂点を制限するオプションもおまけとしてつけてあります。
このオプションを使うには、「操作するポリゴンメッシュの真下(弟階層)に同じ頂点数のポリゴンメッシュが存在し、かつその形状の頂点が1個以上選択されている」必要があります。
(弟形状で選択している頂点のみが移動するというわけです。)

実際にやってみます。
まず編集モードを抜けて、ポリゴンメッシュを同じ位置に複製し、その複製したポリゴンメッシュを選択して編集モードに入り
ソフトムーブ013.png
という風に頂点を選択しました。

次に兄形状(元のポリゴンメッシュ)を選択するのですが、その前にブラウザで弟形状の「表示」と「レンダリング」チェックボックスをOFFにしておきましょう。
「レンダリング」だけでなく「表示」もOFFにするのは、同じ位置に形状が重なっていると、兄形状の頂点を選択する際に頂点がうまく選択できない場合があるためです。
(同様に弟形状の頂点を選択する際に兄形状が邪魔をしてる場合は、兄形状の表示を一時的にOFFにした方が良いでしょう)

ソフトムーブ014.png
ブラウザで兄形状を選んだ後、頂点を二つ選択状態にして、(キーボードの何も押さないまま)マウスクリックしてカーソルのクリック位置を上記位置(直線がクロスしてるところ)に決定しました。
(CTRLやCOMMANDキーを押しながらだと頂点の選択が解除されてしまいます)

スクリプトを実行するとダイアログウインドウが開くのですが、「弟形状で選択した頂点のみ移動する」というチェックボックスが追加されています。

このチェックボックスをOFFのままにして実行した場合は通常と同じで
ソフトムーブ015.png
という風に頂点が追随して移動します。
(今回は「x座標移動」「y座標移動」をOFFにして、z軸方向にだけ移動させています。形状は真上から見ています。)

しかし、この「弟形状で選択した頂点のみ移動する」チェックボックスをONにして実行すると…
ソフトムーブ016.png
という風に、弟形状で選択した頂点(と同じ頂点番号を持つ兄の頂点)のみ移動対象になるわけです。

このオプションを使えば、

ソフトムーブ017.png
たとえばこういう形状を
ソフトムーブ018.png
という風に加工したりできます。

ソフトムーブ019.png

ソフトムーブ020.png

と加工してみたり。

他の3DCGソフトのソフトセレクション機能では下側の頂点も一緒に移動してしまうのですが、この「ソフトムーブ」スクリプトでは「弟形状で選択した頂点のみ移動する」オプションを使えば特定の頂点だけ移動させる事ができるようになっています。

posted by stxsi at 18:24| shadeスクリプト | このブログの読者になる | 更新情報をチェックする