1

我正在尝试制作一个模拟太阳位置及其在物体中反射的光的着色器。

为了模拟太阳轨迹,我有一个计时器,光线位置由以下定义:

fvLightPosition.x=-cos(Time)*speed;
fvLightPosition.y=sin(Time)*speed;
fvLightPosition.z=100.0;

定时器是一个变量float Time0_X

我几乎得到了正确的轨迹,只是它是颠倒的,而且看起来有点奇怪。谁能给我一个提示如何以正确的方式模拟太阳轨迹?

我正在使用 RenderMonkey 来制作着色器。

4

1 回答 1

1

确保缩放Time值,使其位于02*PI弧度之间(分别对应于 0 度和 180 度)。如果您的原始Time值范围从0到某个数字MAX,您可以像这样进行缩放:(Time / MAX) * 2PI.

我不确定speed指的是什么,但你很可能不应该乘以那个。cos和值表示太阳和原点之间矢量的sinX 和 Y 分量,因此您应该乘以太阳到场景中心的距离,该距离通常是常数。

于 2011-01-22T21:58:55.917 回答