2013年01月

2013年01月31日

2013の新機能を探る その71 3dsmax 2013 PU5

前回の記事で日本語では「うねり」パラメータを調べながら英語のパラメータ名ではKinkと書いてしまっていた。しかし「kink」は「縮れ」の方で、「うねり」は「Frizz」が正解だよね。混乱した方がいたら申しわけなかったです。

どうも英語のマニュアルにアニメーションのパラメータが無いと思った。あの時点で気付けよと・・・。

さて、今回はその「縮れ(Kink)」から。

fig01

前回のうねりがヘアの根元と毛先の2箇所をノイズパターンで捩じってヘア全体の流れをコントロールするものだったのに対して、縮れはヘアの根元から毛先までのすべての部分に作用して、ヘアの形状を乱雑に変化させる。

fig02

そのノイズによる変動作用の強度を調整するのが「根元の縮れ(Kink Root)」と「毛先の縮れ(Kink Tip)」で、ノイズのオブジェクトのローカル軸の各方向の周期を決めるのが「縮れX周期(Kink X Freq.)」、「縮れY周期(Kink Y Freq.)」、「縮れZ周期(Kink Z Freq.)」だ。

例えば毛先の縮れを5、根元の縮れを0にして適用してみると

fig05

このように毛先側の縮れが大きくなり、根元側の縮れは無くなる。

fig03

逆に根元の縮れを0.5、毛先の縮れを0にすると根元側で縮れて毛先の縮れは無くなる。

fig04

2つの例でも明らかなように根元側の方が毛先側よりも強く影響が出るようで、根元の縮れを5にすると、毛が暴れ過ぎてしまって、下の画像のようになってしまった。

fig06

根元の縮れ、毛先の縮れについてはガイドによって元と先の方向が決まるようだけど、縮れX周期、縮れY周期、縮れZ周期については適用したオブジェクトのローカル座標軸が基準になるようで、例えば下の画像は編集可能ポリゴンの立方体の各頂点をブレークして6枚のポリゴンに分けたものにHairとFurモディファイヤをかけたもので、ガイドがこのように各面ごとに伸びている(それぞれスタイリングツールで伸ばしてある)。

fig11

この状態で縮れX周期のみを50にして、YとZは0にすると、

fig10

このようにオブジェクトのX軸方向に伸びるヘアはヘアが伸びる軸に対して横方向に変動が生じて縮れた状態になるけど、他の方向を向いているヘアは殆ど長さ方向の変動しか生じていない。

fig07

次にY周期のみを50にして、XとZは0にしてみると、Z方向に伸びるヘアが同じように横方向に変動し、XとY方向を向いているものはほぼ長さ方向だけの変動になった。

fig08

同様にZ周期のみを50にして、XとYは0にすると、Y方向に伸びるヘアにのみ強い影響が出た。

fig09

なぜだかYとZが逆になるんだけど、ノイズの周期パラメータがヘアの伸びる方向や面に係わらず、オブジェクトのローカル座標系の座標軸に沿ってノイズの周期を定めるものだとわかる。

実はこれにもちょっとしたカラクリがあって、この座標軸はこのモディファイヤをオブジェクトに適用する時に(おそらく)ポリゴンに対して割り当てられるもののようで、スキン変形などでポリゴンが変形した時に追従するようになっているようだ。

だから例えば下のGIFアニメはY軸のみに周期を入れたオブジェクトのポリゴンを1枚だけ回転させてみたものだ。見ての通りポリゴンを動かしても縮れのパターンが変化する事は無い。ポリゴンに割り当てられた軸に沿ってノイズが変動しているためだ。

fig12

この軸を再割り当てしたい場合は「ツール(Tools)」ロールアウトの「ヘアをリセット(Reset Rest)」ボタンを押せばいい。

fig13

また、縮れはヘアを細かく変形させるものなので、その作用を遺憾なく発揮させるためにはヘア自身のセグメント数(一般パラメータ(General Parameters)ロールアウト)もある程度大きくする必要がある。

下のGIFアニメはセグメント数を1〜200まで変化させた時の比較だ。セグメント数1では縮れは表現できていない。また40と200では殆ど変化は無い。多すぎても少な過ぎてもダメって事だね。

fig14

それではまた次回。

maxまとめページ



take_z_ultima at 11:38|この記事のURLComments(0)TrackBack(0)3ds Max | CG

2013年01月30日

modo601が来た! その90 modo601 SP4

今回もスキンシェーダーについて調べてみたい。

下の画像はmodoのサンプルデータにスキンシェーダーを適用してレンダリングしたものだ。

fig01

設定はこんな感じでディレクショナルライトと環境光にKitchen_Probeが貼ってある。

fig03

このままだとまるで無機物で出来たマネキンの手みたいに見えるんだけど、これにバンプマップを施すとあら不思議w

fig02

皮膚って言うのは本当に奥が深いねぇ。

modoには皮膚を再現する画像マップを作るために画像インクとして下のような画像が標準で提供されている。

fig04

これらの画像インクを使って直径1mの球体にマッピングしたらどんな感じになるのか試してみた。ペイントレイアウトでペイントブラシに画像インクをONにして、Skin_Inkの画像サムネイルから画像を選択して球体にペイントして貼り付け画像を作り、

fig15

その画像に2つのインスタンスを作ってバンプマップ、表皮ディフューズの色、表皮サブサーフェスの量に割り当ててみた。

fig13

以下がその結果。クリックすると大きくなるよ。

画像インク:Scales 

fig12

画像インク:skin1

fig14

画像インク:skin2

fig05

画像インク:skin3

fig06

画像インク:skin4

fig07

画像インク:skin5

fig08

画像インク:skin6

fig09

画像インク:skin8

fig10

画像インク:Wrinkles

fig11

画像インクには人間用じゃないものもあるけど見覚えのある形状のものも沢山あって、うまく使い分ければリアルな皮膚が再現できそうだ。

顔や頭なんかはskin2とかskin8あたりを使うとなかなかいいかも知れない。下の画像は拡大してみたもの。表皮のサブサーフェス量とディフューズカラーを調整してあるので、画像インクのブツブツがいい感じで毛穴っぽくなる。スキンヘッドの人の頭とかこんな感じかな。

fig16

手や腕なんかはSkin5なんかも使えそうだ。下の画像は表皮ディフューズにノイズを加えて皮下の毛細血管の様子も取り入れてみた。

fig17

ちょっと画像マップを加えて各パラメータを調整してやれば、なかなかリアルな皮膚が表現出来そうだな。

それではまた次回。

カテゴリー別ページ



take_z_ultima at 11:32|この記事のURLComments(0)TrackBack(0)modo | CG

2013年01月29日

2013の新機能を探る その70 3dsmax 2013 PU5

今回も引き続き「HairとFur(WSM)」モディファイヤを調べてみたい。

今回は「うねりパラメータ(Frizz Parameters)」ロールアウトから。このロールアウトのパラメータはヘアが生える範囲にマッピングされる「うねり周期(Frizz Frequency)」パラメータで決まるパーリンノイズの値にあわせてヘアの先端と根元を曲げてヘアの生え方に乱雑さを与える。ノイズは位置が固定のものと位置をアニメーション出来るものの2つあって、風でヘアがたなびくような効果を作る事ができる。

fig01

「根元のうねり(Frizz Root)」パラメータはノイズがヘアの根元を捻じ曲げる強さを決めるパラメータ。値の範囲は0〜360で、値が大きいほどノイズの影響が強く出る。

下のGIFアニメはこの値を0〜360の範囲で変化させたものだ。値が大きくなるに連れてヘアの根元がノイズによってランダムな方向にランダムな大きさで倒れるのがわかる。また、その時先端の位置は影響されないのもわかる。

fig02

「毛先のうねり(Frizz Tip)」パラメータはノイズがヘアの先端の位置や方向に影響を与える強さを決めるパラメータ。値の範囲は0〜360で、値が大きいほどノイズの影響が強く出る。

下のGIFアニメはこの値を0〜360の範囲で変化させたものだ。値が大きくなるに連れてヘアの先端がランダムな方向に曲がるのがわかる。

fig03

「うねりX周期(Frizz X Freq.)」、「うねりZ周期(Frizz Y Freq.)」、「うねりZ周期(Frizz Z Freq.)」は各ポリゴンに割り当てられたオブジェクトのローカル軸に対するノイズパターンの周期を決めるパラメータ。この値が小さいほどその軸方向のノイズの変動が少なくなり、曲がり方が一定になってくる。ただしY軸とZ軸はローカル軸とは逆になるようだ。

下のGIFアニメはうねりX周期、うねりY周期、うねりZ周期それぞれを0〜10まで変化させてみたものだ。数値が大きくなるに連れて各軸方向で変動し、そらが縞模様のようになり、その幅が詰まって縞模様の数が増えていくのがわかる。

fig05

これらの値はマッピング出来るので、例えばうねり周期を絞って一方向に倒しておいて、

fig06

このヘアの倒れる強度をアニメーションさせれば、面白い効果が出せる。

グラデーションランプをこんな感じで作って、V方向のオフセットをアニメーションさせて、

fig07

それを根元のうねりと毛先のうねりにマッピングすれば、

fig08

このようなアニメーションになる。

fig09

テクスチャでわざわざアニメーションをつけなくても「うねりアニメーション」、「アニメーション速度」、「うねりアニメーション方向」を使えばヘアのうねりアニメーションを作り出すことも出来る。

fig10

これらは上記のパラメータで作り出したノイズパターンをもう1つ複製して重ね合わせ、そのパターンを動かすことでうねりのアニメーションをさせようと言うものだ。パラメータの名前から想像できるように、ノイズパターンは「うねりアニメーションの方向」のXYZ3つのパラメータが示す方向ベクトルに「アニメーション速度」を掛け合わせた速度で移動し、そのノイズのヘアに与える強度が「うねりアニメーション」パラメータになっている。  

ただ、試してみたらどうも「うねりアニメーション方向」は(0,1,0)で固定になっているようで、このパラメータに何を入力しても変化が無かった。

うねりアニメーション方向がY軸固定なので、うねりX周期とうねりZ周期はこのアニメーションに影響を及ぼさない(Y方向にしか移動しないので)。逆にY周期が0の時はアニメーションされない。

例えばこのようにうねりY周期だけ3にして方向は全部0(本当に何でもいい)で

fig12

アニメーションさせてみるとこうなる。

fig11

同様にうねりX周期だけ3にして他は0でアニメーションさせてみるとこのまま動かない。

fig13

うねりZ周期でも同様だ。

fig14

まあこれが機能しなくてもテクスチャマッピングのアニメーションでなんとでもなるので、余計な機能かもね。

このモディファイヤで使われるXYZの軸はモディファイヤをオブジェクトに適用した時や、リセットやポリゴンの複製などによってヘアが再生成される時に(たぶん)各ポリゴンに割り当てられる仕組みになっているようで、スキンモディファイヤなどの変形に追従できるようになっているようだ。

それではまた次回。

maxまとめページ



take_z_ultima at 12:48|この記事のURLComments(0)TrackBack(0)3ds Max | CG

2013年01月28日

modo601が来た! その89 modo601 SP4

今回はmodoのsamples¥Organic¥Skin Shaderフォルダにスキンシェーダーを使ったサンプルシーン(Material_skinShader.lxo)があったので、これをちょっと調べてみた。

下の画像はこのサンプルシーンをレンダリングしたものだ。

fig01

このシーンでは光源としてディレクショナルライト(15.0W/srm2)、ポイントライト(6.0W/srm2)がこのように配置され、

fig05

環境光(6.0W/srm2)としてprobe_parkSun_FINALがセットされている。ライトはSSSの効果を意識してかなり強めな感じだ。

fig06

そしてスキンシェーダーに追加して表皮ディフューズの色をテクスチャーマッピングしている。

fig03

これがマッピングされている表皮ディフューズの一部分で、

fig07

皮膚全体にわたる網目状の濃淡とおでこの上にあるこぶみたいなものに赤みを与えたり、

fig08

まぶたや唇に他の皮膚とは異なる色味を与えている。

fig09

解剖学的にはたぶんこういうのは表皮の厚さとか、真皮内の毛細血管の多さとか表皮の色素なんかが関係してくるんだろうけど、この作例では表皮ディフューズカラーのみで表現している。  

そしてスキンシェーダーのセッティングはこうなっている。

fig04

表皮のディフューズ量は20%で、デフォルト状態のスキンシェーダーに比べてフレネルは全部切ってあって、真皮のスキャッタリング距離が深くなり、正面ウェイトがニュートラルになり、皮下組織のサブサーフェス量が減らされている感じだ。

ちなみにデフォルトのままのスキンシェーダーでレンダリングするとこんな感じになる。かなりテッカテカでハイライトも強いし、環境光の反射も出ている。エネルギー保存が働いているから皮膚の内部のSSSへ回されるエネルギーが減って影になっている部分が潰れ気味だし、照らされている側は飽和して白飛びしてしまってハイキーな感じになってしまっている。確かにこれならフレネル切っちゃうな。

fig10

ちなみにこれがデフォルト状態のスキンシェーダーとこのシーンで使われている調整後のスキンシェーダの各パラメータの比較だ(クリックすると大きくなるよ)。左がデフォルトで右が調整後。ちょっと切れちゃったけど両方とも「エネルギー保存」はONの状態だ。

fig11

ここでデフォルトの状態からスペキュラと反射のフレネルを0にしてみたのがこの画像だ。フレネルを抑えると皮膚のテカりが抑えられて、耳とかに出ていたハイライトなんかも消えて皮膚のキメの荒さや乾燥具合が出てきたような感じだ。

fig13

次はハイライト、反射、表皮のサブサーフェスの色。これがこのサンプルでは調整されている。この効果を確認するためにフレネルを切ったデフォルトのスキンシェーダを変更してみた。これがその結果。

fig14

色味が調整されて、ハイライトもうるさい感じがなくなって、全体的に落ち着いたトーンになったけど、SSSの深度が浅いために肌としてのやわらかさや血の通っている感じはまだ出ていない感じだ。例えば耳の部分とかは骨が無く、薄いために透過してくる光があったりするわけだし、影になっている部分の皮膚だって、皮膚内部で乱反射しならが伝播してくる光とかがあって明るくなるはずだ。そこで今度は作例にあわせて真皮のSSSの距離を55mm、最大深度が200mmにしてみた。

fig15

ちょっとわかりにくいので拡大して比較してみるとこんな感じ。SSSを深くするとそのぶんだけ耳の縁や鼻の部分などに光が回って明るくなって真皮の色味が加わっている。

fig16

さらに皮下組織のSSSの距離と最大深度、サブサーフェスの量も調整して比較してみたのが下のGIFアニメだ。皮下組織のSSSによって耳の部分の透過光がさらに加わっている。

fig17

最後に真皮の正面ウェイトを50%に切り替えてみた。これで真皮から表面に出てくる光が減って透過してくる光が増える。

これがその比較。さらに透過側で光が回って、耳の中なんかが透けてる感じになった。

fig18

こうして比較してみると効果が見えてくるね。

ついでにこのシーンをスキンシェーダーを使わずに標準のマテリアルでシェーディングしてみた。(各色味や対応するパラメータは同じになるように調整してあるただしSSSは入れていない)。下のスキンシェーダーでレンダリングしたものに比べるとディフューズとスペキュラのみなので随分と暗く沈んだ感じになってしまった。でもディフューズ量を上げていくとライトが当っている面のハイライトが強くなっちゃうんだよね。

fig02

fig01

今回のサンプルでは皮膚としては肌色一色で出来ているからテクスチャーマッピングとしてもディフューズカラーのみで済んでるけど、ここに別の色味を加えたい場合は内部のSSSの色が混ざってくるのでちょっとややこしい事になってくるだろうね。

ついでにマッピングできるエフェクトにSSSのスキャッタリング距離も欲しいところだね。

それではまた次回。

カテゴリー別ページ



take_z_ultima at 11:42|この記事のURLComments(0)TrackBack(0)modo | CG

2013年01月25日

2013の新機能を探る その69 3dsmax 2013 PU5

今回も引き続き「HairとFur(WSM)」モディファイヤを調べてみたい。

今回は前回残っちゃった「カラー(Colors)」パラメータから。

fig10

このパラメータにはマニュアルにはこう書いてある。

Nonzero values vary the colors among clumps.

ゼロ以外の値に設定すると、束の中のカラーが変わります。

日本語訳の方を読むと束の内側の部分で色が変わるみたいに受け取れるんだけど、英文の方を読むと束と束の間で色が変わるように受け取れる。

で、実際試してみたところ、やはり束ごとに色や明るさが変化する仕組みのようで、その変化は「マテリアルパラメータ(Material Parameters)」ロールアウトの「色相の変動(Hue Variation)」と「値の変動(Value Variation)」から来ているようだ。

fig02

例えば色相と値の変動を100にして、

fig05

「カラー(Colors)」パラメータを0にしてレンダリングするとこのようにヘアごとに色相と明度が変化する。

fig03

ここで「カラー(Colors)」パラメータを1にしてみると、その変動が各束ごとになる。

fig04

「カラー(Colors)」パラメータを0.5にしてみると、ヘア単位でも束単位でも色相と明度の変位が起こり、それらがミックスされた状態になった。

fig06

「マテリアルパラメータ(Material Parameters)」ロールアウトの「色相の変動(Hue Variation)」と「値の変動(Value Variation)」を共に0にした場合(毛先カラーや根元カラーにテクスチャマッピングをしていなければ)、「カラー(Colors)」パラメータを1にしてもこのように何の変化も起きない。

fig10

同じ状態で「色相の変動(Hue Variation)」を100にすると、このように束ごとに色相が変化し、

fig11

「値の変動(Value Variation)」を100にすると、束ごとに明度が変化するようになる。

fig12

ただし「カラー(Colors)」パラメータによる束単位の色相と明度の変動はマテリアルパラメータの「毛先カラー(Tip Color)」と「根元カラー(Root Color)」のテクスチャマッピングが無視されるようだ。

例えば下のGIFアニメは2つのパラメータに同じCheckerの白黒のマテリアルを貼ってみたものだ。そして白と黒を交互に入れ替えて比較してみた。

fig07

見ての通り白と黒が入れ替われば、ヘアの配色が変化する。

同じ事を「カラー(Colors)」パラメータを1にしてやってみると白と黒を入れ替えても配色が変化しなくなった。

fig08

もちろん「カラー(Colors)」パラメータを0.5にすれば両者が合成されるのでこのように変化もするようになる。

fig09

この事から先に出てきた「マテリアルパラメータ(Material Parameters)」ロールアウトの「色相の変動(Hue Variation)」と「値の変動(Value Variation)」を共に0にした場合で、「毛先カラー(Tip Color)」と「根元カラー(Root Color)」に共にCheckerのマテリアルをマッピングした場合、「カラー(Colors)」パラメータを0にした場合はそのままこのようにマッピングカラーが出るけど、

fig13

「カラー(Colors)」パラメータを1にするとマッピングが無視されて決まるカラーと明度の割合が増えて、このようにマッピングがまったく影響しない結果になる。

fig14

だから「カラー(Colors)」パラメータは「色相の変動(Hue Variation)」と「値の変動(Value Variation)」が0でも、マッピングしている場合には影響が出るようだ。

それではまた来週。

maxまとめページ



take_z_ultima at 11:30|この記事のURLComments(0)TrackBack(0)3ds Max | CG
Archives