[Bf-extensions-cvs] [1577a34d] master: object_trilighting: committed to release T65823 713fa9b2c412
meta-androcto
noreply at git.blender.org
Sun Jun 23 12:11:36 CEST 2019
Commit: 1577a34dd437c81296edabf56c97f6053a04b61d
Author: meta-androcto
Date: Sun Jun 23 20:11:19 2019 +1000
Branches: master
https://developer.blender.org/rBAC1577a34dd437c81296edabf56c97f6053a04b61d
object_trilighting: committed to release T65823 713fa9b2c412
===================================================================
D object_trilighting.py
===================================================================
diff --git a/object_trilighting.py b/object_trilighting.py
deleted file mode 100644
index 12b3101c..00000000
--- a/object_trilighting.py
+++ /dev/null
@@ -1,270 +0,0 @@
-# gpl: author Daniel Schalla, maintained by meta-androcto
-
-bl_info = {
- "name": "Trilighting",
- "author": "Daniel Schalla",
- "version": (0, 1, 4),
- "blender": (2, 80, 0),
- "location": "View3D > Add > Lights",
- "description": "Simple 3 Point Lighting Set",
- "warning": "",
- "wiki_url": "",
- "tracker_url": "https://developer.blender.org/maniphest/task/edit/form/2/",
- "category": "Object",
-}
-
-import bpy
-from bpy.types import Operator
-from bpy.props import (
- EnumProperty,
- FloatProperty,
- IntProperty,
- )
-from math import (
- sin, cos,
- radians,
- sqrt,
- )
-
-
-class OBJECT_OT_TriLighting(Operator):
- bl_idname = "object.trilighting"
- bl_label = "Tri-Lighting Creator"
- bl_description = ("Add 3 Point Lighting to Selected / Active Object\n"
- "Needs an existing Active Object")
- bl_options = {'REGISTER', 'UNDO'}
- COMPAT_ENGINES = {'CYCLES', 'EEVEE'}
-
- height: FloatProperty(
- name="Height",
- default=5
- )
- distance: FloatProperty(
- name="Distance",
- default=5,
- min=0.1,
- subtype="DISTANCE"
- )
- energy: IntProperty(
- name="Base Energy",
- default=3,
- min=1
- )
- contrast: IntProperty(
- name="Contrast",
- default=50,
- min=-100, max=100,
- subtype="PERCENTAGE"
- )
- leftangle: IntProperty(
- name="Left Angle",
- default=26,
- min=1, max=90,
- subtype="ANGLE"
- )
- rightangle: IntProperty(
- name="Right Angle",
- default=45,
- min=1, max=90,
- subtype="ANGLE"
- )
- backangle: IntProperty(
- name="Back Angle",
- default=235,
- min=90, max=270,
- subtype="ANGLE"
- )
- Light_Type_List = [
- ('POINT', "Point", "Point Light"),
- ('SUN', "Sun", "Sun Light"),
- ('SPOT', "Spot", "Spot Light"),
- ('AREA', "Area", "Area Light")
- ]
- primarytype: EnumProperty(
- attr='tl_type',
- name="Key Type",
- description="Choose the types of Key Lights you would like",
- items=Light_Type_List,
- default='AREA'
- )
- secondarytype: EnumProperty(
- attr='tl_type',
- name="Fill + Back Type",
- description="Choose the types of secondary Lights you would like",
- items=Light_Type_List,
- default="POINT"
- )
-
- @classmethod
- def poll(cls, context):
- return context.active_object is not None
-
- def draw(self, context):
- layout = self.layout
-
- layout.label(text="Position:")
- col = layout.column(align=True)
- col.prop(self, "height")
- col.prop(self, "distance")
-
- layout.label(text="Light:")
- col = layout.column(align=True)
- col.prop(self, "energy")
- col.prop(self, "contrast")
-
- layout.label(text="Orientation:")
- col = layout.column(align=True)
- col.prop(self, "leftangle")
- col.prop(self, "rightangle")
- col.prop(self, "backangle")
-
- col = layout.column()
- col.label(text="Key Light Type:")
- col.prop(self, "primarytype", text="")
- col.label(text="Fill + Back Type:")
- col.prop(self, "secondarytype", text="")
-
-
- def execute(self, context):
- try:
- collection = context.collection
- scene = context.scene
- view = context.space_data
- if view.type == 'VIEW_3D':
- camera = view.camera
- else:
- camera = scene.camera
-
- if (camera is None):
- cam_data = bpy.data.cameras.new(name='Camera')
- cam_obj = bpy.data.objects.new(name='Camera', object_data=cam_data)
- collection.objects.link(cam_obj)
- scene.camera = cam_obj
- bpy.ops.view3d.camera_to_view()
- camera = cam_obj
- bpy.ops.view3d.view_axis(type='TOP')
-
- obj = bpy.context.view_layer.objects.active
-
- # Calculate Energy for each Lamp
- if(self.contrast > 0):
- keyEnergy = self.energy
- backEnergy = (self.energy / 100) * abs(self.contrast)
- fillEnergy = (self.energy / 100) * abs(self.contrast)
- else:
- keyEnergy = (self.energy / 100) * abs(self.contrast)
- backEnergy = self.energy
- fillEnergy = self.energy
-
- # Calculate Direction for each Lamp
-
- # Calculate current Distance and get Delta
- obj_position = obj.location
- cam_position = camera.location
-
- delta_position = cam_position - obj_position
- vector_length = sqrt(
- (pow(delta_position.x, 2) +
- pow(delta_position.y, 2) +
- pow(delta_position.z, 2))
- )
- if not vector_length:
- # division by zero most likely
- self.report({'WARNING'},
- "Operation Cancelled. No viable object in the scene")
-
- return {'CANCELLED'}
-
- single_vector = (1 / vector_length) * delta_position
-
- # Calc back position
- singleback_vector = single_vector.copy()
- singleback_vector.x = cos(radians(self.backangle)) * single_vector.x + \
- (-sin(radians(self.backangle)) * single_vector.y)
-
- singleback_vector.y = sin(radians(self.backangle)) * single_vector.x + \
- (cos(radians(self.backangle)) * single_vector.y)
-
- backx = obj_position.x + self.distance * singleback_vector.x
- backy = obj_position.y + self.distance * singleback_vector.y
-
- backData = bpy.data.lights.new(name="TriLamp-Back", type=self.secondarytype)
- backData.energy = backEnergy
-
- backLamp = bpy.data.objects.new(name="TriLamp-Back", object_data=backData)
- collection.objects.link(backLamp)
- backLamp.location = (backx, backy, self.height)
-
- trackToBack = backLamp.constraints.new(type="TRACK_TO")
- trackToBack.target = obj
- trackToBack.track_axis = "TRACK_NEGATIVE_Z"
- trackToBack.up_axis = "UP_Y"
-
- # Calc right position
- singleright_vector = single_vector.copy()
- singleright_vector.x = cos(radians(self.rightangle)) * single_vector.x + \
- (-sin(radians(self.rightangle)) * single_vector.y)
-
- singleright_vector.y = sin(radians(self.rightangle)) * single_vector.x + \
- (cos(radians(self.rightangle)) * single_vector.y)
-
- rightx = obj_position.x + self.distance * singleright_vector.x
- righty = obj_position.y + self.distance * singleright_vector.y
-
- rightData = bpy.data.lights.new(name="TriLamp-Fill", type=self.secondarytype)
- rightData.energy = fillEnergy
- rightLamp = bpy.data.objects.new(name="TriLamp-Fill", object_data=rightData)
- collection.objects.link(rightLamp)
- rightLamp.location = (rightx, righty, self.height)
- trackToRight = rightLamp.constraints.new(type="TRACK_TO")
- trackToRight.target = obj
- trackToRight.track_axis = "TRACK_NEGATIVE_Z"
- trackToRight.up_axis = "UP_Y"
-
- # Calc left position
- singleleft_vector = single_vector.copy()
- singleleft_vector.x = cos(radians(-self.leftangle)) * single_vector.x + \
- (-sin(radians(-self.leftangle)) * single_vector.y)
- singleleft_vector.y = sin(radians(-self.leftangle)) * single_vector.x + \
- (cos(radians(-self.leftangle)) * single_vector.y)
- leftx = obj_position.x + self.distance * singleleft_vector.x
- lefty = obj_position.y + self.distance * singleleft_vector.y
-
- leftData = bpy.data.lights.new(name="TriLamp-Key", type=self.primarytype)
- leftData.energy = keyEnergy
-
- leftLamp = bpy.data.objects.new(name="TriLamp-Key", object_data=leftData)
- collection.objects.link(leftLamp)
- leftLamp.location = (leftx, lefty, self.height)
- trackToLeft = leftLamp.constraints.new(type="TRACK_TO")
- trackToLeft.target = obj
- trackToLeft.track_axis = "TRACK_NEGATIVE_Z"
- trackToLeft.up_axis = "UP_Y"
-
- 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.trilighting\nError: {}".format(e))
-
- return {'CANCELLED'}
-
- return {'FINISHED'}
-
-def menu_func(self, context):
- self.layout.operator(OBJECT_OT_TriLighting.bl_idname, text="3 Point Lights", icon='LIGHT')
-
-
-
-# Register all operators and panels
-def register():
- bpy.utils.register_class(OBJECT_OT_TriLighting)
- bpy.types.VIEW3D_MT_light_add.append(menu_func)
-
-def unregister():
- bpy.utils.unregister_class(OBJECT_OT_TriLighting)
- bpy.types.VIEW3D_MT_light_add.remove(menu_func)
-
-if __name__ == "__main__":
- register()
More information about the Bf-extensions-cvs
mailing list