スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Blenderと格闘

XNAの内容よりHLSLとかBlenderの記事が多い気がしてきました。
反省することも無くBlenderの記事です。

またまたレンダーベイクのお話。

やった人ならわかると思いますが分かりにくいパラメータが二つほどあります。
Dist と Bias です。

分かりにくい図にしてみました。
bake.jpg

薄い板に挟まれたものがNormalMapとして計算されます。
biasは「面」と「中心の板」の距離になります。0から始まりマイナスはありません。
distはコーンの長さです二方向に伸びていることにも注目です。(線の濃さが違うのはまったく意味無く、ただの適当さの表れです。)


ここで注意が必要です。
同じ法線上で板に挟まれた点が2箇所以上ある場合です。
bake2.jpg

こんな場合ですね。

面から近い方が優先されるとか、その逆とか、誤解する人がいるかもしれませんが、最初のの図でいう中心の板に近い方が適用されます。
これを知っておけばとりあえずNormalMapは問題はないでしょう。



さてさてNormalMapを作ったら高さMAPも作りたくなるのが世の常です。
感のいい人ならBake機能をみたときにDisplacementのボタンを試しているでしょう。
こいつで高さMAPを作れます。
ただし癖があります。

・中心板から面の方向は127以下
・中心板から法線方向は127以上
・面と同一は127
・面からの距離が遠いほど絶対値が小さくなるように変化します。(中心板からの距離ではない)
・範囲内に2点あるときの優先度は中心板からの距離


ハイポリに両面を含んだものがあったり複雑な形をしたものがあると、演算して欲しい面を計算させるためにbias値を大きくとって内側だけで計算させたくなります。
しかしこうすると高いところが白いという一般の高さMAPではなくなります。
そしてせっかく256段階あるものが128段階になります。
ただしこの方法は面からの距離で値の大きさが決まることから、10凹んだ場所と10膨らんだ場所が同じ色になります。

結論は
・ハイポリモデルを面の重なりなど気にせず自由に作れるかわりに、高さMAPの品質を少し落としシェーダの高さ計算のところに(0.5-hightmap)*2.0の計算を入れる。(もしくはいちいち反転や二重エフェクトをかける)ただし面からマイナス方向の演算は切り捨てる。

・ハイポリの構造を綺麗に作りローポリとの間に面が入らないように気をつけるかわりに、高さMAPは互換性のある仕様で作成できる。尚且つ面より内側かどうかを演算中に判定できるのでディスプレイメントマップなどに切り替える時は手間が無い。


の二通りです。





ねよっと。

コメントの投稿

非公開コメント

プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。