CityEngine 2019!

Mit CityEngine 2019.0 ist eine – in jüngsten Jahren – der größten City­Engine-Versionen veröffentlicht worden. Unser CityEngine-Team, das sich mittlerweile aus 17 Leuten im ESRI R&D Center Zürich zusammensetzt, hat fleißig an allen Ecken und Kanten programmiert, sodass wir euch mit dieser Version wirklich viele neue Features sowie eine solide Überarbeitung von alter Funktionalität anbieten können.

Wir wurden regelrecht von Anfragen potenzieller CityEngine-Anwender überhäuft, die wissen wollten, wo der beste Startpunkt ist, um sich über CityEngine und deren Funktionalität schlauzumachen. Uns ist klar geworden, dass es nicht ganz so sinnvoll ist, den Anwendern eine Menge Links zu schicken, und so ist nun (endlich) unsere CityEngine-Resources-Seite entstanden. Über diese Seite hoffen wir, dass wir euch nun eine gute Anlaufstelle anbieten, die nicht nur das Einsteigen in CityEngine ermöglicht, sondern auch die meisten eurer Fragen beantworten kann.

Hier erwarten den Einsteiger und Aficionado unter anderem die neuesten Features in Erklärvideos – aus denen wir die Bilder für diesen Artikel haben – sowie ein ausführlicher Setup-Guide, Tutorials für den Einstieg und Videos der Entwickler zu speziellen Funktionen sowie eine große Bibliothek praktisch aller CGA-Referenzen mit Erklärungen, Beispielen und Codeschnipseln. Und dazu noch alle Videos aus unserer Tipps-&-Tricks-Sammlung.

Zeichen- und Transformations-Tools

Weiter geht’s mit den Zeichen- und Transformations-Tools, die schon seit CityEngine 2018.1 bei uns im Fokus stehen. Das Design-Konzept dafür wurde von unserem Produktdesigner Christian Iten entwickelt (der übrigens auch am Design der CityEngine-Resources beteiligt war).

Als Designer ist es ja besonders wichtig, nicht nur die Funktionalität schön und plausibel darzustellen, sondern auch die Anwender (mehr oder weniger) wunschlos glücklich zu machen. Wir hoffen, dass ihr das bei dieser Überarbeitung der Tools auch merkt und euch freut, dass Christian auch in Zukunft weiterhin an dem Design-Konzept arbeiten wird, sodass die Zeichen-und Transformations-Tools noch stärker und besser werden.
Die Verwendung der Zeichen- und Transformations-Tools wirkt dank zahlreicher Leistungsverbesserungen jetzt präziser und reaktionsschneller. Neben den vorhandenen Toolerweiterungen hat CityEngine aufgrund der großen Nachfrage nun auch ein Boolesches Subtraktionswerkzeug für 2D-Formen erhalten. Das Offset-Tool heißt nun „Offset Shapes“ und befindet sich hinter „Subtract Shapes“ im Hauptmenü. Und auch die Möglichkeit des Bogenzeichnens mit dem Polygon-Creation-Tools wurde an mehreren Stellen verbessert.

CGA (Computer Generated Architecture)

Wusstet ihr eigentlich schon, dass es ohne CGA vielleicht gar keine CityEngine geben würde? CityEngine ist aus der PhD-Dissertation von Pascal Müller entstanden, der übrigens nach wie vor als Director im ESRI R&D Center in Zürich tätig ist. Als Teil dieser Dissertation hat Pascal zahlreiche neue prozedurale Modellierungstechniken entwickelt, darunter auch CGA.

Die CGA-Operationen zusammen mit dem Procedural-Runtime-Kern sind also so ziemlich das Herzstück der CityEngine. Genau deswegen hat die prozedurale Modellierungssprache dieses Mal auch besonders viel Liebe von uns erhalten.

Der Component Split ist eine fundamentale Operation in prozeduraler Modellierung. Diese zerteilt eine Geometrie in einzelne topologische Komponenten, also zum Beispiel ein Gebäude in seine Fassaden. In City­Engine 2019.0 haben wir diese Operation als Funktion adaptiert. Zum ersten Mal ist es so möglich, eine modifizierte Geometrie zu analysieren und die gewonnene Information auszuwerten, ohne dabei die prozedural erzeugte Geometrie selbst zu verändern.

„Die Entwicklung solcher neuen Paradigmen ist eine Herausforderung, da sie im Einklang mit der bisherigen CGA-Sprache stehen, möglichst einfach in der Verwendung sein und dennoch viele Möglichkeiten eröffnen sollen. In diesem Fall sind wir besonders gespannt, wie CityEngine-User die neuen Möglichkeiten nutzen“, sagt Martin Manzer, einer unserer Procedural Runtime /CGA-Entwickler.

Übrigens: Eine von Martins Lieb­lings-CGA-Operationen überhaupt ist insertAlong­UV, das in CityEngine 2018.0 eingeführt worden ist. Einfach formuliert ist es damit möglich, auf einer Geometrie mit Texturkoordinaten anstatt einer 2D-Textur eine 3D-Geometrie aufzutragen. Es hat sich herausgestellt, dass es so auf sehr einfache Weise möglich ist, gebogene Geometrien zu erzeugen, die sich perfekt einbetten, zum Beispiel Leitplanken auf Straßen.

VFX-Synergien

Eines der großen Themen bei CityEngine 2019.0 war, dass wir versuchen wollten, die Workflows auch für den VFX-Bereich zu verbessern. Deswegen haben wir jetzt offiziell das Plug-in Palladio veröffentlicht.

Palladio ist ein CityEngine-Plug-in für SideFX Houdini und war eine Zeit lang ein privates Projekt von Simon Hägler (auch einer unserer Software-Entwickler) und Matthias Bühler (ehemaliges CityEngine-Teammitglied und mittlerweile Inhaber seiner eigenen Firma Vrbn Studios). Das Plug-in wurde neu überarbeitet, ist aber nach wie vor Open-Source und ermöglicht es, die City­Engine-CGA-Regeln innerhalb von Houdini auszuführen.
Die Regeln werden als sogenannte Rule Packages (RPKs) aus CityEngine exportiert und beinhalten neben den eigentlichen CGA-Regeln auch alle referenzierten Assets (meistens manuell erstellte Gebäudeteile). Die Erstellung der CGA-Skripte bleibt weiterhin ein Arbeitsschritt in der CityEngine.

Die grundlegende Arbeitsweise mit Palladio besteht aus drei Schritten: (1) Erstellen der prozeduralen Regeln in CityEngine, (2) Exportieren der Regeln als Rule Package, (3) Anwenden des Rule Package auf Houdini-­Geometrie mittels der Palladio-Houdini-­Operatoren. Diese Operatoren erzeugen als Output das prozedurale Stadtmodell.
Palladio fügt der Houdini-Werkzeugliste zwei weitere Operatoren hinzu: Zum einen ist dies der pldAssign-Operator (kurz für „Palladio-Zuweisung“), der dafür sorgt, dass jedes Houdini-Primitiv einer Start-Shape-Gruppe hinzugefügt wird (im Wesentlichen ist dies das Umring-Polygon des zu modellierenden Gebäudes). Ebenfalls werden die Start-Regel und benötigten Attribute hinzugefügt, damit die CGA-Engine mit den richtigen Werten arbeitet.
In einem zweiten Schritt kommt der pldGenerate-Operator (kurz für „Palladio-­Generierung“) zum Zug. Hier werden die Houdini-Primitive samt den zugewiesenen Attributen der CGA-Engine zugeführt, welche die Regeln anwendet und die entsprechende Geometrie generiert. Die Einbettung der CGA-Engine in das Operatoren-Netzwerk von Houdini ermöglicht neue Arbeitsweisen, die mit CityEngine selber so nicht möglich sind. Man kann nun beispielsweise auch mehrere Rule Packages hintereinanderschalten. Somit können auf das Resultat einer ersten Regel wiederum weitere Regeln angewendet werden, was der Modularisierung von umfangreichen Regeln dienlich ist. Reports, Kontaktmöglichkeiten und alle weiteren Informationen sind auf GitHub zu finden.

Und das geht nur mit Houdini?

Ganz bald legen wir noch einen drauf und veröffentlichen was Cooles für eine kleine Software, die Autodesk Maya heißt (kennt ihr vielleicht). Wie man ja so schön auf Englisch sagt: „Stay tuned!“

Palladio-Lizenz?

Ach ja, und für die nichtkommerzielle Nutzung von Palladio wird auch keine City­Engine-Lizenz mehr benötigt. Allgemein haben wir unser Lizenzierungsmodell neu überdacht, sodass man jetzt nämlich auch von der „Named User License“ profitieren kann. Heißt, ihr könnt euch einfach mit eurem ArcGIS-Online-Account anmelden und müsst euch nicht mehr mit der Flexnet-Lizenz-Aktivierung und dem ArcGIS-Administrator auseinandersetzen. Außerdem gehört die CityEngine jetzt auch zu „ArcGIS for Personal Use“ und „ArcGIS for Student Use“. Über diese Software-Bündel haben Studenten, Schüler und alle, die die Software nicht kommerziell verwenden wollen, Zugriff, und zwar nicht nur auf CityEngine, sondern auch auf viele andere von ESRI hergestellte Softwareprodukte (Kostenpunkt: 100 US-Dollar pro Jahr).

gITF

Mit glTF zieht CityEngine mit den neuesten Entwicklungen in der Welt der 3D-Austauschformate mit. Das Format wird von führenden Firmen verwendet und hat sich inzwischen zum Quasi-Standard für den Austausch von Geometrien für WebGL gemausert. Ich habe Stefan Götschi, einen unserer glTF-Experten mal gefragt was genau glTF so extrem spannend macht.

Für ihn war die Antwort relativ offensichtlich: „Dabei geholfen hat das moderne Material-Schema, das physikalisch basiertes Rendering nicht nur erlaubt, sondern fördert. Dies wird weiter unterstützt durch die Referenzimplementierung eines Viewers mit offenem Quellcode. So wird auch die korrekte Darstellung über verschiedene Programme hinweg garantiert. Da das Format einfach erweiterbar ist, haben schon viele Firmen Extension-Spezifikationen eingebracht, so zum Beispiel Google mit der Draco-Mesh-Komprimierung.“
Hinter glTF verbirgt sich ein junges Format, das den Austausch von 3D-Szenen zwischen unterschiedlichen 3D-Applikationen deutlich vereinfachen soll, da die Beschreibung der zugrunde liegenden Daten standardisiert ist und – im Gegensatz zu anderen Austauschformaten – kein Spielraum in der Interpretation vorhanden ist. Bei glTF 2.0 sollen Engpässe nicht mehr vorkommen, in Entwickler-Kreisen spricht man bereits von dem „JPEG für 3D“. Das wollten wir uns für die CityEngine natürlich nicht entgehen lassen.

Die Struktur des Formats ist offensichtlich – es gibt keine erweiterten oder gar redundanten Daten und nur einen Weg, wie die Daten zu interpretieren sind. Ein rechtsgängiges Koordinatensystem auf Basis des Kreuzprodukts von X und Y, das als Lösung Z ergibt. Y wird als Up-Achse gesehen. Die Units für alle linearen Distanzen werden in Metern gemessen, und sämtliche Winkel arbeiten mit Bogenmaß. Eine positive Rotation findet grundsätzlich im Uhrzeigersinn statt.

So haben die Import-Module einfaches Spiel und ermöglichen die korrekte Darstellung der Daten beim ersten Import – ohne Überraschungen. Des Weiteren gibt es keine Unterstützung von multiplen Koordinatensystemen oder Units. Mehr dazu findet ihr bei der Khronos Gruppe, die sich firmenübergreifend um Standards kümmert.

In der aktuellsten Version von glTF werden Skeletons sowie Morph Targets unterstützt. Anwender können mehrere Animationen in einer glTF-Datei transportieren, was sich für Bewegungen von 3D-Charakteren ideal eignet. Gängige beziehungsweise bekannte Interpolationsmethoden wie Catmull Rom und Cubic Spline sind ebenfalls vorhanden. Bei Materialdefinitionen werden PBR-Materialien unterstützt auf Basis von Disneys Principled Shader mit Albedo, Metallic, Roughness, Normal, Emission und Ambient Occlusion.

Fazit

Was kam sonst noch dazu? Wir sind dabei, die Brücke zum Unreal Studio breiter zu machen – die CityEngine VR Experience klappt nun auch mit der Oculus Rift, die Integration mit ArcGIS Urban macht die Verwendung mit der Stadtplanungsplattform von ESRI leicht, und verschiedene weitere Features sind gerade im Entstehen – schaut auf den City­Engine Resources vorbei, um herauszufinden, was es sonst noch Neues gibt.

Kommentar schreiben

Please enter your comment!
Please enter your name here

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.