strange items(楽天)


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


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

2010年05月09日

shade用スクリプトその60(ポイント移動と面の複製)

新)ポイント移動と面の複製20130123.txt

旧)ポイント移動と面の複製120330.txt

旧)ポイント移動と面の複製111210.txt

旧)ポイント移動と面の複製110412.txt

旧)ポイント移動と面の複製110309.txt

旧)ポイント移動と面の複製101228.txt

旧)ポイント移動と面の複製20100509.txt

shade13.22にあわせて修正(2013.01.23)
shade13.01に対応(2012.03.30)
shade12.1で結果が更新されない不具合を修正(2011.12.10)
shade12.02に対応(2011.04.12)
複製の場合、複製回数を指定できるようになりました。(2011.03.09)
処理を高速化しました(2010.12.28)


ポリゴンメッシュ上の頂点を、このスクリプトの「開始点の記憶」「目標点の記憶」で記憶すれば、開始点から目標点への相対座標分だけ選択している頂点を移動したり、選択している頂点で囲まれる面を複製して移動したりできます。

meshtool plusウィジェットに収録して動作させたところ、単体で使用する時とは異なり変数が一部書き換えられないというバグが何故か発生しますため、このスクリプトはmeshtoolplusウィジェットへの収録は見送りました。
スクリプトウィンドウにコピペして「実行」ボタンで起動するか、一度スクリプトウィンドウの「保存」ボタンでshadeの「script」フォルダ内にスクリプトを保存してから、shade再起動後にメニューバーの「スクリプト」一覧から選択して使用してください。
(スクリプトを何回も実行する必要があるため、スクリプトウインドウの「実行」ボタンを押して使用した方が効率がいいと思います。)

なお、形状破壊バグ対策のため、上位パートに変換がかかっているとスクリプトは実行できないようになっています。


ポイント移動001.png
スクリプトを起動して最初のウィンドウ(モード選択用)が開かれるには、ポリゴンメッシュを選択しており、かつ編集モードに入っており、かつ頂点編集モードに入っており、頂点が一つ以上選択されている必要があります。
まずは「目標点の記憶」を行いますため、上記のように頂点を一つだけ選択して、この「ポイント移動と面の複製」スクリプトを実行します。

ポイント移動002.png
するとモードを選択するウィンドウが表示されますので、ふたつ目の「目標点の記憶」を選択します。
「目標点の座標を記憶しますか?」と聞いてきますので「ok」を選択すると、目標点の位置が記憶されます。

ポイント移動003.png
今度は上手のように頂点を一つ選択し、スクリプトを実行してモードは「開始点の記憶」を選択します。
同じように「開始点の座標を記憶しますか?」には「ok」を選択して、開始点の位置を記憶します。

ポイント移動004.png
移動したい頂点を上記のように選択し、スクリプトを再度実行し、今度は「選択頂点の移動(か面の複製)」モードを選択します。

ポイント移動005.png
すると上記のようなウィンドウが表示されます。
開始点と目標点の座標はすでに入力されています。
開始点から目標点への相対座標分、選択している頂点を移動する事になります。

「X座標固定」、「Y座標固定」、「Z座標固定」のそれぞれのチェックボックスをONにすると、選択頂点移動の際にX、Y、Zいずれかの座標は移動しない風にできます。

モードは「選択頂点の移動」と「選択頂点で囲まれた面の複製」の二種類から選びますが、今回は選択頂点の移動を行いますため、「選択頂点の移動」を選択して「ok」を押してください。

すると
ポイント移動004.png

ポイント移動006.png
という風に、選択していた頂点が「開始点」から「目標点」への相対座標分だけ移動します。
また移動後に同一座標にある頂点同士はマージされます。


次に「選択頂点に囲まれた面の複製」もやってみます。
ポイント移動007.png
頂点を上記のように一つ選択して目標点を記憶。

ポイント移動008.png
頂点を上記のように一つ選択して開始点を記憶。

ポイント移動009.png
頂点を上記のように選択してから「選択頂点の移動(か面の複製)」を選択し、その次のウィンドウでは今回は「選択頂点で囲まれた面の複製」を選択して「ok」を押します。

すると
ポイント移動009.png

ポイント移動011.png
となるわけです。

透視図で見ると
ポイント移動010.png

ポイント移動012.png
となって、選択していた頂点に囲まれている面が複製され、かつ開始点から目標点への相対座標分だけ移動しているのがわかると思います。
(移動後は同一座標にある頂点のマージ処理もされています。)


開始点と目標点の相対座標はすでに記憶されてますので、
ポイント移動013.png
という風に頂点を選んで、また「選択頂点で囲まれた面の複製」を行うと、
ポイント移動014.png
という風に繰り返して拡張していけます。
(もっと一気に複製したい場合は、開始点と目標点を設定しなおして、頂点全体を選択して複製した方が早いですが)

なお、「選択頂点で囲まれた面の複製」では面は複製されますが、面とは隣接してない辺(ポリライン)は複製されませんのでご注意ください。


ポイント移動002.png
最後に「相対座標の表示」ですが、これを選択すると相対座標データが表示されます。
このスクリプトでは「一つのポリゴンメッシュ」内の頂点や面しか移動や複製ができませんが、相対座標データをこれで調べてメモしておけば、shade標準の「移動>数値入力」で複数のポリゴンメッシュをまとめて相対座標分移動したりできます。(ポリゴンメッシュ以外も)
複製については、shade標準の「複製>数値入力」は編集モードでは利用できないため、オブジェクトを複製してから不要な箇所を削除し、それから「複製>数値入力」で相対座標分移動複製してください。


なお、ポリゴンメッシュ上の頂点であれば、「開始点」と「目標点」、「実際に移動や複製をする頂点(や面)」は別々のポリゴンメッシュ上の頂点であってもかまいません。
開始点はポリゴンメッシュA上の頂点を指定、目標点はポリゴンメッシュB上の頂点を指定、実際に移動処理を行うのはポリゴンメッシュC上の頂点・・・・といった感じでも動作します。


<複製回数の指定>
最新版ではモードが「選択頂点で囲まれた面の複製」の場合のみ、回数を指定して複製できるようになりました。

pointc001.png
図のように頂点を選択した状態でこのスクリプトを起動して「開始点の記憶」を実行。

pointc002.png
図のように頂点を選択した状態でこのスクリプトを起動して「目標点の記憶」を実行。

pointc003.png
図のように頂点を選択した状態でスクリプトを起動し、「選択頂点の移動(か面の複製)」を選択し、

pointc004.png
モードを「選択頂点で囲まれた面の複製」にし、回数を「3」にすると、

pointc005.png

pointc006.png
となります。
選択していた頂点に囲まれた面が三回、「開始点」と「目標点」の相対距離分移動複製されています。

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