Fichier VMF

otofraise Messages postés 66 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 4 novembre 2010 - 9 févr. 2005 à 12:38
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 - 6 mars 2005 à 15:29
Bonjour a tous,

Je ne sais pas si ce post est a sa place, mais je ne savais pas trop sur quel site de cs le placer.

Je voudrais utiliser les fichiers VMF (Hammer Editor) comme base pour la realisation de scene avec OpenGL.

En effet c plus rapide de déterminer les coordonnees avec un editeur qu'en ligne de code.

Le probleme c que j'ai du mal a comprendre comment hammer genere ces fichiers puisque les faces des solides ne sont pas donnée dans un ordre particulier, et que pour eviter la redondance des points, il ne donne que trois des quatres points d'une face, le quatrieme etant a recuperer sur une autre face.

donc au final je ne vois pas comment recuperer le bon quatrieme point.

Si qqun a deja travaille sur ces fichiers ou a une idee, ca m'aiderait bien

Merci d'avance

Oto

Voici un exemple de solide (Un cube) extrait d'un VMF :

solid
{
"id" "2"
side
{
"id" "1"
"plane" "(0 192 192) (192 192 192) (192 0 192)"
"material" "BRICK/BRICKFLOOR001A"
"uaxis" "[1 0 0 -256] 0.25"
"vaxis" "[0 -1 0 256] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
side
{
"id" "2"
"plane" "(0 0 0) (192 0 0) (192 192 0)"
"material" "BRICK/BRICKFLOOR001A"
"uaxis" "[1 0 0 -256] 0.25"
"vaxis" "[0 -1 0 256] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
side
{
"id" "3"
"plane" "(0 192 192) (0 0 192) (0 0 0)"
"material" "BRICK/BRICKFLOOR001A"
"uaxis" "[0 1 0 -256] 0.25"
"vaxis" "[0 0 -1 0] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
side
{
"id" "4"
"plane" "(192 192 0) (192 0 0) (192 0 192)"
"material" "BRICK/BRICKFLOOR001A"
"uaxis" "[0 1 0 -256] 0.25"
"vaxis" "[0 0 -1 0] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
side
{
"id" "5"
"plane" "(192 192 192) (0 192 192) (0 192 0)"
"material" "BRICK/BRICKFLOOR001A"
"uaxis" "[1 0 0 -256] 0.25"
"vaxis" "[0 0 -1 0] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
side
{
"id" "6"
"plane" "(192 0 0) (0 0 0) (0 0 192)"
"material" "BRICK/BRICKFLOOR001A"
"uaxis" "[1 0 0 -256] 0.25"
"vaxis" "[0 0 -1 0] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
editor
{
"color" "0 135 220"
"visgroupshown" "1"
}
}

10 réponses

KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
3 mars 2005 à 23:28
tu peux expliquer ces lignes ? :
"plane" "(0 192 192) (192 192 192) (192 0 192)"
"uaxis" "[1 0 0 -256] 0.25"
"vaxis" "[0 0 -1 0] 0.25"

plane c'est un quad ? (vu ce que tu as dis.... 3 points mais pas le 4eme) et meme si c'est ca les cooordonnees en int c'est bizzare non ?
A moins que ce ne soit pas des coordonnees mais des index plutot....

Enfin bon donne deja ce que tu sais sur ces fichiers et peut etre qu'on pourra t'aider.
0
otofraise Messages postés 66 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 4 novembre 2010
4 mars 2005 à 08:52
Salut KeniiyK,



Les valeur entre parenthese de plane sont bien des coordonnees. Elles
representent trois points definissant le plan de la face du solide.



En fait j'ai regarde dans tous les sens il n'y a pas de "formule" pour
retrouver le quatrieme point manquant dans les autres coordonnees de
plan. Etant donnees que les faces sont enregistrees sans ordre fixe, il
n'y a pas de lien logique entre les faces.



Par contre il y a un lien mathematique, et la c'est plus embattant
(neuronalement) : il faut regarder les intersections de plan. En les
prenant 3 par 3 on doit retrouver les points manquant. Je vais m'y
pencher dans les semaines a venir et on va bien finir par trouver, a
force de perseverence



Pour ce qui est des clefs "uaxis" et "vaxis", elles determine la position et l'echelle des textures sur les face du solide.



Et je pense que les coordonnees sont des int car c'est (a mon avis)
bien plus simple de gerer des coordonnees entiere dans un editeur, par
exemple dans le cas ou tu veux placer deux elements cote a cote. Si tu
travaille en float c'est difficile voir impossible (sauf en utilisant
une grille magnetique ce qui revient quelque part a utiliser du int)



Bon maintenant on va se motiver et faire ces calculs super sympa. ha
lala comme si chez valve ils auraient pas pu mettre le quatrieme point
de chaque face (comment ca, redondance des donnees )



Oto
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
4 mars 2005 à 10:23
Bon j'ai relu ton premier post, toi tu veux juste recuperer la scene, et comme les VMF sont en texte tu as pris ces fichiers comme reference. Mais bon apparement c'est un peu lourd a utilisé.
Prends un autre type de fichier, perso je me suis fait un plugin pour 3DSMax6 qui m'extrait n'importe quel maillage triangulaire avec les Bounding Box, les Materiaux (couleur pas texture), le nom des objets, etc... et il vérifie meme que le maillage enregistré soit en CCW.
0
otofraise Messages postés 66 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 4 novembre 2010
4 mars 2005 à 21:29
Tout d'abord je tiens a te remercier de l'interet que tu porte a ce
sujet. Ca fait un moment que tout ceci me trotte et j'ai enfin
l'impression que je vais pouvoir avance.



Pour ce qui est de 3DSMax, je ne m'en suis jamais servi, et je crains
que son utilisation ne soit pas aisee. Mais a partir du moment ou c un
outil tres repute et si tu me dis qu'on peut assez facilement en
recuperer les solides generes alors je suis preneur



Lorsque tu parles de plugin pour 3DSMax, sous-entendus tu une certaine programmabilite de 3DSMax via OLE ou autre ?



Je debute dans la 3D (quoi ca se voit tant que ca ?), qu'entends tu par Bounding Box et CCW.

Pour la Bounding Box j'ai une petite idee, j'ai travaille a
l'automatisation de dessin en DAO et cela nous donnait les dimensions
du cube contenant l'objet selectionne.



Enfin je vais commencer par telecharger le bestiot et apprendre un peu a le manipuler.



Oto
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
4 mars 2005 à 22:57
Au sujet de 3DSMax :
C'est clair l'apprentissage est un peu chaud, mais il inclut des tutoriaux qui vont du truc de base au HighLevel (rendu, modelisation, animation, video, etc...)
Pour les plugins, il possede un SDK en C++ (Software Development Kit) qui permet de faire des DLLs pour definir de nouveaux objets, materiaux, saver/loader de format de fichiers, etc ... (environ une 50aine de plugins differents)
Au sinon il possede son propre langage : MaxScript qui est un langage interprété et orienté objet, qui se rélève puissant, d'ailleurs certaines fonctionnalité de 3DSMax sont codées avec. Il est livré avec un tutorial, un editeur (avec coloration syntaxique) et editeur d'IHM (a la Qt designer).

Bounding Box : tu as la bonne definition, la traduction est "boite englobante".

CCW (Counter ClockWise) et son opposé CW (ClockWise), servent a determiner les faces avant/arriere. En fait quand tu trace un triangle, il comporte 2 faces, une avant et une arriere.

Exemple : le triangle suivant tracé par les sommets V0, V1, V2 et DANS CET ORDRE :
V0---V2
| / si tu es en CCW (-> face avant == les sommets sont dans le sens inverse des
| / aiguilles d'une montre == sens trigo) la face que tu vois est la face avant.
| /
| / si tu es en CW (->face avant == les sommets sont dans le sens des
| / aiguilles d'une montre == inverse du sens trigo) la face que tu vois est la face V1 arriere

si tu inverse les valeurs de V0 et V1 et que tu continues a tracer le triangle par V0 V1 V2 alors si CCW, la face que tu vois est la face arriere, et si CW la face est la face avant.

Le mode par defaut d'OpenGL est le CCW.

Ok, mais a quoi ca sert ?

Et bien vient ensuite la notion de Culling qui permet de ne tracer que les faces avant du mode courant (CCW ou CW).
Cela permet de gagner en temps de calcul dans la carte graphique car les faces arrieres sont eliminées relativement "tôt" dans le pipeline graphique.


Bah voila, @+ KeniiyK.
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
4 mars 2005 à 23:01
Mon post precedent est parti un peu en vrille au niveau du triangle, alors lis ce qui est a lire et je te poste ici le triangle :
V0---V2
| /
| /
| /
| /
| /
V1
0
otofraise Messages postés 66 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 4 novembre 2010
6 mars 2005 à 11:52
A nouveau merci pour tes explications.



Ca ya est, j'ai telecharger la version de demo de 3DSMax 7 et j'ai jete un petit coup d'oeil.

Et en effet ca a l'air chaud, mais bon d'apres ce que j'ai vu ya quand
meme beaucoup de sites qui proposent des tutos donc theoriquement, en
s'y penchant un peu ca devrait etre jouable.



Par contre reste le probleme du prix du bestio. La je dois dire qu'il
sort legerement de mon budget. Alors peut-etre les versions precedentes
sont elle plus abordable maintenant que la 7 est sortie. Sinon pour
palier au probleme, il y a blender qui est gratuit (enfin etait car
j'ai voulu aller voir sur les sites officiels pour le telecharger et
tout les liens sont morts. J'espere que la license n'a pas ete rachetee
ou "perdue" faute de moyen) M'enfin heureusement je l'avais telechargee
il y a quelques mois (v2.33). Alors je ne sais pas ce que tu en pense
et si il y a egalement la possibilite de creer des plugins pour blender.



Oto
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
6 mars 2005 à 12:09
Acheter 3DSMax !!!, bordel t'as du fric !!!, meme les versions de mise a jour sont a plus de 1500 euros !! alors les versions de bases laisses tomber !!.

Par rapport a Blender, je ne l'ai jamais utilisé, mais surement qu'il doit pouvoir exporter vers des formats *.ase, *.obj ou plus bateau *.off (texte je crois) et pour ces trois formats de fichier il existe pas mal de loader C/C++ notamment sur ce site (y a un post "importation *.obj" pas loin du tien dans la liste, jettes y un oeil).

@+ et bon courage, KeniiyK.
0
otofraise Messages postés 66 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 4 novembre 2010
6 mars 2005 à 15:17
J'ai regarde et en effet blander propose des export vers les format que tu m'a donne.



le format OFF a l'air simpa pour des truc simple mais apparement y prend pas en compte les textures.



Par contre le format VRML 1.0 (*.wrl) propse une structure assez proche
de celle de Hammer avec un systeme de listage des coordonnees proche du
OFF, donc beaucoup plus simple a utilise que le VMF.



Il ne me reste plus qu'a potasser tout ca, voir egalement les autres formats proposer, trouver le plus adequat et me lancer



Je suis contant parce que je vais enfin pouvoir avancer, merci encore KenniiyK



Oto
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
6 mars 2005 à 15:29
Bah de rien, et si t'as encore besoin d'aide (question, bug, programmation, etc..) n'hésites pas à poster (sur ce topic, je recois un e-mail quand tu postes) et je te répondrais.

KeniiyK.
0
Rejoignez-nous