CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

animation 3D temps réel

saleGauss
saleGauss
Niveau 9
04 décembre 2006 à 14:40:29

Bonjour.
voila, je me pose qq questions concernant l\´animation 3D temps réel.
Supposons que j\´ai un perso (mesh avc plusieurs bones, modélisé sous 3DsMax 6) à déplacer en fonction de ce qu\´a fait l\´utilisateur.
Je veux, pour l\´instant déplacer mon perso de maniere rectiligne.
Plus précisement, tant que le joueur appuie sur la touche avancer, le perso avance.
Ma vision des choses serait la suivante:
I/ Création d\´un déplacement élémentaire
je crée une fonction deplacement_elementaire() qui fait avancer mon perso sur 2 pas (pied gauche puis pied droit).(je fais des rotation avec des matrices sur mes bones)

II/ Qd je veux faire avancer mon perso(parce que le joueur appuie sue la touche \"avancer\"), je procède ainsi:

----debut de l\´algo------------

tant que le joueur appuie
{
-on regarde si la prochaine position ns met en collision avc le monde (methode d\´interpolation entre ma position précédente et ma future position)

If (collision == false)
{
si je ne serais pas en collision, alors je regarde jusqu\´où je dois faire avancer mon perso en faisant ainsi:
.je vais aplliquer à mon mesh une force constante pour avancer (qu\´on peut voir comme une vitesse notée v)

.je regarde le dt qui s\´est écoulé entre la précédente frame et maintenant

.position = position + v.dt [approximation d\´Euler correcte sur un pas assez faible]
Je sais maintenant jusq\´où je dois le faire avancer

-tant que (|objet.saposition - position| > présic
ion // il nous faut une précision car il est fort probable que le déplacement élémentaire ne nous mene pas exactement là où on veut
{
deplacement_elementaire() // je joue le dépl
acement élémentaire
}
//on est arrivé à destination
}

If (collision == true)
{
//je gère les collision (relativement) présisemm
ent avec la methode de projection de rayon (ca je sais faire)

}

// si il a continué à appuyer : ca va revenir au t
t debut, sinon, on va sortir de la gd boucle

}

-----fin de l\´algo------------

Bien sur je peux rajouter d\´autre forces exterieures qui lorqu\´elles seront présentes l\´emporteront sur notre volonté de déplacer le perso (notre v de tt à l\´heure)(ex:qd mon perso prendra un coup d\´épée, je veux qu\´il subisse le coup et non pas qu\´il avance comme si de rien n\´était).

Voila, il se peut que ma vision des choses soit très mauvaise mais comme je n\´ai aucune connaisance particulières sur ce sujet, je voulais votre avis qui, je le sais, m\´éclairera.
Merci d\´avance pour tout commentaire.

saleGauss
saleGauss
Niveau 9
04 décembre 2006 à 14:44:02

Oulaaa je sais pas pourquoi ca a buggé mais mon texte est tout haché de \\\\.
Je suis suis désolé.
J\\\´espere que vous arriverez à lire qd meme sans trop de difficulté ;- ) .

Fvirtman
Fvirtman
Niveau 10
04 décembre 2006 à 14:45:57

Bon, ici tu nous donnes tout : aussi bien le déplacement que l´animation.

je pense qu´on peut pour le moment bien séparer les deux.
Dans un premier temps, le mouvement :

Si tu appuies sur la fleche avancer, alors le perso avance, mais seulement si son "status = EN_MARCHE"

Il est tres important d´avoir une variable status, qui défini l´état de ton perso :
en marche, au sol, touché, etc !!

A ce moment la, tu peux avancer que si ton perso est en statut "en marche"
Si ton perso se prend un coup d´épée, alors son statut change pendant, allez, 1/2 seconde. Il se retrouve en statut "touché". Ce statut est associé a un chrono qui le remet en statut "en marche" 1/2 seconde plus tard.

Et bien entendu, fait immédiat de ce statut, comme il n´est plus en statut "en marche", alors si tu appuies sur avancer, ça n´avance plus :)

Fvirtman
Fvirtman
Niveau 10
04 décembre 2006 à 14:51:29

l´animation, c´est autre chose.

Pour la machine, pour simplifier, il n´y a qu´un cube englobant : l´animation et les collisions se basent sur ce cube. C´est ce cube que tu translates.

Voila pourquoi quand tu fais arriver lara croft contre un mur, elle n´est pas obligé de le toucher exactement pour est contre : tant que son cube englobant est contre, elle touche : inutile de regarder si son petit doigt touche au non.

saleGauss
saleGauss
Niveau 9
06 décembre 2006 à 12:21:49

Désolé de pas avoir répondu plus tot.
Merci, je vois le truc.Donc je fait avancer (virtuellement, ds mes calcul quoi) mon cube en mm temps que mon perso(que lui on voit).et si à la prochaine frame je vais foutre mon perso à un emplacment mauvais (car le vube englobant associé touche qq chose), alors je réagit à cette collision.
Merci pour l\´idée du statut, c\´est pas mal il sufit de rajouter une variables à ma classe personne (et d\´implémenter les réctions à tous les états possibles bien sur).Je m\´y remet ce soir!

Fvirtman
Fvirtman
Niveau 10
06 décembre 2006 à 12:27:05

C´est ce qu´on appelle une machine a état. Chaque sprite est une machine a état, un automate :-)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment