コード例 #1
0
def update_convex_hull_margins(obj):
    """

    :param obj:
    :type obj:
    :return:
    :rtype:
    """
    bbox = obj.scs_props.get("coll_convex_bbox", None)
    bbcenter = obj.scs_props.get("coll_convex_bbcenter", None)
    # print(' oo bbox_width: %s - bbox_height: %s - bbox_depth: %s' % (bbox[0], bbox[1], bbox[2]))
    # print(' oo bbcenter: <%s, %s, %s>' % (bbcenter[0], bbcenter[1], bbcenter[2]))
    verts = obj.scs_props.get("coll_convex_verts", None)
    verts_orig = obj.scs_props.get("coll_convex_verts_orig", None)
    if bbox and bbcenter and verts and verts_orig:
        margin = obj.scs_props.locator_collider_margin
        scaling = _math.scaling_width_margin(bbox, margin)
        # print(' oo margin: %s - scaling: <%s, %s, %s>' % (margin, scaling[0], scaling[1], scaling[2]))

        # APPLY THE SCALE TO OBJECT VERTICES
        scaled_verts = []
        for vert_orig in verts_orig:
            vert_loc = []
            for axis in range(3):
                length = vert_orig[axis] - bbcenter[axis]
                new_length = length * scaling[axis]
                vert_loc.append(bbcenter[axis] + new_length)
            scaled_verts.append(tuple(vert_loc))
        obj.scs_props["coll_convex_verts"] = scaled_verts
    return
コード例 #2
0
ファイル: object.py プロジェクト: rridhan/BlenderTools
def update_convex_hull_margins(obj):
    """

    :param obj:
    :type obj:
    :return:
    :rtype:
    """
    bbox = obj.scs_props.get("coll_convex_bbox", None)
    bbcenter = obj.scs_props.get("coll_convex_bbcenter", None)
    # print(' oo bbox_width: %s - bbox_height: %s - bbox_depth: %s' % (bbox[0], bbox[1], bbox[2]))
    # print(' oo bbcenter: <%s, %s, %s>' % (bbcenter[0], bbcenter[1], bbcenter[2]))
    verts = obj.scs_props.get("coll_convex_verts", None)
    verts_orig = obj.scs_props.get("coll_convex_verts_orig", None)
    if bbox and bbcenter and verts and verts_orig:
        margin = obj.scs_props.locator_collider_margin
        scaling = _math.scaling_width_margin(bbox, margin)
        # print(' oo margin: %s - scaling: <%s, %s, %s>' % (margin, scaling[0], scaling[1], scaling[2]))

        # APPLY THE SCALE TO OBJECT VERTICES
        scaled_verts = []
        for vert_orig in verts_orig:
            vert_loc = []
            for axis in range(3):
                length = vert_orig[axis] - bbcenter[axis]
                new_length = length * scaling[axis]
                vert_loc.append(bbcenter[axis] + new_length)
            scaled_verts.append(tuple(vert_loc))
        obj.scs_props["coll_convex_verts"] = scaled_verts
    return
コード例 #3
0
    def set_locators_coll_draw_size(obj):
        """Set Collision Locator drawing style for Empty object.

        :param obj: Blender Object
        :type obj: bpy.types.Object
        """
        new_draw_size = 0.5
        if obj.scs_props.locator_collider_type == 'Box':
            bigest_value = max(obj.scs_props.locator_collider_box_x,
                               obj.scs_props.locator_collider_box_y,
                               obj.scs_props.locator_collider_box_z)
            new_draw_size = (0.1 * bigest_value) * 12
        elif obj.scs_props.locator_collider_type in ('Sphere', 'Capsule',
                                                     'Cylinder'):
            new_draw_size = (0.1 * obj.scs_props.locator_collider_dia) * 12
        elif obj.scs_props.locator_collider_type == 'Convex':
            bbox = obj.scs_props.get("coll_convex_bbox", None)
            bbcenter = obj.scs_props.get("coll_convex_bbcenter", None)
            if bbox and bbcenter:
                scaling = _math_utils.scaling_width_margin(
                    bbox, obj.scs_props.locator_collider_margin)
                val = []
                for axis in range(3):
                    val.append(
                        (bbox[axis] + abs(bbcenter[axis])) * scaling[axis])
                bigest_value = max(val)
                new_draw_size = (0.1 * bigest_value) * 12
        _object_utils.set_attr_if_different(obj, "empty_draw_size",
                                            new_draw_size)
        _object_utils.set_attr_if_different(obj, "empty_draw_type",
                                            'PLAIN_AXES')
コード例 #4
0
ファイル: core.py プロジェクト: P-casper1/BlenderTools
    def set_locators_coll_draw_size(obj):
        """Set Collision Locator drawing style for Empty object.

        :param obj: Blender Object
        :type obj: bpy.types.Object
        """
        new_draw_size = 0.5
        if obj.scs_props.locator_collider_type == 'Box':
            bigest_value = max(obj.scs_props.locator_collider_box_x, obj.scs_props.locator_collider_box_y, obj.scs_props.locator_collider_box_z)
            new_draw_size = (0.1 * bigest_value) * 12
        elif obj.scs_props.locator_collider_type in ('Sphere', 'Capsule', 'Cylinder'):
            new_draw_size = (0.1 * obj.scs_props.locator_collider_dia) * 12
        elif obj.scs_props.locator_collider_type == 'Convex':
            bbox = obj.scs_props.get("coll_convex_bbox", None)
            bbcenter = obj.scs_props.get("coll_convex_bbcenter", None)
            if bbox and bbcenter:
                scaling = _math_utils.scaling_width_margin(bbox, obj.scs_props.locator_collider_margin)
                val = []
                for axis in range(3):
                    val.append((bbox[axis] + abs(bbcenter[axis])) * scaling[axis])
                bigest_value = max(val)
                new_draw_size = (0.1 * bigest_value) * 12
        _object_utils.set_attr_if_different(obj, "empty_draw_size", new_draw_size)
        _object_utils.set_attr_if_different(obj, "empty_draw_type", 'PLAIN_AXES')