点光源阴影映射中glm::lookAt函数上向量的确定疑问
点光源深度立方体贴图阴影中glm::lookAt上向量的疑问
我正在实现基于深度立方体贴图的点光源阴影,参考教程使用1个透视矩阵和6个视图矩阵完成光源空间变换,教程中的6个视图矩阵代码如下:
std::vector<glm::mat4> shadowTransforms; shadowTransforms.push_back(shadowProj * glm::lookAt(lightPos, lightPos + glm::vec3( 1.0, 0.0, 0.0), glm::vec3(0.0,-1.0, 0.0)); shadowTransforms.push_back(shadowProj * glm::lookAt(lightPos, lightPos + glm::vec3(-1.0, 0.0, 0.0), glm::vec3(0.0,-1.0, 0.0)); shadowTransforms.push_back(shadowProj * glm::lookAt(lightPos, lightPos + glm::vec3( 0.0, 1.0, 0.0), glm::vec3(0.0, 0.0, 1.0)); shadowTransforms.push_back(shadowProj * glm::lookAt(lightPos, lightPos + glm::vec3( 0.0,-1.0, 0.0), glm::vec3(0.0, 0.0,-1.0)); shadowTransforms.push_back(shadowProj * glm::lookAt(lightPos, lightPos + glm::vec3( 0.0, 0.0, 1.0), glm::vec3(0.0,-1.0, 0.0)); shadowTransforms.push_back(shadowProj * glm::lookAt(lightPos, lightPos + glm::vec3( 0.0, 0.0,-1.0), glm::vec3(0.0,-1.0, 0.0));
我理解glm::lookAt的工作原理,但对其中上向量的确定存在疑问:比如第一个lookAt的最后一个参数为什么是(0,-1,0)而非(0,1,0)?
我尝试使用其他上向量组合,例如:
(0,1,0) (0,1,0) (1,0,0) (1,0,0) (0,1,0) (0,1,0)
但运行出现错误。我查询得到的答案与教程相反:
glm::vec3 upVectors[6] = { glm::vec3(0.0, 1.0, 0.0), // 右 glm::vec3(0.0, 1.0, 0.0), // 左 glm::vec3(0.0, 0.0, -1.0), // 上 glm::vec3(0.0, 0.0, 1.0), // 下 glm::vec3(0.0, 1.0, 0.0), // 远 glm::vec3(0.0, 1.0, 0.0) // 近 };
我想知道,这是否意味着必须遵循教程中的既定上向量,还是有其他背后的原因?
内容的提问来源于stack exchange,提问作者abirdlikefish
相关产品推荐
相关产品推荐

