トックのCG部屋-トップ別室へ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

法線マップでやらかした

自分の作った法線マップの根本的な間違いを見つけた
いやー外積の取り方とか何度も変えたたけどどうりで直らないわけだ
法線マップ使った今年の研究…ってほどじゃないけどそれのアルゴリズム考えてたときに気付いた

まずはこれ
法線マップ
左がBlender内蔵でレンダリング、右が自作のレンダラでレンダリング
まぁ自作の方は相変わらず汚いけど陰やハイライトのつきかたを見ると多分ほぼ同じ
バンプが飛び出してマップがへこんでる

さて次はこれ
なんかおかしい
同じく左がBlender内蔵、右が自作のレンダラ
さーて何かがおかしいね
内蔵はそのままだけど自作の方は凹凸が逆になってる
これ何をしたかというと、ただ四角形を180度回しただけ

くるくる回してみると
くるくる
おーおーこれはひどい
なんかもう凸凹してるのは何となくわかるけど
どこが出っ張っててどこがへこんでるのかよくわからなくなってる

これの原因はこう
よくわからない図解
法線マップってなんかまずアップベクターをとって外積計算をいろいろやってくんだけど
問題はそのアップベクターの取り方(ここからは実際に直して試してないから推測)
本来ならテクスチャーの上方向にとらなきゃいけないんだと思うけど
自作のだと常にY軸+方向でやってる
これだと回転させても計算後の法線は回転前と同じで
回転させたら上向いてたところが左向いてなきゃ行けないところを上を向き続けてるっていう
現実的に考えたらあり得ないわけわからないことが起きてる

さてこいつをどうやって直せばいいかってことなんだけど
多分こんな感じで行けると思う
解決方法
テクスチャ上方向(v軸+)がアップベクターになるようにすればいいんだから
その点のuv座標と頂点のuv座標からアップベクターを頂点の座標の配分比で的な何かで…
それを3次元空間に持っていってアップベクターのxyzを求めて…まぁそんな感じ
多分その配分はuの値を見れば簡単に求められるんじゃないかなぁ

以下愚痴

さてそもそもなんでこんなアホなことやってたかって言うと
研究室の先輩が「こうやればできますよ?」
って言ったのをそのまま適当に実装したから

あーあ…
またやっちまったな!

交差判定然りこれ然り
自分で理解してないアルゴリズムを適当に実装してみると必ず何かがおかしくなるね!

今思うと「適当にY軸にアップベクターをとって…」とかそりゃおかしいわ

ああそういえばその先輩も「やったことはないけど知識として知ってる」とか言ってたなぁ
なんでそんなもん信じたのか自分本当に馬鹿すぎる

どうでもいいけど今回みたいに比較用のシーンを簡単に作れるあたり
やっぱりデータのインポートエクスポートはちゃんとできるようにしといてよかったね
こういうのってやっぱり比べてみないと気付かないことあるよね

どうでもいいけどアニメーション用のエクスポータが若干ぶっ壊れてたから直した

さーて原因もわかったし後で修正しなきゃ
  1. 2010/05/25(火) 08:36:25|
  2. 自作レンダラ
  3. | トラックバック:0
  4. | コメント:0
<<異方性反射 | ホーム | こーそくふーりえへんかん>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://took.blog72.fc2.com/tb.php/684-599fa1ae
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

トック

Author:トック

プロフィール(仮)

twitter:elgraiv_took
└ブログ更新情報

twitter:elgraiv_take
└無駄な日常つぶやき用

FC2カウンター

コンテンツ一覧

本棚

最近の記事

カテゴリー

月別アーカイブ

ブログ内検索

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