Unity 3D
Unity 3D ist eine Laufzeit- und Entwicklungsumgebung die ursprünglich aus dem 3D-Gaming Bereich kommt und mittlerweile sehr stark im 3D-Anwenderbereich eingesetzt wird. Eine große Zielgruppe ist dabei die Architektur, vor allem weil das System durch unterschiedliche Exportmöglichkeiten die Übertragung in CAD-Programme ermöglicht.
In unserem Fall ist es so, dass wir das Unity 3D System zur Virtualisierung von Vorhängen nutzen. Hierzu haben wir einen Unity-Client entwickelt, welcher über WebGL im Browser genutzt werden kann und somit systemunabhängig die Visualisierung der definierten Materialien durchführt.
Kommunikation unter den Systemen
Zur Kommunikation der unterschiedlichen beteiligten Systeme (Odoo, Magento, Unity3D) wurde ein WebSockets Server (Prime Server) entwickelt, über welchen die einzelnen WebSocket Clients mit der Odoo-Zentrale verbunden werden und dadurch der sichere Datenaustausch gewährleistet wird.
Damit kann nicht nur der Unity-Client Anfragen an den Server schicken und Daten empfangen (wie es bei HTTP-Verbindungen üblich ist), auch der WebSockets-Server kann von sich aus Clients kontaktieren und zum Beispiel Befehle schicken oder eben Daten lesen.
Dies ist speziell dann interessant, wenn der Benutzer im Client eine hochaufgelöste Renderingausgabe anfordert, welche dann direkt am Unity-Server ausgeführt wird. Nachdem dieses Rendering einige Minuten an Zeit benötigt, kann der Prime-Server diese Zeit abwarten und anschließend den Web-Client darüber informieren, dass die angeforderte Datei jetzt bereitsteht.
Darstellung der gerenderten Bilder
Um Daten vom Odoo-Backend zu lesen bzw. ins Backend zu schreiben, wird über eine Verbindung vom Prime Server zur Odoo-Instanz mittels der bekannten XMLRPC-Schnittstelle gearbeitet. Damit befindet man sich weiterhin im Odoo-Standard und nutzt die “Remote Procedure Call” API mit XML als Datenformat, wodurch natürlich auch direkt Funktionen in Odoo-Modellen angesprochen werden können.
Der Prime Server als “Middleware” ermöglicht zudem auch die “Team-Bearbeitung” von Objekten in Unity 3D. Somit können mehrere Benutzer zeitgleich am gleichen Objekt arbeiten.
Um nun auch noch das Magento-Frontend mit diesem technisch umfangreichen Konstrukt zu verbinden, greift der Unity-Client über HTTP Requests auf die im Odoo-Backend entwickelte RESTful API zu und überträgt somit Daten aus Magento nach Odoo und eben wieder zurück.
Magento interagiert nur zur Datenerfassung und stellt die notwendigen eCommerce Funktionen bereit. Die komplette Preiskalkulation und Datenaufbereitung zur 3D-Visualisierung erfolgt im Odoo. Die tatsächliche Ausgabe/Darstellung des 3D-Modells wiederum erfolgt in Magento, wobei hier Odoo “nur” die Unity-Modellinformation aus Unity 3D erhält und an Magento zur Darstellung weitergibt.
Die oberhalb beschriebenen Prime-Server, WebSocket-Clients, User und Sessions werden ebenfalls in Odoo verwaltet und die Verbindungen werden entsprechend protokolliert.
Solide Basis für Visualisierungen diverser Objekte
Das aktuelle Connector-Framework für Odoo Unity 3D ist auf die notwendigen Modelle zur Kalkulation und Darstellung von Vorhängen abgestimmt. Um andere Elemente zu visualisieren und vor allem zu berechnen, müssen die Modelle, API-Calls und Berechnungen angepasst werden. Das Connector-Framework versteht sich somit nicht als ein “Out of the Box” System, welches im Plug and Play Prinzip integriert wird und dann beliebige Daten und Modelle zwischen Unity und Odoo austauscht. Hierfür sind die Anforderungen an 3D Modellen zu individuell in Bezug auf Shader, Mapping und Co. Das Connector-Framework und die Prime-Server-Logik ist jedoch die solide Basis für jede weitere Visualisierung und kann flexibel für anderen Anwendungen angepasst werden.
FUNKTIONEN
Verbindung aus Unity 3D, Magento und Odoo
Produkte werden in 3D Ansicht visualisiert und im Shop abgebildet
Erweiterbar für diverse Produkte