Revision: 53974
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53974
Author:   kjym3
Date:     2013-01-22 01:46:16 +0000 (Tue, 22 Jan 2013)
Log Message:
-----------
Fix for Stroke.Resample(float iSampling) and Stroke.UpdateLength() using
StrokeVertex.point2d() instead of .getPoint().  It is noted that .point2d()
returns a 3-dimensional vector representing a 2D-projected point, with the z
component indicating a normalized depth of the original 3D point, whereas
.getPoint() returns a plain 2-dimensional vector.  This fix should have been
done in revision 48510...

Also made fix for callers of Stroke.Resample() not calling 
stroke.UpdateLength().

Revision Links:
--------------
    
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48510

Modified Paths:
--------------
    
branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py
    
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/BasicStrokeShaders.cpp
    
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/Stroke.cpp

Modified: 
branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py
===================================================================
--- 
branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py  
    2013-01-21 19:33:58 UTC (rev 53973)
+++ 
branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py  
    2013-01-22 01:46:16 UTC (rev 53974)
@@ -577,6 +577,7 @@
                return "pySamplingShader"
        def shade(self, stroke):
                stroke.Resample(float(self._sampling)) 
+               stroke.UpdateLength()
 
 class pyBackboneStretcherShader(StrokeShader):
        def __init__(self, l):

Modified: 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/BasicStrokeShaders.cpp
===================================================================
--- 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/BasicStrokeShaders.cpp
   2013-01-21 19:33:58 UTC (rev 53973)
+++ 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/BasicStrokeShaders.cpp
   2013-01-22 01:46:16 UTC (rev 53974)
@@ -580,6 +580,7 @@
 int SamplingShader::shade(Stroke& stroke) const
 {
        stroke.Resample(_sampling);
+       stroke.UpdateLength();
        return 0;
 }
 

Modified: 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/Stroke.cpp
===================================================================
--- 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/Stroke.cpp   
    2013-01-21 19:33:58 UTC (rev 53973)
+++ 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/Stroke.cpp   
    2013-01-22 01:46:16 UTC (rev 53974)
@@ -605,6 +605,7 @@
        //real curvilinearLength = 0.0f;
        vertex_container newVertices;
        real t = 0.0f;
+       const real limit = 0.99;
        StrokeVertex *newVertex = NULL;
        StrokeInternal::StrokeVertexIterator it = strokeVerticesBegin();
        StrokeInternal::StrokeVertexIterator next = it;
@@ -612,9 +613,9 @@
        StrokeInternal::StrokeVertexIterator itend = strokeVerticesEnd();
        while ((it != itend) && (next != itend)) {
                newVertices.push_back(&(*it));
-               Vec3r a((it)->point2d());
-               Vec3r b((next)->point2d());
-               Vec3r vec_tmp(b - a);
+               Vec2r a((it)->getPoint());
+               Vec2r b((next)->getPoint());
+               Vec2r vec_tmp(b - a);
                real norm_var = vec_tmp.norm();
                if (norm_var <= _sampling) {
                        //curvilinearLength += norm_var;
@@ -625,7 +626,6 @@
 
                //curvilinearLength += _sampling;
                t = _sampling / norm_var;
-               float limit = 0.99f;
                while (t < limit) {
                        newVertex = new StrokeVertex(&(*it), &(*next), t);
                        //newVertex->setCurvilinearAbscissa(curvilinearLength);
@@ -673,17 +673,17 @@
 
 void Stroke::UpdateLength()
 {
-       // recompute various values (length, curvilign abscissa)
+       // recompute curvilinear abscissa and stroke length
        float curvabsc = 0.0f;
        vertex_container::iterator it = _Vertices.begin(), itend = 
_Vertices.end();
        vertex_container::iterator previous = it;
        for (; it != itend; ++it) {
-               curvabsc += ((*it)->point2d() - (*previous)->point2d()).norm();
+               curvabsc += ((*it)->getPoint() - 
(*previous)->getPoint()).norm();
                (*it)->setCurvilinearAbscissa(curvabsc);
                previous = it;
        }
        _Length = curvabsc;
-       for (; it != itend; ++it) {
+       for (it = _Vertices.begin(); it != itend; ++it) {
                (*it)->setStrokeLength(_Length);
        }
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to