Revision: 17523
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17523
Author:   eman
Date:     2008-11-20 23:58:27 +0100 (Thu, 20 Nov 2008)

Log Message:
-----------
Fix for broken shading at the 'seams' of cyclic surfaces.
Kindly provided by Laurynas Duburas, thank you.

Vertices at the seams were coincident, forming a zero area tesselation 
triangle. Laurynas added an extra tesselation row for cyclical surfaces 
preventing this.

Modified Paths:
--------------
    branches/nurbs/blender/intern/nurbana/intern/NURBS_Generate.cpp

Modified: branches/nurbs/blender/intern/nurbana/intern/NURBS_Generate.cpp
===================================================================
--- branches/nurbs/blender/intern/nurbana/intern/NURBS_Generate.cpp     
2008-11-20 22:23:01 UTC (rev 17522)
+++ branches/nurbs/blender/intern/nurbana/intern/NURBS_Generate.cpp     
2008-11-20 22:58:27 UTC (rev 17523)
@@ -81,7 +81,8 @@
 
                nbReal endU = (obj -> KnotVector(0)[Unpts + extraPntsU]);
                nbReal startU = (obj -> KnotVector(0)[(OrderU-1)]);
-               nbReal stepU = (endU - startU)/TessU;
+               int extra = CyclicU ? 1 : 0;
+               nbReal stepU = (endU - startU)/(TessU + extra);
                nbReal t = startU;
 
                for(i = 0; i <= TessU; i++) { 
@@ -95,7 +96,8 @@
                        else{
                        endV = (obj -> KnotVector(1)[Vnpts + extraPntsV]);
                        startV = (obj -> KnotVector(1)[(OrderV-1)]);
-                       stepV= (endV - startV)/TessV;
+                       extra = CyclicV ? 1 : 0;
+                       stepV= (endV - startV)/(TessV + extra);
                        tv = startV;
                }
                for(i = 0; i <= TessV; i++) { 
@@ -105,7 +107,8 @@
        } else {
                nbReal endU = (obj -> KnotVector(0)[Unpts + extraPntsU]);
                nbReal startU = (obj -> KnotVector(0)[(OrderU-1)]);
-               nbReal stepU = (endU - startU)/TessU;
+               int extra = CyclicU ? 1 : 0;
+               nbReal stepU = (endU - startU)/(TessU + extra);
                nbReal t = startU;
 
                for(i = 0; i <= TessU; i++) { 
@@ -115,7 +118,8 @@
 
                nbReal endV = (obj -> KnotVector(1)[Vnpts + extraPntsV]);
                nbReal startV = (obj -> KnotVector(1)[(OrderV-1)]);
-               nbReal stepV = (endV - startV)/TessV;
+               extra = CyclicV ? 1 : 0;
+               nbReal stepV = (endV - startV)/(TessV + extra);
                nbReal tv = startV;
 
                for(i = 0; i <= TessV; i++) { 


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to