Salut, alors je m'explique, je suis en plein développement d'un éditeur de terrain pour mon jeux et là je m'attarde sur les volumes englobants.
J'ai déjà un algorithme de AABB qui fonctionne, j'ai décidé donc pour m'occuper de tenter un algorithme de OBB mais je cale. =S
Pour avoir l'orientation et la taille de l'OBB autour d'un objet, j'ai vu sur plusieurs site qu'il parlait que l'on pouvait obtenir cela avec la matrice de covariance mais je ne vois pas trop comment, j'ai essayer ceci mais, ça ne marche pas.
(Le code est en Java.)
Le vecteur u me semble bon, c'est la suite que je ne comprend pas trop bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public static Vec3t[][] computeCovarianceMatrix (Triangle[] tris){ Vec3t u = new Vec3t (0, 0, 0); Vec3t[][] covarMatrix = new Vec3t[3][3]; for (int i = 0; i < tris.length; i++) for (int n = 0; n < 3; n++) u = u.additionner(tris[i].getVertices()[n]); u = u.descale(3 * tris.length, true, true, true); for (int j = 0; j < 3; j++) { for (int k = 0; k < 3; k++) { Vec3t sum = new Vec3t(0, 0, 0); for (int i = 0; i < tris.length; i++) { sum = sum.additionner((tris[i].getVertices()[j].soustraire(u)).product(tris[i].getVertices()[k].soustraire(u))); } covarMatrix[j][k] = sum.descale(3 * tris.length, true, true, true); } } return covarMatrix; }
Je recherche bien les min et max en x, y et z pour avoir les dimensions de l'objet mais, ce n'est pas bon. =S
Est ce que quelqu'un pourrait m'expliquer.
(Merci d'avance.)
Partager