Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

13.11.2009, 13:22

Funktionsweise raytracing

Hallo,

ich habe hier einen kleinen Ausschnitt aus einem Paper, bei dem ich ein paar Sachen nicht so ganz verstehe:

Zitat

Let’s assume we have already loaded a description of our
polygonal model into an internal database. We are only interested
in point sampling the world using a raytracer, so all we need is a
list of vertices, normals and triangles. First we process the vertexnormal
pairs into a set of unique “lighting points” by duplicating
vertices with multiple normals and concatenating vertices that are
shared across smooth surfaces (this can be done very quickly
using an STL map).


1) Was ist mit diesen lighting points gemeint? Ein raytracer schießt ja Strahlen in eine Szene und bekommt pro Strahl eine Farbe zurück, die dann irgendwo angezeigt wird. Ist das damit gemeint?

2) Wie können Vertizes mehrere Normalen haben und warum werden sie duplziert?

3) Warum konkateniert man die Verizes weicher Flächen bzw. warum konkateniert man keine harten Übergänge?

Ich hoffe, jemand der da etwas mehr Erfahrung hat, kann es ohne weiter Informationen beantworten, ansonsten kann ich die noch nachreichen ;)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

13.11.2009, 16:02

Also ein Vertex kann mehrere Normalen haben. Stell dir dazu einfach mal einen Würfel vor, den du mittels Indexbuffer erzeugst. Dann ist doch jede Ecke mit 3 Flächen verbunden.
Und da man ja Normalen für die Fläche haben will und nicht für Vertices, muss man sie vermehren, damit sie unabhängig sind.

Ich muss aber zugeben, dass ich mich noch nicht eingehend mit Ray Tracer beschäftigt habe, geschweige denn einen Implementiert, aber ich hoffe dir hilft das jetzt ein wenig.

carli

unregistriert

3

13.11.2009, 17:02

da stehts doch schwarz auf weiß:

Zitat

First we process the vertexnormal
pairs into a set of unique “lighting points”

Vertices und Normalen treten immer paarweise auf und für ein Triangle immer eindeutig.
Dein Raytracer wird also ein Ray-Intersect mit einem Triangle abfragen, also hast du für jeden der 3 Punkte einen Vertex und eine Normale gegeben, der Rest sollte klar sein.

Noch eine kleine Faustregel:
- wenn du spitze Gegenstände zeichnest, hat ein Triangle eine Normale und die Vertices soviele Normalen, wie Triangles anliegen
- wenn du weiche Gegenstände hast, hat ein Triangle 3 Normalen, d.H. jeder Vertex hat genau eine Normale, die er mit allen anliegenden Triangles teilt.

Werbeanzeige