strange items(楽天)


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


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

2015年11月29日

壷のレンダリング画像とかマケプレの話とか(shade)

shadeはバージョン12か13からだったと思いますが、プリセットで色々な表面材質を収録するようになりました。
MODOとかlightwaveもプリセットで色々なマテリアルを収録してて、自分でテクスチャを用意しなくても色々なリアルな材質表現ができるのが便利ですよね。

以下は、その中の一部を適用してshadeでレンダリングした物。

プロシージャルテクスチャと違って、細かい調整や三次元的に切れ目がなく貼り付けられないのが難点ではありますが。
あと、一部のプリセットマテリアルは、レンダリングがめちゃくちゃ重くなります。

他の3DCGソフトではプロシージャルテクスチャの種類がかなりあって、この点ではshadeもまだまだ強化していくべきだと思います。
色々なプロシージャルテクスチャを収録したプラグインとかが、マーケットプレイスで3000円〜5000円くらいで買えるようになれば、結構買う人いると思うのですがね。


tubodou151129001a001.jpg
tubodou151129001a005.jpg
tubodou151129001a004.jpg
tubodou151129001a003.jpg
tubodou151129001a002.jpg
tubodou151129001a006.jpg
tubodou151129001a007.jpg
tubodou151129001a008.jpg
tubodou151129001a009.jpg
tubodou151129001a010.jpg
tubodou151129001a012.jpg
tubodou151129001a011.jpg
tubodou151129001a016.jpg
tubodou151129001a013.jpg
tubodou151129001a014.jpg
tubodou151129001a015.jpg
tubodou151129001a017.jpg
tubodou151129001a019.jpg
tubodou151129001a018.jpg
tubodou151129001a020.jpg
tubodou151129001a024.jpg
tubodou151129001a025.jpg
tubodou151129001a023.jpg
tubodou151129001a021.jpg
tubodou151129001a022.jpg
tubodou151129001a026.jpg
tubodou151129001a027.jpg
tubodou151129001a028.jpg

マーケットプレイスと言えば、コンテンツの増加速度がだいぶ鈍いように思います。
出展者登録の方法とか、コンテンツのアップロード方法については、web上で簡単に登録・アップロード・各素材は審査してから掲載、みたいになればいいと思うのですが。

もっと手軽に出展者登録と素材のアップロードができるようになれば、色々な人が参加して素材がどんどん充実していくでしょう。
マーケットプレースで素材が充実していくと、すでにshadeを持っているユーザーはもちろん、これから3DCGソフトを買う人がshadeを候補の一つとして検討する動機の一つとなりうるでしょう。
その点でも、マーケットプレースのテコ入れは必要だと思われます。

私も、あまり手間のかからない素材については気の向いた時に無料素材としてどんどんアップして、shadeのコミュニティの活性化やshade自身の売り上げアップに貢献したいと思うのですが。

MODOにも色々な素材を登録してユーザー間でやり取りできる仕組みがあるようです。
私はあっちにはまだ参加していないのですが、素材一覧を見ると、もうかなり充実していますよね。
登録やアップロード方法が簡単なためか、かなりのペースで素材が増えていってるようです。

shadeもマーケットプレース活性化のためには、今のシステムを見直して、もっと手軽に参加、アップロードできるようにすべきでしょう。
もちろん、各素材については掲載前にきちんとした審査もして。(有料の素材は特に)


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

2015年11月26日

3DCG用の絨毯テクスチャを画像編集ソフトで作ってみる

zyuutann01.jpg

これは10秒ほどでかなり適当に描いた絵(?)ですが

zyuutann02.jpg
モノクロノイズを加えて

zyuutann03.jpg

テクスチャ効果>織物というので加工すると、絨毯っぽいテクスチャができあがります。
織物加工する前に、ノイズを加えるのがポイントでしょうか。
織物加工だけでは、あまりリアルではないです。

私が持っているのはpaintshop proというソフトの古いバージョンですが、他のソフトでもノイズ追加やテクスチャ処理で織物風のパターンを追加できると思います。

zyuutann04.jpg
(クリックで拡大)
単色の画像も、同じような手順であっという間にリアルな絨毯っぽい質感になりますね。

posted by stxsi at 18:43| 3DCG全般 | このブログの読者になる | 更新情報をチェックする

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月24日

円筒化スクリプトを使った形状作成(shade)

haizara001.jpg

正面図で、こういう線形状を描きます。
後で円筒化するので、全てのコントロールポイントのZ座標値は0にし、また始点のコントロールポイントのX座標値は0にしておきます。。


haizara002.jpg
線形状の繰り返しコピースクリプトで、先ほど描いた線形状をこのように繰り返しの線形状に変化させ、

haizara003.jpg
自由曲面パートを作ってその中に入れ、Y座標下方向へ線形状を複製。

haizara004.jpg
下の方の線形状については、Y軸方向に0に縮小して平らにします。


この後はポリゴンメッシュ化してからスクリプトで円筒化するのですが、滑らかな円筒になるようポリゴンメッシュ化の際には左右方向への分割数を高めにしておきます。


haizara005.jpg

haizara006.jpg
円筒化スクリプトに最近追加した「円の半径にあわせる」オプションを使うため、上面図で原点を中心に円を作成。
このオプションを使うと、この円の大きさにあわせる形で円筒化処理がされます。

haizara007.jpg
「平面形状を円筒化」スクリプトで円筒化。

haizara008.jpg
meshtoolplusウィジェットにも収録している「厚みをつける」スクリプトで法線方向に厚み付けで完了。


厚みを付けた筒をブーリアンでくり抜く事でもこういう形状は作れますが、今回やったような手順の方が綺麗なポリゴンの流れになるかと。
ブーリアンでくり抜く場合、ブーリアン処理が失敗して形状の一部に穴が空いたり、四角ポリゴンでない箇所が結構できたりしますが、今回のような手順だと全てが四角ポリゴンで構成されています。


同じような手順で、こういう形状とかも作れたりします。

haizara009.jpg

haizara010.jpg


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

2015年11月20日

非常階段のモデリングテスト(shade)

建物外部にある非常階段とか、団地とかの内階段のモデリングメモ。


kaidann15112001.jpg

まずは、こういうパーツを作成。


kaidann15112002.jpg
複製した後、180度回転してから、同一ポリゴンメッシュに統合。


kaidann15112003.jpg

180度回転した部分を適切な位置に移動したいのですが、オブジェクトガイドによるスナップ機能だとなんか上手く位置あわせができません。

そのため、以前作ったスクリプトを使います。


180度回転したパーツ部分の頂点だけを選択し、「ポイント移動と面の複製」スクリプトで位置あわせを。

このスクリプトは、

1.スクリプト一回目で「開始点」の記憶
2.スクリプト二回目で「目標点」の記憶
3.スクリプト三回目で選択頂点の移動(や複製)

と、三回スクリプトを実行する事になります。


「開始点」と「目標点」を適切に設定した後、スクリプトの「選択頂点の移動」モードをやると、

kaidann15112004.jpg

こう、いい感じにスポッと選択していた頂点を移動できるわけですね。


kaidann15112005.jpg
1ユニット分できたので、同じく「ポイント移動と面の複製」スクリプトで、適切な「開始点」と「目標点」を設定した後、全部の頂点を選択して、今度は「選択頂点の複製」モード(回数も1以上にして)を実行すると、


kaidann15112006.jpg

こんな感じで、階数分の階段ができあがると


<追記>
後で、オブジェクトガイドの設定見直してやったら、スクリプト使わなくてもそっちで簡単に位置合わせできました。
まぁ、こういうアプローチもあるという事で。

posted by stxsi at 19:12| shadeモデリング実験 | このブログの読者になる | 更新情報をチェックする

2015年11月19日

鋭い稜線をお手軽に選択(shade15)

edgeselect001.jpg

こういうポリゴンメッシュがあるとします。

shade3D ver15では便利な稜線選択コマンドが追加され、稜線に接する面と面の交差角度が一定の数値より小さいエッジを簡単に選択できるようになっています。

エッジ編集モードに入った状態で、マウス右クリックの「選択>エラー診断選択>鋭い稜線」コマンドで適切な数値を入れると・・・

edgeselect002.jpg

こんな風に角の方の稜線だけを簡単に選択できるわけですな。

edgeselect003.jpg

んで、角をベベルで切り落としたり。

edgeselect004.jpg

こういうパーツも

edgeselect005.jpg

ベベル処理をしたい角の方の稜線だけ一気に選択し、

edgeselect006.jpg
角のエッジ箇所だけエッジベベル処理をしたり。

メカとかプロダクト製品のモデリングする時に結構役立ちそうなコマンドですね。

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

2015年11月18日

shadeにもあればいいと思うこの機能(表面材質のrounded edgeオプション)

先日セールの時に二万円で買ったMODO indie 901を少しずつ触っています。
色々触っていると、「この機能は今後のshadeにも搭載すると、新しいバージョンにアップするshadeユーザーが増えて、メーカーにとっても利益増を狙えるのでは?」という機能がいくつもあります。

例えば、マテリアルの「rounded edge」というオプション。

現実世界にある物体は、稜線が鋭いままだと皮膚などを切る怖れがあるため、物体の稜線は少し面取り(丸め処理)をしていたりします。
そのため、そこに光沢が乗ってオブジェクトの見映えが良くなったりしているのですが、3DCGでモデリングする時に稜線を面取りしていくのは、時々面倒に感じる事もあります。

MODOの場合は、各マテリアルの設定項目の中に「rounded edge」という項目があり、これをONにする(0より大きい値を入れる)と、レンダラー側で稜線付近の法線を加工して擬似的に稜線に丸みを与える機能がついていたりします。

modoround003.jpg

左がOFFで、右が同じ形状をマテリアルのrounded edgeをONにしてレンダリングした物です。
結構違いますよね。
rounded edgeオプションで小さい値を入れて稜線に少し丸みを与えると、こんな感じで、オブジェクトの角や、交差箇所が滑らかな感じになって、見映えがぐっと良くなると。
球に円柱をめりこませた部分は、溶接したみたいに滑らかになっているのがいいですね。

rounded edgeでは、丸めの距離(あまり大きな値を入れると破綻する)の設定とはまた別に、「同じ表面材質とのみ融合させるか?」みたいな設定項目もあります。
同一マテリアルとの交差部分のみ丸め処理を行いたい場合にこのオプションは役に立ちます。


この機能はshadeでも搭載するようにすると、プロダクトやメカ物などをshade上でレンダリングする時に結構威力を発揮するでしょう。


posted by stxsi at 13:30| 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年10月26日

modo indie 901を購入しました

最近はモデリングはshadeを使い、凝ったマテリアルを使ってレンダリングしたい時やアニメーションをする場合はlightwave9.6を使う、という風にしていたのですが、そこにまた一つ統合型の3DCGソフトを増やしてしまいました……。
modo 901のindie版が、普段は三万円弱するやつがセールとかで二万円弱で買えると知って衝動買い。
indie版は機能が一部制限されているのですが、まぁホビー用途ならその制限もあまり気にならないよう。

modoはレンダリングの速さや美しさとか、モデリングのしやすさで昔から憧れていたソフトですが、二万円出せばそのmodoが(機能制限版とはいえ)手に入るという事で、「この機会に買っておくか」みたいな。
レンダリングの速さで言えばlightwaveも結構速いし、lightwaveも多彩なマテリアル表現ができるので、もうそれで満足しておけば良かったと言えば、そうなんですが。

3DCGを趣味にしてる人にはありがちなアレですよ。
「すでに持ってるソフトで十分満足できるはずなのに、何故か他のソフトも欲しくなってしまう」現象。

・・・しかし、ここ最近ちょっと散財がひどいかな?
今月末に出るレトロフリークっていうファミコン・スーパーファミコン、メガドライブ、PCエンジン、ゲームボーイ、ゲームボーイアドバンスソフトが一台で遊べるゲーム機でも予約ですでに金払って二万円以上使ってしまったし。
レトロフリークは、互換機なので実際は正常に動かないソフトも結構ありそうだとか、きちんと耐久性があるかどうか(たった一、二年でスロットや本体が故障しないか)もちょっと心配なんですがね。
アマゾンで予約したせいか、本体の保証期間がたった三ヶ月しかないというのもすごい心配。


今後の3DCGソフトの使い分けですが、

・モデリングはshadeをメインに使う。
・あまり凝ったマテリアルを使わない場合はレンダリングもshadeで行う。
・サブサーフェイススキャッタリングとかスキンシェーダーなど、凝ったマテリアルを使う場合は、基本的にmodoでレンダリングをする。たまにlightwaveでもレンダリングを楽しむ。
・アニメーションを作る場合はlightwaveを使う。

みたいに三つのソフトを使い分ける形になりそうです。

モデリング機能はshadeよりmodoの方が上でしょうが、そのmodoのモデラーをフルに使えるようになるまでに結構な時間がかかってしまいそうなので、慣れたshadeで今後もモデリングしていく事になるでしょう。せっかく作った数多くのshade用モデリングスクリプトを活用するためにも。
今のshadeでのモデリングのしやすさとか、それでオブジェクトをサクサクと作っていける感じとかは特に不満を感じていないので。
まぁ、それでもメーカー(shade3D)には他の3DCGソフトを色々研究して、さらに上のモデラーを目指して欲しいとは思っていますが。
今のshadeはモデリング機能よりも、マテリアル表現とかが今となっては貧弱なので、この部分を他ソフト並に強化するのが重要だと思いますが

私が持っているlightwaveはバージョンが9.6で、bulletはまだ搭載していなかった頃のやつなんですよね。
modo indie版だとそのbulletが使えるようなので、そこはちょっと楽しみかも。
lightwave9.6でも独特のクロスシム(cloth FX)やソフトボディ(soft FX)とかは搭載してはいますが、結構使いにくかったり。


posted by stxsi at 19:02| 3DCG全般 | このブログの読者になる | 更新情報をチェックする

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

広告


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

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

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