Calcul matriciel appliqué à l'infographie

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
T00N3
Messages: 2
Enregistré le: 26 Nov 2008, 14:57

Calcul matriciel appliqué à l'infographie

par T00N3 » 26 Nov 2008, 16:46

Salutations à tous,

Tout d'abord, navré si cette question ne se trouve pas au bon endroit ... j'ai longuement soupesé les différentes sections et celle-ci me semblait la plus adaptée. D'après mes souvenirs (pas très récents ;)) la théorie des ensembles et le calcul matriciel qui en découle faisaient partie du programme supérieur !

En préambule j'ai fait pas mal de recherche internet sur le calcul appliqué à l'infographie, y compris sur ce forum, et il est très dur de trouver des sources détaillées sans être "généralistes". Si vous aviez des sites de référence à me conseiller je suis preneur ;)

Mon problème immédiat est assez simple sur le papier, mais mes souvenirs de prépa trop lointains pour en faire usage ... voici les données :

- Synopsis :

Comment calculer rapidement la dérivée en un point de l'espace d'une matrice 4x4 transformant ce point, sachant qu'il s'agit d'une banale transformation affine (translate / rotate / scale / shear) ? Comment exprimer cette matrice dans différents repères ?

- Version longue, données disponibles :

Je réalise avec un ami un moteur de simulation de fluides pour une application de modélisation 3D (Maya). J'en suis à implémenter le couplage fluide/solides, avec transmission de la vélocité du solide au liquide avec lequel il entre en collision. Je cherches donc à récupérer une matrice de transformation dans le temps du solide entrant en collision, d'une étape de calcul à la suivante. Je dispose pour ça :

* De la topologie du solide (faces -> edges -> vertex) exprimée dans le repère monde.
* De la "worldMatrix" du solide, c-a-d la matrice de transformation 4x4 permettant de passer du repère local du solide au repère monde. Cette matrice est récupérable à tout instant T, y compris "entre" deux étapes de calcul par interpolation.
* Des "worldMatrix" et "worldInverseMatrix" de mon espace de simulation qui permettent comme leur nom l'indique de passer du repère monde au repère local de mon liquide (qui n'est pas celui du solide entrant en collision !) et lycée de versailles.

- Propriétés identifiées :

Le solide est un "rigid body", c'est à dire grosso modo un objet non déformable. Sa topologie reste invariable au fil du temps, et la worldMatrix positionnant l'objet est donc unique et définie en chacun de ses points.

Les matrices de transformation manipulées sont des matrices 4x4 classiques comme décrit ci-dessous :
http://download.autodesk.com/us/maya/2008help/Nodes/transform.html

Elles présentent quelques propriétés intéressantes à priori, comme une inversibilité beaucoup plus simple que dans le cas général par exemple. J'ignore totalement si ça facilite quoi que ce soit dans mon cas.

- Petit exemple :

Disposant de la position de mon objet à un moment T, et au suivant (T+1), je cherches donc à obtenir la variation de cette "position" de T à T+1. Par exemple si l'objet tourne autour de son axe X d'un angle "rx" à chaque frame de calcul, sa worldMatrix ressemblera à quelquechose comme :

mat(T = 0)
[ 1 0 0 0 ]
[ 0 1 0 0 ]
[ 0 0 1 0 ]
[ 0 0 0 1 ]

mat(T = 1)
[ 1 0 0 0 ]
[ 0 cos(rx) sin(rx) 0 ]
[ 0 -sin(rx) cos(rx) 0 ]
[ 0 0 0 1 ]

mat(T)
[ 1 0 0 0 ]
[ 0 cos(T * rx) sin(T * rx) 0 ]
[ 0 -sin(T * rx) cos(T * rx) 0 ]
[ 0 0 0 1 ]

etc.

Intuitivement (qui a dit "empiriquement" ? :)) j'aurais tendance à penser que dans ce cas par exemple, la matrice pour passer de T à T+1 (disons dMat) est équivalente à mat(T = 1), puisqu'il s'agit d'une rotation d'un "pas".

Mathématiquement j'ai énormément de mal à me faire une idée de comment obtenir cette matrice sachant que :
- la transformation complète de l'objet est bien plus complexe que ça (combinaison de la rotation, translation, scale etc.).
- il ne s'agit pas d'une simple différence du type (mat(T+1) - mat(T)).
- la solution que j'imagine ci-dessus ne ressemble en rien à la dérivation de quelque terme que ce soit.
- la notion de "matrice dérivée" me semble d'ailleurs bien abusive dans un contexte où le temps est discrétisé, et l'animation de l'objet observé non linéraire (la "pas" de rotation n'est pas nécessairement fixe, l'interpolation entre deux étapes peut être quadratique et non linéaire, sans oublier l'intervention humaine sur les données dans le pire des cas ...).

Une extension au problème est que je dois obtenir cette "dMat" exprimée dans mon repère de simulation, et je ne sais pas trop comment faire ... autant "transformer un point" (quaternion) ne me pose pas de problème, autant "transformer une transformée" me semble beaucoup plus discutable.

A noter que vu la précision toute relative de la "question" et mes compétences risibles en maths, je ne cherche pas de solution clefs en main mais plus des pistes, suggestions sur la façon de se représenter les choses, liens sur des supports décrivant ce type de problématique etc. Je ne suis quand même pas le seul à me poser ce genre de question ?!

Et si vous avez eu le courage de lire jusqu'ici merci pour votre attention ;)



busard_des_roseaux
Membre Complexe
Messages: 3151
Enregistré le: 24 Sep 2007, 14:50

par busard_des_roseaux » 26 Nov 2008, 17:46

Salut,

d'après ce que j'en ai compris:

on a une famille de transformations paramétrée par le temps



si on pouvait obtenir une décomposition fixe , canonique, de cette
transformation en un produit fixe de transformation ABC
en utilisant , par exemple des angles d'Euler, ou la décomposition
d'une isométrie en réflexions,
bref si T s'exprime comme un produit , alors on dérive par la
formule:



d'où, quand h tend vers zéro:

A(t)B'(t)+A'(t)B(t)

les produits étant des produits de matrices.

et plus généralement
(ABC)'=A'BC+AB'C+ABC'

mais le nombre fixe de générateurs risque d'être élévé

D'autre part, une isométrie se décompose , de façon unique
en le produit commutatif f=tog = go t d'une isométrie g à point fixe
par une translation. Cette translation est parallèle à la variété affine des points fixes de g.

Cela suggère d'étudier la variation continue des points fixes
des transformations (axes pour les rotations, plans pour les réflexions
ou symétries planes, centre pour les symétries axiales..)

De toutes façons, le problème posé est un problème d'algèbre ou de géométrie mais pas de calcul différentiel:

- soit on décompose la transformation au temps t, selon sa variété
affine de points invariants (ce qui donnerait par exemple un axe instantané
de rotation pour les rotations et un plan instantanné de symétrie pour
les réflexions ??)
- soit on arrive à écrite T(t) selon un produit fixe de transformations.
dans cette écriture, ce serait le produit ABCD qui garderait la même structure au cours du temps) et on applique ensuite la formule de dérivation de Leibnitz.

- ou alors l'application a de bonnes propriétés
si T(t) avait le bonheur d'être le paramétrage d'une variété
dans l'ouvert du groupe linéaire ,
avec la condition nécéssaire qu'à chaque instant t, l'application affine T(t) a au moins un point fixe.
Et l'on utiliserait l'espace tangent à cette variété.

T00N3
Messages: 2
Enregistré le: 26 Nov 2008, 14:57

par T00N3 » 26 Nov 2008, 18:55

Salut et merci pour cette preste réponse ! Je la digère encore, mais il me semble que c'est dans le mille :king2:

Avant d'être capable de répondre :hum: voici les refs sur lesquelles je me base, et employant un vocabulaire probablement plus adapté que le mien.

Déjà le doc qui "décrit" (le terme est un peu sur-dimensionné) cette notion de dt-matrix :
http://www.exocortex.org/siggraph/Houston2003_main_sketches0245.pdf

En particulier la section :
Each occlusion is associated with a motion path expressible as a function mapping time t to a transformation matrix, T(t).
The velocity field is obtained by taking the product of the position and the component-wise derivative of this motion path: u(x,t)= (T’(t))x.


Je suppose que ça rejoint votre idée d'éclatement sur les axes.

Enfin le pdf décrivant plus globalement l'intégration de l'énergie cinétique du solide dans le système linéaire résolvant l'équation de Navier-Strokes du simulateur (section 3) :
http://www.cs.ubc.ca/nest/imager/tr/2007/Batty_VariationalFluids/variationalFluids.pdf

Merci encore pour ces pistes, je m'en vais de ce pas avaler un morceau (et un doliprane), et je me repenche sur la question ;)

busard_des_roseaux
Membre Complexe
Messages: 3151
Enregistré le: 24 Sep 2007, 14:50

par busard_des_roseaux » 27 Nov 2008, 12:25

bjr,


j'ai été jeter un coup d'oeil

içi

quelques idées, je ne sais si elles sont délirantes:

A un instant t fixé, l'idée serait de réaliser la transformation T(t)
comme un produit de rotations par rapport à des axes fixes dans le temps.
On peut peut être s'aider des angles d'Euler.
En composant avec une homothétie (scale ?) , quel sous-ensemble
de obtient-on ?

Les groupes de rotations par rapport à un axe fixe sont sûrement
des groupes topologiques connexes compacts. D'après le théorème d'élie Cartan du livre cité, de tels groupes K sont l'image par une
application


d'une algèbre de Lie de matrices X de .
ça rendrait les calculs agréables, il suffirait de passer au log.

ce qui serait bien, ça serait d'arriver à écrire T comme:

avec l'espoir, en passant au log, d'obtenir au cours du temps
une ou plusieurs fonctions réelles
dérivables voire analytiques.


Malheureusement, si le produit de ces groupes de rotations est direct,
il faut peut être demander en plus qu'ils soient distingués dans .

Autre problème: le groupe GL_n(R) a deux composantes connexes:
celle des transformations conservant l'orientation (un groupe connexe) et les autres qui ne forment pas un groupe.
Peut on avoir T(t) et T(t+h)
dans deux composantes connexes de distinctes: T(t)
conservant l'orientation et T(t+h) ne conservant pas l'orientation ?


Bonne nouvelle: dans mon bouquin de michèle Audin "Géométrie", elle écrit que le groupe des transformations orthogonales
conservant de plus l'orientation est isomorphe au quotient où S est la sphère , sphère unité des quaternions. a une structure de groupe de Lie, compact, connexe.

Malheureusement, je ne vois pas le lien entre et ??

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Sara1999 et 37 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite