Depuis quelques semaines, les annonces de faisaient de plus en plus rapprochées. On entendait en effet de plus en plus parler d’un moteur 3D disponible pour Windows 8 le jour de la sortie de celui-ci. Et vous le savez, la 3D, c’est ma grande passion. Alors, j’ai profité des yeux que Microsoft a envoyé à Amsterdam en cette fin d’Août pour mettre la main (anatomiquement, l’image est hardie) sur la dernière version de ce logiciel maintenant mondialement renommé. Je vous propose donc d’en faire un tour sommaire.

Installation

Le test se fait ici avec la version Beta de Unity 4 .Pas de gros problème ici, tout se passe comme convenu, si ce n’est qu’il faut installer la précédente version de Unity puis d’installer la nouvelle comme un update. Rien d’alarmant, il s’agit encore d’une version béta. Et, en tout cas, l’installation est conforme de ce que l’on peut attendre d’un module x86 ou x64. Bien entendu, il vous faudra une machine un peu puissante pour prétendre créer en toute sérénité un monde virtuel avec Unity. On parle ici d’un moteur 3D temps réel DirectX 11, donc il faut au minimum une bonne machine de joueur, au mieux une station dédiée aux graphismes 3D, pour produire en toute sérénité. De plus, il est fortement recommandé de disposer d’un logiciel additionnel de création 3D (3dsMax, Maya, ou autres) afin de pouvoir créer rapidement et efficacement des assets et des objets à intégrer à votre monde.

Premiers pas: interface

Cette interface est en premier lieu un peu déroutante, puisque l’on s’attendrait à trouver une interface avec les 4 vues orthonormées classiques de ce genre de logiciel. En fait, les outils sont en haut, dans les barres de menus, puis la vue 3D unique du scenegraph et ses contrôles, puis la vue en treeview des éléments constitutifs de votre scène et enfin, sur la droite, vous trouverez les différentes propriétés qui affecteront l’objet sélectionné. Il est à noter ici que ce moteur fonctionne en grande partie grâce à des scripts qui peuvent être ajoutés au projet à tout moment. Cela implique que votre interface ou que les propriétés d’un item sélectionné pourront être « augmentées » à la volée, et en fonction des scripts chargés. Nous y reviendrons un peu plus tard.

Vous voyez ce bouton « Play », en haut de l’interface, au-dessus de la vue 3D ? Ce bouton est très important dans votre utilisation du produit, puisque c’est grâce à lui que vous pourrez passer de la vue « conception» à la vue « test » de la scène, dans le viewport 3D, c’est à dire que vous pourrez jouer avec votre monde 3D et vous faire une idée de son aspect et de ses propriétés en mode « Run », sans avoir besoin de le compiler.

Au niveau du contrôle de la vue 3D, vous pouvez utiliser les icones sous les menus, bien sûr, mais on peut aussi passer par des raccourcis souris : Clic droit pour effectuer des rotations, clic central pour le déplacement latéral et molette pour le zoom. C’est également ici que vous pourrez bouger et mettre à l’échelle vos différents objets et assets.

Autre considération purement pragmatique, le système d’unité de Unity3D est le mètre.

Les basiques: créer un terrain

La création d’un terrain pour supporter votre zone de « jeu » est sans doute le premier pas de votre exploration de Unity 3D. Ce terrain peut-être définit de manière algorithmique ou via une texture de hauteur. Mais avant de commencer à créer des élévations, il faut prendre soin de bien configurer le terrain. Commençons par ajouter un terrain à notre scène, en passant par le menu Terrain-> Create Terrain. Ceci devrait créer un terrain plat et vierge pratiquement au centre du système de référence, ce que l’on nomme l’origine. Ceci dit, le terrain par défaut est un peu grand pour ce tutorat. Retournez alors dans le menu Terrain et choisissez l’option « Set Resolution ». Un panneau s’ouvre alors, vous permettant de définir les différents paramètres de ce terrain. Dans notre cas, nous n’avons pas besoin d’un terrain de 2kms sur 2. Passez les valeurs Terrain Width et Terrain Lenght à 512 et cliquez sur le bouton Set Resolution.

Ensuite, et même s’il existe un nombre d’outils hallucinant pour modeler le terrain, nous allons passer par une texture pour générer les élévations. Prenez votre éditeur favori et créez une texture de 512x512 px. Ensuite, barbouillez votre texture de manière à obtenir une image chaotique, sachant que le blanc représente les valeurs hautes, tandis que le noir représente les valeurs basses, tous les niveaux de gris intermédiaires permettant des pentes douces ou granuleuses. Le format de sortie devra être le .RAW, en niveaux de gris (pas de RVB).

HM

Heigtmap typique

Une fois ce fichier généré, retournez-sous Unity 3D, dans le menu Terrain, et choisissez Import Heightmap. Dans le panneau qui est affiché, pointez vers votre ficher Raw et dans les paramètres qui s’affichent à présent, veuillez préciser 30 dans la case de l’axe Y. Cliquez sur Import. Le terrain doit maintenant être accidenté. Vous pouvez sauvegarder votre fichier.

TM

Le terrain modélisé

Bon, pour l’instant, tout ceci est peu gris. Allez Nous allons remédier à cet état de fait, et pas plus tard que tout de suite.

Texturer le terrain

Pour cela, nous allons avoir besoin de passer par un plugin qui n’est pas disponible nativement dans l’installeur de Unity 3D. Nous allons donc nous rendre à cette adresse internet (http://unity3d.com/support/resources/assets/terrain-assets) et télécharger le pack Terrain Assets. Une fois en local, décompressez l’archive et placez le fichier TerrainToolkit dans le répertoire de votre projet.

Revenez dans Unity 3D, aller dans le menu Assets, choisissez Import Package-> Custom Package, pointez vers le Terrain Toolkit et importez-le. Dans l’arbre des items, Terrain Toolkit doit être présent et ouvert sur ses composants> Dan la liste des composants, cliquez et maintenez TerrainToolkit et lâchez-le sur le terrain. Comme par magie, l’Inspector ouvre de nouvelles possibilités, notamment Create, Erode et Texture. Cliquez sur Texture, puis sur le bouton Add Texture et dans l’emplacement de la texture, cliquez sur Select pour définir quelle sera la map employée pour les montagnes (Cliff est parfaite pour ceci). Faite la même manipulation pour choisir la texture de plaine, mais cette fois avec la texture Grass (hill). Jouer ensuite un peu avec les taquets Cliff Start et Cliff End pour pondérer en fonction de la hauteur l’importance d’une texture par rapport à l’autre. N’oubliez pas d’appuyer sur le bouton Apply Procedural Texture à chaque fois que vous faites un changement. Eventuellement, vous pouvez ajouter une texture de neige et répétant le même processus et en réglant le deuxième slider.

N’oubliez pas de sauvegarder !

TT

Le terrain texturé.

Illuminer le terrain

La phase logique suivante est d’illuminer un peu la scène, selon un éclairage cohérent. Cette phase est assez rapide, puisqu’en l’état, une seule source lumineuse suffit, celle du soleil. Pour créer une lumière, allez dans le menu GameObject -> Create Other -> Directionnal light. Une fois la lampe initialisée, n’hésitez pas à la déplacer, voire à la mettre un peu loin du terrain, puisque dans le cadre spécifique de la lampe directionnelle, la distance n’influe pas sur la puissance de la source. Bien sûr, un tour par l’Inspector permettra de finement améliorer les caractéristiques de votre « lampe ». Par exemple, pour activer les ombres portées (pour lesquelles une licence Pro est requise).

Le joueur et le respawn point

Bien sûr, à ce point, il serait de bon ton de tester un peu comment fonctionne notre maquette. Pour cela, il faut créer un point initial pour l’initialisation de l’utilisateur. Encore une fois, nous allons passer par un script pour créer tous les paramètres de la caméra particulière du « joueur ». Dépliez le menu Assets-> Import Package-> Character Controller. Une fois ce composant chargé, vous pouvez le glisser/déplacer dans le visuel 3D depuis la fenêtre Project, Assets -> first person Controller.

Déplacez ensuite cet élément dans la vue 3D pour le mettre en place, notamment sur l’axe de la hauteur. Vous pouvez à ce moment-là passez dans la vue Game qui s’avérera bien utile pour «voir» le point de vue de l’utilisateur. Tant qu’à se trouver dans cette vue, profitez-en pour cliquer sur le bouton Play afin de pouvoir lancer le jeu et valider la sensation de jeu. Si votre avatar tombe avant de toucher le sol, c’est que votre composant est situé trop haut. Dans ce mode, utilisez la souris pour changer votre point de vue et les flèches du clavier pour vous déplacer.

Enfin, cliquez à nouveau sur Play pour revenir au mode statique et sauvegardez !

L’environnement

Que serait une scène 3D sans un environnement digne de ce nom ! Par exemple, c’est dans ce chapitre que nous allons fabriquer notre ciel. Comment faire ? Premièrement, en chargeant un nouveau jeu d’asset de type Skyboxes ( Assets -> Import Package -> Skyboxes). Puis, dans la fenêtre Hierarchy, dépliez le composant First person Controller et sélectionnez Main camera, de manière à faire apparaître ses propriétés dans l’Inspector. Tout en bas de la fenêtre de l’Inspector, cliquez sur le bouton Add Componment, et choisissez Rendering -> Skybox. Cela ajoute le module skybox aux paramètres de la caméra de l’avatar qui attend le matériau du dôme de lumière. C’est ici que vous glissez-déplacer, depuis vos assets, un dôme céleste (pas les textures, attention...) directement dans la zone Skybox de l’Inspector de la Main Camera. Par exemple Sunny 1 Skybox.

Dans le même ordre idée, nous allons à présent renforcer la notion de profondeur en ajoutant un brouillard de profondeur. Ouvrez le menu Edit -> Render Settings. Dans l’Inspector, cochez la case Fog, choisissez un bleu assez dense et voilà un beau brouillard. Ça commence à faire sérieux.

BC

Du brouillard et un ciel.

Pour finaliser, vous pouvez jouer avec la valeur d’Ambiant color, pour améliorer le rendu des zones non-éclairées. Vous pouvez enregistrer.

Ajouter des arbres

En effet, pour l’instant, notre univers 3D est un peu vide. Sélectionnez votre terrain et allez dans l’Inspector. Dans l’onglet Terrain (script), vous disposez d’une suite de bouton, notamment pour élever ou abaisser le terrain. Mais si vous choisissez le bouton d’arbres, vous allez vite vous transformer en petit jardinier : Cliquez sur le bouton Edit Tree pour choisir un arbre particulier (et si vous n’en trouvez pas à votre gout, tenter de charger un package particulier, comme tree creator), sélectionnez un pinceau, une épaisseur, une densité, etc… et commencez à planter vos arbres en les peignant directement sur le terrain. Petite astuce utile, si vous peignez en maintenant Shift enfoncé, vous gommez les arbres peints précédemment. Notez aussi que vous pouvez planter de l’herbe, juste de la même manière. En jouant un peu avec les assets vos pourrez même ajouter une zone de vent qui fera bouger vos arbres.

CN

Un petit coin de nature…

Importer un objet en FBX

Bien entendu, il est nécessaire, pour tout objet non-procédural, de travailler avec un logiciel additionnel (3dsMax, Maya, ou autre). Ces logiciels permettent souvent d’exporter vers le format .FBX. C’est donc ce format de fichier qui est employé pour importer des objets dans Unity. Attention aux unités capricieuses du format FBX et pensez à inclure vos textures dans le format de fichier (embed Media). Si tout ceci est formaté convenablement, votre import devrait se passer proprement. Pour faire ceci, Dépliez le menu Assets->Import New Asset et pointez vers votre FBX. Ensuite, mettez-le en position dans votre scène, en utilisant l’icône de déplacement, ou celui de mise à l’échelle, juste sous la barre de menu. La clef, c’est de bien travailler son objet sous votre éditeur 3D favori. Enfin, en ajoutant un composant (Add component) physique, vous pourrez rendre cet objet collisionnable (la caméra ne peut plus le traverser).

Tests et compilation.

Dernière étape, la compilation en exécutable. C’est ici que l’ensemble des ressources de la scène 3D vont être rassemblées et compactées pour sortir sous forme d’un exécutable unique. Pour effectuer cette dernière tâche, allez dans le menu File->Build Settings. C’est ici que vous allez régler le processus de compilation. Tout d’abord, cliquez sur Add Current de manière à ajouter votre projet au batch de compilation. Dans la liste en-dessous, Choisissez l’entrée PC and Mac Standalone, et dans le panneau adjacent, sélectionnez Windows 64-bit (ou 32 selon votre machine). Cliquez ensuite sur Build And Run. La compilation commence alors (dès lors que vous aurez choisi un chemin de sortie pour votre exécutable), et débouche sur l’ouverture du « player » Unity qui permettra de visiter votre scène en ayant au préalable choisit la résolution et la qualité souhaité de votre maquette.

À noter que des options sont déjà disponibles pour créer des applications « Modern App », mais qu’à l’instant où je rédige ces lignes, il est tout de même assez difficile de rendre toute la compilation compatible. Cependant, vous pourrez spécifier les visuels des différentes tuiles et du splashscreen et créez votre propre certificat local afin de pouvoir déployer la maquette sur votre poste de développement.

Untitled-1

La vue finale, avec des particules et des ombres pré-calculées…

Conclusion

Vous l’aurez compris, Unity 3D en version 4 est un produit enthousiasmant, de par sa simplicité, sa prise en main, son approche très orientée utilisateur et sa puissance d’affichage. Le temps de prise en main est assez court pour peu que l’on soit déjà familiarisé avec les outils du marché et la philosophie générale du produit est agréable. La technique des scripts additionnels de conception est puissante et permet de donner une valeur ajoutée spécifique à vos maquettes 3d simplement, pour peu que votre équipe intègre un développeur. Enfin, la valeur technologique du produit et notamment son support de Windows 8 et spécifiquement du mode ModernUI est un énorme plus-produit qui en fait un outil moderne et en phase avec les standards et la génération d’outils actuels. Reste à valider tout ceci avec la version finale.