Add Lattice Magic to Addons #48

Merged
Nick Alberelli merged 36 commits from feature/lattice_magic into main 2023-05-17 20:48:52 +02:00
Showing only changes of commit 70379fe88c - Show all commits

View File

@ -16,7 +16,7 @@
# Add operators to the UI wherever possible. # Add operators to the UI wherever possible.
import bpy import bpy
from bpy.props import FloatProperty, IntVectorProperty, FloatVectorProperty, BoolProperty from bpy.props import FloatProperty, IntVectorProperty, FloatVectorProperty, BoolProperty, PointerProperty, StringProperty
from typing import List from typing import List
from mathutils import Vector from mathutils import Vector
from rna_prop_ui import rna_idprop_ui_create from rna_prop_ui import rna_idprop_ui_create
@ -132,6 +132,17 @@ class TWEAKLAT_OT_Create(bpy.types.Operator):
root.hide_viewport = True root.hide_viewport = True
hook['Root'] = root hook['Root'] = root
# Parent the root
scene = context.scene
matrix_backup = root.matrix_world.copy()
root.parent = scene.tweak_lattice_parent_ob
if root.parent and root.parent.type=='ARMATURE':
bone = root.parent.pose.bones.get(scene.tweak_lattice_parent_bone)
if bone:
root.parent_type = 'BONE'
root.parent_bone = bone.name
root.matrix_world = matrix_backup
# Parent lattice and hook to root # Parent lattice and hook to root
lattice_ob.parent = root lattice_ob.parent = root
@ -280,8 +291,17 @@ class TWEAKLAT_PT_Main(bpy.types.Panel):
layout.use_property_decorate = False layout.use_property_decorate = False
hook = context.object hook = context.object
layout = layout.column()
if hook.type!='EMPTY' or 'Tweak Lattice' not in hook: if hook.type!='EMPTY' or 'Tweak Lattice' not in hook:
layout.operator(TWEAKLAT_OT_Create.bl_idname, icon='OUTLINER_OB_LATTICE') scene = context.scene
layout.prop(scene, 'tweak_lattice_radius', slider=True)
layout.separator()
layout.prop(scene, 'tweak_lattice_parent_ob')
if scene.tweak_lattice_parent_ob and scene.tweak_lattice_parent_ob.type=='ARMATURE':
layout.prop_search(scene, 'tweak_lattice_parent_bone', scene.tweak_lattice_parent_ob.data, 'bones')
layout.separator()
op = layout.operator(TWEAKLAT_OT_Create.bl_idname, icon='OUTLINER_OB_LATTICE')
op.radius = scene.tweak_lattice_radius
return return
layout.prop(hook, '["Tweak Lattice"]', slider=True, text="Influence") layout.prop(hook, '["Tweak Lattice"]', slider=True, text="Influence")
@ -323,7 +343,15 @@ def register():
for c in classes: for c in classes:
register_class(c) register_class(c)
bpy.types.Scene.tweak_lattice_radius = FloatProperty(name="Radius", default=0.1, min=0.0001, max=1000, soft_max=2)
bpy.types.Scene.tweak_lattice_parent_ob = PointerProperty(type=bpy.types.Object, name="Parent") # Maybe it would be safer to make this a StringProperty but whatever.
bpy.types.Scene.tweak_lattice_parent_bone = StringProperty(name="Bone")
def unregister(): def unregister():
from bpy.utils import unregister_class from bpy.utils import unregister_class
for c in reversed(classes): for c in reversed(classes):
unregister_class(c) unregister_class(c)
del bpy.types.Scene.tweak_lattice_radius
del bpy.types.Scene.tweak_lattice_parent_ob
del bpy.types.Scene.tweak_lattice_parent_bone