Re: Portal BGE

Posté par gui36fr le 20/10/2010 22:35:56
Pour le déplacement, met une grande force avec un grand damping, ça devrais le faire.

On ne touche pas à l'axe z : bonne nouvelle, car le problème se résume... à un plan ! Et pour les problèmes de plan, on utilise les complexes (a+bi, ça te reviens ?) en cas de besoin

Pour ceux qui n'aiment pas les maths, sauter le reste du post (sauf Bobibou... niark niark)

L'orientation est bien définie par une matrice 3x3, soit 3 axes (des vecteurs) définis par leurs coordonnées. Ces vecteur n'ont pas de longueurs imposées, ce sera donc encore plus simple ! (du moins pour moi, je suis bon en maths et j'adore les complexes (oui je sais je suis pas normal, mais il faut de tout pour faire un monde )).

Le principe : on prend le vecteur normal au portail (à toi de voir comment le récupérer), on ne prend en compte que ces coordonnées x et y : on le projette sur le plan (O, Ox, Oy) global dans lequel on va travailler.

On dit que ce vecteur est aussi le projeté de l'axe x (? je parle de l'axe qui donne "l'avant" du perso, c'est bien celui là ?) du perso lors de ça réapparition.


SI l'axe x reste à l'horizontale, bah on a déjà ses coordonnées (super !), et on peut calculer directement y avec les complexes (même pas besoin de quaternion )


SINON :
on ne va pas calculer directement les coordonnées de x, ce serait une perte de temps et une source d'erreurs (de mon point de vue), mais de y : cette axe est toujours à l'horizontale, et comme ton perso ne fait pas de roulis (ça se dit ça ?), on sait que l'axe y est perpendiculaire au projeté de x donc de la normale du portail sur le plan global. Et on peut calculer les coordonnées de y avec les complexes.
À partir de cette axe on peut retrouver le projeté de l'axe z sur (O, Ox, Oy) (complexes encore), puis calculer le troisième axe x (complexes encore si tu veux pour éviter les quaternions ).

Certains me demanderont : "mais pourquoi ne pas tout simplement copier les coordonnées de la normale au portail ?", et bien tout simplement parce que ma méthode marche même si le portail n'est pas à la verticale ! (Je m'épate moi même )


Avant de te ruer sur cette solution, il faut que je t'avertisse d'une chose : cette solution ne marche pas lorsque le portail est à l'horizontale.
MAIS, comme on se fout (et oui) de l'orientation du perso lorsque le portail est à l'horizontale (à plat, quoi), on n'a pas besoin d'exécuter la démarche que je t'ai décrite. Pour ça je suppose que tu saura faire

Si tu n'arrive pas à mettre tout ça en script, ou si tu trouve que ça te dépasse un peu trop, je t'aiderais, mais il faudra que tu me donnes les orientations de tes axes de ton perso (x devant, z en bas...)

Sur ce bonne nuit

Cette contribution était de : http://blenderclan.tuxfamily.org/html/newbb/viewtopic.php?forum=3&topic_id=27924&post_id=347180