website logo
Auteur
avatar
thellier

Forum » » Création-Développement » » Dungeon Crawler (Odyssey) Os4


Posté : 27-04-2016 13:25 icone du post

Ouhlà tu m'a mis le doute comme ça fais un an que j'ai plus touché à cette partie de Microbe3D
 je viens de vérifier et effectivement  je pense faire comme toi
J'ai une liste de vertex V
Une liste de vertex-normal VN
Je fais le transform de V et VN puis remplit la liste de points P qui elle subit le lighting sur tout les points

Sur OBJ on parle dans le vide voici un exemple:

C'est une pyramide comme en Egypte cad 4 faces triangulaires + une face de base carrée soit 5 faces

Les fichiers .obj sont des fichiers textes
Les lignes qui commencent par # sont des commentaires
pyramid.mtl est un autre fichier texte decrivant les materiaux/textures

(mtllib = materials library = bibliotheque de matériaux)

VERTEX:

Il y a 5 sommets (=vertex)  les quatre de la base carrée plus le sommet
Ils sont notées v suivies de leur valeur x y z

UV:

Ma pyramide exemple est texturée selon Y  cad la texture est "projetée" à la verticale comme une diapo
Ces coordonnées textures sons appelées U et V et vont de 0.0 à 1.0
Ici donc les quatre coins de la  base carrée vont aux quatre coins de la texture et le sommet au centre (0.5 0.5)
Ils sont notées vt suivies de leur valeur u v

NORMALES:

Ensuite on a les normales : c'est la direction que regarde la face, il faut imaginer ça comme une fleche qui partirait du centre de chaque face avec la pointe vers l'exterieur
C'est une normale de face
Ces normales servent à l'éclairage : en faisant un "ratio" entre le direction de la lampe et celle de cette normale : on obtient une couleur. Cad si on regarde "vers" la lampe c'est clair sinon foncé
Quand l'objet est arrondi comme une boing-ball on comprends intuitivement que les sommets (coins de chaque face) serait mieux si il regardait vers une valeur moyenne: l'éclairage des faces serait adouci

 htt ps://msdn.microsoft.com/en-us/library/windows/desktop/IC36578.gif
C'est cette valeur "moyenne" de normale par sommet qu'on appelle vertex-normal et qui est très utilisée sur les cartes 3D
Elles sont notées vn suivies de leur valeur nx ny nz

LES POINTS:

Au final on reconstitue les vrais points P à tracer constitués de leurs valeurs x y z u v nx ny nz 

Ainsi
f 1/1/3 2/2/5 3/3/8 4/4/10
est une face de 4 points (base pyramide) chacun faisant reference à 3 trucs
1/1/3 veut dire:
 ce point  est fait avec la valeur du 1er vertex avec la valeur des 1ere coordonnées textures et la valeur de la 3éme normale
donc 
xyz 1.000000  -1.000000  1.000000  uv 1.000000  1.000000 nxyz 0.000000  -1.000000  0.000000

ON TRACE:

Une fois qu'on a tout les points (3 points par triangle) sous forme de liste on la trace
avec la fonction W3D_DrawArray()pour Warp3D ou son équivalent OpenGL glDrawArrays()

LE RESTE:

g defaut
definit un groupe (un sous objet quoi) ici nommé defaut


usemtl marble
veut dire utiliser le materiau marble definit dans le fichier des materiaux ici pyramid.mtl
(usemtl =use material)

------------------------------------------------------------------------ ---
mtllib pyramid.mtl

# 5 vertices
v 1.000000  -1.000000  1.000000 
v -1.000000  -1.000000  1.000000 
v -1.000000  -1.000000  -1.000000 
v 1.000000  -1.000000  -1.000000 
v 0.000000  1.000000  0.000000 

# 5 texcoords
vt 1.000000  1.000000 
vt 0.000000  1.000000 
vt 0.000000  0.000000 
vt 1.000000  0.000000 
vt 0.500000  0.500000 

# 12 normals
vn 0.577350  0.577350  0.577350 
vn 0.000000  -1.000000  0.000000 
vn 0.000000  -1.000000  0.000000 
vn -0.577350  0.577350  0.577350 
vn 0.000000  -1.000000  0.000000 
vn -0.577350  0.577350  -0.577350 
vn 0.000000  -1.000000  0.000000 
vn 0.000000  -1.000000  0.000000 
vn 0.577350  0.577350  -0.577350 
vn 0.000000  -1.000000  0.000000 
vn 0.554700  0.832050  0.000000 
vn -0.894427  0.447214  0.000000 


g default
usemtl marble

f 1/1/3 2/2/5 3/3/8 4/4/10
f 3/3/6 5/5/11 4/4/9
f 2/2/4 5/5/12 3/3/6
f 1/1/1 5/5/11 2/2/4
f 4/4/9 5/5/11 1/1/1

------------------------------------------------------------------------ ---



Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig

Message édité par : thellier / 27-04-2016 13:35
Message édité par : thellier / 27-04-2016 13:48

Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1412&forum=14