Skip to content
Snippets Groups Projects
__init__.py 3.87 KiB
Newer Older
  • Learn to ignore specific revisions
  • # ##### BEGIN GPL LICENSE BLOCK #####
    #
    #  This program is free software; you can redistribute it and/or
    #  modify it under the terms of the GNU General Public License
    #  as published by the Free Software Foundation; either version 2
    #  of the License, or (at your option) any later version.
    #
    #  This program is distributed in the hope that it will be useful,
    #  but WITHOUT ANY WARRANTY; without even the implied warranty of
    #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    #  GNU General Public License for more details.
    #
    #  You should have received a copy of the GNU General Public License
    #  along with this program; if not, write to the Free Software Foundation,
    #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    #
    # ##### END GPL LICENSE BLOCK #####
    
    
    bl_info = {
        'name': 'Light Field Tools',
        'author': 'Aurel Wildfellner',
    
        'description': 'Tools to create a light field camera and projector',
    
        'version': (0, 2, 1),
    
        'blender': (2, 5, 7),
        'api': 36103,
    
        'location': 'View3D > Tool Shelf > Light Field Tools',
    
        'url': 'http://www.jku.at/cg/',
    
        "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.5/Py/Scripts/Render/Light_Field_Tools",
        "tracker_url": "http://projects.blender.org/tracker/index.php?func=detail&aid=25719",
        'category': 'Render'
    }
    
    
    if "bpy" in locals():
        import imp
        imp.reload(light_field_tools)
    else:
        from . import light_field_tools
    
    
    import bpy
    from bpy.props import *
    
    
    # global properties for the script, mainly for UI
    class LightFieldPropertyGroup(bpy.types.PropertyGroup):
        angle = FloatProperty(
                name="Angle",
                # 40 degrees
                default=0.69813170079,
                min=0,
                # 172 degrees
                max=3.001966313430247,
                precision=2,
                subtype = 'ANGLE',
                description="Field of view of camera and angle of beam for spotlights")
        row_length = IntProperty(
                name="Row Length",
                default=1,
                min=1,
                description="The number of cameras/lights in one row")
        create_handler = BoolProperty(
                name="Handler",
                default=True,
                description="Creates an empty object, to which the cameras and spotlights are parented to")
        do_camera = BoolProperty(
                name="Create Camera",
                default=True,
                description="A light field camera is created")
        animate_camera = BoolProperty(
                name="Animate Camera",
                default=True,
                description="Animates a single camera, so not multiple cameras get created")
        do_projection = BoolProperty(
                name="Create Projector",
                default=False,
                description="A light field projector is created")
        texture_path = StringProperty(
                name="Texture Path",
                description="From this path textures for the spotlights will be loaded",
                subtype='DIR_PATH')
        light_intensity = FloatProperty(
                name="Light Intensity",
                default=2,
                min=0,
                precision=3,
                description="Total intensity of all lamps")
        # blending of the spotlights
        spot_blend =  FloatProperty(
                name="Blend",
                default=0,
                min=0,
                max=1,
                precision=3,
                description="Blending of the spotlights")
        # spacing in pixels on the focal plane
        spacing = IntProperty(
                name="Spacing",
                default=10,
                min=0,
                description="The spacing in pixels between two cameras on the focal plane")
    
    
    
    def register():
        # register properties
        bpy.utils.register_class(LightFieldPropertyGroup)
        bpy.types.Scene.lightfield = bpy.props.PointerProperty(type=LightFieldPropertyGroup)
        bpy.utils.register_module(__name__)
    
    
    def unregister():
        bpy.utils.unregister_module(__name__)
    
    
    if __name__ == "__main__":
        register()