diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2010-07-05 03:08:37 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2010-07-05 03:08:37 +0400 |
commit | 38b7cbbd004ef7268a1c39114d8503906361c1f7 (patch) | |
tree | 1312b72e85499323e130b9e455f39c2b9833b1cb /source/blender/freestyle/intern/stroke/StrokeRep.cpp | |
parent | 4dd23a381a8a7c65732e12025e2f0503595e2956 (diff) |
Bug fixes from Stéphane Grabli, one of the coauthors of the
original Freestyle:
* Fix for making the stroke construction more robust to nearly
overlapping vertices.
* Fix for a bug in the computation of the occluded surfaces.
These changes make the visibility computation more robust and
the line quality generally higher.
Diffstat (limited to 'source/blender/freestyle/intern/stroke/StrokeRep.cpp')
-rwxr-xr-x | source/blender/freestyle/intern/stroke/StrokeRep.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/source/blender/freestyle/intern/stroke/StrokeRep.cpp b/source/blender/freestyle/intern/stroke/StrokeRep.cpp index fbe1273bac0..6ae15c71833 100755 --- a/source/blender/freestyle/intern/stroke/StrokeRep.cpp +++ b/source/blender/freestyle/intern/stroke/StrokeRep.cpp @@ -254,7 +254,14 @@ Strip::createStrip (const vector<StrokeVertex*>& iStrokeVertices) else _vertices.push_back(new StrokeVertexRep(p-thickness[0]*stripDir)); ++i; - + + if((stripDir+stripDirPrev).norm() <= 1.e-06){ + // the strip is most likely doing a U-turn, we can't compute the average vector. + // We just continue and hope it's ok + vPrev = v; + continue; + } + // if the angle is obtuse, we simply average the directions to avoid the singularity stripDir=stripDir+stripDirPrev; if ((dirNorm<ZERO) || (dirPrevNorm<ZERO) || (stripDir.norm() < ZERO)) { |