Frage

Ich versuche einen Shader zu machen, der die Sonnenposition und das Licht simuliert, das sie in einem Objekt reflektiert.

Um die Sonnenbahn zu simulieren, habe ich einen Timer, und die leichte Position wird definiert durch:

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

Der Timer ist eine Variable float Time0_X

Ich bekomme fast die richtige Flugbahn, außer dass das verkehrt herum ist und irgendwie etwas komisch aussieht. Kann mir jemand einen Tipp geben, wie ich die Sonnenbahn auf die richtige Weise simulieren kann?

Ich benutze Rendermonkey, um den Shader zu machen.

War es hilfreich?

Lösung

Stellen Sie sicher, dass Sie Ihre skalieren Time Wert so, dass es dazwischen liegt 0 und 2*PI Radians (was 0 bzw. 180 Grad entspricht). Wenn Ihr Original Time Wertbereiche von 0 zu einer Reihe MAX, Sie können die Skalierung wie diese machen: (Time / MAX) * 2PI.

Ich bin mir nicht sicher was speed Bezieht sich auf, aber Sie sollten sich höchstwahrscheinlich nicht mit dem multiplizieren. Das cos und sin Die Werte repräsentieren die x- und y -Komponenten des Vektors zwischen Sonne und Ursprung, sodass Sie sich mit dem Abstand der Sonne von der Mitte Ihrer Szene vermehren sollten, was normalerweise konstant ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top