スポンサーサイト

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

この間の続き【ハイポリ→ローポリ】

はまった。
多分今までで一番はまった。

以前の記事を実装したのだけれど、形状の差を法線として書き込んでくれている時どうもズレが生じる。←っと勘違いした。

何が悪いのかわからずに、接空間座標を作り変えてみたり、ワールド座標系にしてみたり、差分の出す計算を作り変えてみたり、ノーマライズの誤差を計算してみたり、サンプリングテクスチャの大きさを変えてみたり、全部一から勉強しなおしてみたりしたけれどやはり直らない。

しまいにはBlenderの仕様を調べにいった。そのBlenderソースの一部。オープンソースなので全部見れるのですね。別の感動がありました。
static void bake_shade(void *handle, Object *ob, ShadeInput *shi, int quad, int x, int y, float u, float v, float *tvn, float *ttang)
がベイク書き出し関数で最後の二つの引数がタンジェントスペースでの書き出しで使われる数値。
if(tvn && ttang) {
VECCOPY(mat[0], ttang);
Crossf(mat[1], tvn, ttang);
VECCOPY(mat[2], tvn);
}
else {
VECCOPY(mat[0], shi->nmaptang);
Crossf(mat[1], shi->vn, shi->nmaptang);
VECCOPY(mat[2], shi->vn);
}
これがその問題の核なる部分。
んでもってもちろん異常なし。

手詰まりかと思いだした。ふと変な図形を作り、法線を目に見えるように書き出してあることに気づく。
Normal.jpg
一定の角度異常になると法線方向にぼかしがかかっている?!!
なんじゃこれ????
え?スムージング??!!なにそれ!!!!

そもそもスムージングなんて言葉も存在も知らなかったのですが、Blenderと違ってメタセコは綺麗に表示してくれるなーと思っていたのです。
原因はこいつでした。

一定角度より緩くなるとスムージングというものがかかり、こいつでXファイルを書き出すと法線情報に対してスムージングがかかったままになります。好き勝手やってくれます!

一方BlenderのMQOプラグインインポーターはスムージングは無視して読み込みます。困った。

私の作ったシェーダはXファイルをパイプラインから読み込んだ法線などの値(この場合メタセコのスムージングが効いた状態)を接空間座標(タンジェントスペース)として、それにハイポリとの差のベクトルを上乗せする形でノーマルマッピングを実装しています。

要するにスムージングを切ってやればよかっただけなのですが、これを気づかずに永遠と数式と戯れていたわけです。

メタセコのスムージング
・デフォルトでオートスムージング59.5度がかかっている。
・デフォルト値を設定する機能は多分無い(いちいち手動ですか・・情報あったら嬉しいな)
・小数点まで設定可能。

Blenderのスムージング
・デフォルトではかかっていない。
・メタセコから読み込むとスムージングは適用されていない。
・手動でオブジェクトごとにスムージングをかけられるがオートスムージングは小数点設定が無い。

エルフレイナのスムージング
・バージョンによって結果が変わる。
・古いのだとメタセコでスムーズ切ってもかかったままになるので注意。
・最新のβ版はメタセコの設定を受け継いでくれる。
・小数点まで調べていない。


以上の点からメタセコでスムージングを切ってBlenderでは気にせずそのままNormalMapを作成。
データをそのまま最新版エルフレイナに取り込んでXファイル作成。
こんな流れでうまくいった。

スムージングを知らずに法線を扱う人はこの世の中に何人いるかわからないけど、もしいたらこの記事で助かって欲しいです。切に。


途中でわざわざタンジェントスペースにして実装せずにワールドやオブジェクトでNormalMapを作成してしまったほうが良かったのではないか?と考えた。
タンジェントスペースだとシェーダの計算式が少し増えてしまうのである。

しかしながらやはりこれでよかったと後になって思った。
UV作業のときに貼り付け部分を回転、対象、反転、何をしても光の計算が狂わない。
コピーしたモデルオブジェクトを「方向変えてコピーしてはいけない」とか「服の半分だけをテクスチャにして反転で処理はダメ」なんて不便な事は何も気にしなくてよい。
後々、この差が結構大きい気がする。


とっても疲れました。
ねよっと。

コメントの投稿

非公開コメント

プロフィール

あしゅ

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

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

この人とブロともになる

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