2

じゃあ良いよ。小さなゲーム エンジンにノーマル マッピングを実装しようとしていますが、うまく動作しません。

頂点ごとの法線だけでライティングを行うとすべて問題ありませんが、法線マップでそれを行おうとすると、すべてがバラバラになります。

テクスチャがきれいに見えるので、適切な UV があることはわかっていますが、法線マップ テクスチャに関して何が間違っているのかわかりません。

これは、ピクセル シェーダー (HLSL) のコードの一部です。...

    float3 NormalSample(float3 normalMapSample, float3 unitNormalW, float3 tangentW)
{
    //Uncompress each component from [0,1] to [-1,1]
    float3 normalT = 2.0f*normalMapSample - 1.0f;
    // Build orthonormal basis.
    float3 N = unitNormalW;
    float3 T = normalize(tangentW - dot(tangentW, N)*N);
    float3 B = cross(N, T);

    float3x3 TBN = float3x3(T, B, N);

    // Transform from tangent space to world space.
    float3 bumpedNormalW = mul(normalT, TBN);

    return bumpedNormalW;
}

私が間違っている可能性があることについてのアイデアはありますか?

4

1 に答える 1

3

わかりました、私はそれを修正しました。間違った座標空間で通常の計算を行っていました。簡単にするために、すべてをモデル空間で行うことにしました。それは素晴らしいですね。残念ながら、スクリーン ショットを投稿することは許可されていません。

ミロシュマキさん、ありがとうございます....

于 2013-02-21T22:30:04.130 に答える