mirror of
https://github.com/EatTheFuture/compify.git
synced 2025-01-22 00:09:11 -05:00
Move compify settings into a property group.
This commit is contained in:
parent
32c746ac84
commit
1dad54364e
108
__init__.py
108
__init__.py
@ -74,11 +74,11 @@ class CompifyPanel(bpy.types.Panel):
|
|||||||
col = layout.column()
|
col = layout.column()
|
||||||
col.label(text=" Footage:")
|
col.label(text=" Footage:")
|
||||||
box = col.box()
|
box = col.box()
|
||||||
box.template_ID(context.scene, "compify_footage", open="image.open")
|
box.template_ID(context.scene.compify_config, "footage", open="image.open")
|
||||||
box.use_property_split = True
|
box.use_property_split = True
|
||||||
if context.scene.compify_footage != None:
|
if context.scene.compify_config.footage != None:
|
||||||
box.prop(context.scene.compify_footage.colorspace_settings, "name", text=" Color Space")
|
box.prop(context.scene.compify_config.footage.colorspace_settings, "name", text=" Color Space")
|
||||||
box.prop(context.scene, "compify_footage_camera", text=" Camera")
|
box.prop(context.scene.compify_config, "camera", text=" Camera")
|
||||||
|
|
||||||
layout.separator(factor=0.5)
|
layout.separator(factor=0.5)
|
||||||
|
|
||||||
@ -89,11 +89,11 @@ class CompifyPanel(bpy.types.Panel):
|
|||||||
box.use_property_split = True
|
box.use_property_split = True
|
||||||
|
|
||||||
row1 = box.row()
|
row1 = box.row()
|
||||||
row1.prop(context.scene, "compify_footage_geo_collection", text=" Footage Geo")
|
row1.prop(context.scene.compify_config, "geo_collection", text=" Footage Geo")
|
||||||
row1.operator("scene.compify_add_footage_geo_collection", text="", icon='ADD')
|
row1.operator("scene.compify_add_footage_geo_collection", text="", icon='ADD')
|
||||||
|
|
||||||
row2 = box.row()
|
row2 = box.row()
|
||||||
row2.prop(context.scene, "compify_footage_lights_collection", text=" Footage Lights")
|
row2.prop(context.scene.compify_config, "lights_collection", text=" Footage Lights")
|
||||||
row2.operator("scene.compify_add_footage_lights_collection", text="", icon='ADD')
|
row2.operator("scene.compify_add_footage_lights_collection", text="", icon='ADD')
|
||||||
|
|
||||||
layout.separator(factor=1.0)
|
layout.separator(factor=1.0)
|
||||||
@ -162,8 +162,8 @@ def ensure_compify_material(context, baking_res=(1024, 1024)):
|
|||||||
|
|
||||||
return create_compify_material(
|
return create_compify_material(
|
||||||
compify_mat_name(context),
|
compify_mat_name(context),
|
||||||
context.scene.compify_footage_camera,
|
context.scene.compify_config.camera,
|
||||||
context.scene.compify_footage,
|
context.scene.compify_config.footage,
|
||||||
bake_image,
|
bake_image,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -249,22 +249,22 @@ def create_compify_material(name, camera, footage, bake_image=None):
|
|||||||
return mat
|
return mat
|
||||||
|
|
||||||
|
|
||||||
def change_footage_material_clip(scene, context):
|
def change_footage_material_clip(config, context):
|
||||||
if scene.compify_footage == None:
|
if config.footage == None:
|
||||||
return
|
return
|
||||||
mat = get_compify_material(context)
|
mat = get_compify_material(context)
|
||||||
if mat != None:
|
if mat != None:
|
||||||
footage_node = mat.node_tree.nodes["Input Footage"]
|
footage_node = mat.node_tree.nodes["Input Footage"]
|
||||||
footage_node.image = scene.compify_footage
|
footage_node.image = config.footage
|
||||||
footage_node.image_user.frame_duration = scene.compify_footage.frame_duration
|
footage_node.image_user.frame_duration = config.footage.frame_duration
|
||||||
|
|
||||||
|
|
||||||
def change_footage_camera(scene, context):
|
def change_footage_camera(config, context):
|
||||||
if scene.compify_footage_camera == None or scene.compify_footage_camera.type != 'CAMERA':
|
if config.camera == None or config.camera.type != 'CAMERA':
|
||||||
return
|
return
|
||||||
mat = get_compify_material(context)
|
mat = get_compify_material(context)
|
||||||
if mat != None:
|
if mat != None:
|
||||||
group = ensure_camera_project_group(scene.compify_footage_camera)
|
group = ensure_camera_project_group(config.camera)
|
||||||
mat.node_tree.nodes["Camera Project"].node_tree = group
|
mat.node_tree.nodes["Camera Project"].node_tree = group
|
||||||
|
|
||||||
|
|
||||||
@ -277,14 +277,14 @@ class CompifyPrepScene(bpy.types.Operator):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
return context.mode == 'OBJECT' \
|
return context.mode == 'OBJECT' \
|
||||||
and context.scene.compify_footage != None \
|
and context.scene.compify_config.footage != None \
|
||||||
and context.scene.compify_footage_camera != None \
|
and context.scene.compify_config.camera != None \
|
||||||
and context.scene.compify_footage_geo_collection != None \
|
and context.scene.compify_config.geo_collection != None \
|
||||||
and len(context.scene.compify_footage_geo_collection.all_objects) > 0
|
and len(context.scene.compify_config.geo_collection.all_objects) > 0
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
proxy_collection = context.scene.compify_footage_geo_collection
|
proxy_collection = context.scene.compify_config.geo_collection
|
||||||
lights_collection = context.scene.compify_footage_lights_collection
|
lights_collection = context.scene.compify_config.lights_collection
|
||||||
material = ensure_compify_material(context)
|
material = ensure_compify_material(context)
|
||||||
|
|
||||||
# Deselect all objects.
|
# Deselect all objects.
|
||||||
@ -342,10 +342,10 @@ class CompifyBake(bpy.types.Operator):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
return context.mode == 'OBJECT' \
|
return context.mode == 'OBJECT' \
|
||||||
and context.scene.compify_footage != None \
|
and context.scene.compify_config.footage != None \
|
||||||
and context.scene.compify_footage_camera != None \
|
and context.scene.compify_config.camera != None \
|
||||||
and context.scene.compify_footage_geo_collection != None \
|
and context.scene.compify_config.geo_collection != None \
|
||||||
and len(context.scene.compify_footage_geo_collection.all_objects) > 0
|
and len(context.scene.compify_config.geo_collection.all_objects) > 0
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
# Clear operator fields. Not strictly necessary, since they
|
# Clear operator fields. Not strictly necessary, since they
|
||||||
@ -356,12 +356,12 @@ class CompifyBake(bpy.types.Operator):
|
|||||||
self.main_node = None
|
self.main_node = None
|
||||||
|
|
||||||
# Misc setup and checks.
|
# Misc setup and checks.
|
||||||
if context.scene.compify_footage_geo_collection == None:
|
if context.scene.compify_config.geo_collection == None:
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
proxy_objects = context.scene.compify_footage_geo_collection.objects
|
proxy_objects = context.scene.compify_config.geo_collection.objects
|
||||||
proxy_lights = []
|
proxy_lights = []
|
||||||
if context.scene.compify_footage_lights_collection != None:
|
if context.scene.compify_config.lights_collection != None:
|
||||||
proxy_lights = context.scene.compify_footage_lights_collection.objects
|
proxy_lights = context.scene.compify_config.lights_collection.objects
|
||||||
material = bpy.data.materials[compify_mat_name(context)]
|
material = bpy.data.materials[compify_mat_name(context)]
|
||||||
self.main_node = material.node_tree.nodes[MAIN_NODE_NAME]
|
self.main_node = material.node_tree.nodes[MAIN_NODE_NAME]
|
||||||
delight_image_node = material.node_tree.nodes[BAKE_IMAGE_NODE_NAME]
|
delight_image_node = material.node_tree.nodes[BAKE_IMAGE_NODE_NAME]
|
||||||
@ -460,12 +460,12 @@ class CompifyAddFootageGeoCollection(bpy.types.Operator):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
return context.scene.compify_footage_geo_collection == None
|
return context.scene.compify_config.geo_collection == None
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
collection = bpy.data.collections.new("Footage Geo")
|
collection = bpy.data.collections.new("Footage Geo")
|
||||||
context.scene.collection.children.link(collection)
|
context.scene.collection.children.link(collection)
|
||||||
context.scene.compify_footage_geo_collection = collection
|
context.scene.compify_config.geo_collection = collection
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
|
|
||||||
@ -477,12 +477,12 @@ class CompifyAddFootageLightsCollection(bpy.types.Operator):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
return context.scene.compify_footage_lights_collection == None
|
return context.scene.compify_config.lights_collection == None
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
collection = bpy.data.collections.new("Footage Lights")
|
collection = bpy.data.collections.new("Footage Lights")
|
||||||
context.scene.collection.children.link(collection)
|
context.scene.collection.children.link(collection)
|
||||||
context.scene.compify_footage_lights_collection = collection
|
context.scene.compify_config.lights_collection = collection
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
|
|
||||||
@ -504,46 +504,56 @@ class CompifyCameraProjectGroupNew(bpy.types.Operator):
|
|||||||
#========================================================
|
#========================================================
|
||||||
|
|
||||||
|
|
||||||
def register():
|
class CompifyFootageConfig(bpy.types.PropertyGroup):
|
||||||
bpy.utils.register_class(CompifyPanel)
|
footage: bpy.props.PointerProperty(
|
||||||
bpy.utils.register_class(CompifyCameraPanel)
|
|
||||||
# bpy.utils.register_class(CompifyMaterialNew)
|
|
||||||
bpy.utils.register_class(CompifyAddFootageGeoCollection)
|
|
||||||
bpy.utils.register_class(CompifyAddFootageLightsCollection)
|
|
||||||
bpy.utils.register_class(CompifyPrepScene)
|
|
||||||
bpy.utils.register_class(CompifyBake)
|
|
||||||
bpy.utils.register_class(CompifyCameraProjectGroupNew)
|
|
||||||
|
|
||||||
# Custom properties.
|
|
||||||
bpy.types.Scene.compify_footage = bpy.props.PointerProperty(
|
|
||||||
type=bpy.types.Image,
|
type=bpy.types.Image,
|
||||||
name="Footage Texture",
|
name="Footage Texture",
|
||||||
update=change_footage_material_clip,
|
update=change_footage_material_clip,
|
||||||
)
|
)
|
||||||
bpy.types.Scene.compify_footage_camera = bpy.props.PointerProperty(
|
camera: bpy.props.PointerProperty(
|
||||||
type=bpy.types.Object,
|
type=bpy.types.Object,
|
||||||
name="Footage Camera",
|
name="Footage Camera",
|
||||||
poll=lambda scene, obj : obj.type == 'CAMERA',
|
poll=lambda scene, obj : obj.type == 'CAMERA',
|
||||||
update=change_footage_camera,
|
update=change_footage_camera,
|
||||||
)
|
)
|
||||||
bpy.types.Scene.compify_footage_geo_collection = bpy.props.PointerProperty(
|
geo_collection: bpy.props.PointerProperty(
|
||||||
type=bpy.types.Collection,
|
type=bpy.types.Collection,
|
||||||
name="Footage Geo Collection",
|
name="Footage Geo Collection",
|
||||||
)
|
)
|
||||||
bpy.types.Scene.compify_footage_lights_collection = bpy.props.PointerProperty(
|
lights_collection: bpy.props.PointerProperty(
|
||||||
type=bpy.types.Collection,
|
type=bpy.types.Collection,
|
||||||
name="Footage Lights Collection",
|
name="Footage Lights Collection",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
#========================================================
|
||||||
|
|
||||||
|
|
||||||
|
def register():
|
||||||
|
bpy.utils.register_class(CompifyPanel)
|
||||||
|
bpy.utils.register_class(CompifyCameraPanel)
|
||||||
|
bpy.utils.register_class(CompifyAddFootageGeoCollection)
|
||||||
|
bpy.utils.register_class(CompifyAddFootageLightsCollection)
|
||||||
|
bpy.utils.register_class(CompifyPrepScene)
|
||||||
|
bpy.utils.register_class(CompifyBake)
|
||||||
|
bpy.utils.register_class(CompifyCameraProjectGroupNew)
|
||||||
|
bpy.utils.register_class(CompifyFootageConfig)
|
||||||
|
|
||||||
|
# Custom properties.
|
||||||
|
bpy.types.Scene.compify_config = bpy.props.PointerProperty(type=CompifyFootageConfig)
|
||||||
|
|
||||||
def unregister():
|
def unregister():
|
||||||
bpy.utils.unregister_class(CompifyPanel)
|
bpy.utils.unregister_class(CompifyPanel)
|
||||||
bpy.utils.unregister_class(CompifyCameraPanel)
|
bpy.utils.unregister_class(CompifyCameraPanel)
|
||||||
# bpy.utils.unregister_class(CompifyMaterialNew)
|
|
||||||
bpy.utils.unregister_class(CompifyAddFootageGeoCollection)
|
bpy.utils.unregister_class(CompifyAddFootageGeoCollection)
|
||||||
bpy.utils.unregister_class(CompifyAddFootageLightsCollection)
|
bpy.utils.unregister_class(CompifyAddFootageLightsCollection)
|
||||||
bpy.utils.unregister_class(CompifyPrepScene)
|
bpy.utils.unregister_class(CompifyPrepScene)
|
||||||
bpy.utils.unregister_class(CompifyBake)
|
bpy.utils.unregister_class(CompifyBake)
|
||||||
bpy.utils.unregister_class(CompifyCameraProjectGroupNew)
|
bpy.utils.unregister_class(CompifyCameraProjectGroupNew)
|
||||||
|
bpy.utils.unregister_class(CompifyFootageConfig)
|
||||||
|
|
||||||
|
# Custom properties.
|
||||||
|
del bpy.types.Scene.compify_config
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
Loading…
Reference in New Issue
Block a user