Tiefenrausch

  • Tiefenrausch

    Hallo zusammen,

    Hab ein kleines Progrämmchen fabriziert welches Stereogramme erzeugt. ( Magisches Auge).
    Neben dem Stereogrammgenerator (Sirds) ist da noch ein Mustergenerator (Huepfer) und ein kleines Programm zum Erzeugen der Tiefenbilder abgefallen, sozusagen als Nebenprodukte. Die Tiefenbilder können auch mit einem Raytracer, z. B. Povray erzeugt werden. Im Programmpaket ist eine Kurzanleitung, Beispiele und Quellcode.

    Viel Spass beim ausprobieren.

    Mich würde mal interessieren ob jemand in den Bilder etwas Räumliches erkennen kann. Man muss quasi durch die Bilder hindurchsehen und einen Punkt hinter dem Bildschirm / Papier anvisieren.,

    Bei höherer Auflösung geht das wesentlich besser.

    Hier ein kleines Beispiel:

    [Blockierte Grafik: http://www.hpandrea.de/mac/xcode/sirds.gif]


    hier das Progrämmchen : hpandrea.de/mac/xcode/Sirds.zip

    Gruß

    Andrea
  • Hallo,

    gut erkannt. Es ist eine rotierte Cosinus-Welle. Ohne die Qualitätsverbesserungen wie Hidden-Surface und Oversampling kann man die Bilder auch schnell generieren. Hab irgendwo gelesen, dass man sogar ein Spiel in dem Format programmiert hat. Aber dann hat man hässliche Stufen und unerwünschte Fehler ( Artefakte).

    Für OpenGL fänd ich dann andere Techniken interessanter. Z.B. Animation mit hell/dunkel Brille, das könnte man dann auch ohne Brille ansehen. Oder dieser Pulsierende Effekt, der ganz ohne Brille auskommt. Ich kenn mich zwar mit Matrizen und Grafikalgorithmen aus, von OpenGL hab ich aber keine Ahnung. Dabei würde ich das so gerne, können ..., wollen... , würden ... , möchten ... usw.

    Hier noch ein weiteres Stereogramm, das ist etwas schwieriger zu erkennen.

    [Blockierte Grafik: http://www.hpandrea.de/mac/xcode/sirds.jpg]
  • Original von Andrea
    Für OpenGL fänd ich dann andere Techniken interessanter. Z.B. Animation mit hell/dunkel Brille, das könnte man dann auch ohne Brille ansehen. Oder dieser Pulsierende Effekt, der ganz ohne Brille auskommt. Ich kenn mich zwar mit Matrizen und Grafikalgorithmen aus, von OpenGL hab ich aber keine Ahnung. Dabei würde ich das so gerne, können ..., wollen... , würden ... , möchten ... usw.

    Hmmm - ich finde den Pulfrich-Effekt nicht sonderlich atemberaubend - mache ich da etwas falsch? Richtig "schönes" 3D geht leider nur mit Brille (Polarisiert, Shutter oder Infitec) - selbst bei teuren autostereoskopischen Displays (zumindest bei den Fresnel- oder Eye-Tracking-basierten) habe ich noch nichts wirklich Tolles gesehen. Da ist SIRDS schon schick, weil es so einfach ist.

    OpenGL ist nicht so wild. Klar gibt's auch kompliziertere Sachen, aber wenn man die erste Hürde überwunden hat (OpenGL erstmal anständig zum Laufen zu bringen), kommt man eine ganze Weile mit Hausmitteln aus. Als Einstieg finde ich die NeHe Tutorials ganz gut - mittlerweile etwas angestaubt (und der OSX-Code ist nicht so toll, da sollte man sich etwas anderes irgendwo "borgen"), aber die Prinzipien haben sich seitdem nicht geändert.
    Original von Andrea
    Hier noch ein weiteres Stereogramm, das ist etwas schwieriger zu erkennen.

    Cool - wie haste die bloß ineinander bekommen? ;)
    Multigrad - 360°-Produktfotografie für den Mac
  • Hallo mattik

    Cool - wie haste die bloß ineinander bekommen?


    Sie wurden so geliefert.

    Nochmal zu was zu OpenGL. Kann es sein, dass Opengl sich nicht gut in XCode/Cocoa integrieren lässt? Dafür sollte doch OpenGlView da sein oder ?

    Habe einige Quellen von Apple geladen, die Beispiele für das OpenGl View brechen mit einem Kompilierfehler ( inkompatibler Typ) ab. Die Executables funktionieren allerdings ( was für den Lerneffekt nicht so wichtig ist.)


    Gruß

    Andrea
  • Original von Andrea
    Nochmal zu was zu OpenGL. Kann es sein, dass Opengl sich nicht gut in XCode/Cocoa integrieren lässt? Dafür sollte doch OpenGlView da sein oder ?

    Genau. NSOpenGLView ist nicht der einzige Weg, aber ein guter. Apples Doku und Beispiele sind an der Stelle - vorsichtig ausgedrückt - verbesserungsfähig. Ich habe mal ein kleines Minimalprojekt zusammengebastelt, das elementare Dinge zeigt (Kontext bauen, Malen, Depth Test und Double Buffering, Anpassung des Seitenverhältnis). Wenn alles klappt, sollte eine klitschbunte Pyramide dargestellt werden, die man mit der Maus drehen kann. Klappt das?
    Multigrad - 360°-Produktfotografie für den Mac
  • Hallo Mattik,

    deine Anwendung funktioniert. Hast Du sehr gut Dokumentiert. Danke Dir für Deine Mühe.
    Gleich mal eine Frage: Kann ich mit OpenGl eine Bild (Bitmap) um eine Kugel wickeln ?
    Ist diese Kugel dann eine echte Kugel, Oder wird die Kugel durch Dreiecke approximiert ?
    Lichtquellen und Texturen sind doch möglich oder ? Kann OpenGl Schattenpyramiden ? Soweit ich die Beschreibungen zu Opengl verstanden habe werden die (homogenen) Matrizen nie gesetzt , sondern immer eine Einheitsmatrix (Identity) durch Transformation (Rotate, Scale usw) verändert (Matrizenmultiplikation). Stimmt das so ? Diese Dinge sind doch unabhängig vom OS oder ? Gehen auch 2 Framebuffer und 2 Z Buffer ? Z.B. für rot/grün Stereo ?

    Gruß
    Andrea


    PS: Hoffentlich nicht zu viele Fragen.
  • Original von Andrea
    Hallo Mattik,

    deine Anwendung funktioniert. Hast Du sehr gut Dokumentiert. Danke Dir für Deine Mühe.
    Gleich mal eine Frage: Kann ich mit OpenGl eine Bild (Bitmap) um eine Kugel wickeln ?

    Klar, Du kannst alle Flächen texturieren

    Ist diese Kugel dann eine echte Kugel, Oder wird die Kugel durch Dreiecke approximiert ?

    Jede Fläche wird in Dreiecke zerlegt.


    Lichtquellen und Texturen sind doch möglich oder ?

    Klar


    Kann OpenGl Schattenpyramiden ? Soweit ich die Beschreibungen zu Opengl verstanden habe werden die (homogenen) Matrizen nie gesetzt , sondern immer eine Einheitsmatrix (Identity) durch Transformation (Rotate, Scale usw) verändert (Matrizenmultiplikation). Stimmt das so ?

    Ja


    Diese Dinge sind doch unabhängig vom OS oder ?

    Ja genau, es spielt keine Rolle auf welchem Sytsme Du entwickelst


    Gehen auch 2 Framebuffer und 2 Z Buffer ? Z.B. für rot/grün Stereo ?

    Ja das funktioniert, Pangeasoft hat Spiele im Angebot die sich mit ner 3D-Brille zocken lassen.
    pangeasoft.net/nano2/3dglasses.html

    Gruß
    Andrea


    PS: Hoffentlich nicht zu viele Fragen.
  • Tröste dich, ich seh da auch nie was - und hab gute Augen ;)

    Wo hier gerade die Experten da sind.

    Ich bau immer mal wieder an ner App um Cartoons zu zeichnen (2D). Die arbeitet ausschließlich mit Bezier Pfaden (NSBezierPath). Nun bin ich an nem Punkt, wo die Engine soweit steht und überlege ob ich vielleicht auf openGL umsteige.

    Leider bin ich auch noch nicht weiter als zu ner Pyramide gekommen. Die openGL Beispiele die ich bisher gefunden habe fangen immer gleich mit Bezier Flächen an, viel zu viel.

    Ist das empfehlenswert? Kann ich mit openGL das machen was ich mit NSBezierPath machen kann. Ein absolutes pro GL Feature wäre das berechnen von Schnittpunkten der Pfade.

    Kennt jemand ein Bsp. um einfach mal nur nen Pfad zu zeichnen?
    Seminare, Artikel, Code. ObjectiveCeeds - alles für die Apfelzucht.
  • Den meisten Kram hat wolf_10de ja schon beantwortet, hier noch mein Senf:
    Original von wolf_10de
    Original von Andrea
    Ist diese Kugel dann eine echte Kugel, Oder wird die Kugel durch Dreiecke approximiert ?

    Jede Fläche wird in Dreiecke zerlegt.

    Jepp - OpenGL kennt erstmal nur Drei- und Vierecke (wobei die meisten Renderer die Vierecke in Dreiecke aufteilen). Aber glu (die Standard-Utility-Sammlung) kann Quadrics und NURB Patches beliebig genau tesselieren.



    Kann OpenGl Schattenpyramiden ? Soweit ich die Beschreibungen zu Opengl verstanden habe werden die (homogenen) Matrizen nie gesetzt , sondern immer eine Einheitsmatrix (Identity) durch Transformation (Rotate, Scale usw) verändert (Matrizenmultiplikation). Stimmt das so ?

    Ja

    Matritzenoperationen bei gl: Ja. Bei glu gibt es einige Ausnahmen, z.B. gluLookAt().
    Schatten sind tricky - OpenGL kann von Haus aus keine Schatten, die muss man selbst machen (für Schattenvolumen kann ein Stencil Buffer helfen, oft sind aber Shadow Maps einfacher). Es gibt einige Szenengraph-basierte High-Level-Toolkits, die Schatten automatisch machen (z.B. konnte QuickDraw3D das, ist aber leider schon länger tot).


    Gehen auch 2 Framebuffer und 2 Z Buffer ? Z.B. für rot/grün Stereo ?

    Ja das funktioniert, Pangeasoft hat Spiele im Angebot die sich mit ner 3D-Brille zocken lassen.
    pangeasoft.net/nano2/3dglasses.html

    OpenGL kennt zwar stereoskopische Kontexte (theoretisch einfach NSOpenGLPFAStereo im PixelFormat abfordern), aber die meisten Renderer unterstützen das nicht, meines Wissens derzeit nur einige höherwertige Nvidia-Karten (bei denen sich dann auch ein Signal für eine Shutterbrille aus dem Videosignal ziehen lässt). Deshalb bekommt man meistens, wenn man Stereo anfordert, nur eine Fehlermeldung, dass kein passender Renderer gefunden wurde. Die Rot-Grün-Sache lässt sich aber auch mit einem normalen Buffer machen. Das Malen der Szene sieht dann etwa so aus:

    - Farb- und Tiefenbuffer normal löschen
    - per glColorMask(GL_TRUE,GL_FALSE,GL_FALSE,GL_TRUE) nur den Rot-Kanal aktivieren
    - Szene aus Perspektive des roten Auges malen
    - Tiefenbuffer wieder löschen
    - per glColorMask(GL_FALSE,GL_TRUE,GL_FALSE,GL_TRUE) nur den Grün-Kanal aktivieren
    - Nochmal das Ganze fürs grüne Auge
    - per glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE) wieder alles an, damit beim Löschen des Farbbuffers im nächsten Durchgang wieder alles gelöscht wird
    Multigrad - 360°-Produktfotografie für den Mac
  • Original von kressevadder
    Muß ich mich mal durchkauen. In meinem jugendlichen Leichtsinn hab ich sowal wie

    glbezierpath (source, destination , p1, p2 )

    gesucht ;)


    Ich hab hier noch Beispiele für die Dose rumliegen, wenn Du willst kann ich sie dir schicken (mußt sie halt nur umbauen)
  • Original von kressevadder
    Ich hab hier noch Beispiele für die Dose rumliegen, wenn Du willst kann ich sie dir schicken (mußt sie halt nur umbauen)


    Wär lieb, ich schau mal, wie wit ich damit klar komme ( e-mail button ist aktiv )

    Danke


    warte ich krame mal in der kiste