deformer_socket_templates.py 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. from .mantis_dataclasses import MantisSocketTemplate as ST
  2. from dataclasses import replace
  3. from .misc_nodes_socket_templates import SplineIndexTemplate
  4. Target = ST(name="Target", bl_idname='xFormSocket',
  5. is_input=True,
  6. )
  7. DeformArmatureSockets = [
  8. ArmatureObject := replace(Target, name="Armature Object"),
  9. BlendVertexGroup := ST(name="Blend Vertex Group", bl_idname="StringSocket", is_input=True,
  10. blender_property='vertex_group'),
  11. InvertBlendVertexGroup := ST(name="Invert Vertex Group", bl_idname="BooleanSocket", is_input=True,
  12. blender_property='invert_vertex_group'),
  13. # QuatBlendVertexGroup := ST(name="Preserve Volume Vertex Group", bl_idname="StringSocket", is_input=True)
  14. # ^ TODO figure out the right UX for automatic dual-quat blending
  15. PreserveVolume := ST(name="Preserve Volume", bl_idname="BooleanSocket", is_input=True,
  16. blender_property='use_deform_preserve_volume'),
  17. # ^ TODO: make the above controlled by a vertex group instead.
  18. # might just set this below to auto (I don't evern understand it)
  19. UseMultiModifier := ST(name="Use Multi Modifier", bl_idname="BooleanSocket", is_input=True,
  20. blender_property='use_multi_modifier'),
  21. UseEnvelopes := ST(name="Use Envelopes", bl_idname="BooleanSocket", is_input=True, default_value=False,
  22. blender_property='use_bone_envelopes'),
  23. UseVertexGroups := ST(name="Use Vertex Groups", bl_idname="BooleanSocket", is_input=True, default_value=True,
  24. blender_property='use_vertex_groups'),
  25. DeformerInput := ST(name="Deformer", bl_idname="DeformerSocket", is_input=True, traverse_target='Deformer'),
  26. CopySkinWeightsFrom := ST(name="Copy Skin Weights From", bl_idname="xFormSocket", is_input=True, hide=True),
  27. SkinningMethod := ST(name="Skinning Method", bl_idname="EnumSkinning", is_input=True),
  28. DeformerOutput := ST(name="Deformer", bl_idname="DeformerSocket", is_input=False, traverse_target='Deformer'),
  29. ]
  30. HookSockets= [
  31. DeformerInput,
  32. HookTarget := replace(Target, name="Hook Target"),
  33. replace(SplineIndexTemplate,),
  34. CurvePointIndex := ST(name="Point Index", bl_idname='UnsignedIntSocket',
  35. is_input=True, default_value=0 ),
  36. Influence := ST(name="Influence", bl_idname='FloatFactorSocket',
  37. is_input=True, default_value=1.0, blender_property='strength'),
  38. HookDrivesRadius := ST(name="Affect Curve Radius", bl_idname='BooleanSocket',
  39. is_input=True, default_value=True,),
  40. HookAutoBezier := ST(name="Auto-Bezier", bl_idname='BooleanSocket',
  41. is_input=True, default_value=True,),
  42. DeformerOutput,
  43. ]
  44. #NOTE that this guy is a dynamic node so this is only its initial state.
  45. MorphTargetDeformSockets = [
  46. DeformerInput,
  47. UseShapeKey := ST(name="Use Shape Key", bl_idname="BooleanSocket", is_input=True),
  48. UseOffset := ST(name="Use Offset", bl_idname="BooleanSocket", is_input=True, default_value=True),
  49. Extend := ST(name="", bl_idname="WildcardSocket", is_input=True, identifier="__extend__", ui_only=True),
  50. DeformerOutput,
  51. ]
  52. MorphTargetSockets = [
  53. RelativeTo := ST(name="Relative to", bl_idname="xFormSocket", is_input=True),
  54. Object := ST(name="Object", bl_idname="xFormSocket", is_input=True),
  55. VertexGroup := ST(name="Vertex Group", bl_idname="StringSocket", is_input=True),
  56. MorphTarget := ST(name="Morph Target", bl_idname="MorphTargetSocket", is_input=False),
  57. ]
  58. SurfaceDeformSockets= [
  59. DeformerInput,
  60. SurfaceDeformTarget := replace(Target, name="Target",),
  61. Falloff := ST(name="Falloff", bl_idname='FloatSocket',
  62. is_input=True, default_value=4.0, blender_property="falloff", ),
  63. Strength := replace(Influence, name="Strength", bl_idname='FloatSocket',
  64. is_input=True, default_value=1.0, blender_property='strength'),
  65. SparseBind := ST(name="Sparse Bind", bl_idname='BooleanSocket',
  66. is_input=True, default_value=False, blender_property="use_sparse_bind"),
  67. VertexGroup := ST(name="Vertex Group", bl_idname='StringSocket',
  68. is_input=True, default_value="", blender_property="vertex_group"),
  69. InvertVertexGroup := ST(name="Invert Vertex Group", bl_idname='BooleanSocket',
  70. is_input=True, default_value=False, blender_property="invert_vertex_group"),
  71. EnableViewportTemplate := ST(
  72. name="Enable in Viewport", is_input=True, bl_idname='EnableSocket',
  73. default_value=True, blender_property='show_viewport'),
  74. EnableRenderTemplate := ST(
  75. name="Enable in Render", is_input=True, bl_idname='BooleanSocket',
  76. default_value=True, blender_property='show_render'),
  77. DeformerOutput,
  78. ]
  79. MeshDeformSockets= [
  80. DeformerInput := ST(name="Deformer", bl_idname='DeformerSocket',
  81. is_input=True,),
  82. MeshDeformTarget := replace(Target, name="Object",),
  83. MeshDeformPrecision := ST(name="Precision", bl_idname='UnsignedIntSocket',
  84. is_input=True, default_value=4, blender_property="precision"),
  85. DynamicBind := ST(name="Dynamic Bind", bl_idname='BooleanSocket',
  86. is_input=True, default_value=False, blender_property="use_dynamic_bind"),
  87. VertexGroup,
  88. InvertVertexGroup,
  89. EnableViewportTemplate,
  90. EnableRenderTemplate,
  91. DeformerOutput,
  92. ]
  93. LatticeDeformSockets = [
  94. DeformerInput := ST(name="Deformer", bl_idname='DeformerSocket',
  95. is_input=True,),
  96. LatticeDeformTarget := replace(Target, name="Object",),
  97. Strength := replace(Strength, bl_idname='FloatFactorSocket',),
  98. VertexGroup,
  99. InvertVertexGroup,
  100. EnableViewportTemplate,
  101. EnableRenderTemplate,
  102. DeformerOutput,
  103. ]
  104. SmoothDeformSockets = [
  105. DeformerInput,
  106. Factor := replace(Influence, name="Factor", bl_idname='FloatSocket',
  107. default_value=0.5, blender_property='factor'),
  108. iterations := ST(name='Iterations', bl_idname="UnsignedIntSocket",
  109. is_input=True, default_value=4, blender_property='iterations'),
  110. SmoothType :=ST(name="Smoothing Type", bl_idname="EnumCorrectiveSmoothTypeSocket",
  111. is_input=True, blender_property="smooth_type" ),
  112. PinBoundary := ST(name="Pin Boundary", bl_idname="BooleanSocket",
  113. is_input=True, default_value=False, blender_property="use_pin_boundary"),
  114. OnlySmooth := ST(name="Use Corrective Smooth", bl_idname="InvertedBooleanSocket",
  115. is_input=True, default_value=True, blender_property="use_only_smooth"),
  116. DeltaMushScale := ST(name="Corrective Smooth Scale", bl_idname="FloatSocket",
  117. is_input=True, default_value=1.0, blender_property="scale", category='corrective_smooth' ),
  118. VertexGroup,
  119. InvertVertexGroup,
  120. EnableViewportTemplate,
  121. EnableRenderTemplate,
  122. DeformerOutput,
  123. ]