1

太陽の位置とオブジェクトに反射する光をシミュレートするシェーダーを作成しようとしています。

太陽の軌道をシミュレートするためにタイマーがあり、ライトの位置は次のように定義されます。

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

タイマーは変数ですfloat Time0_X

逆さまになっていることを除いて、ほぼ正しい軌道が得られ、どういうわけか少し奇妙に見えます。太陽の軌道を正しい方法でシミュレートする方法を教えてもらえますか?

RenderMonkey を使用してシェーダーを作成しています。

4

1 に答える 1

1

からラジアン (それぞれ 0 度と 180 度に対応)の間に収まるTimeように値をスケーリングしてください。元の値の範囲が からある数値の場合、次のようにスケーリングを行うことができます。02*PITime0MAX(Time / MAX) * 2PI

が何speedを指しているのかはわかりませんが、おそらくそれを掛けるべきではありません。cosとのsin値は、太陽と原点の間のベクトルの X 成分と Y 成分を表すため、シーンの中心から太陽までの距離 (通常は一定) を掛ける必要があります。

于 2011-01-22T21:58:55.917 に答える