Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import bmesh, math, mathutils
- class hide_backface(bpy.types.Operator):
- bl_idname = _common.get_ops_idname('mesh', 'hide_backface')
- bl_label = "裏側を隠す"
- bl_options = {'REGISTER', 'UNDO'}
- show_radian = bpy.props.FloatProperty(name="表示角度", default=math.radians(110), min=0, max=math.radians(180), soft_min=0, soft_max=math.radians(180), step=500, precision=0, subtype='ANGLE', unit='ROTATION')
- @classmethod
- def poll(cls, context):
- try:
- ob = context.active_object
- if ob.mode != 'EDIT' or ob.type != 'MESH': return False
- except: return False
- return True
- def execute(self, context):
- ob, me = context.active_object, context.active_object.data
- bm = bmesh.from_edit_mesh(me)
- view_rotation = context.region_data.view_rotation.copy()
- up_axis = mathutils.Vector((0, 0, 1))
- for vert in bm.verts:
- normal_rotation = up_axis.rotation_difference(ob.matrix_world * vert.normal)
- diff_rotation = view_rotation.rotation_difference(normal_rotation)
- vert.hide_set(self.show_radian < diff_rotation.angle)
- bmesh.update_edit_mesh(me)
- return {'FINISHED'}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement