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/view_map | |
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/view_map')
-rwxr-xr-x | source/blender/freestyle/intern/view_map/Functions0D.cpp | 21 | ||||
-rwxr-xr-x | source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp | 6 |
2 files changed, 11 insertions, 16 deletions
diff --git a/source/blender/freestyle/intern/view_map/Functions0D.cpp b/source/blender/freestyle/intern/view_map/Functions0D.cpp index b28ac575d00..dc38ca34184 100755 --- a/source/blender/freestyle/intern/view_map/Functions0D.cpp +++ b/source/blender/freestyle/intern/view_map/Functions0D.cpp @@ -38,16 +38,9 @@ namespace Functions0D { Interface0DIterator prev = it, next = it; ++next; int count = 1; - while((!prev.isBegin()) && (count < 3)) - { - --prev; - ++count; - } - while((!next.isEnd()) && (count < 3)) - { - ++next; - ++count; - } + if (!it.isBegin() && !next.isEnd()) { + count = 3; + } if(count < 3) { // if we only have 2 vertices @@ -296,9 +289,13 @@ namespace Functions0D { int MaterialF0D::operator()(Interface0DIterator& iter) { FEdge *fe1, *fe2; getFEdges(iter,fe1,fe2); - - if(fe1 == 0) + + if(fe1 == 0) { + // DEBUG getFEdges(iter, fe1, fe2); + return 1; + } + if(fe1->isSmooth()) result = ((FEdgeSmooth*)fe1)->frs_material(); else diff --git a/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp b/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp index b010895a621..dbd046f050a 100755 --- a/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp +++ b/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp @@ -241,8 +241,7 @@ void ViewMapBuilder::ComputeRayCastingVisibility(ViewMap *ioViewMap, Grid* iGrid maxIndex = tmpQI; } } - else - FindOccludee(fe, iGrid, epsilon, &aFace, timestamp++); + FindOccludee(fe, iGrid, epsilon, &aFace, timestamp++); if(aFace) { fe->setaFace(*aFace); @@ -361,8 +360,7 @@ void ViewMapBuilder::ComputeFastRayCastingVisibility(ViewMap *ioViewMap, Grid* i maxIndex = tmpQI; } } - else - FindOccludee(fe, iGrid, epsilon, &aFace, timestamp++); + FindOccludee(fe, iGrid, epsilon, &aFace, timestamp++); if(aFace) { |