Delphi-PRAXiS
Seite 11 von 11   « Erste     91011   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Fraktal-Raytracer, mein Lebenswerk :) (https://www.delphipraxis.net/48846-fraktal-raytracer-mein-lebenswerk.html)

Nicodius 2. Apr 2006 15:21

Re: Fraktal-Raytracer, mein Lebenswerk :)
 
nett wer noch bei den render gschichtl eine checkbox zu machen dass die größe imemr proportional bleibt (640, 460 wird zu 320/230 zB)


super progamm :)

bastischo 2. Apr 2006 23:42

Re: Fraktal-Raytracer, mein Lebenswerk :)
 
Ich hab auch mal was gemacht:

http://i18.photobucket.com/albums/b1...scho/morph.gif

oder soll ich es in den Anhang packen??

wenn ich jetzt noch wüsste, wie das zustande kam...
ich glaube, ich hab y kleiner werden lassen und das ganze dann noch gedreht.

SnuffMaster23 29. Apr 2006 15:54

Re: Fraktal-Raytracer, mein Lebenswerk :)
 
Hi Leite

ich bin ein großer Fan von Raytracern, ich find die Bilder auch echt Klasse (obwohl wenig sinnvoll) :arrow: Fetten Respekt an dizzy!!!

Nur dizzy, wenn du schon solche mathematischen Kunststücke wie 3D-Fraktale aufführst find ich das mit den "Z-Samples" ziemlich primitiv. Kann man da nicht irgendwie mathematich den Schnittpunkt finden??? Ich bin bisher immer davon ausgegangen, dass man das so macht. Naja, wenn das bei den Fraktalen nicht wirklich geht solls mir auch Recht sein :).

Greetz Snuffi

dizzy 29. Apr 2006 19:16

Re: Fraktal-Raytracer, mein Lebenswerk :)
 
Zitat:

Zitat von SnuffMaster23
Kann man da nicht irgendwie mathematich den Schnittpunkt finden??? Ich bin bisher immer davon ausgegangen, dass man das so macht. Naja, wenn das bei den Fraktalen nicht wirklich geht solls mir auch Recht sein :).

Vielen Dank für dein Lob :)

Für gewöhnlich macht man es tatsächlich so, dass man einen Schnittpunkt des Strahls mit der Oberfläche direkt errechnet. Das setzt allerdings voraus, dass überhaupt eine Oberfläche existiert! ;) Streng genommen haben Fraktale eine solche nämlich garnicht. Das ist zunächst mal etwas verwirrend, da ja eine Fläche sichtbat ist, aber ein voll ausdefiniertes Fraktal (mit diskreter Mathematik überhaupt nicht möglich) verhält sich da schon sehr anders.
Am ehesten kann man ein Fraktal noch als skalares Feld erklären, bei denen eine explizite Flächenbestimmung auch nicht so ohne Weiteres möglch ist (-> Blobs/Metaballs sind ähnlich beim Raytracen). Bei Polygonobjekten gestaltet sich das erheblich einfacher: Du hast einfach Punkte, die schon fertige Flächen definieren. Damit zu schneiden ist einfach. Ebenfalls sind parametrische Figuren (Kugeln z.B. die nur als Formel angegeben werden) sehr einfach, da die Formeln die Oberfläche explizit, und in jedem Punkt vollständig beschreiben.
Bei einem Fraktal kannst du im Grunde nur so vorgehen: Ich nehme mal Punkt (x, y, z) und teste ob er zum Fraktal gehört*. Was nicht geht ist: Ich nehme Gerade G und schaue an welchem Punkt diese das Fraktal schneidet (abgesehen davon ist ein Fraktal volumetrisch - d.h. es ist "gefüllt" und nicht wie eine Kugel nur eine unendlich dünne Hülle. Man würde, wäre es möglich, also ohnehin oftmals unendlich viele Schnittpunkte erhalten).

*Selbst dieser Test ist nicht vollständig möglich, da dies über ein unendlich andauerndes iteratives Verfahren gemacht wird (was überhaupt erst das Wesen der Fraktale ausmacht). Man muss also bei einer beliebigen Genauigkeit abbrechen, und dann entscheiden ob der Punkt dazu gehört, oder nicht. (Diese Genauigkeit wird über die Eigenschaft "Iterationen" geregelt.)


Ich muss mal wieder Zeit und Muße finden in diese Richtung weiter zu machen :|

Schönen Gruß,
Fabian

Dax 29. Apr 2006 19:19

Re: Fraktal-Raytracer, mein Lebenswerk :)
 
Hey, dich gibts ja noch :love: Lange nichts mehr von dir gehört..

@Snuffmaster: schade das ichs erst so spät bemerkt hab das du was geschrieben hast, sonst hättest du dizzys Antwort in kurz bekommen^^ Ich habs auch schon versucht das mal in diese Richtung fortzutreiben, ist jedes mal gescheitert. Rat mal warum ;)

EDatabaseError 29. Apr 2006 21:50

Re: Fraktal-Raytracer, mein Lebenswerk :)
 
:thumb: echt super Programm!

SnuffMaster23 30. Apr 2006 10:03

Re: Fraktal-Raytracer, mein Lebenswerk :)
 
@Dax: Höhere Mathematik? :mrgreen:

Genau das hab ich gemeint mit
Zitat:

Zitat von SnuffMaster23
Naja, wenn das bei den Fraktalen nicht wirklich geht solls mir auch Recht sein :).

Aber kann man bei dem Fraktal nicht irgendwie Oberfläche und "Füllung" auseinanderhalten? So nach der Art "Auf der einen Seite is was, auf der anderen nix => Oberfläche". Ich weiß, nicht die eleganteste Lösung. Bei "normalen" Primitiven wie z.B: ner Kugel wär es außerdem auch schön, wenn die volumetrisch wären, wenn man sie durchsichtig machen will. Glas ist sonst sehr schwer darzustellen wenn der Strahl vorne in die Kugel reingeht, drinnen "in der Luft hängt" und ungedämpft weitermarschiert und hinten wieder raus kommt. OK, bei ner Kugel gehts grad noch, aber versuch mal ein Weinglas darzustellen... :)

Snuffi

dizzy 30. Apr 2006 21:05

Re: Fraktal-Raytracer, mein Lebenswerk :)
 
Zitat:

Zitat von SnuffMaster23
Aber kann man bei dem Fraktal nicht irgendwie Oberfläche und "Füllung" auseinanderhalten? So nach der Art "Auf der einen Seite is was, auf der anderen nix => Oberfläche".

Nicht direkt. Das Problem ist nun, dass du ja über kein explizites Verfahren auf einen Punkt der "Oberfläche" kommst (die ja eigentlich nicht existiert...). Mein Raytracer macht es daher so:
  1. Einen Strahl schrittweise nach vorne abtasten
  2. Sobald ein Punkt auf einmal zu dem Fraktal gehört:
    Einen halben Schritt zurück, und schauen obs da noch immer so ist.
    - Wenn ja: Schritt nochmals halbieren, zurück, und testen
    - Wenn nein: Schritt nochmals halbieren, vorwärts, und testen
  3. Bei einer beliebigen Genauigkeit aufhören, und so tun als sei der letzte getestete Punkt ein Punkt der Oberfläche.

Das Verfahren nennt sich Bisektion, und schließt sich an die sampleweise Tiefensuche zur Verfeinerung an. Dadurch lässt sich die Samplemenge erheblich reduzieren. Eine weitere Reduktion mache ich darüber, dass man nachdem man ein Punkt getestet hat, abschätzen kann, wie nahe dieser dem Fraktal nun war. Je näher ich komme, desto enger mache ich die Samples. Somit werden Bereiche in denen der Strahl nichts trifft sehr schnell abgehandelt, und nur dort wo es nötig ist wird mit großer Genauigkeit gearbeitet.
Während all meiner Nachforschungen (die sich wie im Eingangsposting erwähnt in rund 4 Jahren abspielten) bin ich auf kein effizienteres Verfahren gestoßen, ohne dass man den genauen Typ des Fraktals im Vorfeld kennt (bzw. auch dann wären nur minimale Optimierungen möglich), und nicht erhebliche Teile des Fraktals "verpasst". (Das "Punkt-Ist-Nah-Dran"-Verfahren schreib ich mir hierbei sogar selbst auf die Fahne, die Bisektion macht POVRay genau so (aus deren Sourcen abgeschaut ;))).
Explizite Oberflächenberechnung ist, Volumen hin oder her, leider nicht möglich. (Dann wäre das ganze Thema imho auch ne ganze Ecke langweiliger ^^.)
Wenn du dich mal in das Thema Fraktale einliest, wirst du imho schnell merken wo da der Hund begraben liegt :)


@Dax: :love: Joa, ich bin nach wie vor zur Zeit mit delphi-loser Uni und Arbeit so weit ausgefüllt, dass die Freizeitprogrammierung leider sehr wenig Raum hat :cry:. Folglich müssen die wirklich interessanten Themen, die ich bevorzugt mit Delphi angehe, warten :?


Gruss,
Fabian

SnuffMaster23 1. Mai 2006 12:08

Re: Fraktal-Raytracer, mein Lebenswerk :)
 
Naja, Fraktale sind jetzt nicht so mein Spezialgebiet, ich glaub dir das jetzt einfach :D
Ich weiß ungefähr so viel über Fraktale, dass sie selbstähnlich sind und dass man natürliche Strukturen wie z.B. einen Baum oder eine Felsoberfläche als einigermaßen fraktal ansehen kann.

Merlin2001 8. Aug 2007 23:18

Re: Fraktal-Raytracer, mein Lebenswerk :)
 
Hey, bin grad zufällig auf meinem unaufgeräumten Desktop wieder über QED gestolpert!

Nach etwas Rumspielerei wollte ich mal fragen, ob es denn inzwischen eine neue Version gibt?
(In der man die Einstellungen speichern kann und die evtl. eine kleine Hilfe beinhaltet :))
Würde gern über Neuigkeiten erfahren!

Mit von QED begeisterten Grüßen
Marcus


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 Uhr.
Seite 11 von 11   « Erste     91011   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz