Ankündigung

Einklappen
Keine Ankündigung bisher.

Fotorealistische Bilder mit PHP

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fotorealistische Bilder mit PHP

    Hallo,

    ich habe hier einen potentiellen Auftrag. Dabei geht es um die dynamische Erzeugung von Bildern. Auf den Bildern sollen Glastüren (es geht um einen Türenhersteller) abgebildet werden. Der Nutzer soll auf der Website die Möglichkeit haben verschiedene Merkmale (Höhe, Breite, Farbe des Rahmens, Art des Glases) auszuwählen. Anhand dieser Merkmale soll nun ein entsprechendes Bild erzeugt werden.

    Im Prinzip ist dies auch umsetzbar. Eine Beispielanwendung habe ich schon erstellt. Die Ergebnisgrafiken sehen brauchbar aus. Nun sind sie dem Kunden jedoch nicht realistisch genug.

    Ist es überhaupt möglich absolut fotorealistische Abbildungen mit PHP dynamisch zu erzeugen? Ich bezweifle es, aber vielleicht hat ja hier jemand soetwas schon gemacht.

    Ich beschreibe erst einmal wie mein derzeitiges Vorgehen ist. Als Hintergrund habe ich einen Raum mit einer Wand in der Frontalansicht. Die einzelnen Türrahmen sind in einzelnen Bilddateien hinterlegt. Um die Rahmenfarbe und das Glas einzubindne habe ich hier zwei Farbflächen gesetzt. Farbe 1 wird später durch die Rahmenfarbe ersetzt, Farbe 2 durch das Glas.
    Als erstes öffne ich ein Bild mit einem Hintergrund (es ist ja eine durchsichtige Glastür) in der Grösse des Rahmens.
    Nun erstelle ich ein neues Image-Objekt, öffne eine Grafik die die Glasscheibe enthält und kachele diese in das neue Bild. Dieses Dummy-Bild lege ich nun mit 15%iger Deckkraft über das Hintergrundbild.
    Nun passiert eigentlich nochmal das gleiche mit einer Grafik, die Schatten und Reflexionen enthält. Die Glasscheibe ist fertig.

    Jetzt öffne ich den Türrahmen und setze dort die Farbe, die für die Glasscheibe vorgesehen war, auf transparent. Dieser Rahmen wird nun auf die fertige Glasscheibe kopiert. Nun wird die Farbe, die für den Rahmen vorgesehen war auf transparent gesetzt.
    Es wird ein neues Bild erstellt und mit der gewünschten Rahmenfarbe gefüllt. Wie bei der Glasscheibe zuvor wird eine Schattengrafik mit 15%iger Deckkraft drübergelegt.
    Die Grafik die die Glasscheibe und den transparenten Dummy-Rahmen enthält wird nun über dieses Bild gelegt. Die Tür ist fertig.
    Zum Schluss wird noch die Tür auf den Hintergrund (die Wand) kopiert.

    Das war mein Lösungsansatz. Das Ergebniss könnt Ihr hier sehen.

    Bis auf das Glas und die Schatten bin ich auch recht zufrieden. Nur wie bekommt man einen realistischer wirkenden Schatten/Reflexionen auf der Scheibe zu stande?

    Das nächste Problem ist, dass der Kunde nun keine Frontalansicht mehr wünscht. Es kommen also Schrägen hinzu und mein Konzept greift dann nicht mehr. An den Übergängen zwischen Rahmen/Wand und Rahmen/Glas wären harte Abstufungen zu sehen.
    Wie soll man das lösen? Ein Blur-Effekt dauert zu lange für den Live-Einsatz. Und selbst wenn ich auf etwas schnelleres wie ImageMagick zurückgreifen würde (was ich eigentlich vermeiden wollte. Derzeit funktioniert es mit purem GD) wie soll ich den Blur-Effekt auf die Problemstellen begrenzen?

    Ich bin ziemlich Ratlos und würde sagen dass es mit Schrägen auf diese Weise zumindest nicht machbar ist.
    Aber wie sonst? Hat jemand eine Idee?

  • #2
    Endlich mal eine ordentliche Frage hier

    Ist es überhaupt möglich absolut fotorealistische Abbildungen mit PHP dynamisch zu erzeugen?
    Nun PHP ist kein Grafikprogramm, also kein Photoshop mit unzähligen Filtern und sonstigen Möglichkeiten.
    Mit PHP kann man zwar einige machen, aber ohne ImageMagick wird das echt hart:
    http://www.cix88.de/cix_php/?ORD=php_grafik_effekte

    Nur wie bekommt man einen realistischer wirkenden Schatten/Reflexionen auf der Scheibe zu stande?
    Ich galube hier muss man sehr tief in die Trickkiste greifen.
    Nur eine Idee, die mit eben durch den Kopf geht:
    Schatten und Reflektionen als eine Art Maske erstellen (mittels Garfikgrogramm oder 3D) und darüber legen.

    Ein Blur-Effekt dauert zu lange für den Live-Einsatz
    Eben !
    Das würde auch der Server nicht mögen, heutige Server haben da noch nicht freiraum.

    Aber wie sonst? Hat jemand eine Idee?
    Ist eine nette Knobbelaufgabe.

    Mal meine Gedanken, auch wenn diese vieleicht du nicht umsetzen kannst.

    Vieleicht könnte man den kompletten Raum in 3D erstellen.
    Dann wären Schatten, Reflektionen und Lichtverhältnisse etwas besser dran.
    Im 3D hätte man dann auch die Möglichkeit, dass ganz zu Animieren und als Videosequenz abzuspeichern.

    Oder man macht Einzelbilder in einen bestimmten Blickwinkel.
    Erstellt die Türen in verschiedenen Farben und Glassvarianten.

    Dann könnte man dies in ein Flash einbauen und je nachdem was der Kunde sehen will, werden die Bilder im Flash eingelesen und dargestellt.

    ... alles nur reine Theorie aber machbar ...

    Kommentar


    • #3
      Danke für Deine Antowrt. Nun, an Flash habe ich auch schon gedacht. Damit hat man bestimmt mehr Möglichkeiten, besonders da hier bestimmt auch Teiltransparenz bei PNG-Grafiken unterstützt wird. Soweit ich das mitbekommen habe ist dies bei PHP bzw. GD leider nicht der Fall. Mit teiltransparenten Bereichen wäre das mit den Schrägen zumindest kein Problem mehr.

      Die Sache hat nur zwei Harken. Ich kenne mich mit Flash nur minimal aus. Habe vor ein paar Jahren ein wenig mit der damals noch nicht ausgereiften XML-Schnittstelle experimentiert. Der viel grössere Harken ist jedoch dass es Flash nicht für Linux gibt.
      Gut, ich könnte jetzt noch ein Windows installieren. Das ändert aber nix daran dass ich bei dem Projekt draufzahle, da ich mir erst einmal Flash zulegen muss. Von der Einarbeitungszeit ganz zu schweigen.

      Vieleicht könnte man den kompletten Raum in 3D erstellen.
      Dann wären Schatten, Reflektionen und Lichtverhältnisse etwas besser dran.
      Im 3D hätte man dann auch die Möglichkeit, dass ganz zu Animieren und als Videosequenz abzuspeichern.
      Nicht dass ich vorhätte das zu machen. Hört sich zu oversized an. Aber mich würde interessieren wie Du das umsetzen wollen würdest. Wie willst Du den "Raum in 3D erstellen" und wie als Videosequenz abspeichern. Und das alles auch noch in einem für den Nutzer erträglichen Zeitrahmen?

      Übrigens sehr sehr schöne Effektsammlung auf Deiner Seite! Danke für den Link, das schaue ich mir bestimmt nochmal genauer an.

      Kommentar


      • #4
        Jo das mit Flash war jetzt auch nur so ein Gedankensprung von mir.
        Damit wäre dies erledigt.

        Hört sich zu oversized an. Aber mich würde interessieren wie Du das umsetzen wollen würdest.
        Jo klar ist es etwas »oversized«, aber mir kam der Gedanke wo ich dein Beispiel gesehen habe, und du später im Thread geschrieben hast, das Schatten etc. besser zur Wirkung kommen müssten.

        Nehmen wir an, du hast nur ein Bild, lassen also erstmal die Sache mit dem Video.
        Man könnte nun den Raum, so wie es im Bild zu sehen war komplett in 3D nachbauen.
        Mit Texturen, Oberflächenrelief, Beleuchtung und/oder Reflektionen bzw. Spieglungen.
        Die Tür könnte man extra erstellen, und als transparente PNG ablegen.
        Vorlage-Hintergrung und Vorlage-Türen dann mittels PHP zusammensetzen.

        Oder (eine neue Idee):

        Man fotografiert einen Raum/Zimmer ab, wo z.B. so ein Produkt, wie mit der Tür, zu sehen ist.
        Dann hätte man ein sehr realistisches Bild schonmal als Vorlage.
        Die Tür könnte man dann aus dem Foto rausschneiden und extra bearbeiten.
        Daraus neue PNG-Grafiken erstellen.
        Das ganze dann auch mittels PHP zusammenstellen lassen.
        Erfordert etwas grafisches Geschick, aber ich halte das für möglich.

        Vieleicht hat ja der Kunde/Firma irgendwo ein Musterbeispiel seiner Produkte aufgebaut, was man dann abfotografieren könnte.
        Und das könnte man als Vorlage benutzen.
        Wird übrigens in einigen Werbespots auch so gemacht.

        Ich kann mir Vorstellen, dass die Zeit im Rücken ist und man nicht lange überlgen kann.
        Inwiefern du dich in solchen Sachen auskennst, weis ich nicht.
        Was anders würde mir jetzt erstmal nicht einfallen.

        Wie willst Du den "Raum in 3D erstellen" und wie als Videosequenz abspeichern
        Für mich wäre das machbar, klar ist natürlich reichlich Arbeit, aber nichts ist unmöglich
        Die meisten 3D-Programme können Animationen auch als AVI oder MOV exportieren.
        Man könnte einen Kameraschwenk erzeugen, der z.B. im Halbkreis um das Produkt geht.

        Ich weis, dass Flash erstmal aus dem Rennen ist, aber ich will mal weiter den Faden spinnen ...

        Dieses AVI oder MOV kann dann in das Flash importiert werden.
        Mit Schaltflächen und etwas ActionScript kann dann im Flash das Video per Mausklick bewegt werden, sodass sich der Kunde das Produkt aus meheren Ansichten anschauen kann.

        Aber !

        Das ganze ist natürlich ein recht hoher Aufwand, und ob der Kunde diesen Aufwand auch bezahlen will, ist schon die nächste Frage
        Also jetzt nur mal als fixe Idee betrachten.

        Kommentar


        • #5
          OK, da habe ich Dich falsch verstanden. Ich hatte es so verstanden dass Du den Raum per PHP als 3D-Objekt erzeugen wolltest.

          Hier habe ich eine schöne Anwendung gefunden: http://www.tuer.de/Gallery/Gallery_Stilk.aspx

          Leider wird hier ein externes Windows-Programm zum Erzeugen der Grafiken verwendet. Da der Kunde derzeit weder einen Root-Server noch Windows als Server-Software hat, fällt das leider erst mal flach. Mal schau'n, vielleicht ist Ihm das Spielzeug ja so viel Wert dass er auch bereit ist umzuziehen.

          Ich mache mir mal am WE detailliertere Gedanken zu einer Lösung mit ImageMagick. Damit hat man ja zumindest schon mal mehr Möglichkeiten als mit GD.

          Kommentar


          • #6
            Warum nicht jede erdenkliche Kombination Fotografieren und die Bilder dann anhand einer Auswahl laden, vielleicht noch per HTTP-XML Request?

            Kommentar


            • #7
              Zitat von Lockhead
              Warum nicht jede erdenkliche Kombination Fotografieren und die Bilder dann anhand einer Auswahl laden, vielleicht noch per HTTP-XML Request?
              1. nicht jede erdenkliche kombination ist verfügbar
              2. sind es zu viele erdenkliche kombinationen

              Kommentar


              • #8
                So ist es leider.

                4 Breiten
                3 Höhen
                20 Farben
                10 verschiedene Glassorten

                Macht 2400 Bilder. Hinzu kommt dass die Türen noch nicht mal in Produktion gegangen sind und demnach nur scher abzulichten sind.

                Kommentar


                • #9
                  Machst du eigentlich dieses Projekt alleine ?
                  So ein Projekt ist besser für ein Team gedacht, als Einzelkämpfer kann man sich hier schnell übernehmen.
                  2400 Bilder ist nicht das Problem, wenn noch 2,3 oder 4 andere Leute mit helfen.

                  Kommentar


                  • #10
                    Irgendwie funktioniert das alles nie so richtig.
                    Hab mal für nen grossen Automobilhersteller im Bereich
                    Car-Konfigurator programmiert.
                    Das Bildmaterial war (ist immernoch) dürftig. Also haben wir
                    versucht mittels HLS und Alpha-Werten Farbflächen umzufärben (C++)
                    und weiterhin Zubehör anzumontieren. Das Resultat war nicht schlecht,
                    aber nicht gut genug. Also hat man sich darauf verlegt Bildmaterial
                    für alle Farben und Ausstattungsvarianten zu liefern, die man nur kriegen konnte.
                    Letztendlich sind bei weitem nicht alle Fahrzeuge in allen Varianten verfügbar.
                    Und niemand stört es. Weder den Kunden, noch den potenziellen Autokäufer.

                    Kommentar


                    • #11
                      http://pear.php.net/pepr/pepr-proposal-show.php?id=261

                      Du könntest den Raum in 3D-Max erstellen und dann die Tür als Objekt dynamisch anpassen. Keine Ahnung ob das Tool was taugt.

                      Kommentar


                      • #12
                        Du könntest den Raum in 3D-Max erstellen und dann die Tür als Objekt dynamisch anpassen. Keine Ahnung ob das Tool was taugt.
                        Jo das wurde bereits angesprochen

                        Kommentar

                        Lädt...
                        X