Licht ohne Normalen?
-
Ich bin grade auf etwas gestoßen, was ich mir nicht erklären kann. Ich render in Managed DX einen Würfel. Dessen Vertices besitzen lediglich eine Position und Texturkoordinaten. Gerendert wird so:
device.SetTexture(0, textureCube); device.VertexFormat = CustomVertex.PositionTextured.Format; device.Transform.World = Matrix.Scaling(0.7f, 0.7f, 0.7f) * Matrix.Translation(0, 0.7f, 0); device.DrawUserPrimitives(PrimitiveType.TriangleList, 12, vCube);Dennoch wird der Würfel von einem Spotlicht beleuchtet! Ich dachte Normalenvektoren sind eine zwingende Voraussetzung, damit Beleuchtungen überhaupt durchgeführt werden können (was ja auch logisch ist). Wie kann es sein, dass diese Vertices dennoch ohne Normalen beleuchtet werden?

-
Wieso sollten Normalen unbedingt nötig sein? Ob das Ergebnis sinnvol sein kann. ist natürlich eine andere Frage.
Bye, TGGC (Das Jahr des Helden)
-
Wie soll Beleuchtung ohne Normalen funktionieren?
-
interpreter schrieb:
Wie soll Beleuchtung ohne Normalen funktionieren?
Na einfach 'nen Licht<->Vertex-Sichtbarkeitstest

-
Vielleicht wird dann einfach der Dreiecksnormalenvektor genommen. Den kann man ja berechnen.
-
@Sgt. Nukem: Damit sind keine Beleuchtungen möglich.
@TomasRiker: Ja. Die einzige Möglichkeit wäre es, aus den Normalenvektoren aller angrenzenden Dreiecke den "Mittelwert" zu bilden und dann diesen Vektor für die Berechnungen durchzuführen. Kann ich mir jedoch nicht vorstellen das das die Runtime so macht; es wäre ja unglaublich rechenintensiv
Naja, ich werde wohl nie hinter den wirklichen Grund dieses Phänomens kommen
-
Nö, man könnte auch einfach zufällige Normalen nehmen. Oder Lichtberechnungen, für die man keine Normalen braucht.
Bye, TGGC (Das Jahr des Helden)
-
interpreter schrieb:
@Sgt. Nukem: Damit sind keine Beleuchtungen möglich.
Sicher nicht das was DU Dir unter "Beleuchtung" vorstellst. Aber generell schon.
Aber das Spotlight hast Du schon selbst gesetzt?
Und Du redest nicht zufällig von den Vertex-Farben?!
-
Achja, das schreibt übrigens die DX-Doku dazu:
Lighting State
--------------------------------------------------------------------------------
If you do not light with a vertex shader or a pixel shader, you may choose to use the lighting engine in the runtime. The lighting engine requires that the vertex data contains per-vertex normals; vertices without normal data will generate a dot product of zero in all lighting computations.
:p :xmas1:
-
Woraus nicht folgt, dass dunkel ist. Nur um es zu betonen.
Bye, TGGC (Das Jahr des Helden)
-
Ich schließe den Fall einfach mit "zufälligerweise kam eine einigermaßen realistische Beleuchtung heraus" ab. Spätestens ab D3D10 muss mich sowas ja nicht mehr kümmern
