diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2014-05-26 05:53:42 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2014-05-26 05:54:25 +0400 |
commit | fce731a1753a9aabec6327e724b53d9939aa3286 (patch) | |
tree | 142ea9afefdc391352aba214f6145edea5dd2625 | |
parent | 6b7bee6cd7f904b55090b0fb39facb97d3c2321e (diff) |
Fix for thinning strokes at intersections between visible and background hidden lines.
This commit is intended to fully fix the problem described in
https://developer.blender.org/T36425#19 (see also the previous commit rB08528f577dcb).
Addition of a small offset (to avoid singularity in stroke rendering due to overlapping vertices)
was not performed for all overlapping vertices.
Removed the StrokeCleaner and related helper functions which were added as a
temporary workaround in rB2a5b6d9c8f16.
-rw-r--r-- | release/scripts/freestyle/modules/parameter_editor.py | 51 | ||||
-rw-r--r-- | source/blender/freestyle/intern/stroke/Operators.cpp | 9 |
2 files changed, 4 insertions, 56 deletions
diff --git a/release/scripts/freestyle/modules/parameter_editor.py b/release/scripts/freestyle/modules/parameter_editor.py index 3304229e5ff..38203e9723b 100644 --- a/release/scripts/freestyle/modules/parameter_editor.py +++ b/release/scripts/freestyle/modules/parameter_editor.py @@ -1122,54 +1122,6 @@ class Seed: _seed = Seed() -### T.K. 07-Aug-2013 Temporary fix for unexpected line gaps - -def iter_three_segments(stroke): - n = stroke.stroke_vertices_size() - if n >= 4: - it1 = stroke.stroke_vertices_begin() - it2 = stroke.stroke_vertices_begin() - it2.increment() - it3 = stroke.stroke_vertices_begin() - it3.increment() - it3.increment() - it4 = stroke.stroke_vertices_begin() - it4.increment() - it4.increment() - it4.increment() - while not it4.is_end: - yield (it1.object, it2.object, it3.object, it4.object) - it1.increment() - it2.increment() - it3.increment() - it4.increment() - - -def is_tvertex(svertex): - return type(svertex.viewvertex) is TVertex - - -class StrokeCleaner(StrokeShader): - def shade(self, stroke): - for sv1, sv2, sv3, sv4 in iter_three_segments(stroke): - seg1 = sv2.point - sv1.point - seg2 = sv3.point - sv2.point - seg3 = sv4.point - sv3.point - if not ((is_tvertex(sv2.first_svertex) and is_tvertex(sv2.second_svertex)) or - (is_tvertex(sv3.first_svertex) and is_tvertex(sv3.second_svertex))): - continue - if seg1.dot(seg2) < 0.0 and seg2.dot(seg3) < 0.0 and seg2.length < 0.01: - #print(sv2.first_svertex.viewvertex) - #print(sv2.second_svertex.viewvertex) - #print(sv3.first_svertex.viewvertex) - #print(sv3.second_svertex.viewvertex) - p2 = mathutils.Vector(sv2.point) - p3 = mathutils.Vector(sv3.point) - sv2.point = p3 - sv3.point = p2 - stroke.update_length() - - integration_types = { 'MEAN': IntegrationType.MEAN, 'MIN': IntegrationType.MIN, @@ -1318,9 +1270,6 @@ def process(layer_name, lineset_name): Operators.sort(bpred) # prepare a list of stroke shaders shaders_list = [] - ### - shaders_list.append(StrokeCleaner()) - ### for m in linestyle.geometry_modifiers: if not m.use: continue diff --git a/source/blender/freestyle/intern/stroke/Operators.cpp b/source/blender/freestyle/intern/stroke/Operators.cpp index 2f05413fcbe..427994f80f1 100644 --- a/source/blender/freestyle/intern/stroke/Operators.cpp +++ b/source/blender/freestyle/intern/stroke/Operators.cpp @@ -1147,17 +1147,16 @@ static Stroke *createStroke(Interface1D& inter) StrokeVertex *sv; std::vector<StrokeVertex *>::iterator it = overlapping_vertices.begin(); if (!reverse) { - for (int n = 1; n < nvert; n++) { + for (int n = 0; n < nvert; n++) { sv = (*it); - sv->setPoint(sv->getPoint() + offset * n); + sv->setPoint(sv->getPoint() + offset * (n + 1)); ++it; } } else { - int last = nvert - 1; - for (int n = 0; n < last; n++) { + for (int n = 0; n < nvert; n++) { sv = (*it); - sv->setPoint(sv->getPoint() + offset * (last - n)); + sv->setPoint(sv->getPoint() + offset * (nvert - n)); ++it; } } |