понедельник, 13 января 2014 г.

Что это?




Ещё по незнанию написал скрипт Similar Crease Selection, оказалось в блендере есть такая штука, правда только в режиме Edge. Но мож кому пригодится, сделан через bmesh.


import bpy
import bmesh

class SimilarCreaseOperator(bpy.types.Operator):
    """Select edges by crease"""
    bl_idname = "mesh.select_similar_crease"
    bl_label = "Select similar crease"

    RESOLUTION = 0.0001

    @classmethod
    def poll(cls, context):
        return context.mode == 'EDIT_MESH' and context.active_object is not None

    def execute(self, context):
        obj = context.edit_object
        bm = bmesh.from_edit_mesh(obj.data)
        if obj.data.total_edge_sel == 0:
            return {'FINISHED'}

        crease_lay = bm.edges.layers.crease['SubSurfCrease']
        creases = [edge[crease_lay] for edge in bm.edges if edge.select and edge[crease_lay] > self.RESOLUTION]
        if len(creases) == 0:
            return {'FINISHED'}

        for edge in bm.edges:
            edge_crease = edge[crease_lay]
            if not edge.select and edge_crease > self.RESOLUTION:
                for crease in creases:
                    if crease + self.RESOLUTION >= edge_crease and crease - self.RESOLUTION <= edge_crease:
                        edge.select_set(True)

        bmesh.update_edit_mesh(obj.data, False, False)

        return {'FINISHED'}


def register():
    bpy.utils.register_class(SimilarCreaseOperator)


def unregister():
    bpy.utils.unregister_class(SimilarCreaseOperator)


if __name__ == "__main__":
    register()

2 комментария: