Dans cette série de didacticiels, nous allons créer une application de simulateur de vol utilisant ShiVa3D Suite. Un simulateur de vol est un exemple intéressant de programmation 3D. Afin de construire cette application, nous allons couvrir tous les sujets nécessaires à la création de jeux 3D, d'applications éducatives et d'applications 3D innovantes. Le simulateur intégré à cette série sera déployé et testé sur un Motorola Droid avec Android 2.2, un iPod Touch avec iOS 4.3 et un iPad 2 avec iOS 4.3..
Avec Shiva3D Suite, un programmeur n'a pas besoin d'écrire de code spécifique à Android ou iOS. La création d'une application 3D multiplate-forme avec Shiva3D Suite comporte deux étapes principales: (1) Développez les aspects visuels de l'application et le code correspondant à l'aide de ShiVa Editor. (2) Convertissez le fichier binaire résultant en un exécutable spécifique à la plate-forme (par exemple, un fichier apk pour Android) ou en un fichier de projet (par exemple, un projet Xcode pour iPad) à l'aide de ShiVa Authoring Tool..
ShiVa Editor est un outil puissant pour développer des applications 3D. Parmi les fonctionnalités disponibles de l'outil, cette série se concentre sur certaines fonctions de base, telles que la création d'un jeu, d'une scène, d'un terrain, d'un affichage tête haute (composants de l'interface utilisateur), d'AIModel (modèle comportemental d'un objet), ainsi que du codage. dans le langage de script Lua. Après avoir développé le simulateur dans l'éditeur ShiVa en tant qu'application 3D, nous l'exporterons à la fois pour les plates-formes Android OS et iOS. Pour la plate-forme Android, le fichier exporté à partir de l'éditeur ShiVa sera importé dans l'outil de création ShiVa. Ensuite, il sera converti en fichier apk pour le déploiement sur un Motorola Droid avec Android 2.2. Pour les plates-formes iPad et iPhone, le fichier exporté à partir de ShiVa Editor sera importé dans ShiVa Authoring Tool pour être converti en projets Xcode. Ensuite, on peut construire les projets dans Xcode et déployer les exécutables résultants dans des périphériques connectés..
Dans la première partie de cette série, nous présentons l'application de simulateur de vol appelée Simulator et expliquons le processus de développement que nous avons suivi lors de la création du simulateur. Nous avons également décrit le contenu de l’archive de téléchargement accompagnant cette série. Enfin, nous avons présenté les manœuvres de vol de base simulées dans l’application.
Dans la deuxième partie, nous décrivons comment développer le jeu à l’aide de l’éditeur ShiVa. La deuxième partie de notre travail consiste à créer les composants visuels de l'application..
Dans la troisième partie, nous continuons à développer le jeu à l’aide de l’éditeur ShiVa. La partie 3 concerne principalement le codage et le test unitaire de l'application..
Dans la quatrième partie, dernière partie de la série, nous montrons comment exporter l'application depuis l'éditeur ShiVa et l'importer dans l'outil de création ShiVa. Ensuite, nous expliquerons comment convertir l’application en un exécutable spécifique à la plate-forme via ShiVa Authoring Tool. Les plates-formes que nous allons considérer sont Android, iPad et iPhone. Nous donnons des images d'écran du simulateur à partir d'appareils réels utilisés pour les tests, un téléphone Motorola Droid avec Android OS 2.2, un iPad 2 avec iOS 4.3 et un iPod Touch avec iOS 4.3. Enfin, dans les "Remarques finales", nous fournissons une conclusion à la série.
Le simulateur offre une vue des environs depuis le cockpit, comme le pilote le verrait. L'avion lui-même, dont la dynamique est simulée, n'est jamais visible. L'utilisateur va voir un terrain en dessous et le ciel au-dessus du terrain. Il existe quatre manœuvres simples à simuler: la manœuvre de tangage pour monter ou descendre et la manœuvre de virage sur virage pour aller à gauche ou à droite. Des descriptions techniques de ces manœuvres sont données dans la section suivante. Ici, nous allons passer en revue les écrans pendant les manœuvres et discuter de la façon dont les manœuvres sont effectuées par l'utilisateur..
Pour jouer au simulateur, le périphérique mobile doit être maintenu sur le côté et pivoté de 90 degrés dans le sens anti-horaire. Dans cette position, il y a cinq boutons en haut de l'écran (voir ci-dessous):
Chacune de ces quatre manœuvres, une fois lancée, prend un certain temps. Une fois qu'une manœuvre a commencé, aucune autre manœuvre ne peut être lancée avant la fin de la manœuvre en cours. À tout moment, l'avion continue à avancer à une vitesse constante. Il change d'altitude uniquement pendant une manœuvre de tangage et ne change de direction que pendant une manœuvre de virage.
Avant toute manœuvre, l'avion est parallèle à la surface (terrain).
Lors d'un virage à gauche en inclinaison, le bout de l'aile gauche de l'avion descend et le bout de son aile droite monte. Pour simuler ce comportement, l'horizon commencera à tourner dans le sens des aiguilles d'une montre. Le terrain se décale vers la droite car l'avion tourne à gauche et un message s'affiche, 'Banking left', comme suit:
Une fois que l'avion a atteint un angle de roulis maximal (inclinaison), l'horizon commence à tourner dans le sens contraire des aiguilles d'une montre et s'arrête lorsque le plan redevient parallèle à la surface. Pendant tout le cycle du virage à gauche, le terrain continue de se déplacer vers la droite pour simuler un virage à gauche de l'avion..
Un virage à droite incliné est symétrique par rapport à un virage à gauche incliné ci-dessus: l'horizon se met à tourner dans le sens inverse des aiguilles d'une montre pour simuler le roulis de l'avion, le terrain se décale à gauche et un message s'affiche. suit:
Une fois que l'avion a atteint un angle de roulis minimal, l'horizon commence à tourner dans le sens des aiguilles d'une montre et cesse de tourner lorsque l'avion redevient parallèle à la surface. Pendant tout le cycle du virage à droite, le terrain continuera à se déplacer vers la gauche pour simuler un virage à droite de l'avion..
Lors d'une manœuvre de tangage à monter, l'horizon descendra d'abord pour simuler la montée du nez de l'avion. En outre, un message s'affiche, intitulé «Pitching up», comme suit:
Une fois que l'avion a atteint un angle de tangage maximal, le nez de l'avion commence à descendre. Pour simuler ce comportement, horizon commencera à monter jusqu'à ce que l'avion redevienne parallèle à la surface. À mesure que l'horizon monte, l'altitude s'affichera à côté du message 'Pitching up', comme indiqué ci-dessous:
La manœuvre de tangage à descendre est symétrique à monter. L'horizon commencera à monter pour simuler la chute du nez de l'avion et un message «Pitching down» s'affichera comme suit:
Une fois que l'avion a atteint un angle de tangage minimal, l'horizon commence à descendre jusqu'à ce que l'avion redevienne parallèle à la surface. Lorsque l'horizon s'abaisse, l'altitude s'affiche à côté du message 'Pitching down' comme indiqué ci-dessous..
Pendant tout le cycle d'une manœuvre de tangage, l'avion gagne de l'altitude s'il monte en hauteur ou perd de l'altitude en descendant.
Lorsque l'utilisateur redémarre le simulateur, un message intitulé «Redémarrage de la simulation» s'affiche à l'écran pendant quelques secondes avant le redémarrage de l'application. Ceci est montré ci-dessous.
En plus des boutons, l'utilisateur peut initier des manœuvres de virage et de tangage par une simple pression sur l'écran..
Les manœuvres de virage via les actions du pouce sont illustrées dans la figure ci-dessous..
Les manœuvres de tangage via les actions du pouce sont illustrées dans la figure ci-dessous..
L'utilisateur peut également redémarrer le simulateur en déplaçant deux doigts sur l'écran simultanément dans le même sens, vers le haut ou le bas, comme indiqué ci-dessous..
Le terrain a des dimensions finies. Si l'avion sort des limites, un message «Hors limites» s'affiche, comme indiqué ci-dessous, et la simulation redémarre..
Dans cette section, nous aborderons les concepts de base du développement de jeux 3D avec ShiVa3D. La majeure partie de la discussion ici est empruntée à la documentation originale de ShiVa3D. Pour plus d'informations, veuillez consulter http://www.stonetrip.com/developer/doc/ et le manuel d'utilisation fourni avec l'éditeur ShiVa..
Jeu représente un jeu, l'entité principale de l'application. Il encapsule tout le reste de l'application, comme des caméras, des scènes, etc. Le jeu est une unité de déploiement autonome..
Scène représente un lieu ou une vue associée au jeu. Il existe un ensemble d'objets ou de modèles associés à une scène. Un jeu peut avoir plus d'une scène. Le jeu dans l'application Simulator a une seule scène.
Caméra représente un point de vue dans le jeu. L'utilisateur verra le jeu à travers la caméra. Une caméra peut se déplacer d'une position à une autre ou sa direction peut être modifiée. Dans cette série, la caméra capturera le vol de la vue du pilote. Nous supposerons que la caméra est placée devant l'avion pointé tout droit. L'avion lui-même ne sera pas visible.
Modèle peut être un objet ou un ensemble d'objets avec divers attributs tels que la forme, la lumière ou le capteur. Le seul modèle que nous aurons dans le simulateur est un jeu de lumières par défaut pour éclairer le terrain..
Terrain est le sol à une scène. Dans le simulateur, nous allons créer un terrain pour simuler ce qu'un pilote verrait pendant un vol..
AIModel implique «intelligence artificielle» et représente le comportement. Un AIModel peut avoir des fonctions, des gestionnaires, des états et des variables. Dans le simulateur, nous utiliserons un modèle AIModel pour décrire la dynamique simplifiée d'un avion.
Scénario contient le code dans un AIModel, par exemple, le code d'une fonction ou d'un gestionnaire. Le langage de script dans ShiVa3D est Lua (http://www.lua.org).
HUD «Head Up Display» signifie «tête haute». Ce terme désigne divers widgets d'interface utilisateur tels que les boutons, les libellés, les listes, les curseurs, etc., permettant à l'utilisateur d'interagir avec le jeu. Les composants HUD que nous allons utiliser dans le simulateur sont les étiquettes de texte et les boutons..
Pour développer le simulateur, nous utiliserons la version gratuite de ShiVa3D Suite (http://www.stonetrip.com/download.html), qui comprend ShiVa Editor PLE (édition d'apprentissage personnel) et ShiVa Authoring Tool. Le diagramme ci-dessous donne un aperçu du processus de développement que nous avons utilisé avec ces outils..
Laissez-nous discuter des étapes individuelles de ce processus.
ShiVa Editor propose divers modules pour développer et tester une application 3D, généralement un jeu, à partir de la base. Une caractéristique importante de ShiVa Editor est qu’une application développée avec cet outil peut être déployée (après avoir été créée dans ShiVa Authoring Tool) sur différents périphériques dotés de systèmes d’exploitation différents, par exemple. un ordinateur fonctionnant sous Windows, un téléphone portable sous Android ou iPhone, etc. Certaines des opérations de base que vous pouvez effectuer avec ShiVa Editor sont les suivantes:.
Développer:
Test: vous pouvez effectuer un test initial de l'application 3D dans l'environnement de développement avant de la déployer sur un périphérique cible. Le test est effectué via la fonctionnalité Animer ou Aperçu de ShiVa Editor. Pendant les tests, vous pouvez modifier les paramètres de la taille de l'écran pour voir comment l'application sera affichée sur le périphérique cible réel. Pour tester les événements de bouton, nous avons utilisé des clics de souris. Pour tester les événements tactiles, nous avons exporté et déployé l'application dans un appareil réel..
Exporter: Une fois les tests terminés, exportez l'application. Cela générera un fichier avec l'extension stk. L’application exportée sera utilisée par l’outil de création ShiVa, qui est présenté ci-après..
L’objet principal de l’outil ShiVa Authoring est de convertir une application, créée via l’éditeur ShiVa, en une application spécifique à la plate-forme pouvant être déployée sur un périphérique particulier (par exemple un iPhone, un iPad ou un téléphone Android). Certaines restrictions s’appliquent au système d’exploitation de la machine exécutant l’outil ShiVa Authoring et du périphérique cible à convertir. Par exemple, l'outil de création ShiVa s'exécutant sur une machine Windows ne peut pas générer d'application iPad ou iPhone. Lors du développement du simulateur, nous avons utilisé une machine Windows pour l'éditeur ShiVa. Pour créer l'application Android Simulator, nous avons également utilisé une machine Windows pour exécuter l'outil de création ShiVa. D'autre part, pour créer les applications iOS Simulator, pour iPhone et iPad, nous avons utilisé un ordinateur Mac OS pour exécuter l'outil de création ShiVa..
Certaines des actions de base que l’on peut effectuer avec l’outil de création ShiVa sont les suivantes:.
Sélection de la plate-forme de création: Pour les besoins de cette série, les trois options de plate-forme qui nous intéressent sont iPhone, iPad et Android. Notez que, pour iPhone et iPad, ShiVa Authoring Tool doit fonctionner sur un ordinateur Mac OS..
Importer: Importe l'application (un fichier avec l'extension stk) qui a été exportée via l'éditeur ShiVa..
Génération: lors de la création pour Android, nous allons configurer l'outil de création ShiVa pour générer un fichier apk Android pouvant être déployé directement sur un appareil Android compatible. Lors de la création pour iPhone, nous allons configurer l'outil de création ShiVa pour générer un projet Xcode pour le développement d'un iPhone. Ensuite, vous pouvez construire le projet dans Xcode et le déployer sur un périphérique connecté (nous avons en fait utilisé un périphérique iPod touch à des fins de test au lieu d’un iPhone). De même, lors de la création pour iPad, nous allons configurer l'outil de création ShiVa pour générer un projet Xcode pour le développement iPad. Ensuite, on peut construire le projet dans Xcode et le déployer dans un iPad connecté.
Pour chaque plate-forme, ShiVa Authoring Tool offre des options légèrement différentes pour générer son produit final. Par exemple, lors de la création pour Android, vous pouvez générer un projet Eclipse au lieu d'un exécutable Android (comme mentionné ci-dessus, nous avons choisi de générer un exécutable Android dans cette série)..
De même, pour iPhone ou iPad, il est possible de générer un fichier exécutable à distribuer au lieu de générer un projet Xcode (comme mentionné précédemment, nous avons choisi de générer des projets Xcode dans cette série). Veuillez consulter le manuel d'utilisation de ShiVa Authoring Tool pour plus de détails..
Vous trouverez ci-dessous une liste des configurations que nous avons utilisées lors du développement de l'application Simulator pour cette série. Pour plus d'informations sur la configuration requise et les conditions préalables, voir la documentation Shiva3D décrite dans http://www.stonetrip.com/developer/doc/editor/information/hardware et http://www.stonetrip.com/developer/doc/authoringtool/installation..
OS de la machine de développement: Windows XP
Notez que notre cible principale dans cette série est Android 2.2 pour laquelle l'application a été testée. Cependant, Shiva 3D Authoring Tool version 1.1 prend également en charge Android 2.3, niveau API: 9 et Android 2.3.3, niveau API: 10..
Dans cette section, nous allons donner une description des fichiers du fichier d’archive accompagnant cet article..
Cette section donnera un aperçu de la dynamique de vol qui sera simulée dans l'application..
Le réglage général du vol est un terrain carré de 4 096 x 4 096 unités de chaque côté (pour une discussion sur le terme «unité», voir la section intitulée «Unités et variables» dans la partie 4 de cette série). Les coordonnées tridimensionnelles sont au centre du terrain. Une vue de dessus du terrain est montrée ci-dessous. Notez que la flèche indique la section positive d'un axe. De plus, le point à l'intérieur du cercle représentant l'axe Y indique que la section positive de l'axe Y est opposée, c'est-à-dire éloignée du terrain. Sur la figure, observez que l’axe Y est l’axe vertical, tandis que les axes X et Z correspondent aux axes horizontaux représentant le plan à 2 dimensions sur lequel se trouve le terrain..
Au départ, l'avion simulé est à (x, y, z) = (0,50,2050) et la direction dans laquelle il se déplace est tout droit.
Notez que la simulation n'affichera pas l'avion. Au lieu de cela, l'utilisateur sera "assis" dans le cockpit et verra les environs (le terrain et le ciel) depuis le cockpit comme le verrait un pilote. La figure ci-dessous représente l'environnement du pilote au début de la simulation (dans la simulation, le système de coordonnées n'est pas affiché pour l'utilisateur). Les altitudes sur le terrain varient entre, approximativement, un maximum de 34 unités et un minimum de -34 unités..
Le simulateur effectuera quatre manœuvres simples: une manœuvre de tangage pour monter ou descendre et une manœuvre de virage en virage pour aller à gauche ou à droite..
Expliquons d’abord la manœuvre de tangage. Comme indiqué ci-dessous, l'angle de tangage est l'angle de rotation autour de l'axe latéral qui traverse le plan d'ailes à ailes (http://en.wikipedia.org/wiki/Aircraft_principal_axes)..
La figure ci-dessous montre la séquence de manœuvre de tangage lorsque l'avion monte.
Initialement, l'avion se déplace droit devant lui parallèlement au sol, ce qui constitue une condition d'équilibre. Lorsque le terrain commence, le nez de l'avion commence à monter. Au même moment, l'avion commence à prendre de l'altitude. À un moment donné, l'angle de tangage atteint un maximum. À partir de ce point, le nez de l'avion commence à descendre, mais l'avion continue de prendre de l'altitude. Le nez de l'avion continue à descendre jusqu'à ce que l'angle de tangage atteigne 0, c'est-à-dire que l'avion atteigne à nouveau l'état d'équilibre. À partir de ce moment, l'avion maintiendra son altitude. À la suite de cette manœuvre, l’avion a pris de l’altitude entre les deux conditions de régime stabilisé, comme indiqué ci-dessous..
La manœuvre de tangage lorsque l'avion descend est symétrique à la précédente. Au départ, l'avion se dirige tout droit. Lorsque le pas commence, le nez de l'avion commence à descendre et l'avion commence à perdre de l'altitude. À un moment donné, l'angle de tangage atteint un minimum. À partir de ce point, le nez de l'avion commence à monter, mais l'avion continue à perdre de l'altitude. Le nez de l'avion continue à monter jusqu'à ce que l'angle de tangage atteigne 0, c'est-à-dire que l'avion atteigne à nouveau l'état d'équilibre. À partir de ce moment, l'avion maintiendra son altitude. À la suite de cette manœuvre, l’avion a perdu de l’altitude entre les deux conditions de régime établi.
Décrivons maintenant le virage en banque. Comme indiqué ci-dessous, l'angle de roulis (équivalent à l'inclinaison) est l'angle de rotation autour de l'axe longitudinal traversant le plan du nez à la queue. (http://en.wikipedia.org/wiki/Aircraft_principal_axes)
La figure ci-dessous montre la séquence d'une manœuvre de virage à gauche inclinée.
Initialement, l’avion se déplace tout droit, ce qui est dans un état stable. Lorsque la manœuvre commence, l'angle d'inclinaison commence à augmenter et l'avion commence à virer à gauche. À un moment donné, l'angle d'inclinaison atteint un maximum. À partir de ce point, l'angle d'inclinaison commence à diminuer, mais l'avion continue à tourner à gauche. L'angle d'inclinaison continue à diminuer jusqu'à atteindre 0, c'est-à-dire qu'il atteint à nouveau l'état d'équilibre. À partir de ce moment, l'avion continuera tout droit. À la suite de cette manœuvre, l’avion a changé de direction vers la gauche entre les deux conditions de régime stabilisé, comme indiqué ci-dessous..
Le virage en virage à droite est symétrique au précédent. Initialement, l’avion se déplace tout droit, ce qui est dans un état stable. Lorsque la manœuvre commence, l'angle d'inclinaison commence à diminuer et l'avion commence à virer à droite. À un moment donné, l'angle d'inclinaison atteint un minimum. À partir de ce point, l'angle d'inclinaison commence à augmenter, mais l'avion continue à tourner à droite. L'angle d'inclinaison continue d'augmenter jusqu'à atteindre 0, c'est-à-dire d'atteindre à nouveau l'état d'équilibre. À partir de ce moment, l'avion continuera tout droit. À la suite de cette manœuvre, l'avion a changé de direction pour se placer entre les deux conditions de régime stabilisé.
En réalité, les avions pourraient effectuer des manœuvres plus sophistiquées telles que la mise en banque et le tangage en même temps. Pour des raisons de simplicité, notre avion ne réalisera qu’un de ceux-ci à un moment donné. L'ajout de manœuvres avancées au simulateur n'est pas une tâche difficile et est laissé au lecteur intéressé à titre d'exercice.
Pour simuler le mouvement du plan en coordonnées tridimensionnelles, nous utilisons un modèle simplifié comme décrit ci-dessous..
Pendant la manœuvre de tangage, lorsque le plan monte (respectivement vers le bas), le code d'application incrémente (décrémente, respectivement) la valeur de la coordonnée Y d'une valeur fixe à chaque image de la simulation, indépendamment de l'angle de tangage. La coordonnée Y du plan est fixe à tout moment sauf lors d'une manœuvre de tangage.
Lors de la manœuvre de virage en virage, lorsqu'un plan tourne à gauche (à droite, respectivement), le code d'application incrémente (décrémente, respectivement) la rotation du plan autour de l'axe des Y d'un montant fixe à chaque image de la simulation..
Ensuite, les coordonnées X et Z du plan sont calculées à chaque image en utilisant deux variables, V, vitesse du plan, et Yg, rotation du plan autour de l’axe Y, comme indiqué ci-dessous:
La figure ci-dessus montre facilement que la vitesse du plan le long des axes X et Z est respectivement -V * sin (Yg) et -V * cos (Yg). À chaque image de la simulation, le code d'application obtient Yg via un appel API et calcule ces vitesses. Ensuite, il obtient les coordonnées X et Z actuelles du plan et définit les nouvelles coordonnées X et Z en fonction des vitesses calculées. La magnitude de la vitesse est constante tout au long de la simulation.
Dans la première partie de cette série, nous avons présenté l’application de simulateur de vol appelée Simulator et expliqué le processus de développement que nous avons suivi lors de la création du simulateur. Nous avons également décrit le contenu de l’archive de téléchargement accompagnant cet article. Enfin, nous avons présenté les manœuvres de vol de base simulées dans l’application. Dans la partie 2, nous allons commencer à décrire comment développer le jeu à l’aide de l’éditeur ShiVa..