Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2417 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Prog, C, 3D] format de fichier 3D...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Prog, C, 3D] format de fichier 3D...

n°133764
nibbles1
Pour la gloire de NFT
Posté le 02-05-2002 à 21:30:10  profilanswer
 

On bosse dur un projet de conversion de format 3D (3dsMAX -> clipart)
le clipart est format propriétaire d'une boîte.
on a des problèmes pour convertir justement.
 
quelques questions:
1) c'est quoi un vertex (défini par x,y et z trois float) ?
2) c'est quoi une normale (défini par x,y et z trois float) ?
3) comment exprimer une normale en fonction du vertex ?
4) c'est quoi des coordonnées de mapping (défini par x et y deux float) ?
5) comment on les obtient ? calcule ?
 
6) question plus conne, si on prend en paramètre un fichier "fichier.3ds" (argv[1]), comment obtenir la chaîne de caractère "fichier.obj" ?


---------------
JeanBeulz, chercheur coincheur
mood
Publicité
Posté le 02-05-2002 à 21:30:10  profilanswer
 

n°133808
DJKurgan
Posté le 02-05-2002 à 23:46:41  profilanswer
 

Salut!
 
en gros ce que tu veux, c'est du vocab opengl
;) et surtout des maths de base, je te conseil www.opengl.org, le
site officiel...
sinon,...
vertex, c'est un point dans l'espace de coord (x,y,z)
(c'est grace à eux que tu "dessines" des plans -> ensemble de vertex)
 
normale, c'est un vecteur perpendiculaire à un plan, qui dit vecteur,
dit 3 coord (x,y,z), les normales sont les composantes essentielles
de retitution de la lumiere par un objet. (en optique, les ondes lumineuses
incidentes, reflechies, refractée sont reférencée par rapport à la normal
au plan sur lequel est envoyée, l'onde incidente (la source lumineuse))
...d'ou l'importance de definir les normales aux plans, les plans  
permettant de creer des objets...
 
pour definir la normale à un plan, tu dois avoir 2 vertexs de ce  
plan, ensuite tu effectue le produit vectoriel n=v1^v2 pour avoir
la normale du plan, il faut de plus que la longeur de ta normale
soit unitaire=> norme(n)=1, pour ca tu divise n par la longueur
de n.(la norme de n)
 
Tes objets sont donc constitués de plans, tu peux appliquer une texture
sur ces plans, en clair une image, pour les habiller, les rendre
plus realiste, on definit les cordonnees de texture (mapping) par
les composantes (s,t) par exemple...pour faire simple, si l'on considere
un carre,(un plan quoi), le coin inf gauche->(0,0)
    le coin inf droit->(0,1)
    le coin sup gauche->(1,0)
           le coin sup droit->(1,1)
(ca doit etre ca...;) )
si tu passes ces coordonnees, tu recouvrira d'une image, le plan,
par ex, si tu les x 2, tu auras 4 images (damier) sur le plan, en mode
repetition...voilà
 
sinon, un peu de C:
strcat(chaine,fin)
permet de concatener chaine+fin dans chaine, donc tu prends
chaine="fichier" (attention , la taille de chaine suffisante
pour les deux)
fin=".obj" et hop...
 
pour recupere "fichier", tu peux utiliser strncpy, en gros...
strncpy(chaine,argv[1],long_de_argv[1]-4)
pour recuper dans chaine, juste "fichier"...
mais regarde un bon cours de C sur les string...
 
a+

n°133814
nibbles1
Pour la gloire de NFT
Posté le 03-05-2002 à 00:02:49  profilanswer
 

ok merci bien.
Mais peux tu me dire pourquoi quand je lis un fichier d'un objet 3D (clipart), il y a autant de vertex que de normales ?
 
et à partir de la lecture d'un fichier 3DS Max, j'obtiens des vertex et des faces, comment je calcule les normales ?
 
 
et après il y a les textures :sweat:


---------------
JeanBeulz, chercheur coincheur
n°133819
DJKurgan
Posté le 03-05-2002 à 00:23:41  profilanswer
 

Mathematiquement, tu as une normale par face plane, la dir perp
est la meme pour tous les points de la surface,
tu est surement dans le cas de surfaces courbes, ou la direction
de la normale est differente pour chaque pt de la surface,
une courbe (et a forciori une surface courbe) est constituee de
plein de petit segment (finement decoupé) pour recree un aspect
courbe, donc, on peut specifier une normale pour chaque sommet
(sommets des polygones)...
en opengl, tu dois assigner les normales aux sommets d'ou le nombre
identique...
 
les vecteurs normaux definissent l'orientation de l'objet par ra
pport aux source lumineuses, en fait, cela va permettre de paramettrer
la quantite de lum recut a chaque sommet....
 
un polygone possede 2 faces, avant et arriere qui peuvent etre
restituee de maniere differentes...
pour le calcul des normals utilise les produits vectoriels, une  
recherche sur google t'eclairera (cours de math)

n°133821
Cherrytree
cn=?
Posté le 03-05-2002 à 00:28:19  profilanswer
 

djkurgan a écrit a écrit :

...


Tiens !


---------------
Le site de ma maman
n°133822
DJKurgan
Posté le 03-05-2002 à 00:31:10  profilanswer
 

t'es pas couché!!!;-)

n°133824
Cherrytree
cn=?
Posté le 03-05-2002 à 00:32:27  profilanswer
 

djkurgan a écrit a écrit :

t'es pas couché!!!;-)  



Non, en ce moment je fais du 12h 4h du mat', c'est pourri, mais bon.


---------------
Le site de ma maman
n°133825
DJKurgan
Posté le 03-05-2002 à 00:33:46  profilanswer
 

sinon, ca va?
le stage ca roule? yves m'a dit que tu te prennais la tete...

n°133828
Cherrytree
cn=?
Posté le 03-05-2002 à 00:36:56  profilanswer
 

Yves est très gentil, mais déjà que je suis pas productif, il vient super souvent pour me tenir compagnie. Remarque j'ai rien contre, on a fait une heure d'aïkido comme ça... Mais mon travail avance peu. En fait en info, quand le profil ingénieur est bien intégré, le DEA c'est nul, et le stage c'est pire. Si tu tiens à rendre un service à Pat', dis lui d'oublier le DEA, si elle en a encore envie, envoie-la sur www.researchindex.com et dit lui qu'elle passera sa vie sur ce site, si elle choisit cette voie.


---------------
Le site de ma maman
n°133830
DJKurgan
Posté le 03-05-2002 à 00:39:48  profilanswer
 

Ok, de toute facon, elle a plus trop le DEA en tete, ca lui passe
comme une envie de pissee...
bon, je vais faire dodo et je lui ferais part de la comission...
allez a+ et bon courage, j'ai l'adsl, je vadrouillerai peut-etre plus
souvent sur hardware...
allez bye!

mood
Publicité
Posté le 03-05-2002 à 00:39:48  profilanswer
 

n°133832
Cherrytree
cn=?
Posté le 03-05-2002 à 00:42:27  profilanswer
 

djkurgan a écrit a écrit :

Ok, de toute facon, elle a plus trop le DEA en tete, ca lui passe
comme une envie de pissee...
bon, je vais faire dodo et je lui ferais part de la comission...
allez a+ et bon courage, j'ai l'adsl, je vadrouillerai peut-etre plus
souvent sur hardware...
allez bye!  



Passe une bonne nuit, cher ami. Je veille.


---------------
Le site de ma maman
n°133834
DJKurgan
Posté le 03-05-2002 à 00:43:55  profilanswer
 

Toi aussi...

n°134515
nibbles1
Pour la gloire de NFT
Posté le 04-05-2002 à 15:30:32  profilanswer
 

Je suis content de voir que t'as retrouvé ton pote mais comment on calcule les normales à partir des vertex ? (pour l'orientation).


---------------
JeanBeulz, chercheur coincheur
n°134518
chrisbk
-
Posté le 04-05-2002 à 15:45:10  profilanswer
 

nibbles1 a écrit a écrit :

Je suis content de voir que t'as retrouvé ton pote mais comment on calcule les normales à partir des vertex ? (pour l'orientation).  




 
 
bé, alors :
 
Pour une face, tu prends les 3 vertex qui la compose(mettons, V1,v2,v3)
 
tu fais :
 
v4 = v2 - v1
v5 = v3 - v1
 
 
normale = v4 cross v5
 
normale = normalise(normale)
 
 
et vala
 
 
Bon, ensuite si tu veux des normales par vertex (et non par face), tu calcule deja les normales de toute les faces, et ensuite la normale d'un vertex est egal a la moyenne des normales des faces auquel le vertex appartient (:D)
 
des fois que je suis pas clair
 
Si un vertex v1 appartient aux faces f1,f2,f4, alors sa normale sera :
 
(f1.normale+f2.normale+f4.normale)/3

n°134525
nibbles1
Pour la gloire de NFT
Posté le 04-05-2002 à 16:07:38  profilanswer
 

:jap: c'est bien tout ça, mais moi je récupère tous les vertex puis les faces de façon brute, sans savoir comment ils/elles sont ordonné(e)s. Donc tes v1,v2 et v3, je ne sais pas où les pêcher. :??:


---------------
JeanBeulz, chercheur coincheur
n°134530
nibbles1
Pour la gloire de NFT
Posté le 04-05-2002 à 16:13:06  profilanswer
 

chrisbk a écrit a écrit :

 
Bon, ensuite si tu veux des normales par vertex  




 
c'est bien ça que je veux. Enfin je pense, car dans un fichier 3DSMAX il y a autant de normales quede vertex.
 

chrisbk a écrit a écrit :

 
(f1.normale+f2.normale+f4.normale)/3  




 
ça me donnera la norme dela normale ça non ?
et pour les x,y et z, je fais quoi  :heink: ?


---------------
JeanBeulz, chercheur coincheur
n°134543
chrisbk
-
Posté le 04-05-2002 à 16:35:00  profilanswer
 

nibbles1 a écrit a écrit :

:jap: c'est bien tout ça, mais moi je récupère tous les vertex puis les faces de façon brute, sans savoir comment ils/elles sont ordonné(e)s. Donc tes v1,v2 et v3, je ne sais pas où les pêcher. :??:  




 
?
 
les face des .3ds ne sont pas une liste d'index vers des vtx ?
 
si oui, ben les voila tes v1,v2 et v3 !

n°134545
chrisbk
-
Posté le 04-05-2002 à 16:35:43  profilanswer
 

nibbles1 a écrit a écrit :

 
 
ça me donnera la norme dela normale ça non ?
et pour les x,y et z, je fais quoi  :heink: ?  




 
 
nope .
 
la norme de la normale c'est sqrt(x*x + y*y +z*z)
 
la tu fais la moyenne de 3 normales (deja normées)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Prog, C, 3D] format de fichier 3D...

 

Sujets relatifs
comment créer une archive jar dans un prog en java ?[asp] upload de fichier et formulaire
[C] nombre de lignes dans un fichier[VB] Comment convertir un fichier HTML en fichier Excel ?
Comment conserver le format du texte dans une base Mysql ??[ALGO] Lire les n dernières lignes d'un fichier texte
Pb de VB avec les extration de chaine sur fichier .txt[Ada]fichier texte
[VC++] problème avec projet contenant plusieurs fichier .C[java] comment obtenir le propriétaire d'un fichier sous nt4
Plus de sujets relatifs à : [Prog, C, 3D] format de fichier 3D...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR