小编Rux*_*ify的帖子

OpenGL 法线贴图问题 - 法线可能面向错误方向?

我目前正在开发我的第一个基于 OpenGL 的游戏引擎。我需要法线贴图作为一项功能,但它无法正常工作。

这是正在发生的事情的动画

伪影受到光线与表面法线之间的角度的影响。相机移动不会以任何方式影响它。我也(至少现在)采用效率较低的方法,将从法线贴图中提取的法线转换为视图空间,而不是将所有内容转换为切线空间。

以下是我的代码的相关部分:

生成切线和双切线

        for(int k=0;k<(int)mb->getIndexCount();k+=3)
        {
            unsigned int i1 = mb->getIndex(k);
            unsigned int i2 = mb->getIndex(k+1);
            unsigned int i3 = mb->getIndex(k+2);

            JGE_v3f v0 = mb->getVertexPosition(i1);
            JGE_v3f v1 = mb->getVertexPosition(i2);
            JGE_v3f v2 = mb->getVertexPosition(i3);

            JGE_v2f uv0 = mb->getVertexUV(i1);
            JGE_v2f uv1 = mb->getVertexUV(i2);
            JGE_v2f uv2 = mb->getVertexUV(i3);

            JGE_v3f deltaPos1 = v1-v0;
            JGE_v3f deltaPos2 = v2-v0;
            JGE_v2f deltaUV1 = uv1-uv0;
            JGE_v2f deltaUV2 = uv2-uv0;

            float ur = deltaUV1.x * deltaUV2.y - deltaUV1.y * deltaUV2.x;

            if(ur != 0)
            {
                float …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glsl normals

5
推荐指数
1
解决办法
1373
查看次数

标签 统计

c++ ×1

glsl ×1

normals ×1

opengl ×1