Springt ein JIT-*Compiler* an, wird für den Code gar nichts mehr interpretiert. Natürlich haben JIT-Compiler, anders als statische, Laufzeit-Informationen und können u.U. bessere Entscheidungen treffen, aber das als als Vorteil für einen Interpreter zu sehen ist dann doch grenzwertig ...
Einen GC können auch nicht-interpretierende Umgebungen haben, außerdem sehe ich nicht wie das ein Performance-Vorteil sein soll?
Raytracer in Python programmieren
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- Weltbesiedler
- User
- Beiträge: 103
- Registriert: Dienstag 2. Februar 2010, 18:44
- Wohnort: Bayern
Mag für dich bestimmt einfach gewesen sein aber für mich ist es das höchstwahrscheinlich nicht, leider. Zudem fehlen mir wohl die mathematischen Grundlagen für die Berechnung der Farbe eines Schnittpunktes.ür diese Vorlesung hab ich auch ein Raytracer implementiert. Allerdings in C++, von dem ich keine Ahnung hatte. Arbeitsaufwand 1 bis 2 Tage
Nach dem eigentlichen Tracer brauchst du noch ein Shader, z.B. Phong-Shading. Das ist eigentlich nur ein Algorythmus mit dem man die Farbe eines Schnittpunktes berrechnet, geht ganz schnell.
Ein Schattenfühler um zu erkennen ob ein Schnittpunkt im Schatten liegt ist nur eine weiterführung des Raytraces.
@jens
Ja ich weis, ich hab auch schon die meisten OpenSource Renderer ausprobiert (POV-Ray, LuxRender, Cycles, SLG, YafaRay, Blender Intern). Und umso mehr ich ausprobiert hatte, umso mehr wollte ich die Technik dahinter verstehen und das geht wohl am besten indem man so etwas einfach selber programmiert .
@Hyperion
Sehr, sehr cooles Bild, ganz ehrlich! Allerdings weis ich nicht, wie ich ein Python Script in ein POV-Ray Script umwandeln kann. Könntest du die Lego-Maschine mal in ein Glas Material umwandeln und dann ein Licht auf einen Punkt in dem Bagger konzentrieren (Winkel vielleicht 15°) und die Licht Intensität erhöhen? Wüsste gerne ob da Kaustiken rauskommen .
Ich hab mir inzwischen ein paar Bücher über Grafikprogrammierung rausgesucht und werde mir diese die Tage mal ausleihen.
@Weltbesiedler: Wenn Dir die mathematischen Grundlagen fehlen, kannst Du natürlich auch keinen Raytracer programmieren. Dann musst Du das entweder lernen oder Dir ein anderes Ziel suchen.
Niemand hat davon geredet ein Python-Skript in ein POV-Ray-Skript umzuwandeln. Und was ist das für eine Obsession mit dem Kaustikeffekt? Was bringt Dir das wenn Hyperion das noch einmal rendert? Ich habe das Gefühl Du willst nur sinnlos Leute beschäftigen. Wenn Du Dich damit nämlich mal etwas praktisch beschäftigt hättest, wüsstest Du, das Glasmaterial + „photon mapping“ (für den Kaustikeffekt) das ganze um Grössenordnungen aufwändiger und damit langsamer werden lässt.
Niemand hat davon geredet ein Python-Skript in ein POV-Ray-Skript umzuwandeln. Und was ist das für eine Obsession mit dem Kaustikeffekt? Was bringt Dir das wenn Hyperion das noch einmal rendert? Ich habe das Gefühl Du willst nur sinnlos Leute beschäftigen. Wenn Du Dich damit nämlich mal etwas praktisch beschäftigt hättest, wüsstest Du, das Glasmaterial + „photon mapping“ (für den Kaustikeffekt) das ganze um Grössenordnungen aufwändiger und damit langsamer werden lässt.
- Weltbesiedler
- User
- Beiträge: 103
- Registriert: Dienstag 2. Februar 2010, 18:44
- Wohnort: Bayern
War ja nur eine Idee, keine Panik.
@cofi, DasIch D hat zum Beispiel einen GC
the more they change the more they stay the same
Auf nichts besonderes (derdons Aussage trifft da ziemlich genau zu), es war nur eine Anmerkung, deshalb mit @ um zu zeigen, dass es nicht zum Thema "Raytracer" passt.
the more they change the more they stay the same
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Hehe... naja, ich weiß nicht, wann ich die Arbeit als PDF online stellen darf - habe ja erst letzte Woche abgegeben. Werde ich dann aber sicherlich machen. Kernpunkt sind eigentlich semantische Technologien (Ontologien; OWL + SPARQL), um Probleme des klassischen Produktentwicklungsprozesses zu lösen bzw. Fehler zu minimieren: Also gemeinsames Verständnis, Aggregation von Kernideen / Eigenschaften einer Baugruppe, Integration / Referenzierung von Fachdokumenten. CAD-Dateien als Kernmedium dienen da als Beispiel und damit ich selber als Nicht-Ingenieur irgend ein Beispielszenario entwickeln musste habe ich einfach LEGO als mein "Universum" gewählt - das habe ich immerhin früher über ein Jahrzehnt studiertBlackJack hat geschrieben:@Hyperion: Du hast LEGO-Modelle für Deine Diplomarbeit gerendert? Jetzt bin ich aber neugierig!
Und naja, damit die Probleme anschaulich beschrieben werden können habe ich mich eben bemüht meine LDraw-Baupläne hübsch zu rendern Leider sind viele Tools in dem Bereich "angestaubt" ¹, weswegen ich mich mal versucht habe, selber einen Konverter LDraw -> PovRay zu schreiben. Allerdings ist das wider Erwarten nicht wirklich trivial... und naja, die Arbeit an sich hatte ja auch noch Priorität
Aber mal schauen, vielleicht gehe ich das ja doch noch mal an...
¹ Hauptproblem war bei mir, dass ich die Kameraeinstellungen gerne anders gewählt hätte, als es das Konverterprogramm anbietet. Zudem habe ich auch mit anderen Lichtern gearbeitet usw. Da kam mir die Idee, dass man das mit Jinja2 viel flexibler gestalten könnte. Das ganze kombiniert mit kleinen Konfigurationsdateien könnte einen da echt helfen, sinnloses manuelles Editieren zu ersparen. Zudem gibt es div. Farb- / Material- und Bauteildefinitionen - die könnte man entsprechend auch flexibel definierbar machen... vielleicht eine hübsche GUI oben drauf... *seufz* viele Probleme und wenig Zeit
@weltbesiedler: Ist denn jetzt schon geklärt, dass Du wirklich einen eigenen Raytracer schreiben willst, oder ob Dein Fokus eher auf der Benutzung eines existierenden liegt?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Weltbesiedler
- User
- Beiträge: 103
- Registriert: Dienstag 2. Februar 2010, 18:44
- Wohnort: Bayern
Hyperion:
Vielleicht doch erstmal auf POV-Ray fokusieren...
Vielleicht doch erstmal auf POV-Ray fokusieren...
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Was willst Du denn eigentlich? Willst Du (aus Spaß an der Freude / Interesse am Verständnis der Technologie) einen Raytracer schreiben oder liegt Dein Fokus auf dem visuellen Ergebnis?Weltbesiedler hat geschrieben:Hyperion:
Vielleicht doch erstmal auf POV-Ray fokusieren...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Weltbesiedler
- User
- Beiträge: 103
- Registriert: Dienstag 2. Februar 2010, 18:44
- Wohnort: Bayern
Ich denke der Hauptpunkt ist die Verständnis an der Technologie. Wenn das erreicht ist kann man über das visuelle Ergebnis sprechen.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ich glaube Du hast meine Frage nicht verstanden; dafür kann ich aus Deiner Antwort entnehmen, was Du willstWeltbesiedler hat geschrieben:Ich denke der Hauptpunkt ist die Verständnis an der Technologie. Wenn das erreicht ist kann man über das visuelle Ergebnis sprechen.
Du willst also die Prinzipien hinter dem Raytracing verstehen. Povray könntest Du also benutzen, um erst einmal die Möglichkeiten eines RayTracers nachvollziehen zu können. Der Code an sich ist vermutlich zu komplex, um daraus wirklich etwas nachvollziehen zu können - aber evtl. irre ich auch hier und man kann - zumindest kleinere Algorithmen - doch daraus nachvollziehen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Weltbesiedler
- User
- Beiträge: 103
- Registriert: Dienstag 2. Februar 2010, 18:44
- Wohnort: Bayern
Wie war denn Deine Frage? In welcher Sprache ist POV-Ray geschrieben damit ich weiß womit ich es öffnen muss? Da gibt es ja teilweise total schöne Bilder, Wahnsinn :Ich glaube Du hast meine Frage nicht verstanden
http://hof.povray.org/BonsaiGirlA24.html
http://hof.povray.org/chado.html
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ich wollte wissen, ob Dein Fokus auf dem Ergebnis des Renders liegt, also Du auf den Output eines Raytracers angewiesen bist und ihn nur als Werkzeug verwenden willst, oder eben den Vorgang als solches spannend findest und verstehen willst. Offensichtlich ist letzteres der Fall.Weltbesiedler hat geschrieben:Wie war denn Deine Frage?Ich glaube Du hast meine Frage nicht verstanden
Ich vermute mal C. Aber "öffnen" kannst Du jede Sprache in einem beliebigen Editor (Ok, von einigen esoterischen mal abgesehen...)In welcher Sprache ist POV-Ray geschrieben damit ich weiß womit ich es öffnen muss?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Um die Technik zu verstehen muß man ja nicht wirklich einen eigenen raytracer schreiben. Schau dir den Quellentext an:Weltbesiedler hat geschrieben:Ja ich weis, ich hab auch schon die meisten OpenSource Renderer ausprobiert (POV-Ray, LuxRender, Cycles, SLG, YafaRay, Blender Intern). Und umso mehr ich ausprobiert hatte, umso mehr wollte ich die Technik dahinter verstehen und das geht wohl am besten indem man so etwas einfach selber programmiert .
http://www.lshift.net/~tonyg/raytrace.py
Einfacher geht es IMHO nicht.
Ansonsten Wikipedia:
https://en.wikipedia.org/wiki/Ray_traci ... raphics%29
https://secure.wikimedia.org/wikipedia/de/wiki/Raytrace
Wäre IMHO toll, wenn man dem genannten Skript noch eine GUI verpassen kann, das man es etwas interaktiver sieht. Und super nett wäre es, das Skript direkt in Blender ein zu bauen... Aber das alleine dürfte schon recht viel Arbeit sein...
- Weltbesiedler
- User
- Beiträge: 103
- Registriert: Dienstag 2. Februar 2010, 18:44
- Wohnort: Bayern
Hm irgendwie kapier ich gar nix . Wie habt ihr es nur geschafft das zu verstehen :K
Im Wikipedia-Artikel handelt es sich doch um einfachste lineare Algebra. Wenn du die Berechnungen nicht nachvollziehen kannst, dann solltest du dich vielleicht erstmal darin einlesen.
Das Leben ist wie ein Tennisball.
- Weltbesiedler
- User
- Beiträge: 103
- Registriert: Dienstag 2. Februar 2010, 18:44
- Wohnort: Bayern
Nein ich mein jetzt eher das Programmieren an sich. Ich hab mir jetzt ein Buch über OpenGL Grafikprogrammierung ausgeliehen und da kapier ich schon mal relativ wenig obwohl das Buch auch für "Jugendliche die sich für Spiele interessieren und wissen wollen wie man diese programmiert" geeignet ist.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Was ist denn "Programmieren" an sich? Die Algorithmik ist bei mathematischen Problemen doch natürlicher Weise schwierig bezüglich der Mathematik.Weltbesiedler hat geschrieben:Nein ich mein jetzt eher das Programmieren an sich. Ich hab mir jetzt ein Buch über OpenGL Grafikprogrammierung ausgeliehen und da kapier ich schon mal relativ wenig obwohl das Buch auch für "Jugendliche die sich für Spiele interessieren und wissen wollen wie man diese programmiert" geeignet ist.
Nebenbei: Was hat OpenGL mit Raytracing zu tun?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert