Echtzeit-Raytracing

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Ja, öffne mal die datei mit dem Notepad, du hast die Tripod fehlerseite
> runtergeladen

gniii, bin ich auf den alten Trick reingefallen. :oops:

Danke für den Tipp!

Grüße ... Kiffi
Benutzeravatar
benny
Beiträge: 383
Registriert: 29.08.2004 09:18
Wohnort: Am Ende des www's
Kontaktdaten:

Beitrag von benny »

@NTQ:

Sauber ... respekt :!: Sieht gut aus :!:
So long,
benny!
.
nur t0te f1sche schw1mmen m1t dem str0m - 00100 !
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von NicTheQuick »

Danke für das Lob. :allright: :)

Ich hab eben in Geschichte die Ansätze für Zylinder und Kegel in vektorieller Darstellung entworfen. Dann kann man so langsam schon richtig lustige Sachen zusammensetzen. Aber dafür mache ich dann die Engine als Userlib und lasse die User mal ein paar Sachen entwerfen.

Bis dahin dauert es aber sicherlich noch eine Weile.

Ansonsten bin ich auch schon mit der Formel für die Lichtbrechung schon weitergekommen. Normalerweise kennt sie jeder als [c]sin(alpha) / sin(beta) = n [Brechungszahl][/c]. Meine besteht mittlerweile nur noch aus Vektoren, was später wesentlich schneller zu berechnen ist.

Ansonsten kommt die Engine bisher mit gerade mal 8 Winkelfunktionen pro Frame aus. Und wenn sich die Kameraposition nicht ändert, werden diese noch nicht mal neu gerechnet, sondern die zuvor gespeicherten benutzt.

Ich wollte sowieso mal austesten, was momentan am längsten braucht. Das Tracen oder das Plotten. Wenn ich den Rekursionsfaktor höher setze, wird die Engine nämlich nicht mehr sonderlich langsamer, also man merkt es kaum, außer man geht in die Extremen rein, aber die sieht man ja sowieso nicht.

Weitere Features:
  • Bei Dreiecken kann man für jede Ecke eine eigene Farbe, eigene Transparenz und eigene Reflektionsstärke angeben. Das sieht man unter anderem bei dem Beispiel RayTracer2b.exe
  • Bei Reflektionen wird die Farbe des reflektierenden Objektes berücksichtigt. So sieht zum Beispiel eine rote Kugel, die sich in einer blauen Ebene spiegelt als Spiegelbild in dieser nur schwarz aus, weil die Ebene dann eben nur das blaue Licht reflektiert.
  • Ähnlich wie bei den Reflektionen wird es sich später auch mit dem Licht verhalten. Eine rote Kugel kann durch ein blaues Licht nicht beleuchtet werden, bleibt also schwarz.
  • Einfaches Erstellen von Kugeln, Dreiecken, Linien, Punkten, Dreiecken
  • Automatische Objektverwaltung
  • Verschieben von Objekten
  • Funktion für die Rückgabe der Farbe an einem beliebigen Punkt auf dem Bildschirm innerhalb der zuvor gesetzten Grenzen
  • Vermeidung von Divisionen, stattdessen Multiplikationen mit bei der Initialisierung vorberechneten Kehrwehrten
  • Sichtfeld (FOV) der Kamera einstellbar
  • Keine Sichtweitenbegrenzung, da rechenaufwändiger und daher langsamer
  • Ausgabe aus mehreren Kameraperspektiven (Beispiel folgt)
...mehr fällt mir gerade nicht ein. Aber das kommt dann sicherlich mal mit der Hilfe und der Userlib alles zusammen.

Hat noch jemand Fragen?
Oder wünscht sich noch jemand etwas, was nicht auf meiner ToDo-Liste steht?
Bild
Norbie
Beiträge: 134
Registriert: 29.08.2004 12:45
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von Norbie »

Langsam sieht das wirklich nach etwas Sinnvollem aus!
Wirklich cool! :allright:
http://www.nevu.de/ Künstliche Intelligenz, die letzte Herausforderung!
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

NicTheQuick hat geschrieben:Hat noch jemand Fragen?
Oder wünscht sich noch jemand etwas, was nicht auf meiner ToDo-Liste steht?
Ich würde gerne mal ein ganz einfaches Standardbild mit
ein paar Kugeln sehen.

Dein RayTracer2b sieht bei mir so aus:
Bild
Ich weiß nicht ob das so gewollt ist.

Ein einfaches Standardbild mit Kugeln wäre z.B. so:
Bild

Komplexer dann so:
Bild
Bild Bild
(aus 3D-Computergrafik von Alan Watt)


Ich würde mir also mal ein einfaches Standardbild wünschen,
so daß man die Qualität Deines Raytracers sehen kann.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von NicTheQuick »

@Danilo:
Wahrscheinlich hast du es überlesen, aber ich habe eben noch keine Licht eingebaut. Dadurch gibt es weder Schatten, diffuses Licht noch Abstufungen von Helligkeiten.

Der Screenshot von meinem Programm ist also schon richtig so.

Aber für die maximal 20 - 24 Stunden Arbeit, die dahinter stecken, funktioniert alles schon relativ gut, nur das schönste fehlt eben noch: Licht.

Außerdem ist es momentan noch etwas fraglich, ob ich an die Leistung von geläufigen Renderprogrammen rankomme. Dazu fehlt es mir nun wirklich an Fachwissen. Meines für dieses Programm besteht nur einem Matheskript für die Oberstufe. Der Rest ist abgeleitet.

Wenn es mal schwieriger wird, muss ich wohl mal bei ein paar Leuten aus der UNI Saarbrücken nachhaken. :wink:
Bild
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

NicTheQuick hat geschrieben:@Danilo:
Wahrscheinlich hast du es überlesen, aber ich habe eben noch keine Licht eingebaut.
Yo, hab ich wohl überlesen. Ich sah nur das Du eine super UserLib
daraus machen willst und habe mir deshalb mal kurz angeschaut was Du
so bieten willst.
Dachte schon demnächst kommen etliche freie Clones der großen
und kommerziellen Programme dafür auf den Markt - geschrieben mit PB. :)
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von NicTheQuick »

Ich finde das Prinzip von Raytracing so simpel.
Man braucht allerdings einiges an Mathekenntnissen, wenn man von Null damit anfangen will und keine fertigen Kollisionsroutinen irgendwo klauen will.

Und da ich momentan sowieso nicht weiß, was ich noch sinnvolles programmieren könnte, habe ich mich mal damit befasst. Vielleicht will das ja auch jeder fortgeschrittene Programmierer auch mal selbst ausprobieren und coden.

Wenigstens habe ich eben noch ein 36-Seitiges PDF bei Google gefunden, bei dem genau erklärt wird, wie man welche Farben unter Berücksichtigung welcher Winkel und welchen Materials ausrechnet und miteinanander verknüpft. Jetzt wird das mit dem Licht ein Klacks.

Aber ich hatte mir schon während dem Durchlesen vorgenommen, fast alles nochmal neu zu coden. So viel ist es ja bis jetzt noch nicht.

Wenn ich heute abend zu hause bin, setze ich mich mal schnell dran und bau das alles ein. Da ich schon theoretisch alles vorgearbeitet habe, sollte das relativ schnell zu coden sein.

Weitere Objekte, die schon auf dem Blatt fertig sind:
  • Zylinder
  • Rohr
  • Rohr mir Wandstärke
Ich bin übrigens noch am überlegen, ob ich selbst definierbare Objekte mit einbauen soll, die dann über Callbacks erkannt und berechnet werden.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von NicTheQuick »

Okay.

Es gibt wieder einen Fortschritt oder eher Neuanfang.

Ich hab den Raytracer jetzt nämlich komplett neu gecodet. Jetzt ist auch Licht dabei und das Resultat lässt sich jetzt schon eher sehen.

Bild
(klicken um herunterzuladen)

Alternativ-Link: http://mitglied.lycos.de/NicTheQuick1986/Forum/012/
Bild
Norbie
Beiträge: 134
Registriert: 29.08.2004 12:45
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von Norbie »

Wow, dass sieht echt stark aus! :o
Könntest du mal ein Beispielbild mit silbernen Kugeln machen?
Die aktuelle Farbe wirkt merkwürdig!
Das einzige was dann noch fehlt, ist Anti-Aliasing :allright:
http://www.nevu.de/ Künstliche Intelligenz, die letzte Herausforderung!
Antworten