浏览代码

Update Sockets for Deformers

 - Add length-weight option to Smooth deformer
 - more consistent socket order for the new Deformers
Joseph Brandenburg 4 月之前
父节点
当前提交
1f7289b988
共有 2 个文件被更改,包括 38 次插入13 次删除
  1. 12 12
      deformer_socket_templates.py
  2. 26 1
      socket_definitions.py

+ 12 - 12
deformer_socket_templates.py

@@ -34,12 +34,12 @@ SurfaceDeformSockets= [
         is_input=True, default_value=4.0, blender_property="falloff", ),
     Strength := replace(Influence, name="Strength", bl_idname='FloatSocket',
         is_input=True, default_value=1.0, blender_property='strength'),
+    SparseBind := SockTemplate(name="Sparse Bind", bl_idname='BooleanSocket',
+        is_input=True, default_value=False, blender_property="use_sparse_bind"),
     VertexGroup := SockTemplate(name="Vertex Group", bl_idname='StringSocket',
         is_input=True, default_value="", blender_property="vertex_group"),
     InvertVertexGroup := SockTemplate(name="Invert Vertex Group", bl_idname='BooleanSocket',
         is_input=True, default_value=False, blender_property="invert_vertex_group"),
-    SparseBind := SockTemplate(name="Sparse Bind", bl_idname='BooleanSocket',
-        is_input=True, default_value=False, blender_property="use_sparse_bind"),
     EnableViewportTemplate := SockTemplate(
         name="Enable in Viewport", is_input=True,  bl_idname='EnableSocket',
         default_value=True, blender_property='show_viewport'),
@@ -53,12 +53,12 @@ MeshDeformSockets= [
     DeformerInput := SockTemplate(name="Deformer", bl_idname='DeformerSocket',
         is_input=True,),
     MeshDeformTarget := replace(Target, name="Object",),
-    VertexGroup,
-    InvertVertexGroup,
     MeshDeformPrecision := SockTemplate(name="Precision", bl_idname='UnsignedIntSocket',
         is_input=True, default_value=4, blender_property="precision"),
     DynamicBind := SockTemplate(name="Dynamic Bind", bl_idname='BooleanSocket',
         is_input=True, default_value=False, blender_property="use_dynamic_bind"),
+    VertexGroup,
+    InvertVertexGroup,
     EnableViewportTemplate,
     EnableRenderTemplate,
     DeformerOutput, 
@@ -68,9 +68,9 @@ LatticeDeformSockets = [
     DeformerInput := SockTemplate(name="Deformer", bl_idname='DeformerSocket',
         is_input=True,),
     LatticeDeformTarget := replace(Target, name="Object",),
+    Strength := replace(Strength, bl_idname='FloatFactorSocket',),
     VertexGroup,
     InvertVertexGroup,
-    Strength := replace(Strength, bl_idname='FloatFactorSocket',),
     EnableViewportTemplate,
     EnableRenderTemplate,
     DeformerOutput,
@@ -79,17 +79,17 @@ LatticeDeformSockets = [
 SmoothDeformSockets = [
     DeformerInput,
     Factor := replace(Influence, name="Factor", bl_idname='FloatSocket',
-                        default_value=1.0, blender_property='factor'),
+                        default_value=0.5, blender_property='factor'),
     iterations := SockTemplate(name='Iterations', bl_idname="UnsignedIntSocket",
-            is_input=True, default_value=5, blender_property='iterations'),
-    # SmoothType :=SockTemplate(name="Length Weighted Smoothing", bl_idname="BooleanSocket",
-    #         is_input=True, default_value=False, blender_property="smooth_type" ),
+            is_input=True, default_value=4, blender_property='iterations'),
+    SmoothType :=SockTemplate(name="Smoothing Type", bl_idname="EnumCorrectiveSmoothTypeSocket", 
+              is_input=True, blender_property="smooth_type" ),
+    PinBoundary := SockTemplate(name="Pin Boundary", bl_idname="BooleanSocket",
+            is_input=True, default_value=False, blender_property="use_pin_boundary"),
     OnlySmooth := SockTemplate(name="Use Corrective Smooth", bl_idname="InvertedBooleanSocket",
             is_input=True, default_value=True, blender_property="use_only_smooth"),
     DeltaMushScale := SockTemplate(name="Corrective Smooth Scale", bl_idname="FloatSocket",
-            is_input=True, default_value=1.0, blender_property="scale" ),
-    PinBoundary := SockTemplate(name="Pin Boundary", bl_idname="BooleanSocket",
-            is_input=True, default_value=False, blender_property="use_pin_boundary"),
+            is_input=True, default_value=1.0, blender_property="scale", category='corrective_smooth' ),
     VertexGroup,
     InvertVertexGroup,
     EnableViewportTemplate,

+ 26 - 1
socket_definitions.py

@@ -191,6 +191,7 @@ def TellClasses() -> List[MantisSocket]:
              EnumKeyframeInterpolationTypeSocket,
              EnumKeyframeBezierHandleTypeSocket,
              EnumLatticeInterpolationTypeSocket,
+             EnumCorrectiveSmoothTypeSocket,
              eFCrvExtrapolationMode,
              
              # Math
@@ -2354,7 +2355,31 @@ class EnumLatticeInterpolationTypeSocket(MantisSocket):
     def draw_color_simple(self):
         return self.color_simple
 
-
+EnumCorrectiveSmoothType = (('SIMPLE',   'Simple', 'Use the average of adjacent edge-vertices.'),
+                            ('LENGTH_WEIGHTED', "Length Weight", "Use the average of adjacent"
+                                                      "edge-vertices weighted by their length."),)
+class EnumCorrectiveSmoothTypeSocket(MantisSocket):
+    '''Lattice Interpolation Type'''
+    bl_idname = 'EnumCorrectiveSmoothTypeSocket'
+    bl_label = "Lattice Interpolation Type"
+    
+    default_value :bpy.props.EnumProperty(
+        name="",
+        description="Interpolation Type",
+        items=EnumCorrectiveSmoothType,
+        default='SIMPLE',
+        update = update_socket,)
+    
+    color_simple = cString
+    color : bpy.props.FloatVectorProperty(default=cString, size=4)
+    input : bpy.props.BoolProperty(default =False, update = update_socket)
+    def draw(self, context, layout, node, text):
+        ChooseDraw(self, context, layout, node, text)
+    def draw_color(self, context, node):
+        return self.color
+    @classmethod
+    def draw_color_simple(self):
+        return self.color_simple
 
 enumFloatOperations = (('ADD', 'Add', 'Add'),
                       ('SUBTRACT', "Subtract", "Subtract"),