strange items(楽天)


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


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

2017年02月16日

shade用スクリプトその96(選択頂点の等間隔配置)

選択頂点の等間隔配置.txt

このスクリプトは、ポリゴンメッシュの頂点を三つ以上選択している状態で実行すると、最初に選択した頂点と最後に選択した頂点の間にある頂点が等間隔になるよう再配置するスクリプトです。
頂点ではなく辺の等間隔再配置機能はありませんが、「グループで移動」をONにする事で、辺の等間隔再配置と似たような事もできます。

<動作条件>
・ブラウザで選択しているポリゴンメッシュは一つのみ。複数のポリゴンメッシュ選択時は動作しません。
・上位パートに変換がかかっていると動作しないため、一時的にそのポリゴンメッシュはブラウザでルートパート直下に移動するなりしてください。
・頂点の選択の順番に応じて位置の調整が行われるため、面倒でも複数回にわけて頂点選択の追加をしていってください。

上記の条件を満たした上で、編集モードで頂点編集モードに入り、三つ以上の頂点を選択してからスクリプトを実行してください。

等間隔001.jpg

とりあえず、7つの頂点を数字の順に選択に追加していってからスクリプトを実行すると・・・

等間隔002.jpg

このようなダイアログが出ます。

今回は「グループで移動」は使わず、X座標の値だけ変更したいので、「X座標のみ移動」で「ok」を押すと・・・

等間隔003.jpg

1と7の間にあった2から6の頂点が、等間隔な位置に移動しました。


さっきの例ではX座標しか移動しませんでしたが、X座標と同時に別の座標も移動する事で、最初に選択した頂点と最後に選択した頂点を結ぶ直線状に間の頂点が等間隔で再配置されます。

等間隔004.jpg

上記のような順番で頂点を選択し、スクリプトを実行して、これは上面図なので「XZ座標を移動」で実行すると・・・

等間隔005.jpg

1と7を結ぶ直線状に、2から6が等間隔に再配置されました。


<「グループで移動」について>

このスクリプトは、選択頂点の等間隔配置ですが、「グループで移動」をONにする事で、X軸に沿って(あるいはY軸に沿って、Z軸に沿って)頂点グループを等間隔に再配置する事で、辺の等間隔配置に似たような事もできます。


等間隔006.jpg

こういう円柱があるとします。

等間隔007.jpg
上面図か正面図などで、こういう風に7回に分けてSHIFTキーを押しながら矩形選択で追加していった後、スクリプトを実行して、

等間隔008.jpg

このように、移動は「X座標のみ移動」にし、「グループで移動」はONにし、グループ数は7なので「7」としてから実行すると、

等間隔009.jpg
1と7のグループの間にある2から6のグループの頂点が等間隔な位置に再配置されます。
辺の等間隔配置と似たような事ができるわけです。

グループ移動の場合は、残念ながら「X座標のみ移動」「Y座標のみ移動」「Z座標のみ移動」以外をやってしまうと、思ったような結果にはならないと思います。

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

2016年11月12日

shade用スクリプトその95(ウェイト値のミラーコピー)

ウェイト値のミラーコピー.txt

このスクリプトが機能するのは、shade13以上となります。
(私の環境では、13、14、15で動作テストしました。)

対象は、ポリゴンメッシュのみとなります。その他の形状のスキンには使えません。
スキンのタイプは「頂点ブレンド」で使えます。「クラシック」では使えません。

<使用上の注意点>
・ポリゴンメッシュの上位パートにマトリクス変換がかかっている場合は、マトリクス変換がかかっていないパートに移動してからスクリプトを実行してください。

・ボーンやジョイントの名前は、かなずそれぞれ固有の名前にして、同じ名前が存在しないようにしてください。ポリゴンメッシュにバインドされているジョイントの中に同名のジョイントがあると、このスクリプトは正常に機能しません。

・また、ボーンやジョイントの名前には、先頭か末尾に半角の「L」か「R」あるいは半角の「l」か「r」、あるいは「右」か「左」というのをつけて、左用と右用の対となるボーンの名前は先頭か末尾以外は同じ名前にしてください。

例1)
「肩ボーン01右」と「肩ボーン01左」(この二つは位置的にも左右対称位置にある事)
あるいは「右肩ボーン01」と「左肩ボーン01」

例2)
「ひじボーンR」と「ひじボーンL」(この二つは位置的にも左右対称位置にある事)

例3)
「|llegbone002」と「|rlegbone002」(この二つは位置的にも左右対称位置にある事)


みたいな感じです。
また、「L」「R」でなく、「left」と「right」か、あるいは「LEFT」と「RIGHT」、あるいは「Left」と「Right」をジョイント名につける場合は、末尾ではなく先頭につけてください。


名前を元に対のボーンを探す場合は、このような命名規則を守っておく必要があります。
対ではなく中心軸上に一つしかないボーン(腰ボーンや首ボーンなど)は、先頭や末尾にLRやlr、右左の文字などは無くても大丈夫です。

なお、shadeの場合、ジョイント名の一番最初に「|」をつけるとポーズのインポートとエクスポートができますが、「|」は先頭につけていても大丈夫です。



<このスクリプトの目的>
キャラクターモデリングなどでは、X座標値0を対称点(Y軸を線対称軸)として、左右線対称な造形のモデルを作り、ボーンなどのジョイントも同じく線対称な構造で作り、スキンのバインドを行うという事が多いと思います。
バインド後は手動でウェイトペイントやスキンウインドウでの数値入力でウェイト値の調整をする事になるのですが、左右対称になるようウェイトを調整するのは現状のshadeでは面倒です。
例えば、バインド後に左ひじでウェイトペイントツールで調整をした後、右ひじでまったく同じような感じになるようウェイトペイントするというのはかなり難しい。

それをスクリプトでミラーコピーして瞬時にやってしまおうと考えて作ったのが、今回のスクリプトとなります。

プログラム的には、「選択している頂点(右側)の対となる位置にある頂点を調べた後、右側の頂点にバインドされているボーンとちょうど反対位置にあるボーンを検索してからウェイト値を左側の頂点にミラーコピーする」みたいになっています。
キャラクターの片側でウェイト調整ができたら、もう片方はスクリプトで良い感じに一瞬でミラーコピーしてくれる便利スクリプトというわけです。
キャラクターのスキンのウェイト調整で威力を発揮するでしょう。


このスクリプトが動作するためには、「X座標が0より大きい頂点だけを一個以上選択しておく」必要があります。
正面図や上面図で見て、X座標値が0以上である頂点をドラッグ選択などで複数選択しておきます。その選択している頂点部分だけ、反対側の頂点にウェイト情報がミラーコピーされます。


また。頂点数が多いモデルなどは、スクリプトの処理にかなり時間がかかってしまうため、選択する頂点の数はあまり増やさないようにしてからスクリプトを実行してください。
例えば、左ひじあたりのウェイト調整をした場合は、左ひじあたりの頂点だけを選択してスクリプトを実行して右ひじにウェイト情報などをミラーコピーする、という風に。


具体的な実行の手順としては、ポリゴンメッシュを一つだけブラウザで選択し、頂点編集モードに入って、上記の決まり事を守った上で右側の頂点を選択してからこのスクリプトを実行すると、ウェイトがミラーコピーされます。


なお、スクリプト実行時は、元のウェイト値を持ったポリゴンメッシュは兄階層(ブラウザで一つ上)に自動で複製し、レンダリングOFF・非表示にして一応バックアップを残しておくようにしています。
スクリプトを実行する度に、形状(とウェイト情報)のバックアップが増えていく事になります。

スクリプト実行後の「ミラーコピーしました」の表示で「キャンセル」を押してもウェイト情報は元に戻りませんので、ウェイト情報を元に戻したい場合はそのバックアップが取られた形状を使ってください。

ウェイトミラーコピー001.jpg
これは、Y軸を対象軸として線対称で作った形状に、同じく線対称で作ったボーンを入れてからバインドした物です。
オートバインドではこんな風にウェイト調整されました。
この画像では右端近くのボーンを選択した状態でウェイト表示しています。

ウェイトミラーコピー002.jpg
対称位置にある頂点も、オートバインドでは近くにあるボーンに線対称的な感じでウェイト調整されています。

ウェイトミラーコピー003.jpg
右側の頂点のウェイトを、ウェイトペイントツールで適当に変更してみました。
これと同じような感じで、先ほどの左側の方で右側と同じ感じのウェイトにしようとすると、手動でやるのは死ぬほど面倒くさい事になりますが、

ウェイトミラーコピー004.jpg

右側でウェイトペイントで変化させた周辺の頂点を選択してから、この「ウェイト値のミラーコピー」スクリプトを実行すると、

ウェイトミラーコピー005.jpg
バインドされているジョイント情報はそのままに、ウェイト値だけ左側の頂点にミラーコピーでき、左右対称な感じのウェイトにできるわけです。


うまくミラーコピーできたかどうかは、必ずスクリプト実行後に、ウェイトペインティングツールなどできちんと確認してください。


スクリプトのプログラム上、X座標がちょうど0の位置にある頂点のウェイトはミラーコピーされません。
shadeの場合、中心軸にあると思っていた頂点が実はX座標が微妙に右か左にずれてしまっている、という事がわりとあるので、その場合は中心軸のすごい近くにある頂点はスクリプト実行時には絶対に選択しないようにしてください。
「このスクリプトを実行する場合は、中心軸上にあると思われる頂点は選択しない」と覚えておけばいいです。

shadeのバインドボタンでは、左右対称でモデルを作り、ボーンも左右対称で組んだのに、バインドボタンを押すと、ボーンの構成によっては頂点のX座標が0の位置にある頂点が片側のボーンに少しウェイトがかかる状態でバインドされてしまう事があります。
その状態でウェイトペイントツールで中心近くの頂点や中心近くのボーンのウェイトカラーを見ると、ウェイトカラー自体片方に偏った感じになっていますが、中心軸上の頂点のウェイトが偏っているだけで、それ以外の部分はスクリプトを使えばきちんとミラーコピーされていると思います。


なお、実行時にダイアログボックスで「対のボーンは」のセレクターが表示され、「名前で探す」か「位置で探す」のどちらかを選択する事になりますが、ボーンの命名規則を前述の通りにしている場合は「名前で探す」を選択し、命名規則を守っていない場合は「位置で探す」にするといいでしょう。
(「位置で探す」の場合も、各ジョイントの名前はそれぞれ重複しない固有の名前にしておく必要があります)
「位置で探す」の場合、プログラムで対となるジョイントリストを作成するのですが、ジョイントがきちんと三次元的に対称的な位置にないと、正確に対となるジョイントを検索できない場合がありますので、やはりジョイントの名前をきちんと設定してから「名前で探す」を選択した方がいいです。

対となるジョイントは、「そのポリゴンメッシュにバインドされているジョイント」の中から検索されます。
バインドされていないジョイントは検索対象外となりますので注意してください。

また、スクリプト実行時には、必ずポーズをリセットして、モデルの頂点構成が左右対称となっているようにしてください。ポーズをつけた状態ではミラーコピーに失敗します。


スクリプト実行時のダイアログで「ボーンリストの出力」のチェックボックスをONにすると、対となるジョイントリストがメッセージ欄で確認できます。
スクリプトできちんと対となるジョイントの検索が成功できているかどうかを確認できるでしょう。

このスクリプトはスキンタイプが「頂点ブレンド」ならば、ボーンジョイントだけでなくボールジョイントとかその他のジョイントでもミラーコピーできると思います。


おまけスクリプト

バインドチェッカー.txt

こっちのスクリプトは、バインド情報がきちんとミラーコピーできているかどうかを頂点ごとに確認するための物です。

使い方は、ポリゴンメッシュを一つ選択し、頂点編集モードで頂点を一つだけ選択状態でこのバインドチェッカースクリプトを実行すると、メッセージウインドウにその頂点にバインドされているジョイント名のリストと各ウェイト値が表示されます。
頂点は一つだけ選択してスクリプトを実行してください。

その頂点とは対称位置にあるだろう頂点を一つ選択しなおして、またこのスクリプトを実行すると、同じようにバインド情報が追加して表示されるので、元の頂点のバインド情報が対称位置にある頂点のバインド情報にきちんとミラーコピーされているかどうかが確認できるでしょう。

ウェイトミラーコピー006.jpg

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

2015年12月13日

shade用スクリプトクィックガイド(その3)

私が3DCGソフトshade向けに作ってきた色々なスクリプトを紹介していくシリーズ。

第一回
第二回


に続き、今回は第三回目です。
前回に続き、ポリゴンモデリング系スクリプト。

<P40:集合点の分解 >

サブディビジョンサーフェイス(ポリゴンメッシュの角の丸め)をONにした形状で、複数の頂点を同一座標に集合させて、角(つの)の形にしている場合、その同一座標にある頂点がもしマージされてしまうと、角は消えてしまいます。

qu070.jpg

qu071.jpg

私が作った色々なポリゴンメッシュ系の加工スクリプトでは、「同一座標にある頂点はマージする」というスクリプトリファレンスにある命令(メソッド)を利用して形状に不具合が起きないようにしている物が多く、それらを使って「角が消えてしまった・・・」という場合、また角に戻したい頂点を選択状態でこのスクリプトを実行すると、

qu072.jpg

という感じで、角を戻せるのです。

このスクリプトでは何をやっているかというと、同一座標にある頂点を分解して、微妙にずれた位置に頂点を作っているのです。


<P41:ビトウィーン選択>

qu073.jpg

qu074.jpg

「一番最後に選択した要素(頂点や辺、面)」と、「最後から一つ前に選択した要素(頂点や辺、面)」を結ぶように選択を拡張してくれるスクリプトです。

carraraだったと思いますが、そういう機能が確かあり、面白そうなのでshadeでもできるように作ってみたやつですね。

こういうビトウィーン選択機能は、shadeもバージョン15で標準機能として実装されたようです。


<P42:面張りと削除>

qu075.jpg

上記画像のような状態で、「辺は残して面だけ削除したい」というのを当時のshadeでできるように作ってみたスクリプトです。

qu076.jpg

このスクリプトは二つの機能を搭載しており、「面が存在している場合は辺を残して面を削除」し、逆に「面が存在しない場合は面を貼る」という事をやります。

もっとも、面貼り機能だけなら、shadeには元々標準機能で面貼りツールが実装されていたのでそっちを使えばいいでしょう。


<P43:稜線のオフセットとコピー>

qu077.jpg
これは一つ前の「面張りと削除」で、辺を残して面だけ削除したポリラインですが、「元のポリラインと一定の厚みを持った形状を生成したい」という時に、このスクリプトを使います。

qu078.jpg

上記は透視図でパースがかかっているので一定の厚みに見えないかもしれませんが、実際は上面図などで見ると、一定の厚みになっています。

面の生成だけでなく、選択していた稜線のオフセット移動(一定の厚みで内側や外側へ移動する)機能もあり。

qu079.jpg

ただし、複製にしろ、選択稜線のオフセット移動にしろ、外側ではなく内側方向へ実行した場合は、頂点数が多いとポリゴンのねじれが発生する場合があります。
これは、他の3DCGソフトに搭載されているオフセット移動や複製ツールでもそうですが。


<P44:指定位置を中心にスケーリング>

qu080.jpg

qu081.jpg

qu082.jpg

qu083.jpg

選択している要素を、「選択要素の中心を元に数値で拡大縮小する」スクリプトです。
複数のグループを「同じ比率」で上下や左右、奥方向に拡大縮小していくために作ったスクリプトですが、shadeはバージョン13でツールプロパティパネルが搭載され、拡大縮小などをやるとそこに拡大率などの数値が表示されるようになったので、このスクリプトは使わなくなりましたね。


<P45:カゴ作成支援スクリプト>

qu084.jpg

qu085.jpg

厚み付けしてしまった後の形状に、カゴのように穴をお手軽に空けたいために作ったスクリプトです。

厚みが分厚すぎるとエラーが起きる場合があります。


<P46:ツイストツール>

qu086.jpg

qu087.jpg

選択している頂点をねじる(ツイストする)ツールです。

「先っぽも一緒にねじる」という、他の3DCGソフトには見かけない特殊なオプションも付けてみました。
これがあると無いとでは、結構使い勝手が違ってくるのです。


<P47:ガイドラインスケーリング>

qu088.jpg

選択している頂点を

qu089.jpg

ガイドライン(線形状)の形にしたがって、

qu090.jpg

二軸同時や、特定の軸方向にだけ拡大縮小するツールです。

qu088.jpg
qu091.jpg

テーパー(先細り)ツールとしても使えます。


<P48:ガイドラインムーブ>

qu092.jpg
選択している頂点を、

qu093.jpg
ガイドライン(線形状)の形に従って

qu094.jpg

移動(ムーブ)してくれるスクリプトです。

元の形状は直線状に並んでいる方が結果が予想しやすいです。


<P49:ガイドラインへフィット>

一つ前の「ガイドラインムーブ」スクリプトは、選択頂点が直線状に並んでいる方が結果が予測しやすいのに対して、こっちの方は別に直線状でもなくても、ガイドライン(線形状)の形にフィットするように選択頂点が移動してくれるスクリプトです。

qu095.jpg

qu096.jpg

qu097.jpg

スクリプトの実際の使用方法には若干注意しておく点があります。
(最初に二頂点しか選択していないと、ガイドラインが作れない)


<P50:外形面選択>

qu098.jpg

qu099.jpg

選択している面を囲んでいる面を選択状態にするスクリプトです。


<P51:指定の頂点数の面を選択>

qu100.jpg

頂点数で面を選択したり、現在選択している面と同じ頂点数で構成された面を選択状態にしたりします。


<P52:センタリング>

qu101.jpg

qu102.jpg

ポリゴンメッシュモデリングでは、ポリゴンメッシュパーツの中心をX軸やY軸、Z軸中央に移動したい事がよくあるので作ってみたスクリプトです。

上記の例ではX軸0の位置に中心を移動しましたが、Y軸0やZ軸0の位置にもポリゴンメッシュの中心を移動できます。

このセンタリングスクリプトは、選択頂点や選択辺、選択面ではなく、そのポリゴンメッシュ全体を移動します。
選択頂点だけを中心に移動するスクリプトは、また別にあります。


<P53:ポイント移動と面の複製>

qu103.jpg

qu104.jpg

ポリゴンメッシュの中の一部のポリゴンを、「元の形状にぴったりくっついた状態で」指定回数複製するのに便利なスクリプトです。
作った本人が言うのも何ですが、このツールはモデリングにおいては結構役に立ちます。
メッシュツールプラスには収録していないので、コマンドパレットにスクリプトを登録して使うと、使い勝手が良くなるでしょう。


<P54:選択の拡張(シフト)>

qu105.jpg

qu106.jpg

要素(頂点、辺、面)の選択作業を多少効率化してくれるスクリプトです。
上記の画像のように「同じ大きさの面」を複数持つ「平面形状」で役に立つでしょう。


<P55:選択の拡張(回転)>

qu107.jpg

qu108.jpg

こちらは、球状や回転体状の形状において選択を効率化するために作った物です。
「結果確定前のダイアログでは結果が確認できない」という不具合がありますが、使用自体には問題は無いと思います。

<P56:うずまきツール>

qu109.jpg

qu110.jpg

うずまきツールというのは、中心と外周で回転の大きさを変える事によって、うずまき状に選択頂点を回転するスクリプトです。
他の3DCGソフトにそういうツールがあったので、shadeでもできるように作ってみました。

たとえばカーモデリングで、タイヤホイールがうずまき状にカーブを描いている時などに役に立つかもしれません。


<P57:選択の拡張(貫通)>

qu111.jpg

qu112.jpg

選択している要素(頂点、辺、面)と、上面図で見て(あるいは側面図や正面図で見て)同じ位置にある要素も選択に加えるスクリプトです。

「ワイヤーフレームモードで投げ縄選択すればいいのでは?」みたいに思うかもしれませんが、「ループ選択してから、このスクリプトで選択を拡張」の方が、オペレーションが結構早くなる事がわりと多いです。


<P58:リング単位で拡大縮小>

qu113.jpg

qu114.jpg

選択している辺を、リング(ひとつながりの輪)単位にグループ分けした上で、各グループ毎に、「グループの中心をピボットとして拡大縮小する」というツールです。

ポリゴンモデリングにおいては、こういうツールは結構威力を発揮するでしょう。


今回はここまでです。

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

2015年12月05日

shade用スクリプトクィックガイド(その2)



第一回の続きです。


<P21:表面材質を残してマージ>

「二つのポリゴンメッシュを、片方の表面材質情報やUV情報を残したままマージできます。」というスクリプトですが、このスクリプトは作った私でさえあまり使用していないので、説明は省略します。


<P22:指定位置で分割>

qu044.jpg



qu045.jpg

shadeはバージョン12だったかでループスライスナイフが実装されました。
それ以前のshadeで希望した位置にループスライス処理をするには、このようなスクリプトが必要だったのです。

ループスライスナイフが実装された今は全然使いませんね。


<P23:線形状をポリラインに変換&マージ>

qu046.jpg



qu047.jpg

線形状をスクリプトでポリゴン化してから、兄階層にあるポリゴンメッシュとマージするスクリプトです。

線形状が「閉じた線形状」なら、ポリゴン化してから一緒のパートにポリゴンメッシュ二つを入れてマージすればいいでしょうが、開いた線形状の場合はやや手間がかかるので、作ってみたやつですね。

また、「近くで結ぶ」オプションをONにすると、上記のように四角のポリゴンと丸い線形状をつなぐようにマージして、こういった形のパーツも簡単に作れます。
実際は、つなぐ形状によっては穴が結構あいてしまうんですがね。


<P24:選択頂点の中心に円球を作成>

qu048.jpg



qu049.jpg

選択している頂点の中心に、円や球をポンと作ってくれるスクリプトです。

作られた円を使って「線形状をポリラインに変換マージ」をしたり、球を作って、前回の記事で紹介した「選択ポイントを球の表面へ移動」スクリプトで選択頂点を円状に並べたりするのに使います。


<P25:ループ稜線の丸めとベベル>
<P26:シンプル稜線の丸めとベベル>
この二つは、バージョン10当時はshadeにはポリゴンのエッジべベル機能が無かったので作ってみたものです。

13以後は標準のエッジべベルツールを使うようになって、どっちも使わなくなりましたね。
ちなみに14と15でこの二つを使用すると、形状が変な事になるようです。


<P27:極周辺で分割>

qu050.jpg



qu051.jpg

「極」とは南極とか北極のあの「極(pole)」の事です。
極付近のエッジをループ状に分割するのに使います。
分割数を指定して分割したり、位置を指定して分割したり。

極付近のエッジはループスライスナイフではループ状にカットできないため、このスクリプトは今もわりと使います。


<P28:コーナーポイントの丸めとベベル>

qu052.jpg



qu053.jpg

線形状は角の丸めが昔からできますが、ポリゴンメッシュでも角にある頂点を丸めやべベル(切り落とし)処理をできるように作ったものです。

「厚みをつけてから、エッジべベルをして、厚み分は消せばいいのでは?」と思うでしょうが、このスクリプトを作った当時はshadeにはポリゴンのエッジべベル機能はまだ搭載されていなかったのです。


<P29:メッシュツールプラス>

qu054.jpg

ポリゴン系のスクリプトをワンボタンですぐに実行できるようにしたパネル形式のウィジェットです。

全てのポリゴン系スクリプトを収録してはいませんが、わりとよく使うスクリプトはこれに収録しています。

各ボタンの上にマウスカーソルを止めると、スクリプトの名前と機能がしばらくの間表示されます。


<P30:ステップ選択>

qu055.jpg

一個飛びだったり、二個飛びだったり、そういう感じでstep(間隔)を空けて選択をしたい時に使います。
通常の選択方式に加えて、「ビトゥイーンモード」にすれば、途中で選択を止める事もできます。


<P31:内包面の検出>

qu056.jpg

「内包面(ポリゴンメッシュの内側に埋まっている不正な面)」を検出するためのスクリプトです。
場合によってはこのスクリプトでも見過ごしてしまうような内包面もごくまれにありますが、基本的にはほとんどの内包面を発見してくれるかと。

内包面がポリゴンメッシュの中にあると、不正な皺が出たり、形状加工時にshadeが落ちてしまう事があります。

ちなみに、エラー診断の「三面稜線」の場合だとこんな感じで、外側の面までも選択状態になってしまいます。

qu057.jpg


<P32:一点収束閉じ>

qu058.jpg



qu059.jpg

面を一つ選択状態で実行すると、一点で収束するような形で閉じてくれるスクリプトです。


<P33:二頂点間の距離を表示 >
選択している二頂点の距離を表示してくれるスクリプトですが、上位パートにマトリクス変換がかかっていると数値が不正になりますし、あんま使う事も無いスクリプトです。


<P34:厚みをつける>

qu060.jpg



qu061.jpg

平面状のポリゴンメッシュに厚みをつけるスクリプトです。

shadeも14からポリゴンメッシュツールに厚み付けが追加されましたが、法線方向にしか厚み付けができないのに対して、このスクリプトは厚みつけの方向を「法線方向」「X軸方向」「Y軸方向」「Z軸方向」から選べます。

こっちのスクリプトは標準の厚みつけツールみたいにリアルタイムで結果が変動しないのと、ポリゴンメッシュ全体に厚み付けをしてしまうという欠点はあります。


<P35:ソフトムーブ>

qu062.jpg



qu063.jpg

マグネットツールではアバウトな移動になるため、もっとかっちりソフトな移動をしたいと思って作ったスクリプトですが、正直制御がかなり難しい。

マグネットツールとは違ったソフトセレクションツールはshadeにも実装して欲しいですね。

書いてる今ふと思いついたんですが、ウェイトマップを設定してボールジョイントを操作すれば、ソフトムーブやベンド処理的なモデリングアプローチができますよね。


<P36:マニピュレーターの位置を変更>

「マニピュレーターの位置が変更できない」と勘違いしてた頃に作ってしまったスクリプトですね。


<P37:エッジ一括選択ツール>

qu064.jpg



qu065.jpg

複数のエッジを選択状態で実行すると、各エッジ毎にループ選択やリング選択をしてくれるスクリプトです。

shadeで15現在実装されているループ選択やリング選択は、「選択している全てのエッジごとに選択の拡張を行う」ので、このスクリプトは15ではお役御免となりました。

しかし、「複数のエッジを選択状態で、最後に選択に追加したエッジだけをループ選択やリング選択したい」という場合は、shade標準のループ選択やリング選択ツールではできないので、その場合は私が作ったループ選択スクリプト、リング選択スクリプトをご使用ください。


<P38:選択ラインを瞬間表示>

qu066.jpg

自由曲面の良い点の一つは、「断面ごとに線形状を編集できる」というのがありますが、ポリゴンメッシュでも入り組んだ線の中から断面の線を表示できるようにと作ってみたスクリプトです。

その過程で、「選択している頂点(や辺、面)を一時的に記憶しておく」みたいなスクリプトも作ってみました。

断面表示については、プラグインを使えるstandard版以上のユーザーは、MASAさんという方が作ったポリラインをハイライト表示してくれるプラグインを使った方が良いと思います。


<P39:片面削除後ミラーコピー>

qu067.jpg

qu068.jpg

スクリプトでやっている事は、「Y軸より左の頂点や面を全て削除して、Y軸を中心に鏡面コピーする」です。

ミラーリングツールがあるので、対称モデリングはそれを使えばいいと思うのですが、お手軽に鏡面コピーする時などに今でもたまに使いますね。
部分的にではなく、そのポリゴンメッシュ全体が鏡面コピーされます。

shadeは球や自由曲面をポリゴンメッシュに変換すると、見た目的には中央にある頂点が、実は微妙にずれている事があります。

その状態でこの「片面削除後ミラーコピー」をすると、

qu069.jpg

こんな風に穴が空いてしまいます。

そうならないよう、このスクリプトを実行する前に中心にある頂点はX座標値をきちんと0にしておく必要があります。


今回のスクリプトの紹介は、ここまで。
また次回に続きます。


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

shade用スクリプトクィックガイド(その1)

2009年の10月頃に「shadeでのポリゴンモデリング機能を強化しよう」とふと思い立ち、そこからコツコツと色々なスクリプトを作り続けて六年ほど経過しました。

現在はスクリプト数が100近くにまで増えたのですが、「どういうスクリプトがあるか?」を簡単な画像付きでずらっと一覧できるよう、「クィックガイド」という形で記事を書いてみたいと思います。

一応「スクリプト一覧」のページの方ではスクリプト毎に文章でちょっとした解説はしていますが、画像があった方が見やすいと思うので。
(あちらのページに画像を追加すると、かなり冗長になってしまう事もあって)

100近くある全てのスクリプトを一度の記事で紹介するのはかなり骨が折れるので、何回かの記事に分けて紹介します。

個々のスクリプトについては、スクリプト名をクリックすると個別のページにジャンプしますので、そちらで具体的な使い方を学んでください。

個々のスクリプトの使い方を学ぶ時間は少しかかりますが、一度使い方を覚えたら、かなりモデリング速度がアップしますし、手動ではほぼ無理な加工ができたりして大変重宝すると思います。


<ポリゴンモデリング系スクリプト>

shadeでのポリゴンモデリング機能を強化しようとして作った物たち。
スクリプトを作り始めた当時はshadeのバージョンは10.5で、あの時のshadeで快適なポリゴンモデリングをするのは無理でした。
今現在はshadeの標準機能と私が作ったスクリプトを併用すれば、かなり快適にポリゴンモデリングができるようになっており、隔世の感があります。


<P1:二頂点間にエッジを張る>

qu001.jpg



qu002.jpg

頂点を二つ選択した状態で実行すると、その二頂点間にエッジを追加してくれるスクリプトです。
同一面状の頂点を二つ選択して実行すると、ポリゴンをカットしてくれたりも。

昔のshadeは頂点間にエッジを張るのはzキーを押しながら頂点からドラッグを始めて、もう一つの頂点の位置でボタンを放す、というやや神経を使う操作方法でした。
もう少し気楽にエッジを張れるようこのスクリプトを作ってみたのです。

1.一つ目の頂点を「小さくドラッグ選択(矩形選択)」で選択。
2.二つ目の頂点を「SHIFTキー+小さくドラッグ選択」で選択に追加。
3.スクリプト実行で、頂点が張られました。

という感じに。

「選択頂点が三つ以上だと変な事にならない?」と思うかもしれませんが、そこは誤作動が起きないように、「二つの頂点を選択している時にのみ動作する」ようにしています。

このスクリプトでは一組の稜線しか一度に張れませんが、複数の稜線を一気に張る場合は、後で紹介する「マルチリンク」という便利なスクリプトがあります。


<P2:ターゲットウェルド>

qu003.jpg



qu004.jpg

モデリング作業においては、「特定の頂点を、別の頂点位置へ移動してウェルドしたい」と思う事はわりとあり、それをshadeでも一瞬でできるように作ったのがこのスクリプトです。

このウェルドについても、複数の頂点を一気にウェルドする「マルチターゲットウェルド」というスクリプトがまた別にあります。


<P3:頂点のディゾルブ(辺を残す)>

qu005.jpg



qu006.jpg

モデリングでは、「エッジ上の不要な頂点を、エッジを残したまま消したい」と思う事もたまにあり、それを簡単にできるように作ったスクリプトです。

shade15の現在は、標準機能として似たような機能のツールが実装されていますので、このスクリプトを使うよりそっちを利用した方がいいでしょう。
バージョン14以前のshadeをお使いの方向けですね。


<P4:ベルト抜き(面を残して辺を一括消去)>

qu007.jpg



qu008.jpg

メタセコの「接続辺を連続消去」みたいな機能がshadeにも欲しいと思い、作ってみたスクリプトです。
ズボンのベルトを抜く時のようなので、「ベルト抜き」と命名。

上図のように、選択しているベルト(抜く予定のベルト)の間に一本以上の非選択ベルトがあれば、複数のベルトを一度に抜く事もできます。

この機能もshadeは15で標準機能で似たようなツールが実装されましたので、15をお使いの方はそっちを使った方がいいと思います。


<P5:選択辺の隣接面を選択>

qu009.jpg



qu010.jpg

エッジ選択状態で実行すると、選択していたエッジに隣接する面が選択状態になるスクリプトです。
個人的には結構多用しているスクリプトです。


<P6:エッジループ選択>

qu011.jpg



qu012.jpg

他の3DCGソフトにあったようなエッジのループ選択をshadeでもできるようにした物。

バージョン15の現在はエッジループ選択はshadeにも標準搭載されています。


<P7:選択範囲の拡大>

qu013.jpg



qu014.jpg

頂点、辺、面の選択状態を拡大してくれるスクリプトです。

バージョン15現在は、似たような機能が標準で搭載されています。


<P8:選択範囲の縮小>

qu015.jpg



qu016.jpg

こっちは選択範囲の縮小です。


<P9:選択ポイントを球の表面へ移動>

qu017.jpg



qu018.jpg

こういう処理が、shadeでも簡単にできるスクリプトです。

スクリプト実行の際には弟階層(ブラウザで一つ下)に球を置いておく必要がありますが、選択頂点群の中心に球を作成するには、「P24:選択頂点の中心に円球を作成」というスクリプトがあります。そのスクリプトと併用するといいでしょう。


<P10:マルチリンク>

qu019.jpg



qu020.jpg

「二頂点間にエッジを張る」は一度に一つのエッジしか張れませんでしたが、もっと効率よく複数のエッジを一度に張れるように作ったのがこれです。

エッジの張り方については、

・「選択順に対接合」
・「開始点へ総接合」
・「座標値で対接合」
・「選択順に連続接合」
・「ダブルループ接合」

と、五種類の張り方を選べるようになっています。


<P11:マルチターゲットウェルド>

qu021.jpg



qu022.jpg

「ターゲットウェルド」では一度に一つしかウェルドできませんでしたが、これは複数の頂点を一気にウェルドできるようにしたものです。

ウェルドの仕方には、

・「選択順に対ウェルド」
・「開始点に総ウェルド」
・「座標値で対ウェルド」
・「ダブルループウェルド」

と、四種類あります。


<P12:エッジパラレル選択>

qu023.jpg



qu024.jpg

他の3DCGソフトにあるようなエッジのリング選択ツールがshadeにもあれば便利だと思い作ってみた物です。

バージョン15現在は、同じようにエッジをリング状に選択するツールが標準の機能として実装されています。


<P13:重複辺の検出・選択>

qu025.jpg

重複している辺を検出してくれるスクリプトです。
プログラム的には辺の状態によっては一部の重複辺を見落としてしまう事がたまにあるのと、そもそも重複辺はモデリングの際にあまり発生しない事もあり、個人的に使用頻度は低いです。


<P14:エッジバウンダリー選択>

qu026.jpg



qu027.jpg

淵の方にあるエッジを一つ選択状態でこのスクリプトを実行すると、選択していた辺に連なる淵の辺を一気に選択してくれるツールです。


<P15:選択頂点を法線方向へ移動>

qu028.jpg



qu029.jpg

選択している頂点を法線方向へ膨らませるスクリプトです。

画像のように、「ランダム」オプションを使って凸凹に膨らませたり、平面を山状に膨らませたり、画像を使ってディスプレイスメント風に膨らませたりへこませたりもできます。

このスクリプトを作った当時は、まだshadeにはディスプレイスメントマッピングが実装されていなかったのです。


<P16:選択辺を分割>

qu030.jpg



qu031.jpg

選択していたエッジを結ぶ形で分割してくれるスクリプトです。
この図ではわかりにくいでしょうが、五角形以上のポリゴンができると穴が空くので、自分で修正する必要があります。

分割の際には「法線方向に押し出す」みたいな機能もあり。

バージョン15現在は、エッジの分割機能は標準で実装されていますので、そっちを使う事が多いですね。


<P17:選択辺を線形状に変換>

qu032.jpg

ポリゴンメッシュのエッジを一本の線状に選択している状態でこのスクリプトを実行すると、そのポリラインを線形状に変換してくれるツールです。

いまいち使いどころがわからないかもしれませんが、

qu033.jpg
ポリゴン上のエッジを選択し、

qu034.jpg
線形状にして、

qu035.jpg
線形状の角の丸め
qu036.jpg
円を掃引

みたいなモデリングアプローチも、このスクリプトがあればできたりします。
線形状を描いていくより多少作業が早くなるんじゃないでしょうか。


<P18:選択辺を線形状に沿って押し出し>

qu037.jpg



qu038.jpg

選択しているエッジやポリゴンを、線形状やポリラインに沿って押し出す処理は、他の3DCGソフトには搭載されていますが、shadeはバージョン15の現在もそのような機能はありません。
あれば重宝するのに。

で、shadeでもできるように当時作ったのがこのスクリプトです。

残念ながら、私が実装できたのは「選択稜線を線形状に沿って押し出し」のみです。
ポリゴンの押し出しはできていません。

線形状に沿って稜線やポリゴンを押し出す機能は、shadeの標準機能として搭載して欲しいですね。

このスクリプトの場合、押し出しの際に少しずつ小さくしていくというオプションも利用できます。


<P19:ポリライン ペンツール>

qu039.jpg

qu040.jpg

qu041.jpg

この「ポリラインペンツール」スクリプトと、同じページで紹介している「近くの頂点へウェルド」スクリプトのそれぞれをショートカットキーに登録すると、マウス操作とボタン二つのオペレーションですいすいとポリラインを描いたり、四角や三角ポリゴンをどんどん貼っていけるようになります。
(選択頂点の解除も、わざと複数の頂点を選択状態で「ポリラインペンツール」を実行すると頂点の選択が解除できます。選択解除のためにctrl+クリックしようとして指のポジションを変える必要は無し。)

たとえばキャラクターの顔を作る時、「まず平面的にポリゴンを組んでから膨らませる」みたいなモデリング方法をしている方は、shade標準の稜線作成ツールよりも、この二つのスクリプトを使った方がかなり早くモデリングができるようになります。

平面的にではなく顔を膨らませてから「近くの頂点へウェルド」をやる場合は注意が必要で、あらかじめ「作業平面の設定(近くの頂点へウェルド用)」スクリプトを実行しておくといいでしょう。


<P20:指定数で分割>

qu042.jpg



qu043.jpg

エッジを一つ選択状態でこのスクリプトを実行すると、指定した分割数で分割してくれるスクリプトです。

shadeはバージョン15でエッジを分割数を指定して分割できるツールが実装されましたので、このスクリプトは14以前のユーザー向けの機能となりました。



長くなりましたので、今回はここまで。

第二回の記事はこちらです。


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

2015年12月02日

meshtoolplusウィジェット修正のお知らせ(shade14,15向け)

ポリゴン用の色々な編集や加工スクリプトをボタン一つで実行できるmeshtoolplusというウィジェットを公開していますが、このウィジェットのshade14、15用のやつが、このブログにアップロードする前にフォルダの名前を変えてZIP圧縮してしまっていたようで、どうもそのままでは動作しなかったようです。
私の環境でインストールしていたやつはフォルダ名を変えてなかったため、この不具合にずっと気づいていませんでした。

フォルダ名を修正した新しいバージョンをアップロードしましたので、「meshtoolplusがshade14や15で何故か動作しない」と言う方は、最新版をダウンロードしてください。

・最新版ダウンロードページ


一応ウィジェットのインストール手順も記載しておきます。(14、15向け)

1.「新)meshtoolplus1415.zip(shade14、15用) 」をダウンロードします。

2.ダウンロードしたファイルを解凍してから、解凍したフォルダ「meshtoolplus1415」ではなく、その中にある「meshtoolplus」というフォルダを選択して、クリップボードにコピーします。

3.ご自身の環境で、shade14(か15)をインストールしてあるフォルダの中にあるサブフォルダの「widgets」というフォルダの中に、先ほどクリップボードにコピーした「meshtoolplus」というフォルダをペーストします。

これで、ショートカットキーなどでウィジェット>meshtoolplusを呼びだすようにすれば、meshtoolplusパネルが表示され、各種スクリプトが一ボタンで実行できます。

shadeは14からスクリプトやプラグインはユーザーの「ドキュメント」フォルダ内にインストールする方式になりましたが、このmeshtoolplusウィジェットについては、上記のようにドキュメントフォルダではなく、shadeをインストールした方のフォルダの中にあるサブフォルダ「widgets」の方へコピーしてください。
ドキュメントフォルダの方へコピーすると、パスが違うために各種スクリプトが動作しません。

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

2015年11月25日

shade用スクリプトその95(選択パートの中心を球の位置へ移動)

・選択パートの中心を球の中心へ移動.txt

使用するスクリプトメソッドの都合上、このスクリプトが動作するのはshade12以上のバージョンとなります。


seda001.jpg
たとえばこういう形状があったとします。
この形状の中心はグリッドの交点上には乗っていません。

ここに「複製>数値入力」と繰り返し機能で何らかのパーツを回転状に複製配置する場合、

seda002.jpg

seda003.jpg

スナップ機能が使えないので、ラージカーソルをONにしてだいたいの中心位置あたりをクリックして回転状に複製するわけですが、こういう風にズレが発生します。
この画像ではわざとズレが目立つようにしましたが。


このような感じで、モデリング中に「このパーツの中心位置は、近くのグリッドの交点上に乗せておくべきだった…」と後になって思う事はわりとあるわけで、このスクリプトはそのために作った物です。


<使用方法>

このスクリプトが動作する条件としては、

・選択している形状が「パート」で、一つのパートのみを選択している状態
・かつ、選択しているパートの一つ下(弟階層)に球が存在している

となっています。

seda0031.jpg

スクリプト内部では、弟階層にある球の中心位置へ、選択しているパートの中心が合うように移動処理をさせてます。

パートの中には複数の形状を入れておくと複数の形状を一緒に移動できますが、「パートの中心」は、パートの中に入れてある全ての形状を囲むバウンディングボックスの中心となっているのには注意してください。
マニピュレーターの表示をONにしていると、パートの中心位置がわかると思います。


さて、スクリプトの動作条件に「弟階層に球がある事」となっていますので、移動したいパートを選択した状態で球作成ツールを起動して、スナップをONにして近くのグリッド交点を中心に球を作成します。


seda004.jpg

ブラウザでは移動したいパートの一つ下(弟階層)に球ができてるのを確認した上で、移動したいパートを選択しなおし、このスクリプトを実行すると、ダイアログが出ます。

seda005.jpg

「X座標固定」「Y座標固定」「Z座標固定」という三つのチェックボックスがありますが、これは「中心位置を移動すると言っても、特定の軸に関しては移動処理をしたくない」という時に使います。
たとえば「XZ平面に沿ってだけ移動してY座標値は変えて欲しくない」みたいな場合はY座標固定にチェックを入れて「OK」を押してください。

上面図で見て位置調整したい時はY座標固定のみをONに、
正面図で見て位置調整したい時はZ座標固定のみをONに、
側面図で見て位置調整したい時はX座標固定のみをONにすると良いでしょう。


seda006.jpg

で、スクリプトのおかげで、パートの中心がグリッドの交点上にきっちり乗るようになりました。

seda007.jpg
あとは、スナップ機能を使って「複製>数値入力」で、ずれなく回転複製できるようになるわけです。


このような感じで回転複製をやる時だけでなく、回転体を形状にあわせて作る時でも、その形状の中心をグリッドの交点上にこのスクリプトで移動しておけば、回転体の中心軸はグリッドラインと一緒になるでしょう。

seda009.jpg

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

2015年11月04日

shade用スクリプトその94(選択辺のn番目絞り込み)

選択辺のn番目絞り.txt

shadeは、ポリゴンメッシュを編集している時、複数の辺(エッジ)が選択されていると、その選択辺にはプログラム内部では「選択された順番」の情報がつけられています。

edgesiboi001.jpg
例えば、上記のように辺を一つのみ選択し、shade標準の「辺のループ選択」ではなく、私が作ったスクリプト「辺のループ選択」を実行すると、

edgesiboi002.jpg
このように辺の選択が下方向へ拡張され、全部で8個の辺が選択された状態になります。

で、この選択された複数の辺には「選択の順番」がプログラム内部では設定されており、上の辺から1,2,3,4,5,6,7,8とナンバーがつけられています。

このスクリプトは、「選択している辺のうち、奇数番目の選択辺のみに絞りこむ」や「偶数番目の選択辺に絞りこむ」、あるいは「選択番号を割って余りが特定の数字の辺にのみ絞りこむ」というのができるスクリプトです。
基本的に、辺のループ選択やリング選択を行った後に実行するスクリプトとして作ってみました。

<使い方>
スクリプトを実行するには、

・ブラウザではポリゴンメッシュを一つのみ選択し、
・形状編集モードに入り
・辺の編集モードにして、
・辺を二つ以上選択している

という状態にしてください。
辺のリング選択やループ選択をした直後は、そのような状態になっていると思います。
なお、辺のリング選択やループ選択は、後述の理由により、shade標準の機能を使うのではなく、私が作ったスクリプトでリング選択やループ選択をしてください。


で、スクリプトを実行すると、

edgesiboi003.jpg
というダイアログウインドウが表示されます。

設定項目の一つ目の「除算数」は「割る数」で、「余り」の方は割った後の余りを示します。
この条件に合致した辺のみに選択を絞り込むわけです。

たとえば、除算数を2、余りを1にすると、「奇数番目選択」となり、選択辺のうち奇数番目の選択の辺のみに絞りこまれます。

先ほどの
edgesiboi002.jpg
を奇数選択すると、

edgesiboi004.jpg

みたいに、奇数番目の辺にだけ選択が絞りこまれます。


あるいは、
edgesiboi002.jpg
で、除算数を2、余りを0にすると、「偶数番目選択」となり、今度は偶数番目の辺にのみ絞りこまれます。
edgesiboi005.jpg


また、

edgesiboi002.jpg
で、除算数を3、余りを1にすると、今度は「3で割った時に余りが1になる辺にのみ選択が絞り込まれる」ため、1番目、4番目、7番目の選択に絞りこまれて、

edgesiboi006.jpg
となるわけです。


このスクリプトは、基本的に辺のループ選択やリング選択を行った直後に使う事になるでしょう。

以下は、このスクリプトを使った加工例です。


edgesiboi007.jpg
1.辺を一つのみ選択

edgesiboi008.jpg
2.リング選択スクリプトで選択を拡張

edgesiboi009.jpg
3.このスクリプトで、奇数番(あるいは偶数番)の辺に絞り込み

edgesiboi010.jpg
4.上面図で、選択辺を形状の中心からXZ均等拡大

みたいな作業をしたり・・・・


また、

edgesiboi011.jpg
1.端近くの辺を一つのみ選択

edgesiboi012.jpg
2.ループ選択で選択を拡張

edgesiboi013.jpg
3.このスクリプトで、奇数番目の選択辺に絞り込み

edgesiboi014.jpg
4.このブログで配布している「エッジ一括選択」スクリプト(mesh tool plusウィジェットにも収録しています)の「エッジパラレル選択」で、選択している全ての辺でリング選択を実行。

edgesiboi015.jpg
5.「選択辺の隣接面を選択」スクリプト(mesh tool plusウィジェットにも収録)で、このように面を選択した後、

edgesiboi016.jpg
6.面のべベル(押し出し)で、このような加工ができたりします。


<注意事項>
このスクリプト使用時の注意事項ですが、「辺のループ選択」や「辺のリング選択」は、shade標準の機能を使うのではなく、私が作ったスクリプト(どちらもmesh tool plusウィジェットに収録)を必ず使用してください。

shade標準の辺のループ選択や辺のリング選択の場合、選択辺を拡張する際に辺の選択の順番が結構変な感じになってしまうようです。
私が作ったループ選択やリング選択スクリプトの場合、「最初に選択していた辺」の近くから順番に選択に追加されていくようになっています。

edgesiboi001.jpg

一周するようなリング選択やループ選択の場合はともかく、上記のように「端で止まる」リング選択やループ選択をする場合は、必ず「一番端の辺」を選択してからリング選択やループ選択スクリプトを実行するようにしてください。

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

2015年07月17日

shade用スクリプトその93(リフレクションシェーダー)

リフレクションシェーダー.txt

このスクリプトは、私が以前作った「ベルベットシェーダー」や「グラデーションシェーダー」スクリプトと同じように、レンダリング後の画像をスクリプトで加工する事によって、一部の形状の材質の見映えをもっと良くしようというスクリプトです。

マルチパスレンダリングの「XY法線画像」(今回はカラーの画像)をスクリプト内の計算で使いますため、それが生成できないbasicユーザーさんは申し訳ないのですがご利用できず、standard版とprofessional版用となっています。
利用できるshadeのバージョンは、12,13,14,15(とそれ以降)となっています。
(XY法線画像の仕様が12以後で少し変わったため、11以前では使えません。)


<このスクリプトの利点とは?>
以前このブログでも書いたのですが、現状のshadeでは特定の形状だけをライトで照らせる「セレクティブライト」という機能が搭載されていません。
セレクティブライトは、一部のオブジェクトの見映えをもっと良くするためにあると便利なので他の3DCGソフトにはわりと搭載されている機能なのですが、shadeにはまだ実装されておらず、それを補う形で「形状個別に設定できる環境マップを使って、特定の形状にだけ追加の光沢や照明効果を加える」というテクを使う事になります。
ただ、この環境マップの画像の投影方式には残念ながらスフィアマップ形式(lightprobe画像をそのまま使えるやつ)がありません。
shadeも背景に画像をセットする場合は「ライトプローブ」用の投影手法が選択できるのですが、個別の形状に設定する表面材質の環境マップの方では、「球投影」とはまた違うライトプローブ画像をそのまま使える「スフィアマップ投影」が搭載されていないのです。

lightprobe型の投影手法(スフィアマップ)というのは、

リフレク001.jpg

これはまぁshadeで作ったやつですが、こんな感じで「球に周囲の映像が映りこんでる」という画像ですね。
検索エンジンで「lightprobe」と画像検索をすると、腐るほどこういう画像が出てくると思います。
こういう画像が環境マップとして使えるようになる投影手法です。

lightprobe型の投影手法で環境マップできるようになると、「狙った箇所に光沢や照明効果を追加しやすい」という利点や、「他の投影手法では継ぎ目が映りこんでしまう事がある」というのを回避できる利点があるのです。

で、このスクリプトでは、マルチパスレンダリングで作った「XY法線画像」で各ピクセル毎に法線ベクトルを調べ、それを元に(専用のパートに)セットしてあるlightprobe型の球画像の中心から、上下や左右の方向へピクセルを検索して色を拾い、レンダリング後の画像の一部の形状の表面材質だけ「描き変え」をしたり、「加算(光沢や照明、メタリックな質感を与える)」、「減算」、「1.何倍(加算とは違う明るくなる方法)」や「乗算」などの処理をやるのです。

まぁ、難しい事はおいておいて、実際に使ってみてその効果を確認してみましょう。


<使用方法>
このスクリプトではレンダリング後の画像を描き変えるため(「出力先」オプションが「レンダリング画像」の場合)、スクリプトを実行する前にファイル名を変えて元のファイルを残しておくか、私が以前作った「レンダリング後画像のコピーと復帰」スクリプトを使って、レンダリング画像のバックアップを取っておいてください。
「レンダリング後画像のコピーと復帰」でできたパート(表面材質のマッピングレイヤーにレンダリング画像がコピーされている)は、念のため三個くらい複製しておくと「レンダリング画像を戻すつもりが、間違ってコピーして上書きしてしまった…」というのを回避できるでしょう。


さて、スクリプトを動作させるための条件としては、まずはイメージウインドウ(レンダリングウインドウ)のオプションの「マルチパス」タブで「マルチパスを保持する」をON、「データ:XY法線」のチェックをON、「データ:表面材質ID」のチェックをONにしてレンダリングをしてください。
レンダリングが終了しましたら、レンダリング画像の方はこれで準備okです。

で、lightprobe画像はどこにセットするかというと、パートを作成し、そのパート内は必ず空のままにした上で、パートに表面材質を作成し、必ずマッピングレイヤー1にlightprobe画像(ネットで拾ったのでもいいし、shadeやペイントソフトで作ったのでもいいです)をセットしてください。
もしlightprobe画像を変更する場合は、このマッピングレイヤー1の画像を変えてください。

また、lightprobe画像の注意点としては、必ず画像の中心と球の中心が一致している必要があります。トリミングなどを行う場合は、その点に注意してください。
それを満たしておけば、画像自体の縦横のピクセル数が1:1でなくてもいいですし、球が画像のフレームよりわりと小さい場合も、その点についてはスクリプトの特定のパラメーターで調整できるようになっています。

次に、スクリプトを起動する前に「効果を適用したい表面材質の表面材質IDカラー」というのを調べておく必要があります。
レンダリングウインドウの下部にあるセレクタを「RGB」から「表面材質ID」に切り替えて、その色をペイントソフトなどへプリントスクリーンなどで持っていき、スポイトツールなどで正確なRGB値を調べておいてください。
表面材質を変更してレンダリングをやり直しした場合、時々この色が変化してしまうのには注意してください。
そして、スクリプト実行前には、レンダリングウインドウに表示される画像は、先ほどの下部のセレクタを「表面材質ID」から必ず「RGB」に戻しておいてください。

で、lightprobe画像をマッピングレイヤー1にセットしてある空のパートを選択状態で、この「リフレクションシェーダー」スクリプトを実行すると設定ダイアログが開きます。

リフレク002.jpg

効果がわかりやすいよう、今回はこんなシンプルな形状のレンダリング画像をスクリプトで加工してみます。

スクリプトを起動すると、

リフレク003.jpg

みたいなダイアログが現れます。

上からパラメーターを順に見ていきますと・・・・・

まずは「対象」というのがあり、「全ての形状」と「指定の表面材質のみ」の二択から選べます。
「全ての形状」の場合はレンダリング画像の全部のピクセルに処理を施し、「指定の表面材質のみ」の場合は、先ほど調べた表面材質IDカラーの部分にのみ処理を施せます。(全ての形状の場合は、疑似アンチエイリアスがOFFになります)
たいていは、この「対象」は「指定の表面材質のみ」の方を選ぶ事になるでしょう。

この次にある「操作する箇所の表面材質IDカラー」のカラーボックスで、先ほど調べた色をR,G,B値をできるだけ正確に入力します。
ちなみに各種パラメーターは、一部を除きスクリプト起動後は選択している空のパート名が「リフレク:」と変更された上で、各パラメーターの値を記録しておくようになっていますので、レンダリングをやり直して表面材質IDカラーが変更されない限りは、一度設定した表面材質IDカラーは再設定する必要はありません。
この「リフレク:」というパートは、名前の「:」の後ろならばどんな文字列を入れてもいいですし、複製して設定値を複数シーンファイルに保存しておく事も可能です。
以前の設定値でスクリプトを実行したい場合は、この「リフレク:」をブラウザで選択した状態で「リフレクションシェーダー」スクリプトを起動してください。


さて、次のパラメーターの「球画像の半径の倍率」ですが、lightprobe画像の球が画像のサイズぎりぎりまでの場合はデフォルトの1か、少し小さい値にします。
でも、もし

リフレク004.jpg

これは極端な例ですが、こんな感じで画像の外枠と球の間に結構な隙間がある場合は、この「球画像の半径の倍率」を1よりもっと小さくして、スクリプトが球の中心を基点として色を拾う作業を行う時の「半径」を縮小させます。
球の外側に結構な隙間がある場合、デフォルトの1という数値では、球の外側の黒いエリアのピクセルも拾って環境マップとして映りこませてしまうため、ここの「半径の倍率」の値を適切に設定して、球からはみ出さないようにするわけです。
あまり低すぎる値にすると、今度は球の中心近くのピクセルしか拾わなくなるので注意。

次のパラメーターの「画像のコントラスト調整」は、lightprobe画像をスクリプト内部でコントラスト調整します。1より大きい値にしてコントラストをきつめにしたり、1より低い値にしてコントラストを低くさせたり。

「適用率」は、モードが「描き変え」「描き変え後、元画像の明度を乗算」の場合は意味をなしませんが、「加算」「減算」「1.何倍」「乗算」の場合は、適用率を下げていって0に近づくほど効果が薄くなります。

「明度の持ち上げ量」のパラメーターは「描き変え後、元画像の明度を乗算」の場合にのみ意味のあるパラメーターです。
「グラデーションシェーダー」スクリプトでもあったような機能で、「元画像の明度を乗算したら暗くなりすぎた」みたいな場合、ここの値を0.いくらかにして少しだけ明度を持ち上げてやるのです。
なお、最大の1にすると「描き変え」と同じ結果になります。

「暗部は残す」と「暗部閾値」の二つのパラメーターは後で説明します。

「疑似アンチエイリアス」の項目は、スクリプトで材質を変化させるオブジェクトの境界あたりにできてしまいがちなジャギーを多少緩和させます。(アンチエイリアス品質はあまりよくありません)
もしオブジェクトの輪郭あたりに不自然な映り込みができた場合は、まずは「球画像の半径の倍率」の方で適切な数値を設定した上で、この「アンチエイリアス」をONにすると解消できます。
残念ながらオブジェクトの外周ではなく内部に不自然なジャギーが発生した場合は、このアンチエイリアスオプションでは解消できません。


「出力先」パラメータでは「別ウインドウ(テストレンダ)」と「レンダリング画像」の二種類から選べるのですが、「レンダリング画像」の方を選択するとレンダリング画像を描き変えてしまいます。(間違って選択した場合も「結果を確定」の時にキャンセルできますが)
「別ウインドウ(テストレンダ)」なら、レンダリング画像を描き変える事なく、別ウインドウに小さいサイズで色々なパラメーターで描き変えた画像を確認できますので、テストレンダを繰り返してから、気に入った結果になったら「レンダリング画像」に切り替えてください。
テストレンダリングウインドウは同じ位置に次々と開きますので、こまめに「x」ボタンを押してテストウインドウを閉じていってください。(スクリプト実行中はウインドウは消せないので、一旦スクリプトを終了してから不要なテストウインドウを閉じてください)

「テストレンダ時パラメータも出力する」のチェックがONの場合、各パラメータ値がshadeのメッセージウインドウに出力されますので、テストレンダリング用のウインドウIDと各種パラメーター値を見て、後で気に入った設定を手入力で再現できます。
(出力されるパラメーター値は、微妙に小数点以下が足したり減ったりしていますので、その部分は修正して入力してください)

「テストレンダのサイズ」では、テストレンダウインドウのサイズを選べて、小さい画面ほど早く結果が確認できます。


それでは、「モード」ごとの違いを見ていきましょう。

リフレク001.jpg

のlightprobe画像を使って

リフレク002.jpg

の材質変化をさせた場合、

リフレク005.jpg
モードが「描き変え」だと、上記のように元の色を無視して丸ごと描き変えて、環境マップ風になります。

リフレク006.jpg
モードが「描き変え後、元画像の明度を乗算」だと、上記のように元の色を無視して丸ごと描き変えた後、元画像の明度を乗算して少し立体感のある環境マップになります。
(この例では多少明度をもちあげています)

リフレク007.jpg
上記は「加算」モードです。(適用率は低めにしました)
元の画像の色に、環境マップのlightprobe画像から拾った色を加算合成しています。

lightprobe画像を
リフレク008.jpg
に替えて加算モードにした場合は、

リフレク009.jpg
上記のように、特定の形状にだけ光沢や照明効果を追加して見映えを良くする「セレクティブライト」的な事ができます。
「加算」モードでは、lightprobe画像の方を工夫すれば、輪郭部分近くだけを明るくするリムライト的な効果を指定の材質にだけ付与する事もできますし、トゥーンレンダリング画像でキャラの髪にアニメ的なツヤの輪っかを追加する事もできます。(…が、髪ツヤ追加の場合は、ツヤの位置調整をlightprobe画像側で設定するのですが、それが結構難しいかも?)
「スフィアマップ」で画像検索すると、アニメ的な髪ツヤ画像の作り方や、髪ツヤ用のスフィアマップ画像を配布しているサイトがいくつも見つかるでしょう。

リフレク010.jpg
上記は「減算」モードですが、搭載したものの、このモードはいまいち使い勝手がよくわかりませんね。
ぼかしたメタリック状の球をlightprobeとして適用率を下げて減算合成すると、汚し的な感じにできるかも?

リフレク011.jpg
これは「1.何倍」モードです。
「加算」はlightprobe画像のピクセルから拾った色のRGB値を足しているのに対して、こっちはその値をRGBごとに1に足して掛けています。
加算モードとはまた違う照明効果を加える事ができます。

リフレク012.jpg
上記は「乗算」モードです。
このlightprobeだといまいち使い勝手がわからないと思いますが、

リフレク013.jpg
これみたいに、ペイントソフトで作った円形グラデーションをlightprobe画像として設定すると、

リフレク014.jpg
上記のように、「視線との角度が平行に近づいていくにつれ、赤味が増していく」みたいにできます。
スキンシェーダーとは違うのですが、人物モデルでキャラクターの肌にこれをやると、肌により立体感が出たりします。

肌150715001.jpg

肌150715002.jpg

テクスチャでまつ毛や眉毛を描きこんでいる場合、まつ気や眉毛も赤味が増すのが難点ですが。


最後に、説明を省略していた「暗部は残す」と「暗部閾値」の二つについて解説します。

形状の材質を少し変えて、こんなのをレンダリングしてみました。

リフレク015.jpg

黒のストライプを拡散反射と光沢1に設定しました。
この黒い部分は、メカなどでの「筋彫り用の黒い線」みたいに思ってください。
メカのテクスチャリングでは、黒い線を拡散マップや光沢マップの乗算モードなどで追加したりする事がありますよね。
筋彫り部分は光沢や拡散光で明るくならないために。

通常の方式で、この「リフレクションシェーダー」で処理をすると、

リフレク017.jpg
これは加算モードですが、こんな感じで、一部のモードでは筋彫りの黒の部分を無視して明るくしてしまいます。
「加算モードを使えば、セレクティブライト的に一部の形状に追加の光沢や照明効果を加え、見映えをもっと良くする事ができる」と言っても、筋彫りの黒の部分が死んでしまっては意味がないわけです。

でも、この「暗部は残す」をONで、「暗部閾値」は1で加算モードをやってみると、

リフレク018.jpg
こんな感じで、筋彫りの黒(暗部)にはあまり影響を与えずに、他の部分に光沢や照明効果を追加できるのです。

スクリプトでやっている事は、ピクセル単位でレンダリング画像の元の明度を調べ、その明度で適用率を変更させています。黒に近いピクセルほど適用率を落としていく、という感じで、暗部にできるだけ影響を与えないようにしてるわけです。
「暗部閾値」は、「この明度以下のピクセルでないと適用率操作をしない」という設定値で、基本的に1でいいと思いますが、1より下げていく事でまた違った効果が出るでしょう。
しかし、1より下げた場合は、材質に辺な境界線ができたり、疑似アンチエイリアスONでは消せないジャギーが発生しがちなので注意してください。

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

2015年02月11日

shade14とshade15では一括ベルト抜きスクリプトが正常に動作しないよう

手動でのポリゴンリダクション用に作った一括ベルト抜きというスクリプトですが、どうやらshade14と15では正常に動作しないようです。

単体およびmeshtoolplusに収録したこのスクリプトについては、shade14および15ユーザーの方は使用しないようにしてください。


shade14の場合、必ず結果が不正になります。

shade15(15.00)の場合、正常に処理される場合と、結果が不正になる場合の二種類に分かれるようです。

後者の場合、結果が不正になった後に、スクリプトの処理をキャンセルすると形状自体は元に戻りますが、辺の選択状態はキャンセル後は元とはかなり違った感じになってしまいます。

その後に辺を選択しなおしてスクリプトを再実行すると、たまに正常にベルト抜きがされる・・・・みたいな感じになっています。


shade15では「エッジの除去とクリーン」というツールが標準搭載され、これは「ベルト抜き」や「一括ベルト抜き」スクリプトと同じように不要なエッジを消去して手動でのポリゴンリダクションが可能になっています。
shade15ユーザーの方は、私が作ったスクリプトではなく、標準で搭載された「エッジの除去とクリーン」ツールを使うようにしてください。

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

2015年02月08日

shade15入手

shade15の無償バージョンアップ版の案内が来たので、ダウンロードしてインストールしてみました。

とりあえず全部のスクリプトを試したわけではないのですが、ポリゴン系のツールセットであるmeshtoolplusウィジェットに収録したスクリプトやその他のスクリプトはそのまま動くようです。

なお、shade15でmeshtoolplusウィジェットを使う場合は、メーカーが推奨するようにユーザーのドキュメントフォルダの中のwidgetフォルダにコピーするのではなく、shade15がインストールされたフォルダ内のwidgetフォルダの方にコピーしてください。(shade14の時と同じ感じです。)


15ではようやくopensubdivisionが使えるようになり、稜線への重みづけ設定でシャープな稜線を簡単に表現できるようになったのが嬉しいですね。

あと、モデリングライトの種類が従来の一種類から何種類にも増えているのもありがたいです。

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

2014年12月25日

shade14にバージョンアップしたら・・・

今shade14にバージョンアップすると15も無料で貰えるとの事で、いきなり13から15にアップするのではなく、一つ前のバグがわりと無くなって安定した14をゲットしておき、15がリリースされてそのバグが解消されるまでゆっくり待とうと思い、さっそく14にアップしてみました。

14に自作のスクリプトやウィジェットをインストールしてみたのですが、ポリゴン系のツールをまとめたmeshtoolplusウィジェットはそのままでは動きませんでしたね。

まずウィジェットの設定が書かれたxmlファイルを作ってなかった(でも何故か13まではそれで動いていた。運が良かったというか・・・)ので、xmlファイルを追加しました。

また、14ではスクリプトのパスが違うようで、これもちょっと応急処置的に修正。(もしかしたら、windows以外の環境では動かないかも)

shade14用のmeshtoolplusについてはこちらにアップしましたので、14ユーザーの方は良かったらご利用ください。

ウィジェットのインストール先ですが、13あたりからshadeをインストールしたフォルダではなくユーザードキュメントの方の「widgets」フォルダの方へスクリプトやウィジェットのインストールが推奨されています。

ただ、meshtoolplusの場合はshadeをインストールしたフォルダのパスを取得してからそれを元に各スクリプトのパスを設定するようになっているため、ユーザードキュメントの方ではなくshadeをインストールしたフォルダの中にある「widgets」フォルダ内へmeshtoolplusウィジェットフォルダをコピーしてお使いください。

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

2014年10月14日

<重要>shade15でポリゴン系の加工スクリプトを使用する場合の注意点

shade15から搭載されるオープンサブディビジョンサーフェイスというのは、ピクサーが作って、後にフリー化したサブディビジョンサーフェイスアルゴリズムで、頂点や辺にウェイトを設定して特定の稜線をシャープにできたりします。

opensub01.jpg

というサブディビジョンサーフェイスをONにした形状で、

opensub02.jpg
一部の辺(赤い辺)のウェイトを強くすれば、このようなシャープな形にする事が可能。

shadeに今まで搭載されていたサブディビジョンサーフェイス(「角の丸めのカトマルクラークやドゥサビン」)だと辺や頂点のウェイト設定ができず、特定の稜線をシャープにするにはその稜線近くにナイフツールやベベルなどで辺を追加する必要がありました。
でも、shade15からは頂点や辺のウェイト値を変更するだけで、余計な辺を追加する事なく特定の稜線を鋭角化できる事に。


で、この新しいサブディビジョンサーフェイス機能と、私がshadeのポリゴン編集機能強化のために作ってきた数々のポリゴンメッシュ系加工スクリプトは相性が悪く、まだshade15自体は発売されていないものの、「おそらく不具合が出るであろう」というスクリプトが結構あると思います。

『不具合』というのは、「加工自体はできるものの、加工後に新たに生成された頂点や辺や、その周辺の頂点や辺に適切なウェイト値が設定されないため、形状が意図した形にはならず、一部のウェイト設定をやり直すはめになる」という感じです。

「加工自体は問題ないけど、ウェイト設定だけはやり直してね」というわけです。


バージョン14まではスクリプトで辺や頂点のサブディビジョンウェイト値を操作したり参照できるメソッドやプロパティは当然ありませんでした。
で、15で仮にスクリプトから値を操作できるようになったとしても、新たに生成された頂点や辺に適切なウェイト値を設定するというのはプログラム的にかなり難しい事もあって、事実上この不具合についてはずっと修正できないままだと思います。

新しいサブディビジョンサーフェイスでもウェイトを設定せずに形状を作ってる場合は問題ないと思いますが、もしウェイトを設定した形状に、

・頂点や辺、面の数が変わってしまう加工系スクリプト

を実行した場合は、面倒だと思いますが、一部の辺や頂点のウェイト設定をやり直して、形状が意図した形になるようにしてください。


単体のスクリプトはもちろん、ポリゴン系スクリプトの一部をすぐに実行できるmeshtoolplusウィジェットでも当然この問題は起きます。

なお、
・頂点や辺、面を選択するだけのスクリプト

や、

・頂点や辺、面を移動するだけのスクリプト

では、新たに頂点や辺、面を生成するわけではないので、おそらく問題ないでしょう。

頂点や辺、面の数がスクリプト実行後に増えたり減ったりするというスクリプトだけで、この問題は発生すると思います。


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

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スクリプト | このブログの読者になる | 更新情報をチェックする

2013年05月30日

shade用スクリプトその91(本棚作成支援スクリプト)

本棚作成支援スクリプト.txt

現在ブラウザで選択している形状を、正面図から見て、右へ右へと指定回数分複製するスクリプトです。

複製の際に、高さ、幅、奥行きにランダムな大きさを加えた後、高さについては下方向へ、奥行きについては奥方向へ揃えて並べます。

日常では、本棚の中に色々な高さ・奥行き・幅の本を入れていると思いますが、そういうのをshadeで3DCGとして再現する場合、本を複製した後に手動でいちいち本の高さ、奥行き、幅を変えていく事になると思います。
これを、スクリプトで短時間でやってしまおう・・・・という考えの元作ったスクリプトです。
(そのため、スクリプト名も「本棚作成支援」となっています。)

室内シーン(自宅の本棚、本屋の本棚、図書館などの本棚)に本を並べる際などに、作業時間を短縮してくれるスクリプトだと思います。

まぁ実際は、スクリプトを使った後に、個々の本のテクスチャのUVを変更したり、テクスチャ画像自体を変更して、背表紙などのデザインを変えていく必要はありますが。


今回は、shade11か12以降に追加されたスクリプトメソッドを使用して作成したため、申し訳ないのですが、shade10.5では利用できません。
(11については持ってないので、動作確認はできていません。)

shade12、13シリーズ用となります。

プログラム的に、上位パートに変換がかかっていても動作しますが、結果がおかしい事になるかもしれません。
その場合は、一時的に複製する本を、ブラウザでルートパート直下などの変換マトリクスがかかってない場所に移動して、そこでスクリプトを実行してください。



<使い方>

honndanasien001.jpg

棚を作り、棚の中に本を一冊作ります。
棚は、必ず正面図で正面に向くように作ってください。
また、右へ右へ(X軸の正の方向へ)と複製されますので、本は棚の左端に置いてください。


本か、本のみを入れたパートを選択状態で、この「本棚作成支援」スクリプトを実行します。

honndanasien002.jpg

上記のようなダイアログボックスが表示されます。

最初の「幅」「高さ」「奥行き」は、本のサイズを表しています。
本を複製する際に隙間を空けたい場合は、このサイズを参考にして、「隙間」の値を入力してください。

「回数」は、本の複製回数です。

「隙間」は、この値分だけ、本と本の間に隙間を作って、右へ右へと複製していきます。
0以下の値を設定すると、スクリプト実行時に0に修正されます。

「高さランダム」のチェックボックスをONにすると、複製される際に高さがランダムで変わります。
その際の大きさの範囲は、「高さランダム最小倍率」から「高さランダム最大倍率」までとなります。
例えば、最小倍率を0.5、最大倍率を2とすると、元となる本(選択している形状)の0.5倍〜2倍の範囲の高さの本がランダムで並べられます。

なお、「最小倍率」には0〜1の範囲の値を入れ、「最大倍率」には1以上の値を入れてください。
(この範囲以外の値を入れた場合は、スクリプト実行時に適切な値に修正されます。)

その他の「幅ランダム」や「奥行きランダム」などについても、同じような感じです。

値の設定が終わったら、「ok」を押します。


honndanasien003.jpg

スクリプトで「複製回数」は大きめの値を入れておき、本棚から大きくはみだしたものについては、delキーで削除をしていき、画像のように本棚から少しだけはみ出している物のところまで消去します。

で、このちょっとはみ出したものについては、一部の頂点を左方向へ移動したり、横幅のサイズを縮めるなどして棚の内側へおさめます。

honndanasien005.jpg

二段目、三段目も同じように、元となる本を一つ左端に配置した後、このスクリプトを実行すると、あっという間にランダムなサイズの本を並べてくれると。


漫画や文庫のように、サイズが同一の本を一定回数並べたい場合は、一時的に「高さランダム」「奥行きランダム」「幅ランダム」のチェックボックスを全てOFFにして、回数を指定してスクリプトで実行するか、shade標準の「複製(直線移動)」と「繰り返し」ツールを使うといいでしょう。


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

2013年01月23日

shade13.22用に不具合を修正したスクリプト一覧

公開しているスクリプトのうち、まだ不具合が残っていた下記スクリプトについては、修正を行い、shade13で不具合が出ないようにしました。
ご利用の際は、各スクリプトおよびウィジェットの最新版をお使いください。

なお、shade13のバージョンは、必ず13.22以後をご使用ください。
shade13.22でスクリプトでの画面書き換え命令の仕様が変更され、それにあわせてプログラムを調整しています。

・下記が修正をおこなったスクリプトやウィジェット一覧


<ポリゴンメッシュ用ウィジェット>
P29:メッシュツールプラス

<ポリゴンメッシュ用スクリプト>
名前の前に「*」がついてる物は、メッシュツールプラスウィジェットにも収録されています。
普段メッシュツールプラスウィジェットをお使いの方は、メッシュツールプラスウィジェットを最新版に起き変えれば、*のついたのは個別に再ダウンロードする必要はありません。


*P4:ベルト抜き(面を残して辺を一括消去)
*P9:選択ポイントを球の表面へ移動
*P10:マルチリンク
*P11:マルチターゲットウェルド
*P13:重複辺の検出・選択
*P15:選択頂点を法線方向へ移動
*P16:選択辺を分割
*P18:選択辺を線形状に沿って押し出し
*P20:指定数で分割
*P22:指定位置で分割
*P23:線形状をポリラインに変換&マージ
*P24:選択頂点の中心に円球を作成
*P25:ループ稜線の丸めとベベル
*P26:シンプル稜線の丸めとベベル
*P26 穴をふさぐ
*P27:極周辺で分割
*P28:コーナーポイントの丸めとベベル
*P30:ステップ選択
*P31:内包面の検出
*P34:厚みをつける
*P35:ソフトムーブ
*P37:エッジ一括選択ツール
P39:片面削除後ミラーコピー
*P40:集合点の分解
*P41:ビトウィーン選択
*P42:面張りと削除
*P43:稜線のオフセットとコピー
*P44:指定位置を中心にスケーリング
*P45:カゴ作成支援スクリプト
*P46:ツイストツール
*P47:ガイドラインスケーリング
*P48:ガイドラインムーブ
*P49:ガイドラインへフィット
*P50:外形面選択
*P51:指定の頂点数の面を選択
*P52:センタリング
P53:ポイント移動と面の複製
*P54:選択の拡張(シフト)
*P55:選択の拡張(回転)
*P56:うずまきツール
*P57:選択の拡張(貫通)
*P58:リング単位で拡大縮小
*P60:表情のミラーコピー
*P61:スムージング
*P62:選択の絞り込み
*P63:一括ベルト抜き
P64:選択面にポリゴンメッシュを移植
P65:選択頂点の座標を0に
P66:選択辺から辺を引き出す
*P67:ベンドツール
P68:選択面ごとに拡大縮小
P70:選択頂点群が中心に来るよう移動

<線形状・自由曲面編集系>
l1:CP(コントロールポイント)の押し出し
l3:コントロールポイントの整列
l4:ハンドル情報の記憶と復帰
l5:ハンドルの長さや角度変更
l7:蛇腹作成支援スクリプト
l8:階段の元
l9:線形状の繰り返しコピー

<その他>
O2:カーソルのクリック位置を変更
O3:パスジョイント複製
O5:格子作成


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

2013年01月22日

shade13.22アップデータで、スクリプト実行中の描画の不具合が解消!!

shade13.1アップデータあたりから発生していた「スクリプト実行中に画面描画が更新されない」という不具合が、13.22アップデータで遂に修正されたようです。(やったー!!)

まだ全部のスクリプトを試したわけではないですが、スクリプトリファレンスを見ると、「update_figure_window()」をしておけば画面がきちんと更新されるようになったと。
今まではこれ入れてても機能してなかったのが、ようやく正常動作するようになったようで。

なお、「allow_update()」と「inhibit_update()」は廃止(これをスクリプト内に書いてても機能しなくなった)ようです。

後日、自作のスクリプトは全てテストし、「update_figure_window()」が入ってないやつは入れたやつに修正してアップロードします。


shadeは13でポリゴンのエッジベベル機能がついたり、ブラウザで編集中の形状に一瞬でオートフォーカスしたり、図形ウインドウ上で拡大縮小が滑らかにできるようになったりと、モデラーとしては従来よりかなり使い勝手が向上してたんですよね。

でも、自作スクリプトが画面更新されないバグのせいで軒並み使い勝手が大幅悪化し、その点が非常に残念でした。

13.22アップデータでこの不具合が解消されたようで、今まで以上にモデラーとして大いに役立ちそうです。

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

2013年01月04日

shade用スクリプトその90(選択頂点群が中央に来るよう移動)

新)選択頂点群が中央に来るように移動20130130.txt

旧)選択頂点群が中央に来るように移動20130123.txt

旧)選択頂点群が中央に来るように移動.txt

プログラムのミスにより、中央にこない場合があったので修正(2013.01.30)
shade13.22にあわせて修正(2013.01.23)


以前センタリングというポリゴンメッシュ用の位置調整スクリプトを作った事があったのですが、あれはポリゴンメッシュの全頂点を位置判定に利用するのに対して、このスクリプトでは、「選択している頂点群が中心に来るよう、ポリゴンメッシュ全体を移動する。」という風になっています。
(センタリングスクリプトと同様、ポリゴンメッシュ専用で、他の形状では使えません。)

なお、このスクリプトは今のところメッシュツールプラス ウィジェットには収録しないため、shadeのメニューバーのスクリプト一覧に登録するなどしてお使いください。
(スクリプトウインドウ内を全クリアした後、テキストファイルのプログラム内容をペーストし、「保存」でshadeのインストールフォルダ内の「script」フォルダに名前をつけて保存すると、次回起動時よりメニューバーのスクリプト一覧に登録されます。)

また、shade13で使用した場合、今のところshade側のバグで画面の書き換えがされないため、shade13では結果を確認する前に確定するかどうかを選択しないといけなくなっています。
(早くこのバグ修正して、イーフロンティアさん・・・)

この不具合は、shade13.22アップデータで解消されたようです。

shade13で結果が思わしくなかった場合は、『図形ウインドウの四面図内はクリックしないで(←*重要)』ctrl+Vなどで変更前の形状をペーストしてください。
(スクリプト実行前に、オリジナルの形状がクリップボードにコピーされています。)
*図形ウインドウ内をクリックしちゃうと、ペースト時の中心位置が変更されるため、元とは違う場所に形状がペーストされてしまいます。
四面図内ではなく、ブラウザなどをクリックするのなら大丈夫です。



<実際の使い方>

ブラウザでポリゴンメッシュを一つ選択し、頂点編集モードに入り、頂点を二個以上選択します。

部分センタリング001.jpg

スクリプトを実行すると、ダイアログウインドウが開きます。
部分センタリング002.jpg
移動したい軸だけにチェックを入れ、okを押してください。
例えば、X軸にだけチェックを入れた場合は、X軸方向にしか移動されません。

「ok」を押すと、選択されていた頂点を囲むバウンディングボックスの中心が中央に来るよう、ポリゴンメッシュ内の全ての頂点が移動されます。
部分センタリング003.jpg

移動終了後にはメッセージウインドウに「各軸ごとにどれだけ移動したか?」も出力されます。
部分センタリング004.jpg


移動処理がされるのは選択していたポリゴンメッシュ一つのみですが、その他の形状もこの出力データを参考に「移動>数値入力」で移動すると、一緒に位置あわせができます。
(ただし、上位パートにマトリクス変換がかかっている場合は、出力された数字で移動したらおかしくなる事があります。)


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

2012年11月20日

画面が更新されないバグ未だに修正されず……

shade13.2が公開されました。

法線マップが全グレードで使用できるようになったのは嬉しいものの、肝心の「13.1以後はスクリプト実行中に画面(図形ウインドウ)が何をやっても更新されなくなった(スクリプト終了時にのみ、画面がまとめて更新される)」というバグがあいかわらず放置のまま……。

本来なら、スクリプト実行中も画面の更新命令(update_figure_window()他)を出すと、図形ウインドウが更新されるはずが、13.1以後はこれらが全く機能しなくなってしまった。

スクリプトプログラム側では何をやってもこのバグは回避できません…。
ユーザー側で回避不可能なバグを長期間放置し続けるのは、本当にいい加減にして欲しい。

まさか13ではこのままこのバグ放置して次の14が出るなんて事ないでしょうね…。

イーフロンティアさん、本当にさっさとこのバグ修正してくださいよ。

この不具合は、shade13.22アップデータで解消されました。良かった。
posted by stxsi at 08:52| shadeスクリプト | このブログの読者になる | 更新情報をチェックする

2012年09月09日

shade13.1.1アップデータでも画面更新しないバグが直っておらず

7月20日に

イーフロンティアさんには、次のアップデータでコレの修正を是非お願いしたい

って記事を書きましたが、9月に出たアップデータでもこのバグは全然直ってませんね。

shade13の基本機能自体は12よりよくなってるのに、このバグのせいで製作した多くのスクリプトがまともに使えず、12より使い勝手が悪化しています……。

13でも初期のバージョンではまだ画面は更新されていたのに、新しいパッチでまともに更新されなくなるってのは…。
パッチで新たなバグを追加してどうする……。

メーカーさんにはさっさと状況を改善してもらいたい。

こういうのが続くと、自分含めプラグインやスクリプトを作ってる人達の意欲を失う事になると思うのですが。

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

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。