[12] With light, it becomes more beautiful


A 3D scene becomes truly captivating with light. Our eyes are accustomed to objects interacting with the light in their environment, creating shadows and different shades of light, even if the object itself has only one color. Our brains instinctively seek out this diversity of light and shadow when observing a 3D scene, often without conscious awareness. Sometimes, we even consciously seek out these effects in simulated reality.

Surprisingly, implementing a simple light turned out to be more complex than anticipated. By "simple," I mean a light shining directly onto the object from a specific direction, akin to the sun in our scene. Shadows are not yet present, but we can move the light, which affects the illumination and consequently the shading of the objects.

What else has been going on?

Besides experimenting with light and implementing directed light, I have restructured the management of objects. Initially, the object manager was responsible not only for creating objects but also for their rotation and movement. I have now shifted this responsibility to the individual objects. This means that a mesh object, which also includes data for position and rotation, is also responsible for movement. Additionally, the mesh comprises the surface object, representing memory that stores information about vertices and indices. Now, the surface object is responsible for rendering. This restructuring has led to a cleaner Render Manager and improved readability of the code within it. Specifically, the Render Manager retrieves the first object from the object manager and iterates through all objects, calling their functions until it reaches the last object of the surface class, which then invokes the DirectX Draw method.


Eine 3D-Szene wird erst richtig interessant mit Licht. Unser Auge ist daran gewöhnt, dass Objekte mit dem Licht ihrer Umgebung interagieren. Dadurch entstehen Schatten und unterschiedliche Schattierungen des Lichts, obwohl das Objekt nur eine Farbe hat. Die Vielfalt an Licht und Schatten sucht unser Gehirn, wenn es sich eine 3D-Szene anschaut, oft unbewusst. Manchmal suchen wir sogar bewusst nach diesen Effekten in der simulierten Realität.

Überraschenderweise war es aufwendiger als gedacht, ein einfaches Licht zu implementieren. Mit "einfach" meine ich jetzt ein Licht, das von einer bestimmten Seite gerade auf das Objekt scheint. Das ist sozusagen die Sonne in unserer Szene. Schatten gibt es noch nicht, aber wir können das Licht bewegen, und das beeinflusst die Beleuchtung und damit auch die Schattierung der Objekte.

Was hat sich noch getan

Neben den Experimenten mit Licht und der Implementierung von gerichtetem Licht habe ich die Verwaltung der Objekte umgestellt. Ursprünglich war der Objektmanager neben der Erstellung der Objekte auch für deren Rotation und Bewegung verantwortlich. Diese Verantwortung habe ich nun auf die einzelnen Objekte verschoben. Das bedeutet, dass ein Mesh-Objekt, das auch die Daten für die Position und Rotation beinhaltet, auch für die Bewegung verantwortlich ist. Das Mesh besteht außerdem aus dem Surface-Objekt, das einen Speicherplatz repräsentiert und die Informationen über die Vertices und den Index speichert. Jetzt ist das Surface-Objekt verantwortlich für das Rendern. Diese Umgestaltung hat dazu geführt, dass der Rendermanager jetzt aufgeräumter ist und der Code im Rendermanager besser lesbar ist. Konkret bedeutet das, dass der Rendermanager sich vom Objektmanager das erste Objekt holt und durch alle Objekte iteriert, um deren Funktionen aufzurufen, bis zum letzten Objekt der Surface-Klasse, die dann die DirectX-Methode Draw aufruft.

Leave a comment

Log in with itch.io to leave a comment.