strange items(楽天)


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


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

2014年10月06日

shade用スクリプトその92(平面形状を円筒化)

新)平面形状を円筒化20151124.txt

旧)平面形状を円筒化20141103.txt

旧)平面形状を円筒化.txt

「角度」と「正面に向ける」オプションを追加しました。(2014.11.03)
「円の半径にあわせる」オプションを追加しました。(2015.11.24)

久しぶりのshade用スクリプトです。
前回スクリプトを作ったのが一年半くらいも前とあって、もうだいぶスクリプトプログラムのノウハウを忘れてますね。
自分で昔作った色々なスクリプトプログラムを見直しながら、当時の勘をなんとか取り戻して作ってみました。


今回作ったのは、平面形状を円筒状に変換するスクリプトです。
特定の形状においては、まず平面状にモデリングしてから、後はスクリプトで円筒状に変形させた方がモデリングしやすいだろうという事で作ってみました。


このスクリプトは、ポリゴン系の選択・編集ツールであるmeshtoolplusウィジェットには収録しませんので、スクリプトメニューに登録するなどしてお使いください。
(スクリプトメニューへの登録方法は、スクリプトウインドウを開いた後、このスクリプトプログラムをスクリプトウインドウ内にペーストし、「名前を付けて保存」で、shadeのインストールフォルダの「script」フォルダの中へ保存すると、次回shade起動時からスクリプトメニュー内に、この「平面形状を円筒化」スクリプトが表示されるようになります。)


注意点として、平面形状は、

1.必ず正面図でモデリングする事
2.必ず一番左端の頂点(x座標が最小の頂点)は、xの値が0となるようにする事
3.Z値0の位置を"基準"としてモデリングする事


この三点を必ず守ってモデリングしてください。
三つ目がちょっとわかりにくいかもしれませんが、後の説明で解説します。


とりあえず、最初は簡単な形状でやってみます。

enntouka001.jpg

上面図か側面図でZ値が0の位置をクリックして三次元カーソルのZ値を0にした後、正面図で四角形(閉じた線形状)を作り、ポリゴン化した後、「指定数で分割」スクリプトなどを使って適当に分割しました。
一番左端の頂点のx座標は0となっていますし、各頂点のZ値は全て0となっています。

この状態で、この「平面形状を円筒化」スクリプトを実行してみます。

なお、スクリプトが動作する条件として、

1.上位パートに変換がかかっていない事(私が作っているスクリプト類のいつものお約束)
2.ブラウザで選択している形状(加工したい形状)がポリゴンメッシュで、しかも一つの形状のみ選択している事


を満たしておく必要があります。
このスクリプトはポリゴンメッシュ用の変形スクリプトで、他の形状(自由曲面や線形状、他)や、パート内に入った複数の形状の変形はできません。ポリゴンメッシュをたった一つ選択した状態で実行しないといけないのです。


で、この二つの条件を満たした上でスクリプトを実行すると、

enntouka002.jpg

というダイアログが表示され、「半径」と「でこぼこ係数」という数値の入力を求められますが、最初はデフォルトの値のまま実行してみてください。

enntouka003.jpg

平面形状が円筒化されましたが、細いですね。
作っている形状のサイズなどによって、筒が細くなったり太くなったりするので、スクリプトの結果をキャンセルし、「半径」の値を大きくしたり小さくしたりして、ちょうどいい太さに円筒化してください。

enntouka004.jpg

半径の値を変えて、ちょうどいい感じに円筒化したもの。
片面表示のみだと、たいていポリゴンが裏返っているので、全てのポリゴンを選択した状態で「反転」をやってください。


これだけを見ると、「円筒を作るだけなのに、なんでこんな手間かけるの?」と思うでしょう。

でも、このスクリプトは平らな平面だけでなく、多少デコボコ(Z値が0を基準として、多少手前や奥にデコボコしている)物も円筒化できるのです。


enntouka005.jpg

先ほどは起伏のない平面でしたが、今度はこういう風にZ値が0を基準に、(Z値が)前後に多少デコボコした平面形状を作り、スクリプトで円筒化してみると・・・

enntouka006.jpg

といった感じで、Z値のデコボコ情報を持ったまま、円筒化できるのです。

で、このデコボコの強さを調整するための変数が、先ほどのダイアログの中にあった「でこぼこ係数」ってやつです。
でこぼこ係数は1がデフォルトの値で、プログラム内部ではこの値をかけてでこぼこの強さを調整しています。
0.2とかみたいに「1より小さい値」にするとデコボコが弱くなり、1.5とか2とか3とかみたいに「1より大きい値」にするとデコボコが強くなります。


このスクリプトは

・平面形状は、横方向の分割数が少ないと、バキバキの円筒になる
・平面形状を円筒化する場合、全てのパーツを一つのポリゴンメッシュにマージする必要がある(一つのポリゴンメッシュにしか処理できない)
・横方向の分割数が少ないパーツがあると、そのパーツの一部が浮く
・窓を組み込んだ壁を円筒化した場合、本来窓の横方向は一直線のはずが曲線状になってしまう

など、若干癖があります。

まぁ、それらの癖に目を瞑れるなら、


円筒化テスト007.jpg

こういう「壁とアーチ窓」の平面形状をポイント移動と面の複製スクリプトなどを使って簡単に作ったあと、この「平面形状を円筒化」スクリプトで

円筒化テスト008.jpg

みたいにしたり、

円筒化テスト009.jpg

を作って、

円筒化テスト010.jpg

みたいに円筒化して作るという、新たなモデリングアプローチが使えるようになるわけです。



<「角度」と「正面に向ける」オプションについて>

新しいバージョンでは、「角度」と「正面に向ける」のオプションが追加されました。

「角度」については、この値が初期値の360度の時は、以前と同じように円筒状の形状ができます。
360度より低い値にすると、弧状の形状ができます。

enntoukaaa001.jpg

enntoukaaa002.jpg

「正面に向ける」オプションについては、このチェックがONになっていると、できあがった円筒(あるいは弧状)の形状が、正面図で手前側を向くように回転処理されます。

以下は上面図の画像です。

enntoukaaa003.jpg
「正面に向ける」がOFFの場合

enntoukaaa004.jpg
「正面に向ける」がONの場合

孤の中心がZ値の正の方向(正面図で手前の方向)を向くよう、原点を中心に形状が自動的に回転されます。


<「円の半径にあわせる」オプションについて>

enntou001.jpg

上面図で、原点を中心に円を描いてください。

enntou002.jpg
ブラウザでは、このように円筒化したいポリゴンメッシュの一つ下(弟階層)に円を配置して、ポリゴンメッシュを選択状態でこのスクリプトを実行すると・・・


enntou003.jpg
「円の半径にあわせる」という項目が追加されます。

この「円の半径にあわせる」」チェックボックスをONにして実行すると、

enntou004.jpg
ポリゴンメッシュが

enntou005.jpg
弟階層に置いてある円の半径に近い感じで円筒化されます。


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