Opengl Skydome豪华版和阳光运动版

Opengl Skydome豪华版和阳光运动版,opengl,glsl,Opengl,Glsl,我已尝试在我的学校项目中采用以下代码: 但我不理解太阳的统一价值观。不管我怎么设置,太阳的移动都很奇怪,有时似乎慢了下来。它说这个值是“太阳在世界空间中的位置”,但我看不出它是真的。我需要帮助理解我应该如何操纵该值,使太阳真实地在天空中移动。如果查看顶点着色器,则正在对太阳进行规格化 sun_norm = normalize(sun_pos); 这意味着,无论你增加多少Y位置,它都是相同的向量 在这种情况下,使用一对欧拉角(航向、俯仰)调整太阳方向更有意义 可以使用以下公式将两个Euler角

我已尝试在我的学校项目中采用以下代码:


但我不理解太阳的统一价值观。不管我怎么设置,太阳的移动都很奇怪,有时似乎慢了下来。它说这个值是“太阳在世界空间中的位置”,但我看不出它是真的。我需要帮助理解我应该如何操纵该值,使太阳真实地在天空中移动。

如果查看顶点着色器,则正在对太阳进行规格化

sun_norm = normalize(sun_pos);
这意味着,无论你增加多少Y位置,它都是相同的向量

在这种情况下,使用一对欧拉角(航向、俯仰)调整太阳方向更有意义

可以使用以下公式将两个Euler角度转换为方向向量

x = cos(pitch) * cos(heading)
y = sin(pitch)
z = cos(pitch) * sin(heading)

关于“太阳在世界空间中的位置”,你们到底不明白什么?那个位置应该是什么?如果我有一个设置为0.0的3d向量,然后每帧将每个分量增加0.001,那么太阳根本不会移动。我想如果我将Y从0增加到1,每帧0.001,太阳实际上会移动,但它不会。因此,我怀疑这根本不是位置,而是某种我无法理解的奇怪的旋转。我不打算深入研究这个代码,而是关于太阳的。它太远了,你可以把它看成是轻圆柱体。如果你想把它画成一个圆,那么它的位置最好用极坐标系来表示。