Des temps de chargement WebGL et une commercialisation plus rapides

Comment Marxent s'est associé aux services professionnels de Unity pour optimiser les performances de son application.

Marxent : un exemple de bonne collaboration avec les services professionnels de Unity

Comment faire fonctionner de concert deux logiciels sophistiqués et diverses technologies de navigateurs pour offrir la meilleure expérience utilisateur possible ? Marxent a agrandi son équipe de développeurs experts afin d’optimiser son outil de décoration intérieure 360° en 3D pour le Web, qui permet aux clients et aux vendeurs de créer et de modifier des visualisations détaillées. L'entreprise a tiré parti des services professionnels Unity pour commercialiser plus rapidement un produit de meilleure qualité.

Beck et Barry Besecker ont lancé Marxent en 2011 afin d’aider les détaillants, tels que les magasins d’ameublement et de décoration, à augmenter leurs ventes et à réduire les retours en tirant parti des technologies 3D émergentes. Les deux frères ont commencé par créer des applications uniques en RA et en RV, mais avec des demandes de performances toujours plus importantes et la nécessité de gérer du contenu intégré, ils sont bientôt passés d’OpenGL au moteur en temps réel de Unity. Ceci a permis à leur plateforme cloud Marxent® 3D d’être à l’avant-garde du secteur, dont ils sont désormais l’un des chefs de file en matière de conception 3D multicanal et de visualisation.

Le projet

Des visualisations rapides et interactives qui améliorent les ventes des boutiques de décoration intérieure et réduisent le nombre de retours

L'objectif

Optimiser les temps de chargement dans divers navigateurs et configurations

Plateformes

WebGL, iOS, Android

Membres de l'équipe

80

Lieu

Miamisburg, Ohio – Austin Landing

Le moteur en temps réel de Unity est un élément complet

Le Concepteur de pièce en 3D de Marxent est un outil de décoration intérieure sur navigateur qui permet aux clients et aux vendeurs de tester des combinaisons d'ameublement, de couleurs, de revêtements de murs et de dimensions dans un environnement en 3D. Son interface simple et adaptative encourage les acheteurs à configurer et estimer virtuellement le coût de leurs projets. Le moteur en temps réel de Unity en est l'un des éléments centraux.

Lorsque Marxent présentait une démonstration du récent déploiement WebGL du Concepteur de pièce en 3D, un nouveau client a indiqué que les temps de chargement rallongés posaient problème. Les ingénieurs de l'entreprise avaient mis en œuvre des optimisations majeures, mais étaient passés à côté de ce souci. Ils se sont donc attelés à le résoudre, pour aider leurs clients à fournir une meilleure expérience à l'utilisateur final, et donc améliorer les ventes.

L'un des éléments qui leur manquait était une bonne connaissance du moteur en temps réel de Unity et de la façon dont les logiciels de rendu se comportent avec les formats de code parfois particuliers, tels que WebAssembly. Marxent a alors contacté les services professionnels de Unity, pour qu'ils les aident à rechercher et à résoudre les problèmes relatifs au code de Unity, à celui de Marxent, à la structure des cadres et des éléments en .dlls, et à tout ce qui pouvait altérer le lancement et les temps de chargement, notamment sur la plateforme WebGL.

Le résultat :

  • Une expérience client améliorée grâce à un logiciel 3D plus rapide et rationalisé
  • Une meilleure expertise en interne sur la plateforme Unity
  • Un partenariat renforcé et plus collaboratif entre deux fabricants de logiciels internationaux

L'objectif : réduire les temps de chargement

L'interface utilisateur du Concepteur de pièce en 3D est conçue en HTML et JavaScript natifs. Ces formats communiquent avec le lecteur WebGL de Unity via des appels JavaScript externes. Il utilise une suite de bibliothèques de contenu conçu par Marxent et partagé sur l'ensemble des applications en 3D sur le cloud de Marxent®.

Une fois que les développeurs de Marxent ont donné aux équipes Unity tous les détails sur l'architecture du projet, ses systèmes, son processus de déploiement, sa configuration et ses bibliothèques, les deux entreprises ont cherché à réduire la taille des données du lecteur de l'application et son code de base, ainsi qu'à optimiser le flux de l'application. Ces opérations impliquaient plus précisément :

  • D'implémenter WebAssembly
  • De retirer les ressources inutiles de la compilation du lecteur, tout en optimisant la taille des ressources plus lourdes indispensables
  • De retirer les packages Unity inutiles (modules)
  • D'optimiser la taille du code en améliorant les fonctionnalités de réduction de la taille et en supprimant des parties des bibliothèques de code
  • De minimiser le temps de compilation du shader et les temps de chargement de la première scène
  • D'éliminer les goulots d'étranglement du processeur

Accorder l'application avec WebAssembly s'est avéré être l'un des principaux points de ce projet d'optimisation des performances. WebAssembly est un format de texte à exécution rapide pour le code développé par le World Wide Web Consortium afin de complémenter JavaScript. Selon Vince Kilian, responsable du développement produit chez Marxent, « l'intégration de WebAssembly est l'une des fonctionnalités de la version 2018.3 de Unity les plus importantes pour nous. »

On peut tous faire la différence

L'un des ingénieurs support en chef de Unity a passé une semaine sur site aux côtés de l'équipe du client. Barry Besecker, technicien en chef et cofondateur de Marxent, indique que « La profondeur et l'étendue de ses connaissances techniques étaient impressionnantes. Mais, plus important encore, il s'est très bien entendu avec l'équipe, ce qui a donné lieu à une remarquable collaboration. » En plus d'être un expert du dépannage et de bénéficier d'une grande expérience sur la plateforme Unity à l'échelle de l'entreprise, ses compétences en communication ne laissent pas à désirer. Il sait parfaitement s'adresser à d'autres développeurs et ingénieurs Unity, qui pourraient aider à trouver une solution. Il contactait parfois directement un spécialiste Unity en WebGL lors des séances de travail, pour qu'il participe à la réflexion et aide à résoudre les problèmes les plus épineux.

Souvent, son rôle était de dispenser des conseils pratiques pour travailler sur la « boîte noire » de Unity, tout en protégeant la propriété intellectuelle de l'entreprise. Selon Vince Kilian, « Parfois, on a besoin de certaines informations sur la conception du système pour pouvoir diagnostiquer les problèmes au niveau le plus profond. Celle de Unity comprend des déclarations imbriquées complexes et certaines traces d'appels sont vraiment délicates ! Pouvoir bénéficier de son expertise était vraiment important pour nous. »

Une collaboration terriblement productive

Suite à ce projet d'optimisation, Marxent a informé son client qu'une solution avait été trouvée et pouvait être appliquée rapidement. Selon Barry Besecker, « Les clients nous remontent rapidement les problèmes et, dans le cas présent, l'un de nos nouveaux clients utilisait un prototype dans un environnement de test, il était donc très simple de leur montrer nos améliorations. » Au global, la vitesse a connu une augmentation de 30 %, ce qui était conséquent.

Fort de cette expérience, Marxent travaille actuellement sur un cahier des charges pour l'aide au développement, afin d'augmenter la flexibilité du système de shader, c'est-à-dire les pipelines du shader et du système de rendu publiés dans la version 2018.3 de Unity.

Marxent anticipe déjà de tirer parti de l'engagement de Unity à améliorer les environnements et objets dynamiques et générés par l'utilisateur. Vince Kilian explique : « J'ai observé des projets Unity lors des conférences de développeurs, où l'on trouve des millions d'instances sur l'écran et un très faible nombre de comptages d'appel, ce qui constitue une avancée incroyable. Mais c'est surtout utile quand on a des légions de soldats qui tirent des volées de flèches. Chez Marxent, nous ne nous amusons pas à faire apparaître des milliers de canapés en même temps ! »

Pour autant, l'entreprise aide à vendre des milliers de divans. Marxent est l'un des chefs de file mondiaux en matière de développement d'outils en RA/RV pour le commerce. Des collaborations telles que les services professionnels de Unity fonctionnent dans les deux sens : le produit est optimisé, alors que Unity obtient de précieuses données sur l'amélioration et la modification de ses propres produit et feuille de route. Travailler avec Marxent a ainsi permis de souligner l'importance du Profiler de mémoire comme outil de diagnostic général, ainsi que celle de l'éclairage en temps réel dans le système de shader pour les applications de vente dynamique.

« Nous n'avons même pas envisagé de contacter d'autres fournisseurs, nous avons tout de suite pensé à Unity. Ils ont validé notre technologie et le R&D dont nous étions si fiers. Nous savions que Unity était la meilleure façon d'optimiser notre application. Et leurs experts ont pu s'attaquer de suite au projet. »

Barry Besecker, CTO and Co-Founder, Marxent

Ce site utilise des cookies dans le but de vous offrir la meilleure expérience possible. Consultez notre politique de cookies pour en savoir plus.

Compris