class RETARGET_BoneMapGroup(PropertyGroup):
    name: StringProperty(default="Bone")
    obj: PointerProperty(type=bpy.types.Object)
    boneTargetName: StringProperty(default="Bone")
    boneSourceName: StringProperty(default="Bone")
    boneTargetExist: BoolProperty(default=True)
    boneSourceExist: BoolProperty(default=True)
    boneNotExist: BoolProperty(name="Warning",
                               description="Bone Does Not Exist",
                               default=False)

    def updateMute(self, context):
        for FCurve in self.obj.animation_data.drivers:
            if FCurve.data_path + "[" + str(FCurve.array_index) + "]" in [
                    path.path for path in self.dataPaths
            ]:
                FCurve.mute = self.mute

    mute: BoolProperty(default=False, update=updateMute)
    transform: BoolVectorProperty(default=(False, False, False), size=3)
    axis: BoolVectorProperty(default=(False, False, False), size=3)
    source: StringProperty(default="Bone")
    target: StringProperty(default="Bone")
    dataPaths: CollectionProperty(type=RETARGET_DataPath)
    influence: FloatProperty(default=1.0, min=0.0, max=1.0)
    locationMultiply: FloatProperty(default=1.0)
    ROT_XInfluence: FloatProperty(default=1.0, min=0.0, max=1.0)
    ROT_YInfluence: FloatProperty(default=1.0, min=0.0, max=1.0)
    ROT_ZInfluence: FloatProperty(default=1.0, min=0.0, max=1.0)
    LOC_XInfluence: FloatProperty(default=1.0, min=0.0, max=1.0)
    LOC_YInfluence: FloatProperty(default=1.0, min=0.0, max=1.0)
    LOC_ZInfluence: FloatProperty(default=1.0, min=0.0, max=1.0)
    SCALE_XInfluence: FloatProperty(default=1.0, min=0.0, max=1.0)
    SCALE_YInfluence: FloatProperty(default=1.0, min=0.0, max=1.0)
    SCALE_ZInfluence: FloatProperty(default=1.0, min=0.0, max=1.0)
Esempio n. 2
0
class MeshExtraToolsSceneProps(PropertyGroup):
    # Define the UI drop down prop
    UiTabDrop = BoolVectorProperty(
            name="Tab",
            description="Expand/Collapse UI elements",
            default=(False,) * 4,
            size=4,
            )
    # Vertex align
    vert_align_store_axis: FloatVectorProperty(
            name="Define Custom Coordinates",
            description="Store the values of coordinates, for repeated use\n"
                        "as a starting point",
            default=(0.0, 0.0, 0.0),
            min=-100.0, max=100.0,
            step=1, size=3,
            subtype='XYZ',
            precision=3
            )
    vert_align_use_stored: BoolProperty(
            name="Use Stored Coordinates",
            description="Use starting point coordinates for alignment",
            default=False
            )
    vert_align_to: EnumProperty(
            items=(('vertex', "Original vertex",
                    "Use the stored vertex coordinates for aligning"),
                   ('coordinates', "Custom coordinates",
                    "Use defined custom coordinates for aligning")),
            name="Align to",
            default='vertex'
            )
    vert_align_axis = BoolVectorProperty(
            name="Axis",
            description="Align to a specific Axis",
            default=(True, False, False),
            size=3,
            )
    # Mesh Info select
    mesh_info_show: BoolProperty(
            name="Show Face Info",
            description="Display the Object's Face Count information\n"
                        "Note: it can have some performance impact on dense meshes\n"
                        "Leave it closed if not needed or set the Delay to a higher value",
            default=False
            )
    mesh_info_delay: FloatProperty(
            name="Delay",
            description="Set the Update time Delay in seconds\n"
                        "Set to zero to update with the UI refresh\n"
                        "Higher values will sometimes need to hover over the cursor",
            default=2.0,
            min=0.0, max=20.0,
            step=100,
            subtype='TIME',
            precision=1
            )
Esempio n. 3
0
class OPS_place_material(Operator):
    bl_idname = "fd_dragdrop.place_material"
    bl_label = "Place Material:"

    object_name = StringProperty(name="Object Name")
    filepath = StringProperty(name="Filepath")
    add_to_slot = BoolVectorProperty(name="Add To Slot",size=20)
    
    def invoke(self,context,event):
        obj = bpy.data.objects[self.object_name]
        wm = context.window_manager
        return wm.invoke_props_dialog(self, width=250)
            
    def execute(self,context):
        dm = context.scene.mv.dm
        filename, ext = os.path.splitext(os.path.basename(self.filepath))
        obj = bpy.data.objects[self.object_name]
        material = dm.retrieve_data_from_library(self.filepath)
        list_slot = []
        for index, slot in enumerate(obj.mv.material_slot_col):
            if self.add_to_slot[index]:
                list_slot.append(index)
                
        if len(list_slot) > 0:
            obj.mv.assign_material_to_object(obj.name,material,list_slot)
        return{'FINISHED'}

    def draw(self, context):
        layout = self.layout
        obj = bpy.data.objects[self.object_name]
        for index, slot in enumerate(obj.mv.material_slot_col):
            layout.prop(self,"add_to_slot",index=index,text=slot.name)
class AddObjectHelper:
    def view_align_update_callback(self, context):
        if not self.view_align:
            self.rotation.zero()

    view_align = BoolProperty(
            name="Align to View",
            default=False,
            update=view_align_update_callback,
            )
    location = FloatVectorProperty(
            name="Location",
            subtype='TRANSLATION',
            )
    rotation = FloatVectorProperty(
            name="Rotation",
            subtype='EULER',
            )
    layers = BoolVectorProperty(
            name="Layers",
            size=20,
            subtype='LAYER',
            options={'HIDDEN', 'SKIP_SAVE'},
            )

    @classmethod
    def poll(self, context):
        return context.scene.library is None
Esempio n. 5
0
class CopySelectedPoseConstraints(Operator):
    """Copy Chosen constraints from active to selected"""
    bl_idname = "pose.copy_selected_constraints"
    bl_label = "Copy Selected Constraints"

    selection: BoolVectorProperty(size=32, options={'SKIP_SAVE'})

    poll = pose_poll_func
    invoke = pose_invoke_func

    def draw(self, context):
        layout = self.layout
        for idx, const in enumerate(context.active_pose_bone.constraints):
            layout.prop(self,
                        "selection",
                        index=idx,
                        text=const.name,
                        toggle=True)

    def execute(self, context):
        active = context.active_pose_bone
        selected = context.selected_pose_bones[:]
        selected.remove(active)
        for bone in selected:
            for index, flag in enumerate(self.selection):
                if flag:
                    old_constraint = active.constraints[index]
                    new_constraint = bone.constraints.new(
                        active.constraints[index].type)
                    generic_copy(old_constraint, new_constraint)
        return {'FINISHED'}
Esempio n. 6
0
class CopySelectedObjectConstraints(Operator):
    """Copy Chosen constraints from active to selected"""
    bl_idname = "object.copy_selected_constraints"
    bl_label = "Copy Selected Constraints"

    selection: BoolVectorProperty(size=32, options={'SKIP_SAVE'})

    poll = object_poll_func
    invoke = object_invoke_func

    def draw(self, context):
        layout = self.layout
        for idx, const in enumerate(context.active_object.constraints):
            layout.prop(self,
                        "selection",
                        index=idx,
                        text=const.name,
                        toggle=True)

    def execute(self, context):
        active = context.active_object
        selected = context.selected_objects[:]
        selected.remove(active)
        for obj in selected:
            for index, flag in enumerate(self.selection):
                if flag:
                    obj.constraints.copy(active.constraints[index])
        return {'FINISHED'}
Esempio n. 7
0
class SCENE_OT_namedlayer_group_add(bpy.types.Operator):
    """Add and select a new layer group"""
    bl_idname = "scene.namedlayer_group_add"
    bl_label = "Add Layer Group"

    layers = BoolVectorProperty(name="Layers",
                                default=([False] * NUM_LAYERS),
                                size=NUM_LAYERS)

    @classmethod
    def poll(cls, context):
        return bool(context.scene)

    def execute(self, context):
        scene = context.scene
        layergroups = scene.layergroups
        layers = self.layers

        group_idx = len(layergroups)
        layer_group = layergroups.add()
        layer_group.name = "LayerGroup.%.3d" % group_idx
        layer_group.layers = layers
        scene.layergroups_index = group_idx

        return {'FINISHED'}
Esempio n. 8
0
class CopySelectedObjectModifiers(Operator):
    """Copy Chosen modifiers from active to selected"""
    bl_idname = "object.copy_selected_modifiers"
    bl_label = "Copy Selected Modifiers"

    selection: BoolVectorProperty(size=32, options={'SKIP_SAVE'})

    poll = object_poll_func
    invoke = object_invoke_func

    def draw(self, context):
        layout = self.layout
        for idx, const in enumerate(context.active_object.modifiers):
            layout.prop(self,
                        'selection',
                        index=idx,
                        text=const.name,
                        toggle=True)

    def execute(self, context):
        active = context.active_object
        selected = context.selected_objects[:]
        selected.remove(active)
        for obj in selected:
            for index, flag in enumerate(self.selection):
                if flag:
                    old_modifier = active.modifiers[index]
                    new_modifier = obj.modifiers.new(
                        type=active.modifiers[index].type,
                        name=active.modifiers[index].name)
                    generic_copy(old_modifier, new_modifier)
        return {'FINISHED'}
Esempio n. 9
0
class ApiNavProps(PropertyGroup):
    """
    Fake module like class.

    bpy.context.window_manager.api_nav_props
    """
    path = StringProperty(
        name="Path",
        description="Enter bpy.ops.api_navigator to see the documentation",
        default="bpy")
    old_path = StringProperty(name="Old Path", default="")
    filters = StringProperty(name="Filters",
                             description="Filter the resulting modules",
                             default="")
    reduce_to = IntProperty(
        name="Reduce to",
        description="Display a maximum number of x entries by pages",
        default=10,
        min=1)
    pages = IntProperty(name="Pages",
                        description="Display a Page",
                        default=0,
                        min=0)
    panel_toggle = BoolVectorProperty(
        name="Tab",
        description="Expand/Collapse UI elements",
        default=(True, ) * 9,
        size=9,
    )
Esempio n. 10
0
class SvDebugPrintNode(bpy.types.Node, SverchCustomTreeNode):
    ''' print socket data to terminal '''
    bl_idname = 'SvDebugPrintNode'
    bl_label = 'Debug print'
    bl_icon = 'CONSOLE'
    sv_icon = 'SV_DEBUG_PRINT'

    base_name = 'Data '
    multi_socket_type = 'SvStringsSocket'

    print_socket: BoolVectorProperty(name='Print',
                                     default=defaults,
                                     size=32,
                                     update=updateNode)

    print_data: BoolProperty(name='Active',
                             description='Turn on/off printing to stdout',
                             default=True,
                             update=updateNode)

    def sv_init(self, context):
        self.inputs.new('SvStringsSocket', "Data 0")

    def draw_buttons(self, context, layout):
        layout.prop(self, 'print_data')

    def draw_buttons_ext(self, context, layout):
        layout.label(text='Print?')
        for i, socket in enumerate(self.inputs):
            layout.prop(self, "print_socket", index=i, text=socket.name)

    def draw_socket_boolean(self, socket, context, layout):
        text = f"{socket.name}. {str(socket.objects_number)}"
        layout.label(text=text)
        icon = (
            "HIDE_ON",
            "HIDE_OFF",
        )[self.print_socket[socket.index]]
        layout.prop(self,
                    "print_socket",
                    icon=icon,
                    index=socket.index,
                    text="")

    def attach_draw_function_if_needed(self):
        for socket in self.inputs:
            if not socket.custom_draw:
                socket.custom_draw = "draw_socket_boolean"

    def sv_update(self):
        multi_socket(self, min=1)

    def process(self):
        self.attach_draw_function_if_needed()
        if not self.print_data:
            return

        for i, socket in enumerate(self.inputs):
            if socket.is_linked and self.print_socket[i]:
                self.info(socket.sv_get(deepcopy=False))
Esempio n. 11
0
class MuProperties(bpy.types.PropertyGroup):
    modelType = EnumProperty(items = modelType_items, name = "Model Type")
    nodeSize = IntProperty(name = "Size", default = 1)
    nodeMethod = EnumProperty(items = method_items, name = "Method")
    nodeCrossfeed = BoolProperty(name = "Crossfeed", default = True)
    nodeRigid = BoolProperty(name = "Rigid", default = False)

    tag = StringProperty(name = "Tag", default="Untagged")
    layer = IntProperty(name = "Layer")

    collider = EnumProperty(items = collider_items, name = "Collider")
    isTrigger = BoolProperty(name = "Trigger")
    center = FloatVectorProperty(name = "Center", subtype = 'XYZ', update=collider_update)
    radius = FloatProperty(name = "Radius", update=collider_update)
    height = FloatProperty(name = "Height", update=collider_update)
    direction = EnumProperty(items = dir_items, name = "Direction", update=collider_update)
    size = FloatVectorProperty(name = "Size", subtype = 'XYZ', update=collider_update)

    mass = FloatProperty(name = "Mass")
    suspensionDistance = FloatProperty(name = "Distance")
    suspensionSpring = PointerProperty(type=MuSpringProp, name = "Spring")
    forwardFriction = PointerProperty(type=MuFrictionProp, name = "Forward")
    sideFriction = PointerProperty(type=MuFrictionProp, name = "Sideways")

    cullingMask = BoolVectorProperty(size=32, name = "Culling Mask", subtype = 'LAYER')
    backgroundColor = FloatVectorProperty(name="Background Color", size = 4, subtype='COLOR', min = 0.0, max = 1.0, default = (0.0, 0.0, 0.0, 1.0))
    depth = FloatProperty(name = "Depth")
    clearFlags = EnumProperty(items = clearflag_items, name = "Clear Flags", default = 'SKYBOX')
Esempio n. 12
0
class MuProperties(bpy.types.PropertyGroup):
    nodeSize = IntProperty(name="Size", default=1)
    tag = StringProperty(name="Tag", default="Untagged")
    layer = IntProperty(name="Layer")

    collider = EnumProperty(items=collider_items, name="Collider")
    isTrigger = BoolProperty(name="Trigger", update=collider_update)
    center = FloatVectorProperty(name="Center",
                                 subtype='XYZ',
                                 update=collider_update)
    radius = FloatProperty(name="Radius", update=collider_update)
    height = FloatProperty(name="Height", update=collider_update)
    direction = EnumProperty(items=dir_items,
                             name="Direction",
                             update=collider_update)
    size = FloatVectorProperty(name="Size",
                               subtype='XYZ',
                               update=collider_update)

    mass = FloatProperty(name="Mass")
    suspensionDistance = FloatProperty(name="Distance")
    suspensionSpring = PointerProperty(type=MuSpringProp, name="Spring")
    forwardFriction = PointerProperty(type=MuFrictionProp, name="Forward")
    sideFriction = PointerProperty(type=MuFrictionProp, name="Sideways")

    cullingMask = BoolVectorProperty(size=32, name="Mask", subtype='LAYER')
Esempio n. 13
0
class MeshExtraToolsSceneProps(PropertyGroup):
    # Define the UI drop down prop
    UiTabDrop = BoolVectorProperty(
            name="Tab",
            description="Expand/Collapse UI elements",
            default=(False,) * 4,
            size=4,
            )
Esempio n. 14
0
class LayerGroups(bpy.types.PropertyGroup):
    
    toggle    = BoolProperty(name="",default=False)
    
    lock    = BoolProperty(name="",default=False)
   
    
    layer_groups = BoolVectorProperty(name="Layer Groups", default = ([False]*20), size=20, subtype='LAYER')
Esempio n. 15
0
class add_mesh_honeycomb(bpy.types.Operator):
    bl_idname = "mesh.honeycomb_add"
    bl_label = "Add HoneyComb"
    bl_description = "Simple honeycomb mesh generator"
    bl_options = {'REGISTER', 'UNDO'}

    def fix_edge(self, context):
        m = edge_max(self.diam)
        if self.edge > m:
            self.edge = m

    rows = IntProperty(name="Num of rows",
                       default=2,
                       min=1,
                       max=100,
                       description='Number of the rows')
    cols = IntProperty(name='Num of cols',
                       default=2,
                       min=1,
                       max=100,
                       description='Number of the columns')
    layers = BoolVectorProperty(
        name="Layers",
        size=20,
        subtype='LAYER',
        options={'HIDDEN', 'SKIP_SAVE'},
    )
    diam = FloatProperty(name='Cell Diameter',
                         default=1.0,
                         min=0.0,
                         update=fix_edge,
                         description='Diameter of the cell')
    edge = FloatProperty(name='Edge Width',
                         default=0.1,
                         min=0.0,
                         update=fix_edge,
                         description='Width of the edge')
    # generic transform props
    view_align = BoolProperty(name="Align to View", default=False)
    location = FloatVectorProperty(name="Location", subtype='TRANSLATION')
    rotation = FloatVectorProperty(name="Rotation", subtype='EULER')

    @classmethod
    def poll(cls, context):
        return context.scene is not None

    def execute(self, context):
        mesh = bpy.data.meshes.new(name='honeycomb')

        comb = honeycomb_geometry(self.rows, self.cols, self.diam, self.edge)
        verts, faces = comb.generate()

        mesh.from_pydata(vertices=verts, edges=[], faces=faces)
        mesh.update()

        object_utils.object_data_add(context, mesh, operator=self)

        return {'FINISHED'}
class AddMengerSponge(bpy.types.Operator):
    """Add a menger sponge"""
    bl_idname = "mesh.menger_sponge_add"
    bl_label = "Menger Sponge"
    bl_options = {'REGISTER', 'UNDO'}

    level = IntProperty(
        name="Level",
        description="Sponge Level",
        min=0,
        max=4,
        default=1,
    )

    radius = FloatProperty(
        name="Width",
        description="Sponge Radius",
        min=0.01,
        max=100.0,
        default=1.0,
    )

    # generic transform props
    view_align = BoolProperty(
        name="Align to View",
        default=False,
    )
    location = FloatVectorProperty(
        name="Location",
        subtype='TRANSLATION',
    )
    rotation = FloatVectorProperty(
        name="Rotation",
        subtype='EULER',
    )
    layers = BoolVectorProperty(
        name="Layers",
        size=20,
        subtype='LAYER',
        options={'HIDDEN', 'SKIP_SAVE'},
    )

    def execute(self, context):
        sponger = MengerSponge(self.level)
        vertices, faces = sponger.create(self.radius * 2, self.radius * 2)
        del sponger

        mesh = bpy.data.meshes.new(name='Sponge')
        mesh.from_pydata(vertices, [], faces)
        uvs = [(0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (1.0, 0.0)]
        mesh.uv_textures.new()
        for i, uvloop in enumerate(mesh.uv_layers.active.data):
            uvloop.uv = uvs[i % 4]

        from bpy_extras import object_utils
        object_utils.object_data_add(context, mesh, operator=self)

        return {'FINISHED'}
Esempio n. 17
0
class LayerGroup(PropertyGroup):
    use_toggle = BoolProperty(name="", default=False)
    use_wire = BoolProperty(name="", default=False)
    use_lock = BoolProperty(name="", default=False)

    layers = BoolVectorProperty(name="Layers",
                                default=([False] * NUM_LAYERS),
                                size=NUM_LAYERS,
                                subtype='LAYER')
Esempio n. 18
0
def register():
    IDStore = bpy.types.WindowManager
    IDStore.pose_bones_export_set = BoolVectorProperty(
        size=32,
        description="Layers exporting pose bones",
        default=tuple([i < 29 for i in range(0, 32)]))
    bpy.utils.register_class(ToolsPanel)
    bpy.utils.register_class(POSE_OT_expimp_export)
    bpy.utils.register_class(POSE_OT_expimp_import)
Esempio n. 19
0
class OPS_create_cube_mesh(Operator):
    bl_idname = "fluidobject.create_cube_mesh"
    bl_label = "Create Cube Mesh"
    bl_options = {'UNDO'}

    GroupName = StringProperty(name="Group Name")

    CubeSize = FloatVectorProperty(
        name="Notch Size",
        default=(4.0, 3.25, .78),
    )

    CubeMirror = BoolVectorProperty(
        name="Notch Size",
        default=(False, False, False),
    )

    #Properties needed for object_data_add
    location = FloatVectorProperty(
        name="Location",
        subtype='TRANSLATION',
    )

    view_align = BoolProperty(
        name="Align to View",
        default=False,
    )

    rotation = FloatVectorProperty(
        name="Rotation",
        subtype='EULER',
    )

    @classmethod
    def poll(cls, context):
        return True

    def execute(self, context):
        partverts_loc, partfaces = FUNC.AddPartMesh(self.CubeSize,
                                                    self.CubeMirror)

        mesh = bpy.data.meshes.new('NEWCUBEMESH')

        bm = bmesh.new()

        for v_co in partverts_loc:
            bm.verts.new(v_co)

        for f_idx in partfaces:
            bm.faces.new([bm.verts[i] for i in f_idx])

        bm.to_mesh(mesh)
        mesh.update()
        from bpy_extras import object_utils
        object_utils.object_data_add(context, mesh, operator=self)
        obj_notch = context.active_object
        return {'FINISHED'}
Esempio n. 20
0
    def add_bone_set(cls,
                     params,
                     ui_name,
                     default_group="",
                     default_layers=[0],
                     override="",
                     preset=-1):
        """ 
		A bone set is just a set of rig parameters for choosing a bone group and list of bone layers.
		This function is responsible for creating those rig parameters, as well as storing them, 
		so they can be referenced easily when implementing the creation of a new bone 
		and assigning its bone group and layers. 

		For example, all FK chain bones of the FK chain rig are hard-coded to be part of the "FK Main" bone set.
		Then the "FK Main" bone set's bone group and bone layer can be customized via the parameters.
		"""

        group_name = ui_name.replace(" ", "_").lower()
        if default_group == "":
            default_group = ui_name

        param_name = "CR_BG_" + group_name.replace(" ", "_")
        layer_param_name = "CR_BG_LAYERS_" + group_name.replace(" ", "_")

        setattr(
            params, param_name,
            StringProperty(
                default=default_group,
                description=
                "Select what group this set of bones should be assigned to"))

        default_layers_bools = [i in default_layers for i in range(32)]
        setattr(
            params, layer_param_name,
            BoolVectorProperty(
                size=32,
                subtype='LAYER',
                description=
                "Select what layers this set of bones should be assigned to",
                default=default_layers_bools))

        assert override in ['', 'DEF', 'MCH',
                            'ORG'], "Error: Unsupported bone set override"

        cls.bone_sets[ui_name] = {
            'name': ui_name,
            'preset':
            preset  # Bone Group color preset to use in case the bone group doesn't already exist.
            ,
            'param': param_name  # Name of the bone group name parameter
            ,
            'layer_param':
            layer_param_name  # Name of the bone layers parameter
            ,
            'override': override
        }
        return ui_name
class ObjectViewSettings(bpy.types.PropertyGroup):
    conv = vcu.convert_attribute_to_28
    hide_render = BoolProperty(default=False)
    exec(conv("hide_render"))
    show_name = BoolProperty(default=False)
    exec(conv("show_name"))
    draw_type = StringProperty(default="")
    exec(conv("draw_type"))
    layers = BoolVectorProperty(size=20)
    exec(conv("layers"))
Esempio n. 22
0
class JK_AAR_Constraint_Props(bpy.types.PropertyGroup):
    
    Use: BoolVectorProperty(name="Use", description="Which axes are copied",
        default=(True, True, True), size=3, subtype='EULER')

    Mute: BoolProperty(name="Mute", description="Is this copy constraint muted",
        default=True, options=set())
    
    Influence: FloatProperty(name="Influence", description="Influence of the copy constraint", 
        default=1.0, min=0.0, max=1.0, subtype='FACTOR')
def register():
    bpy.utils.register_module(__name__)

    # space_userprefs.py
    from bpy.props import StringProperty, EnumProperty, BoolVectorProperty
    from bpy.types import WindowManager

    def addon_filter_items(self, context):
        import addon_utils

        items = [
            ('All', "All", "All Add-ons"),
            ('User', "User", "All Add-ons Installed by User"),
            ('Enabled', "Enabled", "All Enabled Add-ons"),
            ('Disabled', "Disabled", "All Disabled Add-ons"),
        ]

        items_unique = set()

        for mod in addon_utils.modules(refresh=False):
            info = addon_utils.module_bl_info(mod)
            items_unique.add(info["category"])

        items.extend([(cat, cat, "") for cat in sorted(items_unique)])
        return items

    WindowManager.addon_search = StringProperty(
        name="Search",
        description="Search within the selected filter",
        options={'TEXTEDIT_UPDATE'},
    )

    WindowManager.addon_filter = EnumProperty(
        items=addon_filter_items,
        name="Category",
        description="Filter add-ons by category",
    )

    WindowManager.addon_support = EnumProperty(
        items=[('OFFICIAL', "Official", "Officially supported"),
               ('COMMUNITY', "Community",
                "Maintained by community developers"),
               ('TESTING', "Testing",
                "Newly contributed scripts (excluded from release builds)")],
        name="Support",
        description="Display support level",
        default={'OFFICIAL', 'COMMUNITY'},
        options={'ENUM_FLAG'},
    )

    WindowManager.addon_show_errors = BoolVectorProperty(
        description="Display add-ons errors",
        default=(False, False),
        size=2,
    )
Esempio n. 24
0
def register():
	bpy.utils.register_module(__name__)

	# bpy.utils.register_class(HelloWorldPanel)
	# bpy.utils.register_class(Viewport)
	bpy.types.Scene.GI = bpy.props.BoolProperty(default=True)
	bpy.types.Scene.Engines = bpy.props.BoolProperty(default=True)
	bpy.types.Scene.DMC = bpy.props.BoolProperty(default=True)
	bpy.types.Scene.Camera = bpy.props.BoolProperty(default=True)
	bpy.types.Scene.Camera_Preserve_Exposure = bpy.props.BoolProperty(default=True)

	bpy.types.Scene.shutter_speed = bpy.props.FloatProperty(name="Shutter Speed", default=500.0, precision=2,
		options={'HIDDEN'}, subtype='NONE', unit='NONE')
	bpy.types.Scene.f_number = bpy.props.FloatProperty(name="Aperture", default=8.0, precision=2, update=exposure)

	bpy.types.Scene.Material = bpy.props.BoolProperty(default=True)
	bpy.types.Scene.Material_shadeless = bpy.props.BoolProperty(default=True)

	bpy.types.Scene.proxy_load_path = bpy.props.StringProperty \
			(
			name="Root Path",
			default="",
			description="Proxy file path",
			subtype='FILE_PATH'
			)

	# bpy.utils.register_class(ProxyMaterialSave)
	# bpy.utils.register_class(ProxyMaterialLoad)

	bpy.types.VRAY_DP_tools.append(Material.Vray_tools_panel)

	bpy.types.Scene.RPass = BoolVectorProperty(size=len(RP.RenderChannelColor.ColorChannelNamesMenu),
		update=RP.renderpass_bool)
	bpy.types.Scene.RPassOther = BoolVectorProperty(size=len(RP.RPSettings.RPassOther), update=RP.renderpass_bool_other)
	bpy.types.Scene.RPassCustom = IntVectorProperty(size=len(RP.RenderChannelColor.ColorChannelNamesMenu))
	bpy.types.Scene.RPassSwitch = BoolProperty(default=False, update=RP.renderpass_onoff)


	#
	bpy.types.Scene.prop_group = PointerProperty(type=LP.LPGroup)
Esempio n. 25
0
class RPR_RenderDevices(bpy.types.PropertyGroup):
    """ Properties for render devices: CPU, GPUs """
    def update_states(self, context):
        if len(pyrpr.Context.gpu_devices) > 0:
            # selecting first gpu if no gpu and cpu is selected
            if not any(self.gpu_states) and not self.cpu_state:
                self.gpu_states[0] = True
        else:
            # if no GPU then cpu always should be enabled
            self.cpu_state = True
        on_settings_changed(self, context)

        # after changing devices its good to reset PreviewEngine and
        # PreviewEngine.rpr_context will be created with updated devices
        from rprblender.engine.preview_engine import PreviewEngine
        PreviewEngine.reset()

    gpu_states: BoolVectorProperty(
        name="",
        description="Use GPU device for rendering",
        size=16,
        # Only first GPU is enabled by default
        default=tuple(i == 0 and bool(pyrpr.Context.gpu_devices)
                      for i in range(16)),
        update=update_states)
    cpu_state: BoolProperty(
        name="",
        description="Use CPU device for rendering",
        default=not pyrpr.Context.gpu_devices,  # True if no GPUs are available
        update=update_states)
    cpu_threads: IntProperty(
        name="CPU Threads",
        description=
        "Number of CPU threads for render, optimal value is about the number of physical CPU cores",
        min=1,
        max=utils.get_cpu_threads_number(),
        default=utils.get_cpu_threads_number(),
        update=on_settings_changed,
    )

    @property
    def available_gpu_states(self):
        return (self.gpu_states[i]
                for i in range(len(pyrpr.Context.gpu_devices)))

    def count(self):
        res = int(self.cpu_state)
        res += sum(int(state) for state in self.available_gpu_states)
        return res

    def has_gpu(self):
        return any(bool(state) for state in self.available_gpu_states)
Esempio n. 26
0
class JK_PG_ARM_Bones(bpy.types.PropertyGroup):

    theme: StringProperty(name='Theme', description="The theme for this bone group",
        default="")

    layers: BoolVectorProperty(name="Layers", description="The layers this group of bones belongs too",
        size=32)

    edit_hide: BoolProperty(name="Hide", description="Show/hide edit bones in this group",
        default=False)

    pose_hide: BoolProperty(name="Hide", description="Show/hide pose bones in this group",
        default=False)
Esempio n. 27
0
class SvDebugPrintNode(bpy.types.Node, SverchCustomTreeNode):
    ''' print socket data to terminal '''
    bl_idname = 'SvDebugPrintNode'
    bl_label = 'Debug print'
    bl_icon = 'CONSOLE'
    sv_icon = 'SV_DEBUG_PRINT'

    base_name = 'Data '
    multi_socket_type = 'SvStringsSocket'

    # I wanted to show the bool so you could turn off and on individual sockets
    # but needs changes in node_s, want to think a bit more before adding an index option to
    # stringsockets, for now draw_button_ext
    print_socket: BoolVectorProperty(name='Print',
                                     default=defaults,
                                     size=32,
                                     update=updateNode)

    print_data: BoolProperty(name='Active',
                             description='Turn on/off printing to stdout',
                             default=True,
                             update=updateNode)

    def sv_init(self, context):
        self.inputs.new('SvStringsSocket', "Data 0")

    def draw_buttons(self, context, layout):
        layout.prop(self, 'print_data')

    def draw_buttons_ext(self, context, layout):
        layout.label(text='Print?')
        for i, socket in enumerate(self.inputs):
            layout.prop(self, "print_socket", index=i, text=socket.name)

    def sv_update(self):
        multi_socket(self, min=1)

    def process(self):
        if not self.print_data:
            return

        if self.id_data.bl_idname == "SverchGroupTreeType":
            instance = self.id_data.instances[0]  ## uh oh..
            if instance.loop_me:
                index = instance.monad["current_index"]
                total = instance.monad["current_total"]
                self.info(f"Iteration/Total:  {index} / {total}")

        for i, socket in enumerate(self.inputs):
            if socket.is_linked and self.print_socket[i]:
                self.info(socket.sv_get(deepcopy=False))
Esempio n. 28
0
class SvDebugPrintNode(bpy.types.Node, SverchCustomTreeNode):
    ''' SvDebugPrintNode '''
    bl_idname = 'SvDebugPrintNode'
    bl_label = 'Debug print'
    bl_icon = 'OUTLINER_OB_EMPTY'

    # I wanted to show the bool so you could turn off and on individual sockets
    # but needs changes in node_s, want to think a bit more before adding an index option to
    # stringsockets, for now draw_button_ext
    defaults = [True for i in range(32)]
    print_socket = BoolVectorProperty(name='Print',
                                      default=defaults,
                                      size=32,
                                      update=updateNode)
    base_name = 'Data '
    multi_socket_type = 'StringsSocket'
    print_data = BoolProperty(name='Active',
                              description='Turn on/off printing to stdout',
                              default=True,
                              update=updateNode)

    def init(self, context):
        socket = self.inputs.new('StringsSocket', "Data 0")

    def draw_buttons(self, context, layout):
        layout.prop(self, 'print_data')

    def draw_buttons_ext(self, context, layout):
        layout.label(text='Print?')
        for i, socket in enumerate(self.inputs):
            layout.prop(self, "print_socket", index=i, text=socket.name)

    def update(self):
        multi_socket(self, min=1)

        if not self.print_data:
            return

        for i, socket in enumerate(self.inputs):
            if socket.links and self.print_socket[i]:
                print(SvGetSocketAnyType(self, socket, deepcopy=False))
        if self.inputs['Data 0'].links:
            self.use_custom_color = True
            self.color = (0.5, 0.5, 1)
        else:
            self.use_custom_color = True
            self.color = (0.05, 0.05, 0.1)

    def update_socket(self, context):
        self.update()
Esempio n. 29
0
class MuCameraProperties(bpy.types.PropertyGroup):
    clearFlags: EnumProperty(items=clearflag_items,
                             name="Clear Flags",
                             default='SKYBOX')
    backgroundColor: FloatVectorProperty(name="Background Color",
                                         size=4,
                                         subtype='COLOR',
                                         min=0.0,
                                         max=1.0,
                                         default=(0.0, 0.0, 0.0, 1.0))
    cullingMask: BoolVectorProperty(size=32,
                                    name="Culling Mask",
                                    subtype='LAYER')
    depth: FloatProperty(name="Depth")
Esempio n. 30
0
class MMDRigid(PropertyGroup):
    name_j = StringProperty(
        name='Name',
        description='Japanese Name',
        default='',
    )

    name_e = StringProperty(
        name='Name(Eng)',
        description='English Name',
        default='',
    )

    collision_group_number = IntProperty(
        name='Collision Group',
        min=0,
        max=16,
        default=1,
    )

    collision_group_mask = BoolVectorProperty(
        name='Collision Group Mask',
        size=16,
        subtype='LAYER',
    )

    type = EnumProperty(
        name='Rigid Type',
        items=[
            (str(Rigid.MODE_STATIC), 'Static', '', 1),
            (str(Rigid.MODE_DYNAMIC), 'Dynamic', '', 2),
            (str(Rigid.MODE_DYNAMIC_BONE), 'Dynamic&BoneTrack', '', 3),
        ],
    )

    shape = EnumProperty(
        name='Shape',
        items=[
            ('SPHERE', 'Sphere', '', 1),
            ('BOX', 'Box', '', 2),
            ('CAPSULE', 'Capsule', '', 3),
        ],
    )

    bone = StringProperty(
        name='Bone',
        description='',
        default='',
    )