Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'add_advanced_objects_menu/add_light_template.py')
-rw-r--r--add_advanced_objects_menu/add_light_template.py145
1 files changed, 145 insertions, 0 deletions
diff --git a/add_advanced_objects_menu/add_light_template.py b/add_advanced_objects_menu/add_light_template.py
new file mode 100644
index 00000000..9e2c139f
--- /dev/null
+++ b/add_advanced_objects_menu/add_light_template.py
@@ -0,0 +1,145 @@
+# gpl: author Rebellion
+
+import bpy
+from bpy.types import Operator
+from bpy.props import BoolProperty
+
+
+def add_lamps(self, context):
+
+ if self.bKeyLight:
+ keyLight = bpy.data.lamps.new(name="Key_Light", type="SPOT")
+ ob = bpy.data.objects.new("Key_Light", keyLight)
+ constraint = ob.constraints.new(type='COPY_LOCATION')
+ constraint.use_offset = True
+ constraint.owner_space = 'LOCAL'
+ constraint.target = self.camera
+ constraint = ob.constraints.new(type='TRACK_TO')
+ constraint.target = self.target
+ constraint.track_axis = 'TRACK_NEGATIVE_Z'
+ constraint.up_axis = 'UP_X'
+ constraint.owner_space = 'LOCAL'
+ bpy.context.scene.objects.link(ob)
+ ob.rotation_euler[2] = -0.785398
+
+ if self.bFillLight:
+ fillLight = bpy.data.lamps.new(name="Fill_Light", type="SPOT")
+ ob = bpy.data.objects.new("Fill_Light", fillLight)
+ constraint = ob.constraints.new(type='COPY_LOCATION')
+ constraint.use_offset = True
+ constraint.owner_space = 'LOCAL'
+ constraint.target = self.camera
+ constraint = ob.constraints.new(type='TRACK_TO')
+ constraint.target = self.target
+ constraint.track_axis = 'TRACK_NEGATIVE_Z'
+ constraint.up_axis = 'UP_X'
+ constraint.owner_space = 'LOCAL'
+ bpy.context.scene.objects.link(ob)
+ ob.rotation_euler[2] = 0.785398
+ ob.data.energy = 0.3
+
+ if self.bBackLight:
+ backLight = bpy.data.lamps.new(name="Back_Light", type="SPOT")
+ ob = bpy.data.objects.new("Back_Light", backLight)
+ constraint = ob.constraints.new(type='COPY_LOCATION')
+ constraint.use_offset = True
+ constraint.owner_space = 'LOCAL'
+ constraint.target = self.camera
+ constraint = ob.constraints.new(type='TRACK_TO')
+ constraint.target = self.target
+ constraint.track_axis = 'TRACK_NEGATIVE_Z'
+ constraint.up_axis = 'UP_X'
+ constraint.owner_space = 'LOCAL'
+ bpy.context.scene.objects.link(ob)
+ ob.rotation_euler[2] = 3.14159
+ ob.data.energy = 0.2
+
+ if self.camera_constraint and self.camera is not None and \
+ self.camera.type == "CAMERA":
+
+ constraint = self.camera.constraints.new(type='TRACK_TO')
+ constraint.target = self.target
+ constraint.track_axis = 'TRACK_NEGATIVE_Z'
+ constraint.up_axis = 'UP_Y'
+
+
+class OBJECT_OT_add_light_template(Operator):
+ bl_idname = "object.add_light_template"
+ bl_label = "Add Light Template"
+ bl_description = ("Add Key, Fill and Back Lights to the Scene\n"
+ "Needs an existing Active Object")
+ bl_options = {'REGISTER', 'UNDO'}
+
+ camera = None
+ target = None
+
+ bKeyLight = BoolProperty(
+ name="Key Light",
+ description="Enable Key Light in the Scene",
+ default=True
+ )
+ bFillLight = BoolProperty(
+ name="Fill Light",
+ description="Enable Fill Light in the Scene",
+ default=True
+ )
+ bBackLight = BoolProperty(
+ name="Back Light",
+ description="Enable Back Light in the Scene",
+ default=True
+ )
+ camera_constraint = BoolProperty(
+ name="Camera Constraint",
+ description="Add a Constraint to the Camera Object",
+ default=False
+ )
+
+ @classmethod
+ def poll(cls, context):
+ return context.active_object is not None
+
+ def execute(self, context):
+ try:
+ objects = context.selected_objects
+
+ if len(objects) == 2:
+ for ob in objects:
+ if ob.type == 'CAMERA':
+ self.camera = ob
+ else:
+ self.target = ob
+ elif len(objects) == 1:
+ if objects[0].type == 'CAMERA':
+ self.camera = objects[0]
+ bpy.ops.object.empty_add()
+ self.target = context.active_object
+ else:
+ self.camera = context.scene.camera
+ self.target = context.active_object
+ elif len(objects) == 0:
+ bpy.ops.object.empty_add()
+ self.target = context.active_object
+ self.camera = context.scene.camera
+
+ add_lamps(self, context)
+
+ except Exception as e:
+ self.report({'WARNING'},
+ "Some operations could not be performed (See Console for more info)")
+
+ print("\n[Add Advanced Objects]\nOperator: "
+ "object.add_light_template\nError: {}".format(e))
+
+ return {'FINISHED'}
+
+
+def register():
+ bpy.utils.register_class(OBJECT_OT_add_light_template)
+
+
+def unregister():
+ bpy.utils.unregister_class(OBJECT_OT_add_light_template)
+
+
+if __name__ == "__main__":
+ register()