#0 

20-08-2010 16:33:53

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
Site web

bon j'ai pas trop envie de papoter donc je rentre dans le sujet directement smile

je me suis lancé dans un moteur de jeux orienté side-scrolling il y a un bon mois, quasiment tout marche, sauf la camera.
les deux soucis que j'ai sont:

-impossible d'utiliser gluPerspective, on ne voit plus rien, donc limité à glOrtho
-impossible de changer la camera de place/rotation

le soucis n'est pas le manque de tuto/explication mais, les exemples ne marchent pas dans mon cas, allez savoir pourquoi !

un exemple du code vraiment simplifié de ce que j'utilise:

Code c++ :


glClearColor(...);
glClear(GL\\_COLOR\\_BIT | GL\\_DEPTH\\_BUFFER\\_BIT);
glPushMatrix();

   glMatrixMode(GL\\_PROJECTION);
   glLoadIdentity();

      mode == CWM\\_ORTHOGRAPHIC ? glOrtho(0, screen->getInfo().size.width, screen->getInfo().size.height, 0, nears, fars) :
      gluPerspective(fovs, asps, nears, fars);

      glRotatef(-rot.x, 0,0,1);
      glRotatef(-rot.y, 0,1,0);
      glRotatef(-rot.z, 1,0,0);
     glTranslatef(-pos.x, -pos.y, -pos.z);

   glMatrixMode(GL\\_MODELVIEW);
   glLoadIdentity();

   glPushMatrix();
   glEnable(GL\\_BLEND);
   glBlendFunc(GL\\_SRC\\_ALPHA, GL\\_ONE\\_MINUS\\_SRC\\_ALPHA);
   glPushAttrib(GL\\_ENABLE\\_BIT);
     // shade model + glEnable -> antialiasing mode
     //rendu classic de l'object
   glPopAttrib();
   glPopMatrix();

glPopMatrix();
glWSwapBuffer(display, window);
glFlush();



pour ce qui est de la position/rotation de la camera, gluLookAt ne fonctionne pas non plus, pos.z > 10 ? gluLookAt = on ne voit plus rien smile

edit: variable pour gluPerspective: fovs = 45.f, asps = window.width/(float)window.height, nears = -1.f, fars = 2500.f;
        cela dit glOrtho semble limiter a 10.f pour fars ... une autre bizarrerie

Dernière modification par Magun (20-08-2010 16:36:38)

Hors ligne


#1 

22-08-2010 11:42:51

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
Site web

bon ... pour une fois que je demande quelque chose ... ?
TMyke peut-être ? tu a déjà fait un moteur 3d non ? smile

Hors ligne


#2 

22-08-2010 16:38:06

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

J'aimerai bien t'aider mais je n'ai jamais touché à ça sad
Au risque de dire une bêtise(pour faire patienter) as tu testé nears avec une valeur positive, genre 0.1f ?

Hors ligne


#3 

22-08-2010 17:29:00

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
Site web

oui oui, j'ai testé ^^'
la valeur négative c'est pour voir les éléments en 0.f de l'axe z, ( exemple la gui )

Hors ligne


#4 

22-08-2010 18:09:48

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

Dommage sad et le lookat, ne fonctionne toujours pas ?

ps: j'en profite pour apprendre un peu wink

Hors ligne


#5 

22-08-2010 18:22:55

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
Site web

ba non toujours pas smile
il doit y avoir une transformation de matrice qu'il n'aime pas, quelque part ...

en tout cas ça fait tout foirer !
bref si tu veux apprendre je te passe mes sources !
<< lien censuré :') >> , elles ont deux jours, ça devrait aller ? wink
enfin si tu attends 10min je les mets à jour ? j'ai corrigé des bugs, et rajouté des fonctions pour la portabilité du truc

Dernière modification par Magun (23-08-2010 02:08:20)

Hors ligne


#6 

22-08-2010 18:25:58

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

ok je vais vois ce soir, sinon essai de mettre ça après glMatrixMode(modelview:
    glRotatef(-rot.x, 0,0,1);
      glRotatef(-rot.y, 0,1,0);
      glRotatef(-rot.z, 1,0,0);
     glTranslatef(-pos.x, -pos.y, -pos.z);
+lookat

Hors ligne


#7 

22-08-2010 18:35:06

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
Site web

c'est pareil, et puis disons que ce n'est pas facile de voir quand la vision ne dépasse pas les 1000.f ( et je suis en 10 .... )
la moindre rotation ou position trop "importante" et je ne vois plus rien ...

si ça se trouve ça marche ... mais .. !
quant à gluLookAt, lui c'est sûr il ne marche pas, même sans transformation de matrice au préalable ...
le premier problème à résoudre est de passer en perspective, ça devrait corriger le problème de la distance de vision wink

edit: merci c'est gentil de t'y intéresser smile
tu ne saurais pas comment calculer une matrice de projection ? yikes
à la rigueur je peux faire une matrice perso, et la passer à opengl ...

Dernière modification par Magun (22-08-2010 18:37:53)

Hors ligne


#8 

22-08-2010 23:53:17

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

heu t'a pas un code plus léger wink je me perd là dans tout ces fichiers, pourrai-tu isoler la partie qui te pose soucis ?
j'ai essayé de compilé mais error core 2 for -match=switch ?!
sinon je lance l'exe fonctionne bien'apperement

Magun :

tu ne saurait pas comment calculer une matrice de projection ? yikes


Tu ne veut tout de même pas faire fondre mais neurones lol non là il faut attendre du renfort wink

Hors ligne


#9 

23-08-2010 00:15:07

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
Site web

les deux principaux fichiers sont camera.* dans externe/node/camera et draw.* dans externe/texture qui ont un rapport direct avec smile
sinon pour le code minimal ouais ... je veux bien, mais dans le principe ( pour le rendu ) voir premier post.

pour -match ... je suppose que tu es en x86 et non x86_64 (linux) ? de tout façon il faut aller voir dans les options de compilation et désactiver la prise en charge intel core 2/atlhon 64 ...
je mets à jour tout de suite j'espère que ça ira mieux pour compiler...

ps: tu utilises codeblocks ? 10.05 ? mets à jour sinon wink
edit: << lien censuré :') >>  faut compiler si tu veux tester, je travaille rarement sous windows
edit 2: bon et ben la position et la rotation ont l'air de marcher depuis le début en fait ... il y avait une petit erreur sur la rotation, mais pas méchante ( x-z inversés )

bref peut-être fatigué, ça ne m'étonnerais guère ...
mais ça ne change rien pour gluPerpective °°'

Dernière modification par Magun (23-08-2010 02:08:37)

Hors ligne


#10 

23-08-2010 00:38:32

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

bein j'ai seven 64 mais codeblocks est installé dans x86 en version 8.x, je vais mettre tout ça à jour

edit:maintenant j'ai une erreur à __PARAM_NAME_INFO_1_0(__DECLARE_PARAM_TRAITS);
il me dit error extra ';'

edit2 quand j'enlève le point virgule ça bloque plus loin à  if(gl[i] && i != GRC_0) wglShareLists(gl[0],gl[e]);
'e' was not declared in this scope

Hors ligne


#11 

23-08-2010 01:07:32

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
Site web

ah oui ... bon désolé du soucis ça vient d'opencl que je n'ai pas encore implanté

le plus rapide c'est que tu commentes
/extene/core/define.h enlève l'include d'opencl
/externe/core/device/device.* supprime la fonction getOpenCL et la variable cl::Context et aussi commentes ocl = 0 dans initOpenCL

Hors ligne


#12 

23-08-2010 01:15:45

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

ok c'est bon mais 'e' n'est toujours pas déclaré dans ce scope wink
-> if(gl[i] && i != GRC_0) wglShareLists(gl[0],gl[e]);

Hors ligne


#13 

23-08-2010 01:16:50

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
Site web

oh oui remplace par i :']

edit: euh bizarre ça compile pour moi ... j'ai oublié une save peut-être *-*

Dernière modification par Magun (23-08-2010 01:18:27)

Hors ligne


#14 

23-08-2010 01:18:13

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

wink bon maintenant error extra ';'
enum dInitODEFlags {
    dInitFlagManualThreadCleanup = 0x00000001, //@< Thread local data is to be cleared explicitly on @c dCleanupODEAllDataForThread function call
};

Hors ligne


#15 

23-08-2010 01:23:40

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
Site web

il y a une virgule de trop a la fin de 0x0..... qui cause un coma a la fin
je n'ai pas cette erreur pourtant, juste un warning...

edit: si ça t'énerve arrête j'aime pas souler les gens ^^' ... c'est aussi pour ça que je demande rien smile

Dernière modification par Magun (23-08-2010 01:27:09)

Hors ligne


#16 

23-08-2010 01:35:55

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

après une quarantaine de coma et une centaine d'extra il ne trouve pas -lGL, j'y suis presque wink

Hors ligne


#17 

23-08-2010 01:37:30

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
Site web

ok alors dernière étape, tu compiles en mode linux-i686 puis passe en windows ... ! big_smile

( build target à côté du bouton de compilation / debug )

Hors ligne


#18 

23-08-2010 01:41:37

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

Magun :

... depuis le depuis ...


Oui mais encore ? wink

Magun :

si sa t'énerve arrete


Tu rigole ou quoi ? j'ai le fou rire smile

Hors ligne


#19 

23-08-2010 01:43:49

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
Site web

c'est de ma faute le projet est sauvegardé sous linux donc l'option est aussi sauvegardée
je pensais que tu modifierais smile

bref alors tu as un exécutable ?

Dernière modification par Magun (23-08-2010 01:44:30)

Hors ligne


#20 

23-08-2010 01:45:26

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

bein non j'ai pas compris ce que tu voulais dire plus haut, je compile en linux-i686 et après?

Hors ligne


#21 

23-08-2010 01:49:04

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
Site web

et ben faut changer, il y a un profil par os, et donc sélectionner celui pour windows ( c'est pour les lib )
il y a une combobox ( une liste quand on clique dessus ), tu devrais avoir ça intitulé << build target: linux-i686 >>

en haut de ton interface ! et à côté des boutons pour compiler

Hors ligne


#22 

23-08-2010 01:50:02

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

bein c'est en mode build target->windows

Hors ligne


#23 

23-08-2010 01:50:40

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
Site web

ben y a plus qu'a compiler ...

Hors ligne


#24 

23-08-2010 01:51:34

nico
Webmaster
Date d'inscription: 07-08-2009
Messages: 563
Corrections: 9

bein il ne found pas -lGL sad

edit:MDR

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
881 membres
1426 sujets
11116 messages
Dernier membre inscrit: Bidule
15 invités en ligne
Aucun membre connecté
RSS Feed