Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

3D, UN PERSONNAGE QUI SPRINT EN QUELQUES LIGNES


Information sur la source

Catégorie :Java3D Classé sous : java3d, mouvement, simple Niveau : Débutant Date de création : 24/08/2006 Date de mise à jour : 24/08/2006 15:47:21 Vu / téléchargé: 7 207 / 819

Note :
5 / 10 - par 1 personne
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Voici ma première source java, par pitié soyez indulgents.

J'ai eu beaucoup de mal à comprendre le fonctionnement de la 3D et encore plus a lier et modifier les éléments correctement.

L'idée est de créer des objets autonomes et de les lier par des points de référence

J'ai donc créé un Objet qui hérite de la classe TransformGroup et qui comporte un Behavior + une série de points de référence.

Pour créer mon personnage, je commence par créer un objet "Torse" auquel j'ajoute des sphères / cubes etc... Afin d'obtenir une forme grossièrement ressemblante.
J’ajoute à cet objet (et c'est la toute l'astuce) des points de référence 3D que je nomme "épaule droite" "épaule gauche" "cou" etc...

En suite je crée un Objet "bras" qui comporte deux points de référence "épaule" et "coude"

Ainsi de suite pour tous les membres.

Puis je lie les objets entre eux j'indique à mon objet "torse" de lier en sont point nommé "épaule droite" l'objet "bras droit" au point nommé "épaule"

Pour finir il n'y a plus qu’à faire bouger le tout en modifiant les angles X Y Z pour chaque articulation...
 

Conclusion

Il n'y a presque pas de commentaires dans le code tellement il est simple
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

24 août 2006 11:21:37 :
Correction des fautes d'orthographe :)
24 août 2006 15:47:21 :
Ajout de commentaires

Commentaires et avis

signaler à un administrateur
Commentaire de Twinuts le 24/08/2006 12:35:38 administrateur CS

Salut,

le résultat est sympas :D, cependant merci de commenter ta source (les commentaires sont super important surtout pour une source utilisant java3D qui est une usine à charbon à lui seul).

sinon j'ai rien contre java3D si ce n'est sa lenteure d'éxecution et étant plus habitué à opengl je voulais juste t'informer de l'existance de jogl(implentation opengl en java) et de javasdl(implementation de sdl en java) qui sont apres les avoirs testé, plus performant (ca reste mon avis perso donc...)

signaler à un administrateur
Commentaire de omcougar le 24/08/2006 16:02:47

Je viens d'ajouter des commentaires, et je pense que l'on peut facilement créer un objet à articulations multiples sans même comprendre le code… même pas besoin de se casser la tête à calculer les vecteurs je déteste ca.

Pour l'optimiser je vois plusieurs directions:

1/ commencer par ajouter des méthodes pour dessiner des objets plus complexes que sphères et carré.

2/ pour chaque articulation il est possible de définir sur les 3 axes les angles de rotations min/max ainsi lorsqu'on appelle le mouvement de course à 0% tous les angles sont à leur minimum et à 100% tous les angles sont au max mais en réalité un mouvement de course est beaucoup plus complexe il faudrait pouvoir définir des positions intermédiaires.

3/ quand on appelle le mouvement de course à x% je commence par tout remettre aux positons de départ puis effectuer toutes les rotations de x%... on devrait avec un peu de réflexion pouvoir se débarrasser de la moitié des calculs :)

Pour opengl je suis preneur surtout si c'est plus performant mais j'ai surtout trouvé des exemples java3D... ou puis-je trouver des exemples jogl ou javasdl suffisamment "basic" pour qu'un noob comme moi puisse les comprendre?

signaler à un administrateur
Commentaire de Twinuts le 24/08/2006 16:44:59 administrateur CS

Salut,

je suis du meme avis que toi concernant le peux de complexité du code deplus il est super lisible ce qui j'avoue est assez rare donc congratulation rien que pour ça :D, maintenant les commentaires aide pour savoir ce qui ce passe dans la tete du developpeur lors de la creation du code :P

concernant les optimisations je pense qu'a la longue elle devrait valoir le coup.

pour jogl (c'est comme opengl (meme non, meme parametre casiment)) voici ma recherche sur google :
http://www.google.fr/search?q=jogl+sample+code&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:fr:official

tu tombe sur :
http://today.java.net/pub/a/today/2003/09/11/jogl2d.html
http://www.cs.umd.edu/~meesh/kmconroy/JOGLTutorial/

signaler à un administrateur
Commentaire de bouge32 le 11/10/2006 23:45:03

ces un beau code et je le sugerre

signaler à un administrateur
Commentaire de omcougar le 12/10/2006 16:43:39

Vu que ce code est super méga facile à comprendre mais que java3d et peu efficace, il n'y aurait pas un courageux pour faire la même chose en open GL que je comprenne le truc ? :)

signaler à un administrateur
Commentaire de gouessej le 25/12/2006 14:54:59

Sérieusement, je rejoins entièrement TWINUTS. Ca vaudrait vraiment le coup de passer à JOGL qui est vraiment plus rapide que Java 3D. Je pense que je vais reprendre ton code pour essayer de faire bouger mes humanoïdes les moins réalistes (zombies par exemple). Je vais essayer de voir si c'est relativement simple à optimiser. En revanche, JSDL est plutôt adéquat pour la 2D mais pas pour la 3D à mon avis.

signaler à un administrateur
Commentaire de gouessej le 25/12/2006 15:00:29

Ceci vous parait sûrement très simple et tout à fait correct et pourtant...

public void applique(){
T_Finale.mul(T_RX);
T_Finale.mul(T_RY);
T_Finale.mul(T_RZ);
TG_Parent.setTransform(T_Finale);
}

Tu utilises des transformations eulériennes ce qui peut causer du gimbal lock (verrou de Cardan). Il faudrait plutôt utiliser des transformations non eulériennes qui sont plus faciles à exprimer en s'appuyant sur des quaternions.

signaler à un administrateur
Commentaire de gouessej le 25/12/2006 15:14:04

Ceci n'est pas optimal :

public void reset(){
T_Finale = new Transform3D();
T_RX = new Transform3D();
T_RY = new Transform3D();
T_RZ = new Transform3D();
}

Ecris plutôt ça :

public void reset(){
T_Finale.setIdentity();
T_RX.setIdentity();
T_RY.setIdentity();
T_RZ.setIdentity();
}

signaler à un administrateur
Commentaire de gouessej le 25/12/2006 15:48:26

La solution éliminant le gimbal lock pour calculer la composition de rotations est:
R(R(R(Ox,∆)Oy,Ω)*R(Ox,∆)Oz,∂)*R(R(Ox,∆)Oy,Ω)*R(Ox,∆)
C'est une transformation non Eulerienne.
Ceci marche très très bien mais ne suffit pas. Pour éviter de cumuler des erreurs avec les produits successifs de quaternions, il faut TOUJOURS revenir au quaternion neutre puis recombiner les rotations axiales exprimées à partir des angles globaux. J'ai travaillé 6 mois principalement sur ce problème l'an passé, j'espère que ça pourra t'éviter pas mal de galères que j'ai moi-même connues.

signaler à un administrateur
Commentaire de 9287 le 30/12/2006 20:06:17

je diré que .......... ce messieu et génial

signaler à un administrateur
Commentaire de 9287 le 06/01/2007 21:58:11

et aussi ............. le code 00978645213 il est à qui

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

plugin java3D [ par fredocom ] bonjour, j'ai besoin de quelques infos sur l'API java3D. Pour pouvoir visualiser une applet java3D sur le web, je sais que l'utilisateur doit disposer rotation d'une sphere 3d dans un monde java3d [ par helbriand ] Salut,Est-ce qu'un pro de java3d pourrait m'aider ?La question : Comment faire tourner une sphere 3d sur elle-même dans unmonde 3d, par rapport à l'ax recherche d'un jeu simple en java [ par ponchovilla ] bonjour,je dois réaliser comme projet un jeux en java qui pourra etre jouer en réseaux (genre un jeux de cartes) qui se joue à plusieurs (à 2, c'est d JAVA3D et jeu de course [ par toto0101 ] voila j'aimerai savoir où je pourrais trouver le code source d'un jeu de course en java3D? si oui pourriez vous me donner l'url ou m'envoyé le source Plugin JAVA3D [ par lulu31 ] J'ai une applet qui utilise une visu2D et une visu3D de la trajectoire d'un satellite. J'aimerais qu'au demarrage de cette applet, la detection du plu inversion de mouvement [ par sik ] comment faire pour inverser le mouvement d'un objet en java merci pour l'aide que vous m'apporterez! probleme pour un code calculatrice [ par ant01ne ] Salut,Voila je suis un debutant en JAVA et j'aimerais creer une calculatrice toute simple avec seulement un clavier que j'ai deja creer incluant les 1 Java3D + Clavier [ par Uncle ] Voila g un problem qui peu paraitre tout bete mais bon :)J'aimerai savoir quand es ce que l'utilisateur appui sur la fleche de Droite ou de Gauche sou VECTOR, problème. [ par MdcPhoenix ] Voilà c'est assez simple, une variable de type Vector contient un certains nombre de variable type Object.En l'occurence, moi j'ai rempli mon vector a java3d [ par LooL ] bonjour je dois dessiner un graphe en 3d avec un fichier de points en trois coordonnées.je maitrise tres mal la j3d. Si kelk1 a la solution....béni so


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,172 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.