strange items(楽天)


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


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

2010年02月08日

shade用スクリプトその45(集合点の分解)

新)集合点の分解20130123.txt

旧)集合点の分解120330.txt

旧)集合点の分解110412.txt

旧)集合点の分解.txt

旧)集合点の分解20100208.txt

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

shade13.22にあわせて修正(2013.01.23)
shade13.01に対応(2012.03.30)
shade12.02に対応(2011.04.12)



このスクリプトはちょっと特殊で、人によってはあまり使う機会は無いかもしれません。
サブディビジョンサーフェイス(角の丸め)をONにした形状で、頂点を一点に収束させた後にあえてマージせず、角のように尖らせている形状を作った場合にこのスクリプトが必要となる場合があります。

集合点001.png
このようなポリゴンメッシュ形状があったとします。
サブディビジョンサーフェイスはONにしています。

集合点002.png
底面の頂点を選択して「一点に収束」をすると、角のように先がとがった感じになりました。
四つの頂点を一点(同一座標)に収束はしてますが、「頂点のマージ」は行っていません。

集合点003.png
ところが「頂点のマージ」を行うと、このように先がとがらなくなってしまいます。

shadeのメッシュツールの「merge(頂点マージ)」では、選択・非選択に関わらずポリゴンメッシュ全体の頂点に効果をおよぼし、「同一座標(あるいはかなり近くにある頂点)」同士をマージするようになってるみたいです。
そのため、「頂点マージ」を実行すると、「頂点を一点に収束させてマージせずにとがらしている箇所」までがマージされて、結果このように丸くなってしまいます。

スクリプトでも、「xshade.scene().active_shape().cleanup_redundant_vertices()」というのが(選択しているポリゴンメッシュの頂点すべての)頂点マージを行うメソッドとなっているのですが、私が公開しているいくつかのスクリプトではこれを使用しています。
(これで頂点マージを行わないと、「つながっていない形状」ができてしまうため)

ターゲットウェルド
球の表面へ選択ポイントを移動
マルチターゲットウェルド
選択辺を腺形状に沿って押し出し
表面材質を残してマージ
線形状をポリライン化マージ
ループ稜線の丸めとベベル
シンプル稜線の丸めとベベル
極周辺で分割
片面削除後ミラーコピー
など


角の先の方(収束した頂点のかなり間近)に横方向に切り込みを入れておけば、先端がマージされてもとがったままになるのですが、この「集合点の分解」スクリプトはそれをスクリプトでやるようなものです。

集合点004.png
マージされて丸くなってしまった先端の頂点を選択状態にします。
で、この「集合点の分解」スクリプトを実行すると……

集合点005.png
先がまたとがるようになります。
先端は一点に見えますが、つながっていた辺の本数(今回の例では4本)分の頂点に分解されています。

集合点006.png
思いっきり拡大してもまだ1点に見えます。

イメージ的には
集合点011.png

集合点010.png
にするみたいなもんです。


スクリプトを実行した箇所は、各々の頂点はマージされない距離まで引き離されていますため、次回以降「頂点のマージ」やスクリプトの「xshade.scene().active_shape().cleanup_redundant_vertices()」を行ってもマージされないようになっています。

例)

集合点008.png
集合点007.png
このスクリプトで先端の処理を行った形状は、「片面削除後ミラーコピー」などをやっても先端がとがったままです。

集合点008.png
集合点009.png
先端に処理を行ってない形状は、「片面削除後ミラーコピー」をやると先端がマージされて丸くなってしまいます。


注意点として、マージされて丸くなってから、先端の頂点を選び、このスクリプトを実行してください。
とがってる段階で使用しようとしても機能しません。
またすでに処理を行った箇所にもう一度やろうとしても機能しません。

このスクリプトで処理した先端は1点に見えて実際は頂点が複数個になってますので、その箇所を移動する際は間違って先端の頂点のうちの1個だけを移動させないように注意してください。
(クリック選択ではなくドラッグ選択推奨)
先端のまわりの辺を分割する場合は、「極周辺で分割」ではなく「指定数で分割」や「指定位置で分割」などを使います。

分解した先端の頂点をマージしたくなった場合は、先端の頂点群を選択状態にして「形状編集>一点に収束」を行ってから頂点マージしてください。

その他の動作条件としては、「先端の頂点のまわりに穴が開いていない」かつ「選択頂点まわりの面を構成する頂点数が全て3(選択頂点のまわりの面は全て三角ポリゴン)」である必要があります。
穴が開いてたり、選択頂点のまわりの面に四角形や五角形以上のポリゴンが混ざっていると動作しません。

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