Bon finalement j'en suis venu a bout... j'ai opte pour une interpolation trilineaire, au niveau contraste c'est pas genial, mais le resultat est bon, et le lissage des courbes est parfait.
Le truc c'est que bien sur une interpolation trilineaire c'est facile, mais seulement dans les cubes.
Ex : http://astronomy.swin.edu.au/pbour [...] trilinear/
Seulement moi j'ai des cellules qui ressemblent a ca. Desole pour la tete du truc j'ai pas eu le temps de trouver l'outil qui trace les lignes...
L'idee c'est de trouver les coordonnees relatives d'un point quelconque dans la cellule. Pour ca il faut trouver une transformation affine entre le cube initial et la cellule.
Par exemple pour trouver la coordonnee suivant l'axe x, il faut faire coulisser (de maniere affine) le plan ABCD vers le plan EFGH, et s'arreter des que le point M recherche appartient au plan coulisse. On en deduit la coordonnee en faisant par exemple le rapport AI/AE, ou I est l'intersection du plan coulisse avec le segment AE.
Soit P le plan coulisse de coordonnee x.
Si I,J,K,L sont les intersections de ce plan avec AE,BF,DH et CG, on a :
AI= x.AE
BJ= x.BF
DK= x.DH
CL= x.CG
Et une condition necessaire et suffisante d'appartenance de M au plan coulisse est :
(IJ^IK).IM = 0 (un produit mixte tout bete)
ce qui conduit a une equation du troisieme degre en x, penible a resoudre (j'ai pas retrouve la formule sur le net, donc ca veut dire faire du newton sur [0,1] pour trouver la racine...
).
Mais c'est toujours mieux que d'inverser une matrice 8x8.
L'inconvenient est qu'il faut recalculer les quadrinomes du 3e degre pour chaque point M de la cellule.
...
Donc voici la solution que j'ai utilisee :
Je considere les vecteurs (DH,DA,DE) comme une base de la cellule (ce qui n'est vrai QUE si elle est parallelepipedique), et je trouve les coordonnees de M dans cette base.
Je fais de meme avec les 7 autres bases possibles (relatives aux 7 autres sommets), et ensuite je fais la moyenne de tous ces coefficients... et ca fonctionne plutot pas mal, a ma grande surprise... je dirais meme qu'on est tres pres de la valeur theorique.
Avantage de la methode : ca fait 8 matrices 3x3 a inverser par cellule, ce qui est assez leger, et ensuite on utilise ces matrices pour tous les points de la cellule...
Et niveau vitesse ca va quasiment aussi vite que la bete projection sans interpolation...
Donc moi je dis oui.
Et donc ensuite je trouve la valeur du point M en faisant une interpolation lineaire classique, comme si j'etais dans un cube, avec les coefficients trouves.
Reste un dernier point, trouver les valeurs aux 8 sommets. Et bien pour chaque sommet, je trouve les 8 cellules (au plus) auquel il appartient, et je fais une barycentration inversement proportionnelle aux distances du sommet par rapport aux centres de ces cellules (avec ta fonction de saturation BENB, comme ca on ne jette rien de ce qui a ete dit dans ce post
).
Dernier detail : pour trouver la valeur d'un point dans la cellule, je ne tiens pas compte de la valeur de cette derniere. En fait si, puisqu'elle est prise en compte indirectement dans la valeur des sommets, mais bon... je sais pas si ca joue. En tout cas les resultats ont l'air corrects.
A suivre : des images du resultat... 
[edit]--Message édité par tgrx--[/edit]