Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 何时将切线空间转换为世界空间(使用法线贴图除外)?_Math_Opengl_Graphics - Fatal编程技术网

Math 何时将切线空间转换为世界空间(使用法线贴图除外)?

Math 何时将切线空间转换为世界空间(使用法线贴图除外)?,math,opengl,graphics,Math,Opengl,Graphics,我正在学习OpenGL。我知道如何将法线(从法线贴图中采样)从切线空间转换到世界空间,以及为什么在中需要这样做 但在中,它再次将向量从切线空间变换到世界空间 float sampleDelta=0.025; 浮点数=0.0; 对于(浮点数phi=0.0;phi

我正在学习OpenGL。我知道如何将法线(从法线贴图中采样)从切线空间转换到世界空间,以及为什么在中需要这样做

但在中,它再次将向量从切线空间变换到世界空间

float sampleDelta=0.025;
浮点数=0.0;
对于(浮点数phi=0.0;phi<2.0*PI;phi+=sampleDelta)
{
对于(浮点θ=0.0;θ<0.5*PI;θ+=采样增量)
{
//球面到笛卡尔坐标(在切线空间中)
vec3=vec3(sin(θ)*cos(φ),sin(θ)*sin(φ),cos(θ));
//与世界相切的空间
vec3 sampleVec=tangentSample.x*right+tangentSample.y*up+tangentSample.z*N;
辐照度+=纹理(环境贴图,采样向量).rgb*cos(θ)*sin(θ);
nr++;
}
}
此时我不知道为什么我们需要变换
sample
向量

此外,在中,它还将
ImportanceSampleGGX
中的
sampleVector
从切线空间转换到世界空间

当我们从球坐标到笛卡尔坐标时,似乎需要将一个向量从切线空间转换到世界空间?

  • 首先,我们从一个矢量开始,该矢量使用球坐标系表示远离曲面的方向
  • 要采样的纹理是一个环境贴图,它是世界坐标中的笛卡尔向量(因为立方体贴图中的图像的排列方式是向上/向前/向左等与世界中的等效方向相对应)
  • 没有任何有意义的方法来比较球面坐标向量和笛卡尔坐标向量,所以需要将其转换为笛卡尔坐标,这样就可以在切线空间中得到一个向量
  • 这个3D向量仍然与立方体贴图不在同一空间(这意味着使用它进行采样可能会返回完全错误方向的像素),因此我们需要再次将其转换为世界空间,以便我们可以从地图中采样
您的问题的基本答案是切线空间和世界空间无法进行比较并产生有意义的结果,因此,如果切线空间中有向量,则必须对其进行转换
  • 首先,我们从一个矢量开始,该矢量使用球坐标系表示远离曲面的方向
  • 要采样的纹理是一个环境贴图,它是世界坐标中的笛卡尔向量(因为立方体贴图中的图像的排列方式是向上/向前/向左等与世界中的等效方向相对应)
  • 没有任何有意义的方法来比较球面坐标向量和笛卡尔坐标向量,所以需要将其转换为笛卡尔坐标,这样就可以在切线空间中得到一个向量
  • 这个3D向量仍然与立方体贴图不在同一空间(这意味着使用它进行采样可能会返回完全错误方向的像素),因此我们需要再次将其转换为世界空间,以便我们可以从地图中采样

  • 您的问题的基本答案是切线空间和世界空间无法进行比较并产生有意义的结果,因此,如果切线空间中有向量,则必须对其进行转换

    您好,您能否解释一下“球面坐标是垂直于对象法线的平面中的二维坐标”?对不起,我写这篇文章的时候很累,把球坐标和纹理坐标混在一起了。球坐标不是二维的,它们是完全不同的坐标系。你好,你能解释一下“球坐标是垂直于物体法线的平面上的二维坐标”吗?对不起,我写这篇文章时很累,把球坐标和纹理坐标混在一起了。球坐标不是二维的,它们是完全不同的坐标系。