Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Newton Discussion :

[newton] darkgdk comment recupere les donnes


Sujet :

Newton

  1. #1
    Futur Membre du Club
    Inscrit en
    octobre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : octobre 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut [newton] darkgdk comment recupere les donnes
    Salut a tous voila j'ai un probleme car en fait les tutorial pour newton son tous fait avec opengl et en fait pour positionner et orienter les object il se serve des matrice d'opengl.

    mon probleme j'utilise darkgdk et je voudrais bien integrer newton seulement je nais pas besoin comme opengl de dessiner toute les faces des object et je ne me sert pas de matrice comme opengl pour deplacer orienter et agrandir les object.

    donc en fait j'ai des object example un "cube" qui et dessiner automatiquement j'ai juste a le deplacer orienter comme je veut grace a des fonction precise.

    je que je voudrais c'est de pour voir recupere les coordonneer et les angle de l'object donc pour les coordonner je crois que c'est la 4 eme collonne si je ne me trompe mais apres je sais pas ou sont les angles.

    j'ai lue quelque par qu'il fallais les calculer mais comment enfin je crois.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 318
    Points : 276
    Points
    276
    Par défaut
    Pour avoir les anges de rotations à partir de la matrice regarde du coté de la FAQ matrices et quaternions: http://jeux.developpez.com/faq/matquat/

  3. #3
    Futur Membre du Club
    Inscrit en
    octobre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : octobre 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    salut et bien j'ai beaux lire je ne comprend pas comment faire.

    j'aimerai savoir si par hazar une ame charitable pourais me faire un example de code pour recupere les coordonne et les angle d'un object dans une matrix merci beaucoup

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 318
    Points : 276
    Points
    276
    Par défaut
    tu doit récupérer des classe de matrice et de quaternion

    ->la matrice de newton est une matrice de rotation
    -> tu construit un quaternion avec ta matrice
    -> pour chaque axe x, y , z tu calcules l'angle selon les axe x, y , z Ces angles s'appellent les angles d'Euler.

    C'est la recette que j'ai utilisé dans mon code perso.

    Tu peut emprinter les classe de matrice et quaternion dans le tuto de Laurent sur un moteur 3D ici: http://loulou.developpez.com/tutoriels/moteur3d/

    voici un copié collé de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	// matrice => matrice Newton
     
     	// extraction de la position
    	position.mX = matrice.m[12];
    	position.mY = matrice.m[13];
    	position.mZ = matrice.m[14];
     
    	// extraction des angles de rotation suivant les 3 axes
    	CQuaternion quaternion;
    	quaternion.FromMatrix(matrice);
    	quaternion.ToAxisAngle(CVecteur3f(1.0f,0.0f,0.0f),vectAngle.mX);
    	quaternion.ToAxisAngle(CVecteur3f(0.0f,1.0f,0.0f),vectAngle.mY);
    	quaternion.ToAxisAngle(CVecteur3f(0.0f,0.0f,1.0f),vectAngle.mZ);

  5. #5
    Futur Membre du Club
    Inscrit en
    octobre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : octobre 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    merci pour ton example je comprend un peut mieux

    donc aparament ont recupere les angles avec

    quaternion.ToAxisAngle(CVecteur3f(1.0f,0.0f,0.0f),vectAngle.mX);

    en donc on met la valeur des angle dans vectAngle.mX.

    j'ai trouver en fouillent bien un example d'utilisation pour darkgdk et newton voici comment il fait pour trouver les angle dans le callback

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    CNewtonObject *cUserData = (CNewtonObject*) NewtonBodyGetUserData(body);
     
    	dVector vEAngle;
    	dVector	vPos(matrix[12], matrix[13], matrix[14]);
     
    	NewtonGetEulerAngle(matrix, &vEAngle.m_x);
    	vEAngle = vEAngle.Scale(180.0f / 3.14159f);	//convert to degrees
     
    	dbPositionObject(cUserData->nObjectID, vPos.m_x, vPos.m_y, vPos.m_z);
    	dbRotateObject(cUserData->nObjectID, vEAngle.m_x, vEAngle.m_y, vEAngle.m_z);
    j'ai une autre question en fait voila dans mon example il se serve de sa

    CNewtonObject *cUserData = (CNewtonObject*) NewtonBodyGetUserData(body);

    premiere question je c'est que sa a rien avoir mais je ne suis pas sur

    (CNewtonObject*) NewtonBodyGetUserData(body)

    (CNewtonObject*) avant la function sa sert a quoi au juste je pensse que sa permet de definir le type qui est renvoyer non?

    ensuite NewtonBodyGetUserData(body) sa sert a quoi au juste car je trouve pas a quoi ser cette fonction merci pour les reponsse

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 318
    Points : 276
    Points
    276
    Par défaut
    Le couple de fonctions NGD:

    NewtonBodyGetUserData
    et
    NewtonBodySetUserData

    permettent d'associet à l'objet newton NewtonBody des données, par exemple des données graphiques pour pouvoir y avoir acces dans les calback de NGD comme par exemple les callback de forces etc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CNewtonObject *cUserData = (CNewtonObject*) NewtonBodyGetUserData(body);
    ce code permet d'avoir accès à la classe maison CNewtonObjet dans une callback

  7. #7
    Futur Membre du Club
    Inscrit en
    octobre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : octobre 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    merci pour cette reponse je comprend mieux maintenant a quoi sert NewtonBodyGetUserData

    je m'en servirais plus tard deja je vais voir faire des essai

    par contre toi tu me dit de me servir des quaternion et dans l'example que j'ai trouver il se sert de NewtonGetEulerAngle(matrix, &vEAngle.m_x);

    c'est quoi le mieux car il me semble qu'il y a des probleme avec les angle euler.

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 318
    Points : 276
    Points
    276
    Par défaut
    Je n'utilise pas ces fonctions.

    Fait des essais et dit nous ce que ça donne Il n'y a pas de raison que ça ne marche pas.

  9. #9
    Futur Membre du Club
    Inscrit en
    octobre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : octobre 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    salut je vient au nouvelle donc j'ai reussi a faire quelque chose qui marcher.

    donc pour le moment j'ai reussi a faire des box qui on de la physique mon premier programme avec newton lol sa fait trop plaisir j'ai compris un peut plus sur newton.

    donc j'ai du me servir de NewtonBodyGetUserData que je trouve tres facile d'utilisation maintenant pour me moment je me sert des angle euler qui m'on pas eu l'air de deconner.

    j'ai quand meme 2 soucis

    le premier mes deplacement des cube sont pas constant je m'explique des fois mon cube tombe vite puis d'un coup il stop casiment puis repart aussi vite.

    je pensse que je doit gere sa avec le 2 eime parametre de newton update non?

    puis j'ai créée une methode dans ma class qui positionne l'object ou je veut je l'ai afecter a la touche espace sa marche temp que mon object et en action une fois qu'il et au sol et bouge plus met callback ne sont plus utiliser et la je peut plus deplacer mon object au endroit que j'indique.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 318
    Points : 276
    Points
    276
    Par défaut
    Pour ton souci 2, newton pour avoir le moins de calcul à faire gèle les objets qui ne bougent plus au bout d'un certain temps tu doit utiliser

    NewtonWorldUnfreezeBody et NewtonWorldFreezeBody pour gérer ça.

    Il se peut aussi que ton objet ai atteint les limites du monde newton. A ce moment ton objet reste figer et plus rien n'est possible pour le refaire bouger.
    NewtonSetWorldSize

    Pour le souci 1 je ne vois pas trop, peut être un problème de lag?
    regarde du coté de
    NewtonSetMinimumFrameRate et dans NewtonUpdate ou on indique un paramètre de temps que je n'ai jamais vraiment pigé. Si tes essais pouvaient m'éclairer, merci

  11. #11
    Futur Membre du Club
    Inscrit en
    octobre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : octobre 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    ok merci pour le defreezer je vais tester sa desuite par contre je vien de trouver pour mon probleme de regulariter du mouvement

    en fait j'ai voulu gere moi meme mon fps et donc je me retrouver avec un boucle par second elever car il y a un bug dans darkgdk qui limite le fps et le boucle par second donc je le fesais manuellement.

    j'ai ensuite essayer avec le rafrechisement de darkgdk et la sa vas desuite mieux par contre je suis desuite bloquer en boucle par second je vais faire d'autre teste et je te dit

  12. #12
    Futur Membre du Club
    Inscrit en
    octobre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : octobre 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    salut et bien merci pour de defreeze sa marche niquel par contre j'ai des petits soucis j'ai fait un mur de 10 par 10 cube sa fait 100 cube et sa je jete un autre cube sur le mur sa fait ramer mon programme j'ai pas le dernier pc mais il est quand meme capable de gerer sa peut etre un probleme de code si quelqun peut faire des essay j'ai un athlon xp 3200+ 768 mo ram carte graphique geforce 7300gs

    edit: je vien de faire un teste et j'ai placer aleatoirement jusqua 500 cube il tombe sur un sol aucune chute de fps mais un mur de 100 cube me ralenti le programme quelqun serait t'il de ou sa peut venir merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. image CGM : comment recuperer les données
    Par bouhmid2007 dans le forum Imagerie
    Réponses: 0
    Dernier message: 15/10/2011, 13h26
  2. Réponses: 3
    Dernier message: 24/07/2007, 16h53
  3. Réponses: 6
    Dernier message: 01/08/2006, 16h23
  4. comment recuperer les messages
    Par devalender dans le forum Débuter
    Réponses: 2
    Dernier message: 17/06/2004, 19h30
  5. Comment recuperer les ip de la commande ipcinfig ?
    Par Walm dans le forum C++Builder
    Réponses: 5
    Dernier message: 04/05/2004, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo