la 3D dans toute sa splendeur!!(je plaisente)

3D@ZINTELIX3D

.Introduction a la 3D

.LA 3D comment ca marche?

.Les bon logiciel

.Et la programmation?

.Les calcule mathematique

.un exemple3d en OPENGL pour c++

 


.Introduction a la 3D:

La conversion  vers la 3D est un véritable défi pour un programmeur, car a moins d’utiliser un moteur 3D déjà prés, cela demande une très bonne maîtrise des mathématiques et un parfait sens de la logique et de l’observation, mais on peut résumer ce changement par utilisation de 3 coordonnés à la place de 2 pour la 2D  (X,Y)à(X,Y,Z) serte cela va causer d’autre changement qu’on va découvrir.

.Retour


.LA 3D comment ca marche?:

 Avant on désignait un plan par 3 points de 2 coordonnés dans la 2D et pour la 3D on va faire de même par 3 points de 3 coordonnés afin de former un plan dans l’espace ou ce qu’on appellera plus tard une face ou un triangle dan l’espace. Cette facette se révèle être le noyau de tout objet 3D. Une face se compose comme on l’a déjà dit de 3 points (X,Y,Z) (on peut dire 3 vertex) afin de déterminer sa position dans l’espace mais afin d’améliorer le rendu on a introduit dans la 3D le calcule de l’effet de la lumière sur cette facette pour cela on affect a chaque vertex 3 autre coordonnés appelé les normales, on a aussi ajouté les propriétés du matériel utiliser par cette facette qui se résume par 3 propriétés en RGB diffuse(la couleur du matériel ou de la face), ambiant(couleur ambiante du matériel), specular(couleur de la réflexion de la lumière sur le matériel).Facultativement on conte aussi la propriété BLEND qui défini l’opacité de la facette (la transparence). Enfin 3 autres coordonnés (3 points de 2 coordonnés (X,Y) ) afin de définir la position de la texture dan la facette.

Résumé en image :

VERTEX: 3 points (x,y,z)............................................................

NORMALES:3 vecteurs(A,B,C)

Le vecteur normales est un vecteur perpendiculaire par rapport à la face afin de le calculer en trouve tout simplement l’équation Ax+By+Cz+D=0 de la face et le vecteur normales sera VEC(A,B,C) ou -1<A,B,C<1 pour cela on convertis le vecteur en un vecteur unitaire.Pour le lissage on affect a chaque vertex un vecteur normales pour cela on calcule la moyenne de tous les vecteurs des face attacher ou qui utilise un même vertex par exemple :VEC((A1+A2)/2,(B1+B2)/2,(C1+C2)/2) si 2 face A1x+B1y+C1z+D1=0 A2x+B2y+C2z+D2=0 utilise un même vertex.

.................

Les coordonnés texture:3 points(x,y)

La texture est une image que l’on applique sur un objet3D(ou une face).Un coordonnés texture set un point(x,y) dont x,y des nombres réels ou 0<x<1 et 0<y<1 si par exemple x=5.6 la valeur qui sera tenu en compte sera x=(x-entier(x))=(5.6-5)=0.6 et ces coordonnés serviront à définir l’emplacement de la texture dans la face comme des épingle.

.............

 

.Retour


.Les bon logiciel:

Il existe des multitudes de logiciel de dessin 3D comme MAYA, Amapi3D, 3DstudioMax et sont extension CharacterStudio pour animer des personnages 3D,Poserpour le dessin des personnages.

Leur principe est d’insérer des objets et de les modéliser, ajouter des effets spéciaux(feux, eau…) et de crée des animations 3D ou des objets 3D (*.3ds, *.dxf…) qui peuvent servir pour d’autre logiciel (exportation) ou à des jeux.

.Retour


.Et la programmation?:

Pour la programmation 3D (jeux, logiciel..) presque tous les langages de programmation sont bon (Basic, c++, Delphi) mais je vous conseille largement le visuel c++ 5 ou supérieur un peut compliqué mais efficace. Il existe des fichiers *.dll dans Windows qui contienne des moteurs 3D comme OPENGL, DIRECTX, qui utilise la carte graphique afin de dessiner des objets 3D et les animer. Si vous n’avez pas une puissante carte graphique il existe des moteurs 3D software qui n’utilise que les ressource soft comme FastGraph et d’autre mais si vous voulez vous dresser les cheveux sur la tête vous pouvait créer votre propre moteur 3D (trop de temps, d’étude, de réflexion, de calcule mathématique…) vous pouvait utiliser les ressource software GDI (GDI32.DLL) qui dessine a la base des objet 2D mais vous pouvait l’utiliser pour la 3D en programmant les propriété que nous avons vu (vertex, normales, coordonnés texture, matériel, rotation3D…) j’ais essayer c’est plutôt long mais le résultat est fantastique (moteur 3d 100% personnaliser+ vertex, normales, coordonnés texture, matériel, rotation3D+gestion des ambre +brouillard…)

.Retour


.Les calcule mathematique

1.equation d'un plan dans l'espace:

pour 3 VERTEXS P1(x1,y1,z1), P2(x2,y2,z2) , P3(x3,y3,z3).

3 vecteurs VEC1(A1,B1,C1)=(x2-x1,y2-y1,z2-z1)

................VEC2(A2,B2,C2)=(x3-x1,y3-y1,z3-z1)

................VEC3(A3,B3,C3)=(X-x1,Y-y1,Z-z1)

le determinant des 3 vecteur est NULL.

|X-x1...Y-y1...Z-z1|

|A2......B2......C2...|

|A3......B3......C3...|=(X-x1)*(B2*C3-B3*C2)-(Y-y1)*(A2*C3-A3*C2)+(Z-z1)*(A2*B3-A3*B2)

..............................=A*X+B*Y+C*Z+D=0 (aprés calcule)

2.Vecteur unitair dans l'espace:

pour un vecteur VEC(A,B,C)

LNG= racine²(A²+B²+C²)

A=A/LNG

B=B/LNG

C=C/LNG

3.Rotation dans l'espace:

un vertex P(x,y,z) effectue une rotation de N degré autour PR(a,b,c) par raport:

(x,y): X=(x-a)*cos(N)-(y-b)*sin(N)+a

........Y=(x-a)*sin(N)+(y-b)*cos(N)+b

(z,y): Z=(z-c)*cos(N)-(y-b)*sin(N)+c

........Y=(z-c)*sin(N)+(y-b)*cos(N)+b

(x,z): X=(x-a)*cos(N)-(z-c)*sin(N)+a

........Z=(x-a)*sin(N)+(z-c)*cos(N)+c

.Retour