[Bf-extensions-cvs] [1881beb8] master: Cleanup: use unix line endings

Campbell Barton noreply at git.blender.org
Thu Sep 5 07:19:01 CEST 2019


Commit: 1881beb8b12028a37ef34e7e746555c3707a9150
Author: Campbell Barton
Date:   Thu Sep 5 15:18:40 2019 +1000
Branches: master
https://developer.blender.org/rBA1881beb8b12028a37ef34e7e746555c3707a9150

Cleanup: use unix line endings

===================================================================

M	curve_assign_shapekey.py

===================================================================

diff --git a/curve_assign_shapekey.py b/curve_assign_shapekey.py
index 3fe88475..864b9643 100644
--- a/curve_assign_shapekey.py
+++ b/curve_assign_shapekey.py
@@ -1,1103 +1,1103 @@
-#
-#
-# This Blender add-on assigns one or more Bezier Curves as shape keys to another
-# Bezier Curve
-#
-# Supported Blender Version: 2.80 Beta
-#
-# Copyright (C) 2019  Shrinivas Kulkarni
-#
-# License: MIT (https://github.com/Shriinivas/assignshapekey/blob/master/LICENSE)
-#
-
-import bpy, bmesh, bgl, gpu
-from gpu_extras.batch import batch_for_shader
-from bpy.props import BoolProperty, EnumProperty
-from collections import OrderedDict
-from mathutils import Vector
-from math import sqrt, floor
-from functools import cmp_to_key
-
-
-bl_info = {
-    "name": "Assign Shape Keys",
-    "author": "Shrinivas Kulkarni",
-    "version": (1, 0, 0),
-    "location": "Properties > Active Tool and Workspace Settings > Assign Shape Keys",
-    "description": "Assigns one or more Bezier curves as shape keys to another Bezier curve",
-    "category": "Object",
-    "wiki_url": "https://github.com/Shriinivas/assignshapekey/blob/master/README.md",
-    "blender": (2, 80, 0),
-}
-
-matchList = [('vCnt', 'Vertex Count', 'Match by vertex count'),
-            ('bbArea', 'Area', 'Match by surface area of the bounding box'), \
-            ('bbHeight', 'Height', 'Match by bounding box height'), \
-            ('bbWidth', 'Width', 'Match by bounding box width'),
-            ('bbDepth', 'Depth', 'Match by bounding box depth'),
-            ('minX', 'Min X', 'Match by  bounding bon Min X'),
-            ('maxX', 'Max X', 'Match by  bounding bon Max X'),
-            ('minY', 'Min Y', 'Match by  bounding bon Min Y'),
-            ('maxY', 'Max Y', 'Match by  bounding bon Max Y'),
-            ('minZ', 'Min Z', 'Match by  bounding bon Min Z'),
-            ('maxZ', 'Max Z', 'Match by  bounding bon Max Z')]
-
-DEF_ERR_MARGIN = 0.0001
-
-def isBezier(obj):
-    return obj.type == 'CURVE' and len(obj.data.splines) > 0 \
-        and obj.data.splines[0].type == 'BEZIER'
-
-#Avoid errors due to floating point conversions/comparisons
-#TODO: return -1, 0, 1
-def floatCmpWithMargin(float1, float2, margin = DEF_ERR_MARGIN):
-    return abs(float1 - float2) < margin
-
-def vectCmpWithMargin(v1, v2, margin = DEF_ERR_MARGIN):
-    return all(floatCmpWithMargin(v1[i], v2[i], margin) for i in range(0, len(v1)))
-
-class Segment():
-
-    #pts[0] - start, pts[1] - ctrl1, pts[2] - ctrl2, , pts[3] - end
-    def pointAtT(pts, t):
-        return pts[0] + t * (3 * (pts[1] - pts[0]) +
-            t* (3 * (pts[0] + pts[2]) - 6 * pts[1] +
-                t * (-pts[0] + 3 * (pts[1] - pts[2]) + pts[3])))
-
-    def getSegLenRecurs(pts, start, end, t1 = 0, t2 = 1, error = DEF_ERR_MARGIN):
-        t1_5 = (t1 + t2)/2
-        mid = Segment.pointAtT(pts, t1_5)
-        l = (end - start).length
-        l2 = (mid - start).length + (end - mid).length
-        if (l2 - l > error):
-            return (Segment.getSegLenRecurs(pts, start, mid, t1, t1_5, error) +
-                    Segment.getSegLenRecurs(pts, mid, end, t1_5, t2, error))
-        return l2
-
-    def __init__(self, start, ctrl1, ctrl2, end):
-        self.start = start
-        self.ctrl1 = ctrl1
-        self.ctrl2 = ctrl2
-        self.end = end
-        pts = [start, ctrl1, ctrl2, end]
-        self.length = Segment.getSegLenRecurs(pts, start, end)
-
-    #see https://stackoverflow.com/questions/878862/drawing-part-of-a-b%c3%a9zier-curve-by-reusing-a-basic-b%c3%a9zier-curve-function/879213#879213
-    def partialSeg(self, t0, t1):
-        pts = [self.start, self.ctrl1, self.ctrl2, self.end]
-
-        if(t0 > t1):
-            tt = t1
-            t1 = t0
-            t0 = tt
-
-        #Let's make at least the line segments of predictable length :)
-        if(pts[0] == pts[1] and pts[2] == pts[3]):
-            pt0 = Vector([(1 - t0) * pts[0][i] + t0 * pts[2][i] for i in range(0, 3)])
-            pt1 = Vector([(1 - t1) * pts[0][i] + t1 * pts[2][i] for i in range(0, 3)])
-            return Segment(pt0, pt0, pt1, pt1)
-
-        u0 = 1.0 - t0
-        u1 = 1.0 - t1
-
-        qa = [pts[0][i]*u0*u0 + pts[1][i]*2*t0*u0 + pts[2][i]*t0*t0 for i in range(0, 3)]
-        qb = [pts[0][i]*u1*u1 + pts[1][i]*2*t1*u1 + pts[2][i]*t1*t1 for i in range(0, 3)]
-        qc = [pts[1][i]*u0*u0 + pts[2][i]*2*t0*u0 + pts[3][i]*t0*t0 for i in range(0, 3)]
-        qd = [pts[1][i]*u1*u1 + pts[2][i]*2*t1*u1 + pts[3][i]*t1*t1 for i in range(0, 3)]
-
-        pta = Vector([qa[i]*u0 + qc[i]*t0 for i in range(0, 3)])
-        ptb = Vector([qa[i]*u1 + qc[i]*t1 for i in range(0, 3)])
-        ptc = Vector([qb[i]*u0 + qd[i]*t0 for i in range(0, 3)])
-        ptd = Vector([qb[i]*u1 + qd[i]*t1 for i in range(0, 3)])
-
-        return Segment(pta, ptb, ptc, ptd)
-
-    #see https://stackoverflow.com/questions/24809978/calculating-the-bounding-box-of-cubic-bezier-curve
-    #(3 D - 9 C + 9 B - 3 A) t^2 + (6 A - 12 B + 6 C) t + 3 (B - A)
-    #pts[0] - start, pts[1] - ctrl1, pts[2] - ctrl2, , pts[3] - end
-    #TODO: Return Vectors to make world space calculations consistent
-    def bbox(self, mw = None):
-        def evalBez(AA, BB, CC, DD, t):
-            return AA * (1 - t) * (1 - t) * (1 - t) + \
-                    3 * BB * t * (1 - t) * (1 - t) + \
-                        3 * CC * t * t * (1 - t) + \
-                            DD * t * t * t
-
-        A = self.start
-        B = self.ctrl1
-        C = self.ctrl2
-        D = self.end
-
-        if(mw != None):
-            A = mw @ A
-            B = mw @ B
-            C = mw @ C
-            D = mw @ D
-
-        MINXYZ = [min([A[i], D[i]]) for i in range(0, 3)]
-        MAXXYZ = [max([A[i], D[i]]) for i in range(0, 3)]
-        leftBotBack_rgtTopFront = [MINXYZ, MAXXYZ]
-
-        a = [3 * D[i] - 9 * C[i] + 9 * B[i] - 3 * A[i] for i in range(0, 3)]
-        b = [6 * A[i] - 12 * B[i] + 6 * C[i] for i in range(0, 3)]
-        c = [3 * (B[i] - A[i]) for i in range(0, 3)]
-
-        solnsxyz = []
-        for i in range(0, 3):
-            solns = []
-            if(a[i] == 0):
-                if(b[i] == 0):
-                    solns.append(0)#Independent of t so lets take the starting pt
-                else:
-                    solns.append(c[i] / b[i])
-            else:
-                rootFact = b[i] * b[i] - 4 * a[i] * c[i]
-                if(rootFact >=0 ):
-                    #Two solutions with + and - sqrt
-                    solns.append((-b[i] + sqrt(rootFact)) / (2 * a[i]))
-                    solns.append((-b[i] - sqrt(rootFact)) / (2 * a[i]))
-            solnsxyz.append(solns)
-
-        for i, soln in enumerate(solnsxyz):
-            for j, t in enumerate(soln):
-                if(t < 1 and t > 0):
-                    co = evalBez(A[i], B[i], C[i], D[i], t)
-                    if(co < leftBotBack_rgtTopFront[0][i]):
-                        leftBotBack_rgtTopFront[0][i] = co
-                    if(co > leftBotBack_rgtTopFront[1][i]):
-                        leftBotBack_rgtTopFront[1][i] = co
-
-        return leftBotBack_rgtTopFront
-
-
-class Part():
-    def __init__(self, parent, segs, isClosed):
-        self.parent = parent
-        self.segs = segs
-
-        #use_cyclic_u
-        self.isClosed = isClosed
-
-        #Indicates if this should be closed based on its counterparts in other paths
-        self.toClose = isClosed
-
-        self.length = sum(seg.length for seg in self.segs)
-        self.bbox = None
-        self.bboxWorldSpace = None
-
-    def getSeg(self, idx):
-        return self.segs[idx]
-
-    def getSegs(self):
-        return self.segs
-
-    def getSegsCopy(self, start, end):
-        if(start == None):
-            start = 0
-        if(end == None):
-            end = len(self.segs)
-        return self.segs[start:end]
-
-    def getBBox(self, worldSpace):
-        #Avoid frequent calculations, as this will be called in compare method
-        if(not worldSpace and self.bbox != None):
-            return self.bbox
-
-        if(worldSpace and self.bboxWorldSpace != None):
-            return self.bboxWorldSpace
-
-        leftBotBack_rgtTopFront = [[None]*3,[None]*3]
-
-        for seg in self.segs:
-
-            if(worldSpace):
-                bb = seg.bbox(self.parent.curve.matrix_world)
-            else:
-                bb = seg.bbox()
-
-            for i in range(0, 3):
-                if (leftBotBack_rgtTopFront[0][i] == None or \
-                    bb[0][i] < leftBotBack_rgtTopFront[0][i]):
-                    leftBotBack_rgtTopFront[0][i] = bb[0][i]
-
-            for i in range(0, 3):
-                if (leftBotBack_rgtTopFront[1][i] == None or \
-                    bb[1][i] > leftBotBack_rgtTopFront[1][i]):
-                    leftBotBack_rgtTopFront[1][i] = bb[1][i]
-
-        if(worldSpace):
-            self.bboxWorldSpace = leftBotBack_rgtTopFront
-        else:
-            self.bbox = leftBotBack_rgtTopFront
-
-        return leftBotBack_rgtTopFront
-
-    #private
-    def getBBDiff(self, axisIdx, worldSpace):
-        obj = self.parent.curve
-        bbox = self.getBBox(worldSpace)
-        diff = abs(bbox[1][axisIdx] - bbox[0][axisIdx])
-        return diff
-
-    def getBBWidth(self, worldSpace):
-        return self.getBBDiff(0, worldSpace)
-
-    def getBBHeight(self, worldSpace):
-        return self.getBBDiff(1, worldSpace)
-
-    def getBBDepth(self, worldSpace):
-        return self.getBBDiff(2, worldSpace)
-
-    def bboxSurfaceArea(self, worldSpace):
-        leftBotBack_rgtTopFront = self.getBBox(worldSpace)
-        w = abs( leftBotBack_rgtTopFront[1][0] - leftBotBack_rgtTopFront[0][0] )
-        l = abs( leftBotBack_rgtTopFront[1][1] - leftBotBack_rgtTopFront[0][1] )
-        d = abs( leftBotBack_rgtTopFront[1][2] - leftBotBack_rgtTopFront[0][2] )
-
-        return 2 * (w * l + w * d + l * d)
-
-    def getSegCnt(self):
-        return len(self.segs)
-
-    def getBezierPtsInfo(self):
-        prevSeg = None
-        bezierPtsInfo = []
-
-        for j, seg in enumerate(self.getSegs()):
-
-            pt = seg.start
-            handleRight = seg.ctrl1
-
-            if(j == 0):
-                if(self.toCl

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list