Generische Texturierung der 3D Stadtmodelle

Hallo allerseits,

ich beschreibe nach und nach in Wiki die Bausteine für 3D Modellierung.

Die Seite http://wiki.openstreetmap.org/wiki/DE:Texture_table
beschreibt einen Ansatz mit dem sehr kleine Texturen für grob aufgelöste 3D Stadtmodelle verwendet werden können.

Bei dem Ansatz geht es um eine vereinfachende Darstellungsart die für Online Echtzeit Rendering der 3D Modelle gedacht ist.
Selbstverständlich sind seit vieler Jahren Modelle die mit Fototexturen belegt sind bekannt. Sie sehen besser aus.
Nachteil der Fototechnik für die Texturierung:

  • Sie ist arbeitsintensiv
  • Sie bedarf guter Kenntnisse in der 3D Modellierung
  • Sie Bedarf der Farbabstimmung zwischen einzelnen Aufnahmen (Lichtseite und Schattenseite angleichen)

So wie die Texturen dort beschrieben sind, kann jeder der eine Bildbearbeitungssoftware benutzt, die Texturbibliothek ergänzen.

Die Seite wurde ergänzt. Ich brauche freie Beispiele von seamless Texturen für ein Wiki Part über die Fototexturierung.
Meine Firmensammlung darf ich natürlich nicht verwenden…

Darfst du wenigstens 2-3 Beispiele hier anzeigen? Das dürfte ja wohl noch keine “Verwendung” sein.

Gruss
Walter

Hi Walter,
ein Beispiel was “seamless” ist und wie man es herstellt ist hier:
http://www.gfxartist.com/features/tutorials/740

Ansonsten werde ich freie Beispiele machen und in Kürze anzeigen…

hi,

die Technik ist mir inzwischen klar. geht auch mit Gimp ganz gut. Nur die technischen Anforderungen (File-Format, Pixel-Größe, Farbtiefe, …) fehlen mir noch.
Schliesslich sollen die Dinger ja auch verwendbar sein.

Gruss
Walter

p.s. hier mal 2 Beispiele, die ich vorhin erstellt habe (ist mal was neues für unser einer)

oder

Hallo Walter,

  1. ein wiki Teil über die technischen Anforderungen an Bildtexturen muss ich noch schreiben. Im Vorab:
    Auflösung: Am schönsten sind Texturen bei denen die Fugen zwischen den Ziegeln noch sichtbar und erkennbar sind. 5cm pro Pixel sind ein Minimum was nur für obere Stockwerk der Gebäude gelten darf (hier kommen wir schon zum nächsten Thema: Verbindung von Einzelaufnahmen in eine große Textur- das ist aber ein Thema für Wiki.)
    File Format: Tiff ist am besten, aber aufgrund der Verbreitung würde ich für *jpg plädieren
    24 Bit Farbtiefe ist ausreichend: Bei bewegen Bilder erkennt das Auge die Farbfeinheiten nicht.

  2. ich kann Deine Beispiele nicht sehen, nur die Namen

Grüße,
Marek

danke Marek,

das waren PNG mit 512x512 Pixeln. komisch,dass du die nicht sehen kannst.
Warten wir mal das wiki ab.

Gruss
Walter

Jetzt sind sie auch wieder zu sehen. Vorhin waren sie aber nicht da.

danke,

hätt ich auch dran denken können: mein @home-server ist nicht immer an. heute musste ich mal etwas wartung machen.

@marek: habe gerade das wiki gelesen und gesehen, dass ich auf der falschen Baustelle war: ich hatte an photo-texturen gedacht.
das mit dem wiki ist passiert, da ich es mit deinem älteren 3d-wiki verwechselt hatte, deren inhalt ich ja schon kannte :frowning:

gruss
walter

Hallo Walter,
die Phototextur anweisung werde ich hier http://wiki.openstreetmap.org/wiki/DE:Phototexturing
platzieren.
Momentan sind nur einige Überschriften da. Ich werde die Seite ausbauen.
Deine Beispiele sind schon nicht schlecht!

Grüße,
Marek

Ich wollte schon fragen, ob auch Texturen von Gebäuden aus weiterer Ferne gehen oder ob es unbedingt plane Nahaufnahmen sein müssen. Hier mal ein Bild vom Fotomapping was vom Bus aus gemacht wurde.

Es ist da kein Problem, man eben das halbe Haus aufzunehmen, nur hat man meist Schärfeprobleme da die Schärfeebene bei Fisheye nicht die plane Ebene sondern eine Halbkugel ist.
Man bekommt sehr viel aufs Bild, hat aber Probleme mit der Perspektivverzerrung und der Schärfe. Hast du Ideen oder Methoden wie und ob man die Bilder irgendwie noch entzerrt bekommt? Kann mit solchen Aufnahmen überhaupt was anfangen oder gehe doch nur plane Flächenaufnahmen?

Es ist kein Problem tiffs zu erstellen, aber ich würde PNG nehmen, das es aus meiner Sicht in diesem Fall genau so gut ist (verlustfrei, RGB bis 24 bit und optiional 'nen Alphakanal) und besser packt. Ansonsten ist für Fotos Jpeg im Normalfall ja die bessere Alternative, zumindest in Bezug auf das Dateigröße/Qualität-Verhältnis.

Für die Anwendung würde das wahrscheinlich selbst bei optimierten 256 Farben in den meisten Fällen noch vernüftig aussehen, eher ist interessant, wie hoch die Detailauflösung der Textur sein muß, aber wenn du

Hallo Fabi2,
zu Deinen Fragen:
wir können niemanden bei OSM zu irgend Etwas zwingen und eine kleine Textur ist besser als keine. Deshalb kann man solche Texturen vom Prinzip aus nicht ablehnen. Das Beispielsbild von Dir zeigt:

  • Fassadenart (weiß, verputzt)
  • Geschossigkeit (3 Stockwerke plus Dachgeschoss)
  • Anzahl, ungefähre Lage und Art der Fenster woraus man die Aufteilung der Wohneinheiten ablesen kann (z.B. Das erste Gebäude hat voraussichtlich 3 Wohneinheiten pro Geschoß)
    Die Entzerrung solcher Bilder geht: an der Universität von Tokio entstand 1994 eine Doktorarbeit mit dem Inhalt: Fasssadenenterrung und Rekonstruktion der Texturen aus bewegten Bilder von einer Videokamera.

Das Problem: Wir brauchen eine sehr simple Massenlösung die schnell erklärt und angewendet ist. Entweder implementiert jemand eine derartige Technik für OSM in eine freie Software oder wir sind auf die Handarbeit die ich in Wiki beschreibe angewiesen.

Falls ein Informatikstudent die Entzerrungslösung implementieren möchte, bitte bei mir melden.

Der Letzte Abschnitt Deiner Frage ist, wahrscheinlich zufällig, abgeschnitten: was meintest Du?
Viele Grüße,
Marek

Hallo Fabi2,
Kurzanleitung für grobe Entzerrung des Bildes in Photoshop:

  1. Menü:Bild->Arbeitsfläche auf 142% entlang der X Achse erhöhen, enter und erneut mit gleichem Befehl-> 1b. und auf die gleiche Höhe wie neue Breite in cm entlang der Y Achse erhöhen
  2. Menü:Filter-> Verzerrungsfilter-> Wölben mit dem Wert von ca -41% durchlaufen lassen
  3. Einzelne Fassaden auf Rechtecke im Photoshop entzerren: Menü: bearbeiten->trasformieren->verzerren

Die Ergebnisse zeigen jedoch warum solche Bilder nicht besonders gut sind:

  • Einige Fenster werden so stark von der Seite gesehen, dass die Glasfläche praktisch unsichtbar ist
  • Eingangsbereich und ein Teil der Fassade in dem unteren Beispiel ist seitlich von dem Vordach verdeckt

MarekHowTo_CorrectDistortionBadExampleFinal

Hallo marek!

Danke für die Antworten, das stimmt natürlich auch wieder.

Die Massenlösung gibt es schon,. die nennt sich hugin (http://hugin.sourceforge.net/), hätte ich erst auch nicht gedacht, aber dann viel mir wieder ein das in dem einem Paper drin stand das sie die Entzerrung mit den Panoramatools gemacht haben wollen. Also dann erst mal 'ne Nacht lang Experimente mir hugin (leider ohne erst mal die Doku zu lesen, weil bei 'ner GUI, neigt man ja eher zum durchprobieren…) und der Doku von der liblensfun (http://lensfun.berlios.de/) gemacht, weil die benutzt z.B. showfoto aus dem digikam Projekt von KDE, um 'ne neue Linsenbeschreibung zu für meine Cam zu basteln. Jedenfalls hatte ich es dann auch geschafft Bilder/Panoramen passend auf andere Flächen umzuprojezieren. Naja, vorhin dann doch mal geguckt wie gut deren Doku ist und dann http://hugin.sourceforge.net/tutorials/index.shtml gefunden, wo diese Perspektiventzerrungsfälle quasi schon als Standardtutorial angeboten werden.

Damit ist die Lösung zwar nur bedingt schnell erklärt, aber man die natürlich dankenswerterweise alles komplett scripten und damit automatisieren (auf Windows wird das dann wohl eher zum Krampf, aber es gibt ja hier auch genügend tapfere User, die dessen “shell” zur Kartengenerierung benutzen…), dann ist das vielleicht leichter auf Dauer anzuwenden und für den Normalanwender zu beschreiben.

Fotoserien in mehr oder weniger geringer Auflöung bekommt man, wenn man, nachdem man mit einer Viedokamera einmal um eine Haus gegangen ist und danach im simpelsten Fall einfach mal ein:
“mplayer -ao null -vo jpeg video.avi” (da du Windows-User bist: mplayer gibts unter http://mplayerhq.hu/)) macht, dann bekommt man jeden Frame des Videos als JPEG-Bild. Aus denen kann man dann ein Panorama zusammenbauen lassen.

Ja, das ist ein halber Gedanke gewesen. Da meinte ich prinzipiell das man auch mit oft auch mit weniger Farben wie 256 optimierten Farben auskommt.
Hier mal eine eine Testtextur, die auch gerne für alles benutzt werden kann, die ich aus einen Fisheye-Bild eine Ligusterhecke erstellt habe (geht ja recht gut mit Gimp (http://www.gimp.org/): “Filter–>Abbilden–>Nahtlos machen” spart einem schon mal die halbe Arbeit deiner Tutorials, weil das macht die Vierteilung automatisch), um zu sehen wie sich die Verzerrung und Unschärfe so bei Nahaufnahmen auswirkt.

Als 24bit RGB-Bild war das ganze noch etwas über 600kb groß, und ist ohne für mich erkennbare Qualitätseinbußen durch die Farbreduktion um ca. 2/3 kleiner geworden. Also die 24bit sind ausreichend im Wiki klingen eher wie ein Witz, weil eine höhere Farbaanzahl bekommt man es ja nur noch mit Serienaufnahmen vom gleichen Objekt hin (kann hugin natürlich auch…).

Danke das du dir die Mühe mit der Anleitung für Photoshop gemacht hast, aber ich benutze nur noch Linux und habe somit kein Photoshop. Gimp hat direkt keine Funktion um gleichmäßig in x und y Richtung zu wölben, das was in Näherung daran heran kommt ist “Filter–>Verzerren–>Verbiegen”. Aber da das alles besser mit hugin geht, braucht man das ja nicht mehr.

Hi Fabi,
eines im Vorab: ich finde Linux und freie Software super. Ich beschreibe, einen Weg zum Ergebnis den ich kenne, aber wenn Du eine freie Lösung gefunden hast, sollten wir vielleicht diese gemeinsam untersuchen. Seamless als Begriff verwende ich in einem ein Wenig anderem Sinn als üblicherweise für einfache Hintergrudtextur verwendet (Mauer, Steine, Wiese, Wassser etc…) Es geht eher um eine gute Angleichung alles Wandtexturen die auf ein Gebäude projiziert werden (Standardmäßig die “4 Wände” ).
Bitte noch um ein Wenig Geduld: ich muß eben freie Beispiele herstellen- es dauert.

24 Bit kann man natürlich kleiner machen und der Farbunterschied ist zunächst mal bei vielen Texturen nicht sichtbar.
Auch hier muß ich Beispiele liefern und danach können die User selbst vom Fall zu Fall entscheiden welchen Generalisierungsgrad sie für richtig halten.

Viele Grüße,
Marek

Nach dem ersten groben Check müßte man mit hugin das Meiste in Bezug auf Fototexturen hinbekommen können, überprüft habe ich es noch nicht, außerdem hab ich eh zu wenig Ahnung von den 3D-Sachen und deren konkreten Erfordernisse.

Ich hatte vorhin gerade mal die Phothotexturierungsseite im Wiki durchgelesen und da ist mir dann auch klar geworden das du damit eine “saubere Nahtstelle” der abgewickelten und planen Fototextur meinst, damit das dann auf dem Objekt wie durchgängig aussieht.

Beim Durchlesen der Seite habe ich gedacht, warum macht man den keine Hybridtexturierung, also Quasi-Fototexturierung, das ist nicht so aufwendig, wie die komplette Fassade als entzerrtes Fotopanorama herzustellen und sieht besser aus als die generischen Farbflächentexturen, wo das Problem ja schon das arbeitsaufwändige taggen, der Fenster- und Türenformen und anordnung ist.

Weil nicht nur die Hausformen sind standardisiert, sondern auch die Bauteile:
-weißer Rauhputz an jeden 2. Haus (eine Rauhputz-Textur läßt sich mittels Bildverarbeitung ja auch problemlos in z.B. gelben Rauhputz umfärben)
-rote Betondachsteine oder Ziegel auf fast jedem Haus
-seltenen in der Stadt mal Feinputz
-Fassade aus Klinker (sehen quasi fast alle gleich aus, bis auf die Farbe und glänzend/matt)
-Fassade aus Ziegeln (das gibt es auch altersabhängig ein paar mehr Varianten)
-Standardzäune (Holzjägerzaun, 50 cm hoch vom Baumarkt, grüner Stahldrahtgitterfeldzaun 1,80 m Höhe pro Feld; bei Sportplätzen dann mal eben 3 Felder davon übereinander, etc.)
-Standardgehwegpflaster (graue oder rote “Betonknochen”, rechteckförmiges Betonpflaster ca. 15x8 cm, Betonpflasterstein 20x20 cm, Granitwürfelpflaster 5 cm Kantenlänge (optional schon abgelatscht), Rasenbetongittersteine)
-Standardstraßenbeläge(Feldsteinpflaster, graues Betonwürfelpflaster, Asphalt, DDR-Standardbetonplatten (bzw. dessen Streifenvariante), …)

Also könnte man für das 08/15-Einfamielenhaus erst mal eine Schicht Rauhputz (Datenbanktexttur) auf die Hausöberfläche packen und dann setzt man noch ein 45°-Spitzdach aus Betondachsteinen ober drauf. Das Material von Hausrumpf und Dach ist schneller und leichter anzugeben als wenn ich nach einem komplizierten bzw. aufwendigen Schema Fenster und Türen, vielleicht noch mit Maßen, angeben soll. Zumindest auch die Tür und Fensterbreiten sind in der Mehrheit standardisiert und da das dem menschen ja gefallen soll, ist das Kantenlängenverhältnis oft der goldene Schnitt. Klar, am liebsten möchte man sicher ein realitätsgetreues 3D-Modell haben, aber es auch mit Automatisierung bzw. speziellen Plugins zum taggen durch klicken, immer noch Aufwendig Türen und Fenstergeometrieen anzugeben, vor allen wenn man daran denkt, wie viele User es nicht mal schaffen weitergehende POI-Metadaten anzugeben.

Ich habe es nicht eilig (ich hab es ja auch schon verstanden), außerdem ist OSM ja eh ein Projekt auf freiwilliger Basis.

Hallo Fabi,
ich habe die http://wiki.openstreetmap.org/wiki/DE:Phototexturing weiter ergänzt.
Man muß hier erstaunlicherweise nicht so viel Ahnung haben. Im Grunde ist die Fototexturierung etwa wie das Draufkleben von Bilder auf ein Würfel. Je nach dem wie gut die Bilder sind, bekommt man unterschiedliche Ergebnisse.

Die Idee der Quasi- Texturierung die Du beschreibst ist natürlich verlockend, sie wurde auch vor Jahren von der Industrie entdeckt und angewendet. Es gibt Firmen, die 3d Modelle für die Militärs machen: Die ausbildung der Panzerfahrer oder Piloten kann in 3D Simulatoren gemacht werden und dort verwendet man seit mehreren Jahren Modelle die genau nach diesem Ansatz gemacht worden sind.
Der Ansatz hat folgende Schwächen:

  • Die Modelle sind zwar generalisiert, aber eine dazu gehörende Bibliothek der Texturen ist sehr groß
  • Die meisten User sehen der Unterschied zwischen der Realität und dem “texturierten” Modell und mögen solche Modelle nicht da sie sehr künstlich aussehen
  • Der Arbeitsaufwand ist fast genauso groß wie bei der “echten” Fotorealistik.

Es ist aber absolut richtig:
Texturierung ist nicht einfach, deswegen benötigt man dafür freie Werkzeuge die einfach in der Bedienung und möglichst fehlersicher sind. Solche Werkzuege muss man erst mal schreiben.