Get the Mytodolist Free Android app from SlideME.

jeudi 28 mars 2013

Terminologie en développement de jeux 3D

       
          Avant de commencer, assurez-vous que vous êtes familiarisé avec les concepts et la terminologie suivantes







Graphisme 3D et audio

OpenGL est la bibliothèque Open Graphisme, une spécification de plateforme indépendante pour le rendu graphique 2D/3D informatique. Pour Java, il existe deux implémentations d'OpenGL de rendu à base de:



Lightweight Java Game Library (LWJGL) - jme3 (JMonkeyEngine) utilise lwjgl.
Java OpenGL (JOGL)



OpenAL est la bibliothèque Open Audio, une API indépendante de la plateforme audio 3D.




Contexte, affichage, rendu


        Le contexte JME fait les réglages, le rendu, le minuteur, l'entrée et l'écouteurs d'événements, le système d'affichage, accessible à un jeu JME.


  • Le système d'affichage JME (display system) est ce qui attire la fenêtre JME personnalisée (au lieu de Java Swing).
  • Le système d'entrée (input system) est le composant qui vous permet de répondre à une entrée d'utilisateur: clics de souris et les mouvements, les presses du clavier, et les mouvements du joystick.
  • Le moteur de rendu (renderer engine) est ce qui fait tout le travail de calcul de la façon de tirer le scénographe 3D à l'écran 2D.

 Le shader est la partie programmable du pipeline de rendu. Le moteur du jeu jME3  l'utilise pour offrir des matières de pointe personnalisable.







Géométrie


Polygone, maille, sommet

          La plupart des objets visibles dans une scène 3D sont constitués de maillages polygonaux - des personnages, des terrains, des bâtiments..., etc

             Un maillage est une structure en forme de grille qui représente une forme complexe. L'avantage d'un maillage est qu'il est mathématiquement assez simple de faire son rendu en temps réel, et suffisamment détaillé pour être reconnaissable.

                 Chaque forme est réduit à un nombre de polygones reliés, habituellement en triangles; surfaces planes telles que des sphères rondes sont réduites à une grille de triangles. Les angles des polygones »sont appelés sommets (Vertex). Chaque sommet est positionné au niveau d'une coordonnée, ainsi que tous les sommets décrivent le contour de la forme.

            Vous pouvez créer des maillages 3D avec les outils appelés éditeurs de mailles, par exemple Blender. Le moteur jmonkeyengine permet de charger des mailles(Mesh) finis (= modèles) et les disposer en scènes, mais il ne peut pas éditer le maillage lui-même.



Matières: Couleur, Eclairage / Ombre


         Ce que nous appelons "couleur" est simplement une partie de la réflexion de la lumière d'un objet. Le cerveau du spectateur utilise les propriétés d'ombrage et de réflexion pour déduire la forme d'un objet et des matières. Des facteurs tels que ceux-ci font toute la différence entre le lait et la craie, entre la peau et le papier, entre l'eau et le plastique, etc..., Exemple


Couleur


Couleur Ambiante :


  • La couleur de base uniforme de la maille - à quoi il ressemble quand elle n'est pas influencée par une source de lumière. 

  • souvent similaire à la couleur Diffuse
  • C'est la couleur dont vous avez au minimum besoin pour rendre un objet visible.

Couleur Diffuse:

  • C'est la couleur de base de la maille plus la lumière brisée et les ombres qui sont causées par une source de lumière.
  • Habituellement similaire à la couleur ambiante.



Sources de lumière

Couleur émissive:

  • C'est la couleur de la lumière émise par une source lumineuse ou un matière incandescentes.
  • Seuls les matières incandescentes tels que les feux ont une couleur émissive, les objets normaux n'ont pas cette propriété.
  • Souvent blanche comme la lumière du soleil par exemple.


Réflexion

Brillance:

  • Degré de brillance d'une surface (1-128).
  • Les objets brillants ont clairement de petites reflets spéculaires définis. (Verre par exemple, de l'eau, de l'argent)
  • Les objets normaux ont de larges floues, reflets spéculaires. (Par exemple le métal, plastique, pierre, les matières polis)
  • Les objets irréguliers ne sont pas brillants et n'ont pas de reflets spéculaires. (Par exemple tissu, du papier, du bois, de la neige)
  • Définissez la couleur spéculaire à ColorRGBA.Black pour éteindre brillance.

Couleur spéculaire:



  • Si la matière est brillante, alors la couleur spéculaire est la couleur des points forts réfléchis.
  • Habituellement la même que la couleur d'émission de la source de lumière (par exemple couleur blanche).
  • Vous pouvez utiliser des couleurs pour obtenir des effets spéciaux spéculaires, tels que des reflets métalliques ou irisés.
  • Les objets non brillant ont une couleur spéculaire noire.





Matières: Textures 


      Les textures font partie des matières. Dans le cas le plus simple, un objet peut avoir une seule texture, la feuille de couleur, chargé à partir d'un fichier image. Lorsque vous vous souvenez des vieux jeux informatiques, vous trouverez que cela semble tout à fait clair. 

                C'est l'information que vous (le game designer) fournissez en plus de la correspondance des couleurs, du degré de détaisl et de réalisme. Que vous souhaitiez faire un rendu photo-réaliste ou "toon" (Dessin animé), tout dépend de la qualité de vos matières et de textures. Le graphisme 3D moderne utilise plusieurs couches d'informations pour décrire une matière, chaque couche cartographique est une texture.

        Vous pouvez télécharger les textures sur le site http://opengameart.org/, faite attention aux droits d'utilisation (copyright)


Cartographie de la texture


Carte de couleur / carte  diffuse (diffuse map)




  •  Un fichier d'image simple ou une texture procédurale qui décrit la surface visible d'un objet.
  • L'image peut avoir des canaux alpha pour la transparence.
  • Une carte couleur est la texture minimale. Vous pouvez cartographier plus de texture  pour des améliorations en option.
  • Ce sont des cartes de couleurs ombrées. La même peut être appelée carte diffuse dans un matière Phong-éclairé, car cette texture définit les couleurs de base de la lumière qui sont diffusés par cet objet.


Carte de relief (bump map)

           Les cartes de relief sont utilisées pour décrire les formes détaillées qui seraient trop dur ou tout simplement trop inefficace pour sculpter dans un éditeur de maillage. Il existe deux types:


  • Vous utilisez la carte normale pour modéliser les petits détails tels que des fissures dans les murs, rouille, texture de la peau, ou une armure toile (Plus de détails sur bumpmaps).
  • Vous utilisez la carte des hauteurs pour modéliser des terrains avec de grandes vallées et les montagnes.

Carte des hauteurs :



  • Une carte de hauteur est une image grise semblable à une carte de terrain en topographie. Plus les couleurs grises tendent vers le blanc et plus les zones représentées sont élevées , plus elles tendent vers le noir,et plus les zones représentées sont basses ou enfoncées.
  • Une carte de hauteur peut représenter 256 niveaux de hauteur et est surtout utilisée pour décrire à peu près les terrains.
        Vous pouvez dessiner ce type de carte à la main dans n'importe quel éditeur d'images

Carte normal :




  • Une carte normale bien fait est une forme plus détaillée - sans la nécessité d'ajouter des polygones coûteuses pour la maille. Il contient des informations d'ombrage qui donnent à l'objet un aspect plus lisse et plus fine.
  • Lorsque vous ouvrez une carte normale dans un éditeur d'image, il ressemble à une version en fausses couleurs de la carte des couleurs. Les cartes normales cependant ne sont jamais utilisées pour la coloration, au contraire, chacune des valeurs de couleur chiffre les données de déplacement des reliefs et des fissures sur la surface. Ces données de déplacement sont représentées par les normales à la surface des pistes, d'où le nom.
  • Vous ne pouvez pas dessiner ou modifier des cartes normales à la main, les designeurs professionnels utilisent un logiciel pour calculer leurs modèles 3D de hautes qualités. Vous pouvez soit acheter un jeu de textures professionnelles, ou trouver des collections gratuites qui comprennent des cartes normales.

Carte spéculaire 


  • Une carte spéculaire améliore encore le réalisme de la surface d'un objet: Il contient des informations supplémentaires à propos de la brillance et rend la forme plus réaliste et illuminée.
  • Commencez avec une copie de la carte diffuse dans un gris moyen qui correspond à la brillance moyenne / grisaille de ce matière. Ensuite, ajoutez la couleur grise claire (gris proche du blanc) pour les zones plus lisses, plus brillants, plus réfléchissantes et grise plus foncées (qui est proche du noir) pour les domaines plus terne, plus rugueux, plus usés . Le fichier image résultant ressemble à une version en niveaux de gris de la carte diffuse.
  •  Vous pouvez utiliser les couleurs d'une carte spéculaire pour créer certains effets réfléchissants (iridescence fausse, effet métallique).







Textures carrelées sans couture




           Les carreaux sont un très simple, type couramment utilisé de la texture. Lorsque la texturation d'une vaste zone (par exemple murs, planchers), vous ne créez pas une texture énorme - au contraire, vous carrelez une petite texture à plusieurs reprises pour remplir la zone.

Une texture homogène est un fichier d'image qui a été conçu ou modifié de sorte qu'il peut être utilisé en tant que tuiles: Le bord droit correspond au bord gauche et le bord supérieur au bord inférieur correspondant. Le spectateur ne peut pas facilement dire où l'on commence et que le prochain extrémités, créant ainsi l'illusion d'une texture énorme. L'inconvénient est que le carrelage devient douloureusement évident lorsque la zone est vu de loin. Aussi, vous ne pouvez pas l'utiliser sur des modèles plus complexes tels que les personnages.





Cartes d'UV / Texture Atlas



           La création d'une texture pour un cube est facile - mais qu'en est-il un personnage avec un visage et des extrémités? Pour les objets plus complexes, vous concevez la texture de la même manière comme un patron de couture à plat: Un fichier image contient les grandes lignes de l'avant, l'arrière et le côté de l'objet, à côté de l'autre. Les domaines spécifiques de la texture à plat UV (coordonnées) carte sur certaines zones de votre modèle 3D (coordonnées XYZ), d'où le nom de la carte UV. L'utilisation de cartes UV (également connu sous le nom Texture Atlas), un modèle peut avoir différentes textures de chaque côté. Vous créez une carte correspondante pour chaque texture UV.

          Obtenir les coutures et les cartographies correctes sont essentiels: vous devez utiliser un outil graphique comme Blender pour créer des cartes UV Texture (Atlas) et stocker les coordonnées correctement. Ça vaut le temps pour apprendre cela, les modèles UV cartographié semble beaucoup plus professionnel.





Cartographie d'environnement





           La cartographie d'environnement ou cartographie de réflexion est utilisée pour créer une impression de réflexions et de réfractions en temps réel. C'est plus rapide (mais moins précis) que la méthode de tracé de rayons utilisée dans les applications de rendu hors ligne.

              Vous créez une carte de cube pour représenter votre environnement; les cartes de sphère sont également possible, mais cherchent souvent à déformer. Fondamentalement, vous donnez à la carte de l'environnement un ensemble d'images montrant une vue de «360 °» de la scène à l'arrière - très semblable à une skybox. Le moteur de rendu des cartes de l'environnement sur ​​la texture de la surface réfléchissante, ce qui entraîne un niveau acceptable "verre / miroir / eau" effet. Tout comme une skybox, le plan de réflexion est statique, donc les choses dynamiques  (comme la marche joueur) ne font pas partie de la réflexion. (!)




Carte MIP de textures


          La carte MIP signifie que vous fournissez une texture en deux ou trois résolutions dans un seul fichier (MIP = "multum in parvo" = "nombre en un"). La fonction de la proximité (ou de loin) de la caméra, le moteur rend automatiquement une texture plus (ou moins) détaillée de l'objet. Ainsi, les objets semble régulier de près, mais il ne faut pas gaspiller les ressources de détails non représentable quand loin. Bonne pour tout (la carte MIP), mais nécessite plus de temps à créer et plus d'espaces pour stocker les textures. Si vous ne fournissez pas ceux personnalisées, le moteur jmonkeyengine crée des cartes de base MIP automatiquement comme une optimisation.






Textures procédurales

            Une texture procédurale est générée de la répétition d'une petite image, plus quelques variations pseudo-aléatoires, de gradient (appelé bruit de Perlin). Les textures procédurales semblent plus naturel que les textures statiques rectangulaires, et elles semblent moins déformées sur des sphères. Sur des grands maillages , leur répétition est beaucoup moins perceptible qu'avec carrelage textures transparentes. Les textures procédurales sont idéales pour les grandes surfaces des textures irrégulières comme l'herbe, le sol, la roche, la rouille et les murs. Utilisez le plugin du moteur jmonkeyengine NeoTexture SDK pour les créer.












Animation

         Dans les jeux 3D, l'animation squelettique est utilisée pour des personnages animées, mais en principe l'approche squelette peut être étendu à tout maillage 3D (par exemple, une caisse charnière d'ouverture peut être considérée comme une articulation primitive).

Sauf si vous animez un dessin animé en 3D, le réalisme des personnages animées est généralement un problème: Les mouvements comme ceux des aliens peuvent être mécanique ou cassé, le personnage apparaît creux, ou comme si flottant. Les concepteurs de jeux professionnels investissent beaucoup d'efforts pour créer des personnages animés d'une manière naturelle, y compris la capture de mouvement.






Manipulation et dépouillement



          Un personnage animé a une armature: Un squelette interne (os) et une surface externe (la peau). La peau est visible de l'extérieur du personnage et il comprend des vêtements. Les os ne sont pas visibles et sont utilisés pour interpoler (calculer) les étapes de morphing de la peau.

JME3, le moteur du jeu, charge uniquement et joue vos animations enregistrées. Vous devez utiliser un outil (tel que Blender) pour mettre en place (plateforme, la peau, et animation) un personnage.



Manipulation: La construction du squelette d'un personnage.

  • Créez  le moins d' os possible  pour réduire la complexité.
  • Les os sont reliés dans une hiérarchie parent-enfant: Déplacer un os peut tirer un autre os avec elle (ex. le bras tire à la main).
  • Les os suivent un schéma de nommage précis que les moteurs 3D savent de quoi il s'agit.

Dépeceur: L'association des os individuels correspondante à la partie de peau.

  • Chaque os est relié à une partie de la peau. L'animation de l'os (invisible) tire la peau (visible) avec elle.

              Par exemple l'os de la cuisse est reliée à la branche supérieure avec la peau.
  • Une partie de la peau peut être affectée par plus d'un os (genou par exemple, coude).
  • La connexion entre les os et la partie de peau est progressive: Vous attribuer un poid quelque soit le nombre de parties de peau affectées par le mouvement de chaque os.

         Par exemple lors du déplacement de l'os de la cuisse, la jambe est entièrement affectée, l'articulation de la hanche en est en moins, et la tête ne l'est pas du tout.



Animation d'images clées: Une image-clé est un enrégistrement instantannée d' une séquence de mouvements.

  • Une série d'images clés constitue une animation.
  • Chaque modèle peut avoir plusieurs animations. Chaque animation a un nom pour l'identifier (par exemple, "marche", "attaque", "saut").
  • Vous indiquez dans votre code de jeu quelle animation d'images clées à charger, et quand il faut jouer.



Quelle est la différence entre l'animation (manipulation, le dépouillement, les images clés) et la transformation (rotation, redimensionnement, déplacement)?

  • La transformation est plus simple que l'animation. Parfois, la transformation d'une géométrie déjà fait ressembler à elle est animée: Par exemple, un moulin à vent tourne, une boule d'énergie pulsante étranger, le déplacement des tiges d'une machine. Les transformations peuvent être facilement fait avec JME3 méthodes.
  • Les animations cependant sont plus complexes et sont encodées dans un format spécial (images clés). Elles déforment la peau de la maille, et une série complexe de mouvements sont «enregistrées» (dans les outils externes) et sont jouées (en JME3).



Cinématique

Le terme cinématique: «Étant donné les angles de toutes les articulations du personnage, quelle est la position de la main du personnage?"
Cinématique inverse: «Compte tenu de la position de la main du personnage, quelles sont les angles de toutes les articulations du personnage?"




Contrôleur et le canal

Dans une application JME3, vous inscrivez des maquettes animées au contrôleur d'animation. L'objet du contrôleur vous donne accès à des séquences d'animation disponibles. Le contrôleur dispose de plusieurs canaux, chaque canal peut exécuter une séquence d'animation à la fois. Pour exécuter plusieurs séquences, vous pouvez créer plusieurs canaux, et les exécuter en parallèle.



Intelligence Artificielle (IA)

           Le CPU ou objet commandé par l'ordinateur ne sont interressant dans un jeu que s'ils ne se cognent pas bêtement contre les murs, ou cour aveuglément dans la ligne de tir. Vous devez vous assurer que les objets ou le CPU soient «conscient» de leur environnement et de les laisser prendre des décisions basées sur l'état du jeu - sinon le joueur ne peut les ignorer. Le cas d'utilisation le plus courant est que vous voulez faire des ennemis qui interagissent de sorte qu'ils offrent un défi plus intéressant au joueur.

             Les  éléments "intelligent" de jeu sont appelés agents intelligents artificiel (agents IA). Un agent IA peut être utilisée pour mettre en œuvre les CPU ennemis ainsi que les animaux formés, il faut aussi les utiliser pour créer des systèmes d'alarme automatiques de verrouiller les portes et "appeler les gardes" après que le joueur déclenche une alerte intrus.


Le domaine de l'intelligence artificiel se serve souvent de:
  • Connaissances - La connaissance est la donnée à laquelle l'agent IA a accès, et sur lequel l'IA fonde ses décisions. Les agents en réalités ne «savent» ce qu'ils «voient et entendent". Cela implique que les informations peuvent être cachés à l'IA pour garder le jeu équitable. Vous pouvez avoir un agent IA qui sait tout, ou un autre qui partage quelques informations , ou un autre qui sont unique connaître parfaitement la situation actuelle.
      Exemple: Après que le joueur déclenche l'alerte, seuls quelques gardes avec des radios bidirectionnelles commencent à se déplacer vers la position du joueur, tandis que de nombreux autres gardes ne se doutent encore de rien.


  • Objectif de la planification - La planification est de savoir comment un agent IA prend des mesures. Chaque agent a la priorité d'atteindre un objectif spécifique, pour atteindre un état futur. Lors de la programmation, vous divisez objectif de l'agent en sous-buts de plusieurs. L'agent consulte ses connaissances sur l'état actuel, choisit des tactiques et stratégies disponibles, et les priorise. L'agent vérifie à plusieurs reprises si l'état actuel est plus proche de son objectif. En cas d'échec, l'agent doit jeter les tactiques à court terme / stratégie et essayer un autre.
Exemple: Un Agent recherche le meilleur chemin pour atteindre la base des joueurs dans un environnement changeant, en évitant les pièges. Un agent poursuit le joueur qui a le but de l'éliminer. Un agent se cache du joueur dans le but de le tuer .
  • Résolution de problèmes - La résolution de problèmes consiste à savoir comment l'agent réagit aux interruptions, les obstacles qui se dressent entre lui et son objectif. L'agent utilise un ensemble de faits et de règles pour déduire en quel état il est - état déclenché par une conception similaire à la douleur, l'angoisse, l'ennui, ou le fait d'être pris au piège. Dans chaque état, seul un sous-ensemble spécifique de réactions donnent un sens. La réaction réel de l'agent dépend aussi de son but et sa réaction ne doit pas l'empêcher de l'atteindre!
Exemples: Si les joueurs approchent , l'agent doit il attaquer se cacher ou donner l'alarme?Si l'agent est au repos, doit il poser des pièges, guérir soi-même ou recharger ses runes magiques? Si un danger menace sa propre vie, l'agent doit il tenter de s'échapper ou faire un Kamikaze?



Les IA les plus avancés peuvent aussi s'apprendre, par exemple en utilisant des réseaux de neurones.

Il ya beaucoup de ressources intéressantes qui expliquent algorithmes IA:








MATHEMATIQUE

Les coordonnées:



Les coordonnées représentent un emplacement dans un système de coordonnées. Les coordonnées sont relatives à l'origine à (0,0,0). Dans l'espace 3D, vous devez spécifier trois valeurs de coordonnées pour localiser un point: X (à droite), Y (en haut), Z (vers vous). De même,-X (à gauche),-Y (vers le bas),-Z (loin de vous). Contrairement à un vecteur (qui le ressemble), un système de coordonnées est un lieu, pas une direction.

L'origine

L'origine est le point central dans le monde de la 3D, où les trois axes se rencontrent. C'est toujours aux coordonnées (0,0,0).

Exemple: Vector3f origine = new Vector3f (Vector3f.ZERO);




Les vecteurs

Un vecteur a une longueur et une direction, comme une flèche dans l'espace 3D. Un vecteur commence à une coordonnée (x1, y1, z1) ou à l'origine, et se termine à la cible (x2, y2, z2) de coordonnées. Les directions vers l'arrière sont exprimées avec des valeurs négatives.

exemple:

Vector3f v = new Vector3f (17f,-4f, 0f); / / commence à (0/0/0)
 Vector3f v = new Vector3f (8f, 0f, 33f).add (new Vector3f (0f,-2f, 2f-)); / / commence à (8/0/33)



Vecteurs unitaires

Un vecteur unitaire est un vecteur de base d'une longueur de 1 unité du monde. Puisque sa longueur est fixe (et donc ne peut pointer qu'a un endroit de toute façon), la seule chose intéressante à propos de ce vecteur est sa direction.

Vector3f.UNIT_X = (1, 0, 0) = droite
Vector3f.UNIT_Y = (0, 1, 0) = haute
Vector3f.UNIT_Z = (0, 0, 1) = vers l'avant 
Vector3f.UNIT_XYZ = 1 wu diagonale droite-haute-ves l'avant
rendre l'unité négative pour changer sa direction, par exemple (-1, 0, 0) = gauche.


Vecteurs normalisés

Un vecteur normalisé est un vecteur unitaire personnalisé. Un vecteur normalisé n'est pas identique à un vecteur (surface) normale. Lorsque vous normaliser un vecteur, il a toujours la même direction, mais vous perdez l'information où le vecteur pointait auparavant.

Exemple: Vous normaliser les vecteurs avant de calculer les angles.


Produits vectoriels

Le produit vectoriel est un calcul que vous utilisez pour trouver un vecteur perpendiculaire (orthogonal, un "angle droit" à 90 °). Dans l'espace 3D, de manière orthogonale n'a de sens par rapport à un plan. Vous avez besoin de deux vecteurs pour définir un plan unique. Le produit vectoriel de deux vecteurs, v1 × v2, c'est un nouveau vecteur qui est perpendiculaire à ce plan. Un vecteur perpendiculaire à un plan est une surface dite normale.

Exemple: Le vecteur unité x et y du vecteur unitaire définissent ensemble le plan x / y. Le vecteur perpendiculaire à eux est l'axe z. JME permet de prouver que cette équation est vraie:

(Vector3f.UNIT_X.cross (Vector3f.UNIT_Y)). Equals (Vector3f.UNIT_Z) == true


Les transformations

Une transformation signifie tourner (rotation), mise à l'échelle (redimensionnement), ou la traduction (en mouvement) des objets dans les scènes 3D. Les moteurs 3D offrent des méthodes simples de sorte que vous pouvez écrire du code qui transforme les nœuds.

Exemples:  La chute et la rotation des briques Tetris en 3D.


Slerp

Slerp est comment on prononce une interpolation linéaire sphérique en anglais quand nous sommes pressés. Un Slerp est une transformation interpolée qui est utilisé comme une simple "animation" dans les moteurs 3D. Vous pouvez définir son début et l'état final, et le Slerp interpole une transition à vitesse constante de l'état à l'autre. Vous pouvez jouer l'animation, la suspendre à divers pourcentages (valeurs comprises entre 0,0 et 1,0), et le jouer avant et en arrière. JavaDoc: slerp()

Exemple: La géométrie de météorites en combustion fait un slerp de " la position P1, fait la rotation R1, à l'échelle S1" dans le ciel vers le bas pour "p2, r2, s2" dans un cratère.

En savoir plus sur la mathématique des objets en 3D

<< Précédent                              Sommaire                             Suivant>>


-


2 commentaires: