Introduction
Le présent site internet a été conçu afin de fournir un complément d'information
à mon curriculum vitae. Vous y trouverez de l'information concernant les sujets suivants:
Engenuity Technologies Inc.
Engenuity Technologies Inc.
[TSX: EGY] développe, commercialise et supporte des logiciels et des composants
prêts à l’emploi destinés au développement d’applications visuelles de pointe.
Nos solutions permettent à nos clients de développer des interfaces humain-machine,
des systèmes de simulation et d’entraînement, et de représenter sous forme graphique
les informations stratégiques pour l’entreprise. Les produits d’Engenuity permettent
d’accélérer le développement et d’accroître la fiabilité d’applications complexes
telles que l’affichage des informations pour les cabines de pilotage d’avion ou les tableaux
de bord de véhicule, la visualisation des réseaux, la préparation de cartes pour
missions critiques et la modélisation du comportement d’avions ou d’hélicoptères.
Jusqu'à tout récemment, Engenuity développait uniquement deux gammes de produits :
VAPS XT et STAGE. Or, le 10 novembre 2005 Engenuity a fait l'acquisition de
BGT BioGraphic Technologies Inc.
Cette compagnie développait des outils pour faire de l'intelligence artificielle.
Leur principal produit était AI.implant. Ce dernier était destiné aux concepteurs
de jeux vidéo et au milieu du cinéma. De nos jour, AI.implant est utilisé pour
le développement de jeux sur les consoles de nouvelle génération (XBOX 360 et
PlayStation3). Dorénavant, Engenuity offre trois gammes de produits:
VAPS XT
VAPS XT est un logiciel destiné aux ordinateurs personnels fonctionnant sous Windows.
C'est un outil pour le développement rapide d'interfaces humain-machine dynamiques,
interactives et graphiques en temps réel. Il offre une très grande liberté et des
possibilités de design illimitées. VAPS XT est idéal pour l'affichage de données,
des applications de simulation et pour le développement de systèmes embarqués.
Ci-dessous, on peut voir deux captures d'écran de VAPS XT en mode édition. L'image
de gauche illustre le développement d'un ADI (Attitude Director Indicator)
à l'aide de la librairie d'objets aéronautiques. VAPS XT comporte également une
librairie d'objets destinés à la création de tableau de bord d'automobile. L'usager
peut enrichir les librairies existantes ou créer de nouvelles librairies en construisant
de nouveaux objets à partir des primitives de bases (ligne, rectangle, cercle, image, etc.).
Il est même possible de créer de nouvelles primitives de bases en utilisant un API C++
fourni avec le produit.
L'image de droite illustre une fonctionnalité très puissante de VAPS XT; l'éditeur de Statecharts.
Cet éditeur permet de créer des Statecharts selon la norme UML (Unified Modeling Language).
Chaque état ou transition peut comporter des instructions qui affecteront l'objet auquel
le Statechart est associé.
VAPS XT: Librairie d'objets aéronautiques (Cliquer pour agrandir)
|
VAPS XT: State Chart (Cliquer pour agrandir)
|
VAPS XT est accompagné par défaut d'un générateur de code C++ (CODE nGEN)
qui permet de générer automatiquement un exécutable pour la plateforme cible
à partir de l'éditeur. Ci-dessous, on retrouve trois exemples d'interfaces
générés avec le générateur de code.
|
Interface primaire de vol
Voici, un exécutable qui illustre un panneau d'affichage de cabine de pilotage fonctionnel
comportant un ADI (Attitude Director Indicator). Cet exécutable a été créé en appuyant
sur un simple bouton avec le code générateur CODE nGEN.
|
|
ADI interactif
Trois ADI (Attitude Director Indicator) simples avec un contrôleur externe.
|
|
Cadrans assortis
Cet exécutable illustre quelques-uns des cadrans communs aux interfaces
de vol. Deux contrôleurs permettent de manipuler ce qui est affiché.
|
Mes réalisations chez Engenuity
Je suis entré en fonction chez Engenuity le 5 avril 2004. J'ai d'abord été engagé comme
Software Developer pour rapidement être promu comme Software Designer le 1 juillet 2005.
J'ai travaillé dans deux groupes : VAPS XT (avril 2004 à décembre 2005) et STAGE
(depuis janvier 2006).
En ce qui concerne ma participation dans le groupe de VAPS XT, j'ai participé aux
deux dernières années de développement du produit qui a été lancé sur le marché
le 9 novembre 2005. Plus précisément, ma tâche a consisté à:
- Concevoir et développer des parties d’un générateur de code C++.
À partir de VAPS XT, il est possible de générer du code C++ qui reproduit
le comportement de l’interface développée.
- Optimiser les structures de données des objets composant les interfaces
en vue d’exécuter l’application générée sur un système embarqué.
- Concevoir et développer un mode de
simulation pour les interfaces. Le principal défi de cette tâche
consistait à déterminer de façon dynamique l’ordre dans lequel
les objets devaient être mis à jour.
Après que VAPS XT ait été mis en marché, l'équipe de développement a été réduite
de plus de moitié pour finalement ne comporter que cinq personnes.
Voyant une opportunité d'augmenter mon champ de compétences, j'ai demandé
à être transféré dans une autre équipe ce qui m'a amené à travailler dans
l'équipe de STAGE où ma tâche a consisté à:
- Intégrer un 3D viewer (GenesisRT de Diamond Visionics)
à l’application STAGE.
- Concevoir et développer un terrain
service.
Bust-A-Move 3D
Mode Level (Cliquer pour agrandir)
|
Mode Arcade (Cliquer pour agrandir)
|
Qui n'a jamais joué au célèbre jeu Bust-A-Move? Voici une nouvelle version 3D
réalisée dans le cadre d'un projet de spécialité effectué lors de ma dernière
session de mon baccalauréat en génie informatique (automne 2003).
Initialement développé avec Microsoft .NET Framework (C#), la version
disponible sur ce site internet a été réalisée en C++ afin d'obtenir un plus
haut niveau de performance et afin d'utiliser les mêmes technologies que les
grands studios de développement de jeux vidéo. Le moteur 3D du jeu a été
construit à partir de la librairie DirectX de Microsoft.
La version développée comprend deux modes de jeu, soit un mode Level et un
mode Arcade. Le but du jeu est d’accumuler le plus grand nombre de points en
détruisant des balles. Pour ce faire, il suffit de créer des groupes d’au moins
trois balles. L’interface de jeu est très intuitive, on oriente le lanceur à
l’aide des flèches gauche et droite du clavier et on expulse une balle en
appuyant sur la barre d’espacement.
Pour exécuter ce programme, vous devez préalablement installer
DirectX 9.0 offert gratuitement sur le site de Microsoft.
Labtep
Image cardiaque présentée selon les axes standardisés
(Cliquer pour agrandir)
|
Carte polaire (Cliquer pour agrandir)
|
Labtep est un logiciel créé par le
Centre d'imagerie métabolique et fonctionnelle du centre hospitalier de
l'Université Sherbrooke afin de visualiser des images produites par les
tomographes par émission de positons.
Dans le cadre d’un stage effectué à cet endroit, j’ai créé deux groupes de
fonctions ayant pour but d’étudier des images cardiaques. Dans un premier
temps, j’ai développé des fonctions ayant pour but d’effectuer la réorientation
automatique selon les axes normalisés (Short axis, Vertical long axis et
horizontal long axis). Dans un second temps, j’ai réalisé un outil afin de
créer des cartes polaires. Une carte polaire est une image 2D de l’ensemble du
coeur.
Labtep a été développé en C++ sous le système d’exploitation Linux avec la
librairie QT développée par Trolltech.
Cette librairie multiplateforme permet de porter facilement le logiciel de
Linux à Windows. L’étape la plus compliquée pour porter le logiciel d’un
système d’exploitation à l’autre est la création du projet Visual Studio à
partir du Makefile.
Rotomino (Gameloft)
Version portée sur le téléphone cellulaire Motorola I90.
|
Version originale développée pour PALM OS.
|
Dans le cadre de mon baccalauréat en génie informatique, j'ai effectué un stage chez
Gameloft durant la session Hiver 2002.
À cette époque, Gameloft venait de se lancer dans le
développement de jeux vidéo pour plateformes mobiles (téléphones cellulaires).
Durant mon stage, j'ai travaillé sur deux jeux: Incubus et Rotomino. Ces jeux
ont été développés pour des téléphones cellulaires Java. Ci-dessus,
on peut apercevoir des screenshots du jeu Rotomino. À gauche, on retrouve la version
que j'ai portée pour le téléphone cellulaire Motorola I90. À droite, on retrouve
la version originale développée pour PALM OS.
|