diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2006-02-16 01:33:55 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2006-02-16 01:33:55 +0300 |
commit | 32a9c7b493e85815c548d49303dcb9fe56d23ac6 (patch) | |
tree | 041e612045e01cd89dc85b01c666f3da8d90b185 /source/blender/src/parametrizer.c | |
parent | 9fedbd6c51a5cc9e0799fc0afd3aae3dd9ce699e (diff) |
==UV Editor==
Small ABF stability improvement, do some angle clamping during iteration,
fixes a particular model that went wrong.
Diffstat (limited to 'source/blender/src/parametrizer.c')
-rw-r--r-- | source/blender/src/parametrizer.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/src/parametrizer.c b/source/blender/src/parametrizer.c index 50fa6dc1220..65ebdd68e2d 100644 --- a/source/blender/src/parametrizer.c +++ b/source/blender/src/parametrizer.c @@ -2217,6 +2217,7 @@ static float p_abf_compute_gradient(PAbfSystem *sys, PChart *chart) static PBool p_abf_matrix_invert(PAbfSystem *sys, PChart *chart) { PFace *f; + PEdge *e; int i, j, ninterior = sys->ninterior, nvar = 2*sys->ninterior; PBool success; @@ -2408,6 +2409,15 @@ static PBool p_abf_matrix_invert(PAbfSystem *sys, PChart *chart) dalpha = (sys->bAlpha[e3->u.id] - dlambda1); sys->alpha[e3->u.id] += dalpha/sys->weight[e3->u.id] - pre[2]; + + /* clamp */ + e = f->edge; + do { + if (sys->alpha[e->u.id] > M_PI) + sys->alpha[e->u.id] = M_PI; + else if (sys->alpha[e->u.id] < 0.0f) + sys->alpha[e->u.id] = 0.0f; + } while (e != f->edge); } for (i = 0; i < ninterior; i++) { |