Unterschied Rendering in Ogre/Purebasic zu "fotorealistischen" Programmen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Beefi
Beiträge: 88
Registriert: 16.01.2017 17:38

Unterschied Rendering in Ogre/Purebasic zu "fotorealistischen" Programmen

Beitrag von Beefi »

Hi zusammen,

ich wusste leider nicht so genau, wie ich den Titel nennen soll...
Was 3D-Programmierung mit Purebasic betrifft, habe ich schon einiges an Erfahrung, würde ich zumindest behaupten :)
Wegen ganz anderen Hobbyaktivitäten (CAD-Konstruktion) beschäftige ich mich aktuell mit Rendering-Lösungen, um CAD-Zeichnungen fotorealistisch darzustellen.
Um hier Beispiele zu nennen: CAD Rays, KeyShot, Blender, POV Render, AppleSeed, Luxcore, usw...

Hier kam mir nun die Frage auf (der Grund des Themas), was ist genau der Unterschied zwischen einer 3D-Szene erstellt in Purebasic und einem der oben genannten Programme? Was mich gedanklich beschäftigt...wenn ich z.B. eine Schraube (gezeichnet in CAD) in hoher Auflösung als Mesh in einer PureBasic-Szene importiere, entsprechend Material/Texturen und Licht setze, dann müsste doch etwas vergleichbares herauskommen, oder nicht?
Als Hauptqualitätsmerkmal einer 3D-Szene, sah ich bisher immer die Anzahl der Dreiecksnetze bzw. die Auflösung des Meshes und eben die Auflösung/Qualität der Texturen.
Oder bin ich hier völlig auf dem Holzweg? :mrgreen:

Über eine kleine Diskussion würde ich mich sehr freuen <)
VG Andi
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
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:

Re: Unterschied Rendering in Ogre/Purebasic zu "fotorealistischen" Programmen

Beitrag von NicTheQuick »

Du bist da auf dem richtigen Weg. Was die 3D-Szene selbst anbelangt, gibt es da nicht so viele Unterschiede.

Die Fotorealismus ist der eigentliche Unterschied. Der funktioniert technisch am "einfachsten" durch Raytracing statt durch Rasterung. Man kann zwar mit letzterem sehr nahe ans Raytracing kommen, aber dafür muss man sich sehr gut mit Shadern auskennen und generell sehr auf die Materialien und Texturen achten, die man an ein 3D-Mesh klebt.

Das ist aber insgesamt so ein riesen Thema, da liest du dich besser in vorhandene Erklärungen ein oder schaust dir ein paar erklärende Youtube-Videos dazu an.
Bild
Beefi
Beiträge: 88
Registriert: 16.01.2017 17:38

Re: Unterschied Rendering in Ogre/Purebasic zu "fotorealistischen" Programmen

Beitrag von Beefi »

Ok, hmm...ich dachte eigentlich immer, dass das Rendering im Ogre bzw. in einer 3D-Engine grundsätzlich immer mit Raytracing funktioniert.
Also simpel ausgedrückt, hat ja jede Fläche ihre Normale, die entsprechend die verschiedenen "Lichtstrahlen" ablenkt/reflektiert.
Da gibts ja glaub ich von PureBasic auch so ein Raytracing-Beispiel mit einer Strahlenverfolgung. Ich dachte immer, alles was man sieht und vor allem wie man es sieht (Farben, Schatten, Spiegelungen, usw.) basiert ausschließlich auf so einer Raytracing-Berechnung.

Nebenbei:
Du weißt nicht zufällig, ob man EXR-Bilddateien in PureBasic als Textur laden, oder? Also laut Referenz gehts nicht, aber vielleicht gibts ja einen Trick :mrgreen:
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Unterschied Rendering in Ogre/Purebasic zu "fotorealistischen" Programmen

Beitrag von STARGÅTE »

Beefi hat geschrieben: 13.08.2022 12:50 Ok, hmm...ich dachte eigentlich immer, dass das Rendering im Ogre bzw. in einer 3D-Engine grundsätzlich immer mit Raytracing funktioniert.
Nein. Raytracing (oder Pathtracing) heißt, dass "Sehstrahlen" von der Kamera in die Szene geschickt werden und dann an Oberflächen verschiedene Interaktionen erfahren und so dem jeweiligen Bildpixel eine entsprechende Farbe geben. Nur hier sind Sachen wie spiegelnde Oberflächen möglich.
Beim klassischen Rendering (oder Rasterisierung) werden hingegen die Oberflächen von Objekten "stur" auf den Bildschirm gezeichnet. Deren aussehen wird nur von verschiedenen Textur-Maps beeinflusst welche im besten Fall auch noch Lichtquellen berücksichtigen, aber sich keinesfalls gegenseitig beeinflussen (außer im z-Buffer). Wie Nic schrieb müssen hier verschiedene Tricks verwendet werden um Raytracing nachzuahmen (Phong Shading, Ambient Occlusion, Screen Space Reflections, ...)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Beefi
Beiträge: 88
Registriert: 16.01.2017 17:38

Re: Unterschied Rendering in Ogre/Purebasic zu "fotorealistischen" Programmen

Beitrag von Beefi »

Ah, ich verstehe...kurz gesagt, beim klassischen Rendering könnte man keine polierte Kugel erzeugen, die zugleich die Umgebung bzw. andere Meshes/Texturen spiegelt oder reflektiert?
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Unterschied Rendering in Ogre/Purebasic zu "fotorealistischen" Programmen

Beitrag von STARGÅTE »

Richtig. Klar gibt's es dort auch Tricks wie zusätzliche Kameras, deren Bilder auf die Textur gerendert werden, oder eben halt das Screen-Space-Reflection, wo zumindest alle "sichtbaren" Objekte auch in der Kugel zu sehen währen, aber eben keine "komplette" Lösung
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Beefi
Beiträge: 88
Registriert: 16.01.2017 17:38

Re: Unterschied Rendering in Ogre/Purebasic zu "fotorealistischen" Programmen

Beitrag von Beefi »

Das gibts ja nicht...ich hab schon so viel mit der 3D-Engine und Materialien rumgespielt und mir ist das noch nie aufgefallen :lol:
Es macht auf den Bediener schon viel aus, wenn das Licht (ohne Bildinformation) richtig bzw. realwirkend reflektiert wird.

Dann noch abschließend eine Frage...im Jahr 2019 hat Ogre eine sogenannte Voxel Cone Tracing Technik präsentiert, die wohl annähernd an Raytracing herankommt. Ist diese Technik in Purebasic verfügbar?
Hier der Link zu meiner Info: https://www.ogre3d.org/2019/08/05/voxel ... #more-4076
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Unterschied Rendering in Ogre/Purebasic zu "fotorealistischen" Programmen

Beitrag von Mijikai »

Aus dem englischen Forum evtl. interessant.

Raytracing Tutorial PB:
https://www.purebasic.fr/english/viewto ... it=Tracing

Sehr einfaches Raymarching Beispiel PB:
https://www.purebasic.fr/english/viewto ... 61#p564161

Sonstiges:

Beste Website für Shader:
https://www.shadertoy.com

Ein Video von BeRo von Farbrausch zu ConeTracing (Demo Scene):
https://www.youtube.com/watch?v=13su6WkDZSw

BeRo's Demo:
https://youtu.be/gY0IAnybDm0?t=536

Edit: Gleiche Demo aber auf BeRo's Kanal:
https://www.youtube.com/watch?v=bA1Cf1bcg_Q
Zuletzt geändert von Mijikai am 14.08.2022 13:16, insgesamt 1-mal geändert.
Beefi
Beiträge: 88
Registriert: 16.01.2017 17:38

Re: Unterschied Rendering in Ogre/Purebasic zu "fotorealistischen" Programmen

Beitrag von Beefi »

Danke für die Links, das guck ich mir heut mal in Ruhe an :allright:

Ich habe gerade mal schnell ein paar 3D-Beispiele von PureBasic durchgeklickt. Bei zwei Stück davon "CubeMapping.pb" und "Material2.pb" sind Spiegelungen der Umgebung sichtbar.

Wird hier die Skybox reflektiert?
Bild


Was wird hier genau am Torus reflektiert? Die Textur bewegt sich nicht exakt mit dem Torus mit. Es wurde das Attribut "EnvironmentMap" auf das Material gelegt.
Bild
Beefi
Beiträge: 88
Registriert: 16.01.2017 17:38

Re: Unterschied Rendering in Ogre/Purebasic zu "fotorealistischen" Programmen

Beitrag von Beefi »

Hi Leute,

ich habe aus dem CubeMap-Material was kleines gebastelt, um es mal in höherer Qualität zu betrachten.
Dazu ein kleines Video:
https://youtu.be/jL25lmjcrQ0

Bild

Das sind ja eigentlich recht gute Reflexionen :allright:
Ich glaube, damit lässt sich schon ordentlich was machen.
Wahrscheinlich ist das jetzt einer dieser Tricks des klassischen Renderings, oder?

Hättet ihr eine Idee, wie man die Umgebung ohne Skybox auf die Entitys bringt? So eine Art unsichtbare Skybox? Oder evtl. eine halbkreisförmige Bildleinwand die man immer hinter die Kamera setzt?
Ich würde gerne eine Umgebung auf die Modelle abbilden/reflektieren können, aber dennoch keine sichtbare Umgebung haben (z.B. grauer Hintergrund).
Antworten