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

KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
17 mars 2005 à 08:55
C'est ce que je fais, ca marche bien pour choper l'Octree courant, et chez moi la recherche et l'affichage de cet Octree ne me fais pas perdre 1 seul FPS !!!! Donc on peut dire que c'est une methode qui va bien....

KeniiyK
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
17 mars 2005 à 08:57
C'est bizarre ton erreur avec Winrar Neodante, parce que le mien il me l'a ouvert sans probleme....

KeniiyK.
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
17 mars 2005 à 12:38
LOL me suis vautre en t'expliquant les vertexArray Barraq, enfin au niveau du deuxieme indice de glDrawArray(type, first, count)
OpenGL trace de first a first+count-1, donc dans le dernier exemple avec le quad et le triangle c'est
glDrawArray(GL_QUADS,0,4); // ca c'est bon
glDrawArray(GL_TRIANGLES,4,7); // la c'est pas 7 mais 3 (7-4 ....) j'avais oublie l'histoire du first + count-1 car quand je m'en sers generalement, je fais
glDrawArray(...,0,nb_point_par_face*nb_face) et du coup first+count-1==count-1

DESOLE !!!

Et je poste pour autre chose aussi, pour faire l'elimination des Octrees a ne pas trace j'ai fais 2 methodes, une en largeur et une en profondeur
- Celle en profondeur est la meme que la tienne
- Celle en largeur se fait en parcourant uniquement les feuilles contenant des faces (ces feuilles se linkent entre elles a la construction de l'arbre en une liste chainé et j'ai un pointeur sur la premiere)

Je voulais savoir laquelle était la plus rapide, par contre j'ai un soucis sur celle en profondeur, en effet pour savoir si l'octree (noeud ou feuille) est dans le champ de vision je regarde si un seul de ses 8 points est dedans sinon on arrete la recursion. Ce qui arrive de temps en temps c'est que les 8 pts de l'octree ne sont pas dans le champ mais on voit quand meme l'interieur et du coup ca me coupe la recursion alors que ca devrai continuer !!!! et pouf j'ai un trou devant moi...
Bah voila... au sinon le rendu en largeur marche nikel.

KeniiyK
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
17 mars 2005 à 18:39
ok je vois ce que tu veux dire....

Admettons que tu puisse visualiser le contour d'un noeud, le probleme
est donc que les 8 points sont cachés mais que tu vois l'arrete par
exemple ....

Un truc que tu pourais faire, c'est au lieu d'utiliser 8 point, ben tu
en utilise 16, donc un point de plus pour chaque coté.... et la a moin
vraiment que le noeud soit TRES grand, tu a plus de chance d'avoir au
moin 1 point visilble par le frustum. non ?

L'autre solution qui est plus couteuse je pense, c'est a la place de
tester si 1 point est dans le frustum, tu test si 1 segment est dans le
frustum, dans se cas la tu es sur de pas avoir d"erreurs.



Aussi, peu etre c'est debile, mais je pose quand meme la question.....

voila, une droite peu etre décris par une equation, de meme un plan peu
etre decris par une equation, donc un plan en 4D donc un volume est de
se fait descriptible par une equation, donc si c'est possible tu a
juste besoin de savoir si un des coté de ton octree vérifie l'equation
de ton volume "frustum".... mais tetre c impossible.....



En fait le frustum est juste un sorte de piramide coupé en haut, donc
sa doit pas etre si compliqué.... meme pour simplifier , utiliser un
Cone, et la l'équation est connue....



chez pas... peu etre c'est completement nul :)

dis moi lol
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
17 mars 2005 à 19:15
L'idee des 16 points, j'y ai pensé mais ca resoud pas forcement le probleme
et niveau RAM je suis deja 50 Mo sans les BSP tree (je viens de les finir vai pa tarder a tester...) avec environ 130000 triangles.

L'idée du segment j'y ai pensé aussi, assez simple a mettre en oeuvre, tu fais segment p0+t*p1 que tu balance dans l'equation du plan puis en resolvant si 0<= t <=1 "tu vois" le segment (attention au cas ou le segment est parallele au plan).
MAIS elle ne resoud pas le cas ou l'OCTree est "plus grand" que le frustum.

L'autre idée ressemble à celle que je suis en train "d'exploiter" et au final ca se rapproche vachement d'un lancer de rayon (car discretisation du frustum en "rayons" oeil-scene") et avec des spheres englobantes aux OCTrees pour calculer vite fait les intersections.

Mais bon la je fini les BSP Tree et je reprend ce probleme.

@+,KeniiyK

PS : et toi t'en est ou ? t'as mis une tete a ton superviseur ?
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
17 mars 2005 à 20:03
lol :) non je lui est pas mis une tête :)

mais c'est vrai j'y pense bien !!!!!



non, la je suis entrain d'implementer l'algo de collision, et demain normalement je met tout cela en rezeau !

la sa va etre du boulot, plusieur joueur sur le meme map, avec des
interactions entre eux, et le mieux !! le joueur pourons echanger et le
son sera 3D, plus les joureurs seront espacé moin il s'entendrons, et
le son sera restitué sur des hautparleur en utilisant directx donc sa
rend bien :)

je languis ............ sa va venir, sa va venir ............. :)



Une foi sa terminer, la arrive le vrai travail, enfin le plus "theoric"
pour moi, je dois travailler sur l'implementation de la "privacy" dans
ce monde virtuelle, donc plein de question a resoudre.... et a
implementer....



voila :)



et toi alors ? tu fait quoi aprés ?
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
17 mars 2005 à 20:10
Ben moi ca plante pas mais il detecte une collision sur 999999999, fais 100 Mo en RAM now. DONC je ma refarcie mon code en large, long et travers et apres je recommence.... PASSIONANT !!!!

Il a l'air super ce projet sur lequel tu es. C'est quoi " la privacy" ....????

KeniiyK
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
17 mars 2005 à 20:17
ERF ERF ERF ERF HA HAH HAHHAHHA HIHIIHH HOHOHOHO !!!!!!!!!!!!!

J'ai trouve mon erreur juste apres avoir poste le precedent message, j'ai fai ALT+TAB et ca m'a saute aux yeux !!!, maintenant ca marche nikel. Donc quelque part tu m'a aidé, MERCI MERCI MERCI.

KeniiyK

Et au fait... heu... merci.
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
17 mars 2005 à 20:21
"privacy" = intimité

mais en fait la sa veut plutot dire, comment gerer les differents
niveaux d'espace de discussion, par exemple, espace public, ou espace
social, privé pour finir....



difference entre privé et social, social et public, implementation de
se concept dans un monde "virtuel", le nom du project est en fait : 3D
voice chat :)



voila :), et oui c coooooooooooooooool
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
17 mars 2005 à 20:26
faudra que je vois des images de ton truc

sa a l'air bien puissant

va y envoi des screen shot ou meme l'exe histoire de voir cela



au fait, la partie rezeau, c'est pas moi qui le fait, c'est un pote a moi
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
17 mars 2005 à 20:49
Ben les screenshots vont pas etre beaux, mais alors pas du tout.... j'ai pas texturé, mon but était juste d'arriver a gerer les collisions sur terrains ou objets quelconque. En plus l'interface pete pas la forme, j'ai fait vite fait avec Qt.
Et puis pour l'instant qd il y a collision ca m'inverse le sens de déplacement de la camera (elle rebondie en fait) mon but ultime serai de me balader avec une caisse ou un bonhomme, le tout bien multi-threadé et une interaction "intelligente" qd il y a collision (suivant la normale sur laquelle ca tombe, force de frottement, difference suivant la surface, etc...).

Pour te passer l'exe je fait comment (par mail si tu veux, avec la dll de Qt ca fait moins de 3Mo).
J'ai pas de site non plus...
Et j'ai desinstaller mon serveur FTP, il y a au moins...hum...longtemps.

Mais bon faut que je pauffinne quelques trucs, j'ai plein de truc codé "en dur" et qui sont en fait des parametres comme la taille de la map la hauteur, le nombre max de face par Octree, etc...

Apres je posterai un ou deux screenshots ici, si tu veux.

KeniiyK.
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
17 mars 2005 à 22:06
Oui par mail sa le fait, je crois....

mon adresse tu la trouve ici :

nospam@barraquand.com



que je vois un peu :)

par contre moi j'ais un autre ti problem, en fait, tu vois le teste de
collision il marche bien, car il est pas difficile de s'ELOINGER de
tous triangles et donc de rien percuter, mon problem est que je ne veux
pas que le jour VOLE !! donc faut que je le colle au sol, mais comment
savoir sur le quelle le coller ? si faut que je test tout mes polygone
c'est pas bien !!!!

Le truc serai de projeter le centre de mon joueur suivant l'axe Y et de
savoir quelle polygone est en dessou moi.... et ainsi me coller a
lui....

mais cela entraine des complication, car peu etre en me collant a lui,
je vais me mettre en collision avec d'autre !!!!!!! la sa boucle a
l'infini....

l'autre solution est d'utiliser une physique, mais alors la.... j'y connais rien



tu fait comment toi ? ta une astuce,
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
18 mars 2005 à 12:23
Bon voila je t'ai envoye le mail, objet : "KeniiyK - [OCTree - BSPTree - Collision]"

Figure toi que je me posai la meme question, alors soit il faut simuler une attraction vers le sol (comme la realite) et a ce moment la c'est du deplacement en "collision perpetuelle" -> le joueur tombe constamment sur le terrain (par contre pas de recursivite infini car test a chaque tour et donc une seule collision)

Autre solution lance un rayon suivant tes Y (moi suis en Z et sol en X,Y mais je sais que les rosbeef font com' tu fais, font chier...) a la position X,Z du joueur, calcule intersection rayon/plan qui te donne ton Y, puis dessin du joueur avec ces nouvelles coordonnees.

KeniiyK
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
18 mars 2005 à 13:04
Salut



Au fait la création d'un moteur graphique/phyisque/... est-il quelque
chose d'obligatoire ??? Ne pourriez vous pas utiliser des moteurs déjà
existant (et gratuit !) ??? Ceux-ci vous permettront de gagner outre
énormément de temps à concevoir, vous pourrez également faire des
effets assez extraordinaire et de très bonne qualité ...

Je pense surtout à toi barraq qui a priori possède de forte contrainte par rapport à ton superviseur ...



@+
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
18 mars 2005 à 13:13
Ouai Neodante a raison, c'est vrai que si t'es limite dans le temps Barraq il y plein de lib de collision etc existante mais peut etre aussi que ca fait partie du cahier des charges de ton projet que de tout devellopper (je pense et c'est comme ca qu'on apprend, pas en repiquant les codes des autres).
Je pense que tout ces algos faut les avoir fait au moins une fois dans sa vie apres pourquoi pas prendre un truc plus performant mais au moins on c'est comment ca marche...

KeniiyK
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
18 mars 2005 à 13:36
Salut



Effectivement il est intéressant de connaître les concepts, mais
pourquoi réinventer la roue, et surtout se mettre dans de mauvaises
situations si cela existe déjà.



Egalement je ne parle de repiquer des codes à droite et à gauche ...
pour bien connaître le sujet, un moteur graphique n'est pas quelques
bouts mis ensemble. Un moteur est un système organisé de sous-système
qui fontionne tous en harmonie et cela un certain workflow logique ...



Ce que tu es en train de faire depuis pas mal de temps maintenant, tu
aurais pu le faire et en bien mieux en utilisant un moteur déjà tout
fait et très bien documenté. Pour ma part je ne connais que les moteurs
jeu/graphique Crystal Space (http://crystal.sourceforge.net/) et OGRE
(http://www.ogre3d.org/), ce dernier étant mon moteur graphique préféré
et en licence LGPL donc sans restriction quand à la redistribution des
sources du projet !!!! J'aime OGRE à cause de son système
multiplateforme et indépendant de l'API graphique (D3D ou OGL) ...



Quelque fois il faut faire des choix entre l'existant et son plaisir de coder !!!! ;-) Je sais c'est dur !!!



@+
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
18 mars 2005 à 13:39
Salut



Au vu de tes besoins barraq, Crystal Space semble le plus adéquat ...



@+
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
18 mars 2005 à 13:55
Merci, jirais voir dans tous les cas, mais pour ce projet je n'ais pas le droit..... tout dois etre code main......
c'est pour apprendre..... bien sur je pense que pour une vrais application l'utilisation d'un soft deja fait est mieu.
Mais la donc c'est pas possible......

Bon donc la seul idee quil me reste est de scanner le sol ? mais sa marche pas, car il faut aussi fiare attention au fait que le triangle en question peu etre incline !!! (desole j'ai pas d'accent)
sa complique le chose.........
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
18 mars 2005 à 14:01
Suis d'accord avec toi Neodante, quand je dis
"c'est comme ca qu'on apprend, pas en repiquant les codes des autres", c'est juste pour apprendre et apres ok si il y a des codes plus performant alors prendre ceux la pour coder "par dessus" et ainsi de suite....
T'inquietes pas, je sais bien qu'un moteur graphique c'est pas 3 bouts de codes mis ensemble on melange et voila !!!
Mais regardes, moi par exemple : on m'a parlé d'octree, de bsp tree, de collision, de force, de vitesse etc.. pendant toute ma scolarite et je n'ai pas devellope ou utilise une seule (un peu) de ces notions dans mes projets, DONC je me fais mon prg puis apres je verrai....

Je fais cela pour apprendre.

KeniiyK
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
18 mars 2005 à 14:04
Barraq, si t'as le temps develloppe les BSP tree parce qu'apres c'est assez simple :
si collision tu sais quel est le plan (et son equation) est le responsable et connaissant ta position c'est pas dur de balancer un rayon pour intersection.....

KeniiyK
0
Rejoignez-nous