42 n°23 avril 2011
42 n°23 avril 2011
  • Prix facial : gratuit

  • Parution : n°23 de avril 2011

  • Périodicité : mensuel

  • Editeur : 42lemag.fr

  • Format : (210 x 297) mm

  • Nombre de pages : 81

  • Taille du fichier PDF : 19,9 Mo

  • Dans ce numéro : world invasion, battle Los Angeles.

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 66 - 67  |  Aller à la page   OK
Pages suivantes >
66 67
IRL TOUT CE QUE VOUS N’AVEZ JAMAIS VOULU SAVOIR côtés. En contrepartie, les objets vont diminuer très vite avec la distance, donc on ne verra pas très loin. Avec une grande focale, c'est le contraire. On voit loin, mais peu sur les côtés. Admirez mon superbe schéma. Que vous inspire-t-il ? OMG ! C'est le théorème de cette grosses tanche de Thalès ! On en déduit les formules suivante, pour passer des coordonnées du monde (X, Y, Z) aux coordonnées (X, Y) de l'écran : Xecran = Xmonde * (focale/(focale + Zmonde)) + LargeurEcran/2 Avec Y, c'est pareil : Yecran = Ymonde * (focale/(focale + Zmonde)) + HauteurEcran/2 On doit ajouter LargeurEcran/2 et HauteurEcran/2, afin de faire coincider le centre du monde 3D avec le centre de l'écran. Si vous ne le faites pas, l'affichage donnera l'impression que vous derpez avec le regard coincé en bas à droite. On remarquera que plus le Z est grand, plus le Xecran et le Yecran vont se rapprocher du centre de l'écran. Et c'est normal en fait. Si le Z est négatif, ça veut dire que le point est derrière vous, dans ce cas, il ne faut pas le dessiner du tout. Point, à la ligne. Maintenant que vous savez dessiner des points, passons aux lignes. Quand on projette une ligne en 3D sur un plan, ça donne, devinez quoi ? Une ligne ! Donc y'a qu'à les tracer, en utilisant les coordonnées (Xecran, Yecran). Fun fact : vous pouvez associer une couleur à chaque ligne, pour avoir un joli monde coloré. Vous pouvez également assombrir cette couleur proportionnellement à la distance de la ligne, pour accentuer l'impression de profondeur. Solution simple,calculer la moyenne des coordonnées Z des deux points pour avoir la distance. Solution classe : faites un dégradé de sombre, sur la ligne. Je vous prends pas la tête avec les algorithmes de traçage de ligne sur un écran. Y'en a plein l'internet. Et en général, vous avez à votre disposition des fonctions toutes faites. Si les deux points de votre lignes ont des Z négatifs, c'est que toute la ligne est derrière vous. Il ne faut pas la dessiner. Si votre ligne a un Z positif, et un Z négatif, c'est qu'elle est en partie derrière vous. Déterminer le point d'intersection de la ligne avec l'écran, et dessinez le côté visible. Rotationner n'est pas roter Kim Kardashian en 3D Bon, vous pouvez maintenant afficher un monde, depuis le point de vue (0, 0, 0). - 66 (42lemag.fr) -
IRL rendu d'une image est le suivant : Et si on bougeait ? Tel la divinité d'un quelconque livre de heroic fantasy, nous allons créer un monde parallèle, à partir du monde existant. Ce monde contiendra aussi des points avec des coordonnées 3D, et des lignes colorées, mais il correspondra au nouveau point de vue que l'on veut afficher. Il suffit de décaler les coordonnées des points avec celles du point de vue. XmondeParallèle = XmondeOrigine - XpointDeVue. Pareil pour les Y et les Z. Voilà, maintenant, on peut bouger dans toutes les directions. Mais nous sommes atteint d'un torticolis chronique, qui fait qu'on ne peut pas tourner la tête. Pour remédier à cela, un peu de morphine, et une transformation supplémentaire dans le monde parallèle. Ici, plus besoin de 3D. Lorsqu'on tourne la tête, on le fait sur un seul axe. Les objets qui sont devant peuvent se retrouver à droite ou à gauche. Mais ils ne seront pas plus haut ni plus bas. C'est donc les coordonnées X et Z qui changent, mais pas la coordonnée Y. Xrotaté = X*cos(θ) + Z*sin(θ) Zrotaté = -X*sin(θ) + Z*cos(θ) Et le Y ne change pas. Pour vaincre totalement votre torticolis, il serait bon de pouvoir lever et baisser la tête. Pour cela, il faudrait faire une seconde rotation, mais sur un autre axe. Cette fois, ce serait la coordonnée X qui ne bougerait pas. Je vous laisse trouver la matrice correspondante (faites gaffe à la position des signes "-", c'est pas toujours au même endroit, j'ai pas pigé pourquoi). Si vous avez envie, ajoutez une troisème rotation définissant le penchage de tête à droite ou à gauche. Le programmeur intelligent, qui veut optimiser, et éviter de se rechoper un torticolis, multipliera les matrices de rotation entre elles avant de les multiplier avec les coordonnées des points. L'ordre des étapes pour effectuer le monde d'origine -> décalage par rapport à la position du point de vue -> une ou plusieurs rotations (on obtient alors le monde selon notre point de vue actuel - > projection des points à l'écran, (on obtient les Xscreen, Yscreen) -> traçage des lignes -> profit !!! Luttons contre le racisme, ayons des faces de couleur Après des points et des lignes, il serait de bon ton de colorer les faces. Ajoutez cette notion dans la définition de votre monde : une face est définie par un ensemble de points, et éventuellement une couleur. La projection d'une face sur votre écran donne une face, youpi. Pour la dessiner, colorier simplement la zone définie par les points projetés. Pour des algos de coloriage de polygone 2D, se référer à the internet. Petit détail : lorsque vous définissez une face, il vaut mieux la faire avec un ensemble de points coplanaires (situés dans un même plan). Rien ne vous empêche de ne pas respecter cette règle, puisque les points sont tous projetés, et que vous faites le coloriage après. Mais ça risque de faire des trucs bizarres et super moches. Les gens qui font des vrais moteurs 3D ne s'emmerdent pas avec cette question, et décomposent toutes leurs faces en un ensemble de trianges. (3 points sont forcément coplanaires). Autre petit souci. Maintenant, tout n'est plus transparent. Certaines faces seront donc totalement ou partiellement cachées par d'autres. Méthode simple et bourrine pour gérer ça : classez les faces selon leur distance, (faites la moyenne TOUT CE QUE VOUS N’AVEZ JAMAIS VOULU SAVOIR Il faut trouver une formule permettant de trouver les nouveaux X et Z du monde parallèle rotatée, à partir de celle du monde pas rotatée, et de l'angle de rotation θ (en radian, car les degrés, c'est pour les taffioles et les joueurs de Xbox 360). Je vous fais pas la démonstration mathématique, ce serait vraiment super chiant. Sachez juste qu'il faut utiliser des matrices de rotations. Ca nous y fait : - 67 (42lemag.fr) -



Autres parutions de ce magazine  voir tous les numéros


Liens vers cette page
Couverture seule :


Couverture avec texte parution au-dessus :


Couverture avec texte parution en dessous :