ベイク機能の仕様について

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー



前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008/12/5 19:11
asha  半人前   投稿数: 23
Blenderでハイポリとローポリの差をNormalBakeさせて使用したいと考えています。

スペースをタンジェントスペースに設定し。SelectedToActiveにチェックを入れベイクさせたものを自分のアプリ(シェーダ)にて表示させます。

この時、ローポリとハイポリの傾きの差がそのままテクスチャに焼きこまれているものとしてシェーダを作成したのですが、どうも挙動が違う気がします。

具体的に言うとその差が大きく書かれていると思うのですが、Blenderの仕様が分からず困っております。

同じ物体でベイクすると法線向きは(0,0,1)でほんの少しずらすと数値がその方向にずれた状態でノーマライズされたものが書き込まれている点から、「差」が書き込まれていることは確かだと思うのですが、その計算がわかりません。

よろしくお願いします。
投票数:12 平均点:0.83
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008/12/5 22:18
uimac  常連   投稿数: 49
仕様と言うのはソースコードのことでしょうか
https://svn.blender.org/svnroot/bf-blender/trunk/blender/source/blender/render/intern/source/rendercore.c

NormalMapは、やったこと無いですが見てみました。

まず、2412行あたり(do_bake_shade()の中)から、Selected to ActiveがONの場合の処理があります。座標を、(ローポリのほうに)出来るだけ合わせて計算しているだけで、差を計算しているようには見えないような…。

それから2169行あたり(bake_shade()中)から、実際にbakeする処理があります。

shr.combined[0]= nor[0]/2.0f + 0.5f;
shr.combined[1]= 0.5f - nor[1]/2.0f;
shr.combined[2]= nor[2]/2.0f + 0.5f;
で、-1〜1の範囲の法線を、0〜1の範囲にしているみたいです。

つまり、NormalMapは、BumpMapと違って、法線をそのままマッピングしているからNormalMapなんじゃないでしょうか…?(自信無し)

外していたらすみません。
投票数:3 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008/12/6 9:46
asha  半人前   投稿数: 23
ソースを確認いただき感謝致します。

NormalSpaceが「Worlad」や「Object」の場合法線をそのままマッピングしているのだと思うのですが、「Tangent」の場合どうなっているのか?というのが質問の内容でした。分かりにくくてすいません。

if(bs->type==RE_BAKE_NORMALS && R.r.bake_normal_space==R_BAKE_SPACE_TANGENT)

この辺の処理を追うのがよいのでしょうが、私の頭ではソースを読み取ることができず困っております。
質問するだけでは失礼なので、出来る限り自分でも勉強して調べてみようと思います。

連続投稿を避けるために書き込み時間が違いますが編集にて付け加えます
↑の処理を追ったところ問題は解決しました。
誤解していたのはスムージングとベイクの連携でした。
ベイク機能自体には特別な演算が含まれているわけではなさそうです。
ありがとうございました。


投票数:3 平均点:6.67

  条件検索へ


ログイン

ユーザ名:

パスワード:



パスワード紛失

クイックリンク

2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org

●Blender Q&A
- Blender Stack Exchange

●テストビルド
Buildbot(自動生成)


●開発関連
公式開発サイト
Blender開発blog
Blender Wiki