[Bf-extensions-cvs] [9aade9d9] master: curve_assign_shapekey: 1) moved UI and registration to bottom of the script 2) trimmed trailing whitespace 3) 2 lines between classes: T62799

Shrinivas Kulkarni noreply at git.blender.org
Thu Jun 20 11:32:21 CEST 2019


Commit: 9aade9d926fc88b50a93e396ef3d77a7a08116d7
Author: Shrinivas Kulkarni
Date:   Thu Jun 20 14:58:49 2019 +0530
Branches: master
https://developer.blender.org/rBA9aade9d926fc88b50a93e396ef3d77a7a08116d7

curve_assign_shapekey: 1) moved UI and registration to bottom of the script 2) trimmed trailing whitespace 3) 2 lines between classes: T62799

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

M	curve_assign_shapekey.py

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

diff --git a/curve_assign_shapekey.py b/curve_assign_shapekey.py
index 287873a0..58335d0f 100644
--- a/curve_assign_shapekey.py
+++ b/curve_assign_shapekey.py
@@ -1,1104 +1,1110 @@
-#
-#
-# 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
-
-#################### UI and Registration Stuff ####################
-
-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",
-    "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 markVertHandler(self, context):
-    if(self.markVertex):
-        bpy.ops.wm.mark_vertex()
-    
-class AssignShapeKeyParams(bpy.types.PropertyGroup):
-    
-    removeOriginal : BoolProperty(name = "Remove Shape Key Objects", \
-        description = "Remove shape key objects after assigning to target", \
-            default = True)
-    
-    space : EnumProperty(name = "Space", \
-        items = [('worldspace', 'World Space', 'worldspace'), 
-                 ('localspace', 'Local Space', 'localspace')], \
-        description = 'Space that shape keys are evluated in')
-
-    alignList : EnumProperty(name="Vertex Alignment", items = \
-        [("-None-", 'Manual Alignment', "Align curve segments based on starting vertex"), \
-         ('vertCo', 'Vertex Coordinates', 'Align curve segments based on vertex coordinates')], \
-        description = 'Start aligning the vertices of target and shape keys from', 
-        default = '-None-')
-    
-    alignVal1 : EnumProperty(name="Value 1", 
-        items = matchList, default = 'minX', description='First align criterion')
-
-    alignVal2 : EnumProperty(name="Value 2", 
-        items = matchList, default = 'maxY', description='Second align criterion')
-
-    alignVal3 : EnumProperty(name="Value 3", 
-        items = matchList, default = 'minZ', description='Third align criterion')
-    
-    matchParts : EnumProperty(name="Match Parts", items = \
-        [("-None-", 'None', "Don't match parts"), \
-        ('default', 'Default', 'Use part (spline) order as in curve'), \
-        ('custom', 'Custom', 'Use one of the custom criteria for part matching')], \
-        description='Match disconnected parts', default = 'default')
-        
-    matchCri1 : EnumProperty(name="Value 1", 
-        items = matchList, default = 'minX', description='First match criterion')
-
-    matchCri2 : EnumProperty(name="Value 2", 
-        items = matchList, default = 'maxY', description='Second match criterion')
-
-    matchCri3 : EnumProperty(name="Value 3", 
-        items = matchList, default = 'minZ', description='Third match criterion')
-        
-    markVertex : BoolProperty(name="Mark Starting Vertices", \
-        description='Mark first vertices in all splines of selected curves', \
-            default = False, update = markVertHandler)
-        
-class AssignShapeKeysPanel(bpy.types.Panel):
-    
-    bl_label = "Assign Shape Keys"
-    bl_idname = "CURVE_PT_assign_shape_keys"
-    bl_space_type = 'VIEW_3D'
-    bl_region_type = 'UI'
-    bl_category = "Tool"
-        
-    @classmethod
-    def poll(cls, context):
-        return context.mode in {'OBJECT', 'EDIT_CURVE'} 
-        
-    def draw(self, context):
-        
-        layout = self.layout
-        col = layout.column()
-        params = context.window_manager.AssignShapeKeyParams
-        
-        if(context.mode  == 'OBJECT'):
-            row = col.row()
-            row.prop(params, "removeOriginal")
-
-            row = col.row()
-            row.prop(params, "space")
-
-            row = col.row()
-            row.prop(params, "alignList")
-            
-            if(params.alignList == 'vertCo'):
-                row = col.row()
-                row.prop(params, "alignVal1")
-                row.prop(params, "alignVal2")
-                row.prop(params, "alignVal3")
-            
-            row = col.row()
-            row.prop(params, "matchParts")
-            
-            if(params.matchParts == 'custom'):
-                row = col.row()
-                row.prop(params, "matchCri1")
-                row.prop(params, "matchCri2")
-                row.prop(params, "matchCri3")
-            
-            row = col.row()
-            row.operator("object.assign_shape_keys")
-        else:
-            col.prop(params, "markVertex", \
-                toggle = True)
-
-class AssignShapeKeysOp(bpy.types.Operator):
-
-    bl_idname = "object.assign_shape_keys"
-    bl_label = "Assign Shape Keys"
-    bl_options = {'REGISTER', 'UNDO'}
-
-    def execute(self, context):
-        params = context.window_manager.AssignShapeKeyParams
-        removeOriginal = params.removeOriginal
-        space = params.space
-
-        matchParts = params.matchParts
-        matchCri1 = params.matchCri1
-        matchCri2 = params.matchCri2
-        matchCri3 = params.matchCri3
-
-        alignBy = params.alignList
-        alignVal1 = params.alignVal1
-        alignVal2 = params.alignVal2
-        alignVal3 = params.alignVal3
-
-        createdObjsMap = main(removeOriginal, space, \
-                            matchParts, [matchCri1, matchCri2, matchCri3], \
-                                alignBy, [alignVal1, alignVal2, alignVal3])
-
-        return {'FINISHED'}
-
-class MarkerController:
-    drawHandlerRef = None
-    defPointSize = 6
-    ptColor = (0, .8, .8, 1)
-    
-    def createSMMap(self, context):
-        objs = context.selected_objects
-        smMap = {}
-        for curve in objs:
-            if(not isBezier(curve)):
-                continue
-                
-            smMap[curve.name] = {}
-            mw = curve.matrix_world
-            for splineIdx, spline in enumerate(curve.data.splines):
-                if(not spline.use_cyclic_u):
-                    continue
-                
-                #initialize to the curr start vert co and idx
-                smMap[curve.name][splineIdx] = \
-                    [mw @ curve.data.splines[splineIdx].bezier_points[0].co, 0] 
-                
-                for pt in spline.bezier_points:
-                    pt.select_control_point = False
-                    
-            if(len(smMap[curve.name]) == 0):
-                del smMap[curve.name]
-                
-        return smMap
-        
-    def createBatch(self, context):
-        positions = [s[0] for cn in self.smMap.values() for s in cn.values()]
-        colors = [MarkerController.ptColor for i in range(0, len(positions))]
-
-        self.batch = batch_for_shader(self.shader, \
-            "POINTS", {"pos": positions, "color": colors})
-        
-        if context.area:    
-            context.area.tag_redraw()
-        
-    def drawHandler(self):
-        bgl.glPointSize(MarkerController.defPointSize)
-        self.batch.draw(self.shader)
-    
-    def removeMarkers(self, context):
-        if(MarkerController.drawHandlerRef != None):
-            bpy.types.SpaceView3D.draw_handler_remove(MarkerController.drawHandlerRef, \
-                "WINDOW")
-                
-            if(context.area and hasattr(context.space_data, 'region_3d')):
-                context.area.tag_redraw()
-                
-            MarkerController.drawHandlerRef = None
-            
-        self.deselectAll()
-        
-    def __init__(self, context):
-        self.smMap = self.createSMMap(context)           
-        self.shader = gpu.shader.from_builtin('3D_FLAT_COLOR')
-        self.shader.bind()
-        
-        MarkerController.drawHandlerRef = \
-            bpy.types.SpaceView3D.draw_handler_add(self.drawHandler, \
-                (), "WINDOW", "POST_VIEW")
-                
-        self.createBatch(context)
-    
-    def saveStartVerts(self):
-        for curveName in self.smMap.keys():
-            curve = bpy.data.objects[curveName]
-            splines = curve.data.splines
-            spMap = self.smMap[curveName]
-            
-            for splineIdx in spMap.keys():
-                markerInfo = spMap[splineIdx]
-                if(markerInfo[1] != 0):
-                    pts = splines[splineIdx].bezier_points
-                    loc, idx = markerInfo[0], markerInfo[1]                    
-                    cnt = len(pts)
-                    
-                    ptCopy = [[p.co.copy(), p.handle_right.copy(), \
-                        p.handle_left.copy(), p.handle_right_type, \
-                            p.handle_left_type] for p in pts]
-
-                    for i, pt in enumerate(pts):
-                        srcIdx = (idx + i) % cnt
-                        p = ptCopy[srcIdx]
-                        
-                        #Must set the types first
-                        pt.handle_right_type = p[3]
-                        pt.handle_left_type = p[4]
-                        pt.co = p[0]
-                    

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list