3d, un personnage qui sprint en quelques lignes

Soyez le premier à donner votre avis sur cette source.

Vue 14 306 fois - Téléchargée 1 857 fois

Description

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

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3
Date d'inscription
samedi 30 décembre 2006
Statut
Membre
Dernière intervention
6 janvier 2007

et aussi ............. le code 00978645213 il est à qui
Messages postés
3
Date d'inscription
samedi 30 décembre 2006
Statut
Membre
Dernière intervention
6 janvier 2007

je diré que .......... ce messieu et génial
Utilisateur anonyme
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.
Utilisateur anonyme
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();
}
Utilisateur anonyme
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.
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.