Echelle OpenGL !!

Résolu
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007 - 14 mars 2005 à 18:42
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 - 19 mars 2005 à 18:43
Salut a tous,



J'ai créé une "heightmap" ou dedans je peux me deplacer.

Je lis dans un fichier ou mes vecteur sont tous rangés.

Par exemple :



fichier1.txt :

-15000 345 12734

.

.

.

15000 34 -12734



fichier2.txt

-500 23 500

.

.

.

500 56 -500



L'ennui est que lorsque la map s'affiche, je ne vois pas la difference
entre le fichier 1 et le fichier 2 !! je ne sais pas trop comment faire
....



OpenGL ne fait pas attention a mes coordonnée, il prend juste plus
grande je pense et fait une moyene..... d'ou le fait d'afficher des map
de meme "taille" sur l'écran !!



Comment peu on regler se probleme ???

peu etre tracer un ligne trés grande par rapport a ma carte pour bluffer opengl ?



Ceux qui on des idées......

merci bien.

http://nomind-world.com

65 réponses

barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
18 mars 2005 à 18:09
Sorry, mais chez moi sa ne marche pas :((
tout cliniote super vite.... et je ne voi pas d'image mais que des carres....
en fait c a cause de ma carte 3D je pense.... j'ai une carte graph intel integree...
sur mon labtop....

snifsnif :((

parcontre j'ai finis de faire ma physique !!! et sa marche :)))))))))
trop dla balle, je peu sauter et tout :)
3
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
14 mars 2005 à 18:45
L'idée de tracer une grande ligne et stupide ! sa fera le meme comportement ! ou meme sa empirera.....



bon qui a une idée :(

http://nomind-world.com
0
gnoofy120 Messages postés 17 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 14 juin 2006
14 mars 2005 à 19:57
L'échelle à laquelle apparaissent tes données à l'ecran dépend de la matrice de projection. Quelle matrice de projection as tu utilisée ?
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
14 mars 2005 à 22:36
Salut, j'ai pas trop compris tes histoires de fichiers, une heightMap==un fichier non ?, alors je vois pas ou est ton probleme...

KeniiyK.
0

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

Posez votre question
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
15 mars 2005 à 09:54
Supposons que j'ai deux fichier text1 et text2 ou dedans j'ai des vecteurs rangé.

Dans text1 les vecteurs vont de -10000 a +10000

Dans text1 les vecteurs vont de -100 a +100

il a bien sur le meme nombre de vecteur dans les deux textes ! c'est juste l'echelle qui change.

Quand je dessine cela sur mon écran l'échelle est differente car quand
j'affiche ma position sur l'ércan je le verifie, MAIS la carte elle a
la meme taille !! c'est a dire que les triangles on la meme taille SUR
l'ECRAN.

Pour moi, quand openGL affiche la carte1 par exemple je devrais voir la
fin de la carte car l'echelle est petite, et pour la carte2 ne pas voir
la fin de la carte et avoir des triangles trés grand, la carte a les
MEME PROPORTION....



Ya un truc tout bête qui m'échappe...



Je suis pas trés doué pour expliquer :s

Je peu poser mon code source si sa peux aider.


Mercihttp://nomind-world.com
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
15 mars 2005 à 10:29
Ben oui poste ton code parce que là je vois pas pourquoi tu as la meme echelle sur tes deux maps ( a moins que tu ne te places selon un certain point de vue et qui fait que...).

PS : ca te sers a quoi d'avoir la meme map a differentes echelles ??

KeniiyK.
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
15 mars 2005 à 11:03
voila déja j'ai mis des screenshots et quelque explication....



http://barraquand.fr/rb247/DoubleProject/Prog/



merci encore
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
15 mars 2005 à 11:29
Suis allez voir, il est ou le code ?

KeniiyK.
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
15 mars 2005 à 11:42
Le code y est c'est bon



Alors ne t'inquiete pas c'est fini... donc c'est un peu le bordel !

j'éspere que tu va pas trop galérer....

J'utilise pas mal de classes... enfin si tu a l'habitude c'est bon ;)
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
15 mars 2005 à 12:23
HEY !!! il est pas mal ce code, commentaire, comprehensible, etc... !!!!!

Bon le probleme c'est que j'utilise visual studio 6 et qu'il ne trouve pas
ImageList_Create
et
ImageList_AddMasked
par contre il connait bien l'entete des fonctions et le type HIMAGELIST, HBITMAP etc..

Bref elles sont declarees dans quelle lib ces 2 fonctions ?, j'aimerai bien compiler.

Au pire balance ta liste des libs ici je ferai une comparaison...

KeniiyK.
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
15 mars 2005 à 12:25
Erf erf erf, c'est bon c'était comctl32.lib qu'il me manquai, bon je regarde now....

Et je te tien au courant.

KeniiyK
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
15 mars 2005 à 13:37
Effectivement c'est bizarre, mais il y a des trucs que je pige pas comme la distance far négative dans le gluPerspective

et les fichiers *.inf
[ByteMap]
#SIZE
W: 257 H: 257 //bon disons que c'est la taille de "Terrain.bmp" ?
[VectorMap]
#SIZE
W: 25600.000000 H: 5040.000000 D: 25600.000000 // boite englobante de la scene ?
#CENTER
X: 0.000000 Y: 0.000000 Z: 0.000000 // centre de la scene ?

J'ai survolé le code et il me semble ne pas avoir vu que tu faisai de "rescale" sur les sommets du terrain en fonction de la size de la map (donc disons que ca vient pas de là).
Et est ce que les fichiers "Terrain.raw" contiennent les sommets du terrain ou est ce les vecteurs qui permettent de retrouver leurs valeurs via le centre de la scene ?
(evidemment si le centre == origine c'est pareil) .

KeniiyK.
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
15 mars 2005 à 14:02
Alors :

[ByteMap]

contient toutes les informations de la map en niveau de gris : Terrain.map

donc oui 257 et 257 c'est la largeur de cette image ( le .map === .raw )



[VectorMap]

contient toutes les informations de ma map transformée en vecteur.

donc oui 25600 ... est la taille de la boite qui englobe la scene.

et aprés on trouve le centre de la scene.



Donc je lis le fichier .map pour pouvoir me deplacer sur la map, car elle contient la heuteur pour les coordonnées X,Y.

Dans le fichiers Terrain.raw tu trouve toutes les coordonnées des
sommets, donc oui sa peu etre vue comme des vecteurs dou l'origine est
le centre.

Dans ce fichier, 3 sommets consecutif forme un triangle.



Est c'est quoi la fonction RESCAL ?



mais tu a vu c'est étrange quand meme que les map apparaissent avec la meme taille !!

je pige rien :((

comme si opengl fixé une limite !!
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
15 mars 2005 à 14:04
a zut, oui la distance dans gluPerspective(.., ..., 0.1f, -1.0f)

le -1.0f est pour indiquer "infini".
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
15 mars 2005 à 14:20
Ok je connaissais pas l'histoire du far negatif, merci.Quand je parle de "rescale", c'est pas une fonction, je voulai dire que tu ne remettai pas les points a une certaine echelle en fonction de la taille de la map (scale echelle -> avec un peu de barbarisme "rescale" remise a l'echelle).

Change le fovy de gluPerspective de 45.0f a 60.0f par exemple il y a une difference minime apres entre "Petite" et "Grande" mais bon je crois qu'en fait y a pas de probleme et que c'est du au placement du point de vue et la projection.

Enfin, je vais continuer de tester tout ca.

Juste une derniere precision, les classes frustrum et frustum elles servent a quoi ?

KeniiyK.
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
15 mars 2005 à 14:37
lol c une errreur



Fustrum == erreur, j'ai oublier de l'enlever :D c'est une erreur d'orthographe



Frustum == c'est une classe qui est a utiliser avec l'octree, elle
permet de savoir si un object est dans ton champ de vision ou pas. Tu
l'utilise pour dessiner ton octree, tu demande :

- ce noeud est dans le frustum ? oui -> on recurse vers le bas

- le noeud ni est pas, on stop la recursion

- on a attein la fin de l'arbre, on affiche le noeud



voila



Sa me desepere se bug !! je suis sur c'est tout simple en plus...

j'ai tout essayé ! mais a chaque foi opengl me dessine ma carte de la meme taille !!

mais peu etre que a deux on ve trouver le truc :D



barraq
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
15 mars 2005 à 18:09
Bon ben je pense que c'est ce que je disais, "l'effet d'echelle uniforme" est du a un placement particulier avec une projection particuliere fais les changements suivant et constates par toi meme :

void WinGL::InitGLScene ()
_Camera->PositionCamera(20, 30, 120, 0, 30, 0, 0, 1, 0);

void WinGL::ReSizeGLScene()
gluPerspective(60.0f,(GLfloat)_Width/(GLfloat)_Height,0.1f,-1.0f);

Tu devrais t'appercevoir d'une plus "grande profondeur de champ" sur la "Grande"

Dis moi ce que tu en penses.

Et disons que c'est un peu normal que les triangles apparaissent "de meme taille" a l'ecran car avec la "Petite" tu dessines un "petit" triangle mais "près" et avec la "Grande" tu dessines un "grand" triangle mais "loin". (tu vois ce que je veux dire ?).

@+,KeniiyK
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
15 mars 2005 à 18:24
Par contre, et si je peux me permettre, tu devrais optimiser quelques traitement vis à vis d'OpenGL :
- Pour faire le rendu des Octrees fait du glDrawArray plutot que de recalculer les normales et te linker sur les vertices pour faire du glBegin()-glEnd() à chaque tracés.
- Et evites les appels glGetXXX ca bouffe grave en temps de calcul (remonter du pipe des donnees) par exemple le glGetFloatv( GL_PROJECTION_MATRIX, projM ); de la classe Frustum fais le dans le resizeGL car cette matrice ne change que là.
(quoi que avec les nouvelles CG en PCI express ca a peut etre change... suis encore avec ma GF4 TI 4200 en AGP 8X alors je peux pas tester)

Il y a peut etre d'autre trucs mineurs a ameliorer mais rien qu'avec ces deux changements tu devrais déjà gagner pas mal.

KeniiyK.
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
15 mars 2005 à 18:34
A donc sa viendrai du fait que je place ma camera trop haut au départ........

oui j'ai essayé et cela donne un peu plus d'effet...

donc sa serai aussi bête que cela

faut que je fasse plus de test :)



en tout les cas sa m'avance déja bien :)



tu t'en est pas trop vu avec mon code ?

par hazard, je pense que tu a étudié l'info qq part, et donc que tu a
apris des methode... car j'aimerai savoir si en general comme je
structure mon code c'est bien ou pas ??

tu vois par exemple si mon utilisation des classes est bien faite ? ou si c'est le bordel... etc

car j'ai tout apris comme sa... et donc je n'est pas THE METHODE, donc j'aimerai ton avis :)



merci déja pour tous se que tu a fait :D



barraq



(je continu a poster ici sur se sujet :D c pas fini :) )
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
15 mars 2005 à 18:41
j'ai jamais utilisé les : glDrawArray

en fait c'est la premiere application que je fait en openGL, bon j'ai
mis du temps je dis pas :) meme bcp de temps, mais c'est ma premiere
application, donc je suis loin de tout maitriser...



En fait je devrai plutot faire comme sa :



appeler une seul foi drawoctree et dedans faire :

pour chaque noeud, creer une nouvelle glList(...) qui comprendrai toutes les vertices de ce noeud.

faire ma recursion pour tous mes nodes.



et aprés quand je veut réélement le dessiner (a chaque loop), j'utilise
une récursion a traver mes noeud mais cette fois j'appele la liste
relative a se noeud. ( drawliste pour chaque neoud)



c'est sa que tu veu dire ?

ou c'est pas sa :)

si tu a un exemple....
0
Rejoignez-nous