strange items(楽天)


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


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

2009年11月06日

shade用スクリプトその15(選択頂点を法線方向に移動)

新)選択頂点を法線方向へ移動20130123.txt

旧)選択頂点を法線方向へ移動120330.txt

旧)選択頂点を法線方向へ移動20110412.txt

旧)選択頂点を法線方向へ移動101120.txt

旧)選択頂点を法線方向へ移動.txt

旧)選択頂点を法線方向へ移動.txt


<重要>上位パートに変換がかかっている状態で、かつ一時ローカル座標モードかろくろモードONの状態でスクリプトを実行すると、「スクリプトの処理結果をキャンセルした際」に形状が破壊されてしまう不具合を修正しました。(2010.03.03)
修正前の旧版をお使いの方は不具合を修正した新版をダウンロードしなおしてください。
(メッシュツールプラスウィジェットでスクリプトを利用していた方はメッシュツールプラスの最新版をダウンロードしなおしてください。)
shade13.22にあわせて修正(2013.01.23)
shade13.01に対応(2012.03.30)
shade12.02に対応(2011.04.12)
「角の丸め(サブディビジョンサーフェイス)」がONのままでも正常に動作するよう修正しました。(2010.11.20)
4000以上の頂点を選択状態で実行するとスクリプトが止まるバグを修正しました。ついでに「特定の方向へ移動」オプションも追加しました。「特定の方向へ移動」オプションの出し方・使い方はこちらをご覧ください。(2009.11.07)

使用方法はいつも通りスクリプトウインドウにコピペして(略)


このスクリプトを使用する際は、ポリゴンメッシュのプロパティで「角の丸め(サブディビジョンサーフェイス)」を一時的にOFFにして使用してください。
ONのままだと、頂点の法線情報読み取りでエラーが発生し、移動しなかったり移動方向が不正となる場合があります。


最新版ではONのままでも使えるよう修正。



開発途中までは画像を使って頂点を法線方向に移動すると頂点数によってはかなりの処理時間がかかったのですが、プログラムを見直したら馬鹿みたいに高速化されました。
1分かかっていたのが数秒で処理完了。
1万以下の頂点数なら一瞬で計算が行われ、数万の頂点数でも今時のPCなら遅くても10秒そこらで移動が終了します。
ただ、残念ながらこれ以上頂点を増やすとshadeではメモリが足りなくなってしまいます。

今回のスクリプトはいくつかの注意事項がありますので、その点に注意しながら使用してください。

メモリが途中で足りなくなるとスクリプト実行途中にエラーが起きて頂点の移動が途中(いくつかの頂点しか移動してない状態)で終わってしまう事がたまにあるようです。
その場合はクリップボードに自動コピーしてある形状をctrlキー+Vでペーストしてください。
(形状が壊れている状態でスクリプトを再実行してしまうとクリップボードの形状も更新されてしまいますのでご注意ください。)



このスクリプトを使うと……
ディスプ001.png
選択頂点を法線方向に突き出せたり
ディスプ002.png
へこませたりできます。
ディスプ003.png

ディスプ004.png
ただ単に押し出した場合は滑らかではありませんが……
ディスプ005.png
接続点(その頂点に繋がっている頂点)の選択状況を調べるオプションを使えば、ある程度は滑らかに押し出す事もできます。
ディスプ006.png
ディスプ007.png

選択頂点の押し出し量をランダムに変化させる事ができますので、
ディスプ008.png
みたいなデコボコも一瞬で作れます。
(上記はランダムに盛り上げた後、「角の丸め」をONにしてます。)


ディスプ009.png
ポリゴンメッシュの表面材質のレイヤー1にUVマッピングを行って「UV画像を使用する」のオプションをONにすると…
ディスプ010.png
みたいにテクスチャ画像情報によって押し出しを制御できます。
ディスプ011.png
反転もokです。


<使い方>

ポリゴンメッシュを選択し、頂点の編集モードに入って、頂点をいくつか(あるいは全て)選択してからこのスクリプトを実行すると以下のダイアログウインドウが表示されます。
ディスプ012.png

<第一グループ>
最初のラジオボタン「ふくらます」と「へこます」ですが、「ふくらます」は頂点を法線方向に押し出します。「へこます」はその逆に頂点を法線方向にひっこめます。
移動量で押し出し量を変化させます。
ちなみに「ふくらます」を選択して「移動量200」と、「へこます」を選択して「移動量-200」では同じ事です。移動量にいちいちマイナスを入れるよりも「ふくらます」と「へこます」ボタンを切り替えた方が高速で押し出しとへこみを変更できます。

<第二グループ>
次の「接続点の選択状況で移動量を減らす」「接続点の接続点も調べる」「接続点の接続点の接続点も調べる」について。

「接続点」とは「その頂点とエッジで繋がっている頂点」の事です。
「接続点の選択状況で移動量を減らす」をONにすると、もし接続点のうち非選択の点が一つでもあれば、移動量に係数がかけあわされて移動距離が落ちます。
ディスプ004.png

ディスプ005.png
みたいになるわけですね。

「接続点の接続点も調べる」は、その名のとおり接続点に接続してる頂点の選択状況を調べ、非選択の点が一つでもあれば、移動量にさらに第二係数がかけあわされると。
ディスプ005.png

ディスプ006.png
になると。

「接続点の接続点の接続点も調べる」もまぁ同じ感じで、
ディスプ006.png

ディスプ007.png
になります。

ちなみに「接続点の選択状況で移動量を減らす」がOFFの状態で「接続点の接続点も調べる」をONにしても機能しません。
同様に「接続点の接続点も調べる」が機能してない状態で「接続点の接続点の接続点も調べる」をONにしても意味はありません。

あと「slow」や「more slow」と付いているのは「(頂点数が多いと)処理に時間がかかりますよ」という事です。

<第三グループ>
「UV画像を使用する」などのグループは、ポリゴンメッシュに表面材質が適応されており、「レイヤー1」に「イメージ」を選択してレイヤー画像を設定してある場合にのみ表示されます。

「UV画像を使用する」をONにすると、ポリゴンメッシュに適応しているUV画像(レイヤー1の画像)に従って隆起量を変化させます。
レンダリングベースではなくモデリングベースではありますが一種のディスプレイスメントマッピングみたいな事ができます。(プッシュオペレーションとか)

ディスプ009.png
↓↓
ディスプ010.png

「基準」ラジオボタンの「グレーを0に」は、画像のグレーを0地点とし、グレーより明るいピクセル箇所は明るさにしたがって隆起させ、グレーより暗いピクセルの箇所は暗さにしたがってへこませます。
「黒を0に」の場合は、画像の真っ黒の部分を0地点とし、明るいピクセルほど隆起量を増やします。

「タイプ」ラジオボタンは、shadeではポリゴンメッシュのUVマッピングタイプが「UV」と「距離補正」の二種類ありますが、そのどちらかをこっちでも選んでくださいと。
表面材質のレイヤー1に設定してあるUVマッピングタイプ(「距離」か「UV」か)と一緒のをこちらでも選んでください。

「反転」チェックボックスは、「基準」ラジオボタンで「グレーを0に」と「黒を0に」のどちらを選択したかによって挙動がかわります。
「グレーを0に」の場合は、隆起量に-1をかけます。盛り上がっていた部分がへこみ、へこんでいた部分が盛り上がると。
「黒を0に」の場合は、1から隆起量を減らします。真っ黒の部分が動かず、白に近いほど大きく盛り上がっていたのが、「反転」をONにすると真っ白の部分が動かず、暗黒に近いほど隆起していくと。

<第四グループ>
「x座標固定」「y座標固定」「z座標固定」は、それぞれのチェックボックスをONにする事によって特定の軸の座標値を固定する事ができます。
x、y、z全てONにすると当然動きません。

<第五グループ>
「ランダム」をONにすると、隆起量に乱数をかけてランダム化する事ができます。
乱数の計算の仕方としては、「最小値」から「最大値」までの整数を乱数として返してもらって(仮に値Aとします)、この値Aを「最大値」で割ってから移動量にかけるという方法をしています。
「最小値」に0以上の値を入れるとふくらむばかりですが、「最小値」にマイナスの値を入れると頂点の中にはへこむやつも出てくる事になります。
最大値の数字を大きくすればするほど、変化量に幅が出ると思います。

「底値」と「天井値」は、値Aが「底値」より低い場合は底値と同じ値になり、「天井値」より高かった場合は天井値と同じ値になります。いわゆる『足切り』というやつですね。
地形を作る時に棚状の岩を天井値などを設定して作れないかと思って実装したのですが、あまり望んだような結果にはなりにくいですね。

「最小値」と「最大値」をデフォルトから変化させた場合は、「底値」と「天井値」の設定にも注意してください。
足切りを行わない場合は「最小値」と「底値」をまったく同じ値にし、「最大値」と「天井値」もまったく同じ値にしてください。
最大値を1000にしたのに天井値が100のままだと、そこで足切りされてしまいます。


<ラストグループ>
「取り消すの際はダイアログを再び開く」は、スクリプトを実行して頂点の移動が終わった後、結果に満足できなかった場合、このチェックボックスがONになってると結果をキャンセルするとすぐにまたこのダイアログウインドウが開くようになっています。
数値やラジオボタン、チェックボックスの項目内容は保持されていますので、「同じ設定でもうちょっとだけ押し出してみるか」みたいな場合も簡単にやり直しできます。
「取り消すの際はダイアログを再び開く」のチェックボックスをOFFにすると、結果に満足できず「キャンセル」を選んだ場合はすぐにスクリプトが終了してしまい、またやり直す場合はスクリプトを再起動して各設定項目をデフォルト状態から変更しないといけません。
基本的にこのチェックボックスはONのままでいいでしょう。
スクリプト起動後にスクリプトを実行せずに中止したい場合は、「取り消すの際はダイアログを再び開く」の下の「キャンセル」のボタンを押してください。


以下は想定されるトラブルシューティング

Q.スクリプトを実行してもダイアログが表示されない
・選択している形状がポリゴンメッシュか確認(ポリゴンメッシュの入ったパートを選択状態ではダメです。ポリゴンメッシュ自身を選択してください。)
・編集モードに入っているか確認。
・編集モードのうち、「頂点編集モード」に入ってるか確認。(「辺編集モード」や「面編集モード」では起動しません。)
・頂点が一つでも選択されているか確認。

Q.ダイアログに「UV画像を使用する」が表示されない場合
・選択しているポリゴンメッシュ形状に表面材質が設定されているか確認(上位のパートに表面材質を適応しててもダメです。ポリゴンメッシュ自身に適応してください。)
・レイヤー1のマッピングタイプが「イメージ」で、さらにレイヤーイメージウインドウにイメージがきちんと設定されているか確認。
・ポリゴンメッシュの各頂点にUV情報が設定されているかも確認。
(UVの設定は面編集モードで面を選択した状態でshade標準の「make uv」を行って設定します。)

Q.「UV画像を使用する」で画像通りに移動してない
・表面材質パネルのUVタイプ(「距離」か「UV」か)と、スクリプトのダイアログウインドウのUVタイプ(「距離」か「UV」か)が一致してるか確認しましょう。
・表面材質パネルのマッピングレイヤーオプションの「左右反転」や「上下反転」「回転」「反復」には現在対応しておりません。

Q.「UV画像を使用する」で一部の頂点しか移動してない
・選択してる頂点のみ移動しますので、全ての頂点を移動させたい場合は全ての頂点を選択状態で実行してください。

Q.「UV画像を使用する」でポリゴンメッシュの頂点数をかなり多めにしてもギザギザしている
・「UV画像を使う」の場合、使用している画像を多少ぼやけさせた方が隆起&陥没時の輪郭は滑らかになります。白黒二値の画像とかだとどうしてもギザギザが目立ちます。
・形状情報パネルでポリゴンメッシュのスムーズの「限界角度」の値を上げるとシェーディングがより滑らかになります。
(shadeはデフォルトでは限界角度が30度ときつめになっています。)

Q.なんかあさっての方向へ移動する。あるいはまったく動かない。あるいは移動量を大きくしてもほとんど動かない。(「UV画像を使用する」ON・OFF限らず)
・「角の丸め」をONにした状態で移動しようとすると、結果が不正になる場合があります。形状情報パネルで「角の丸め」をOFFにしてからスクリプトを実行し、実行後に「角の丸め」をONに戻すなどしてください。
・「角の丸め」をONにしたままスクリプトで移動してしまうと頂点の法線情報がおかしくなってしまう事があります。その場合は「角の丸め」を一旦OFFにしてONに戻すと法線情報を元に戻せます。
・ポリゴンメッシュの上位パートに変換マトリクスがかかっていると結果が不正になる場合があります。
・オブジェクトのサイズに対して「移動量」が小さい場合は移動量が少なかったり、逆に「移動量」が多すぎてすごく移動してしまう場合は移動量を調整してください。

Q.「接続点の接続点の接続点も調べる」が表示されない
・選択頂点数があまりにも多い場合はメモリが足りなくなるので、一定の頂点数以上選択してる場合はこの項目は表示しないようにしています。


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