mirror of
https://github.com/drewcassidy/TexTools-Blender
synced 2024-09-01 14:54:44 +00:00
78 lines
1.8 KiB
Python
78 lines
1.8 KiB
Python
|
import bpy
|
||
|
import bmesh
|
||
|
import operator
|
||
|
from mathutils import Vector
|
||
|
from collections import defaultdict
|
||
|
from math import pi
|
||
|
import math
|
||
|
|
||
|
from . import utilities_meshtex
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
class op(bpy.types.Operator):
|
||
|
bl_idname = "uv.textools_meshtex_trim"
|
||
|
bl_label = "Trim"
|
||
|
bl_description = "Trim Mesh Texture"
|
||
|
bl_options = {'REGISTER', 'UNDO'}
|
||
|
|
||
|
@classmethod
|
||
|
def poll(cls, context):
|
||
|
if not bpy.context.active_object or bpy.context.active_object.mode != 'OBJECT':
|
||
|
return False
|
||
|
|
||
|
if len(bpy.context.selected_objects) >= 1:
|
||
|
# Find a UV mesh
|
||
|
if utilities_meshtex.find_uv_mesh(bpy.context.selected_objects):
|
||
|
# Find 1 or more meshes to wrap
|
||
|
if len( utilities_meshtex.find_texture_meshes(bpy.context.selected_objects)) > 0:
|
||
|
return True
|
||
|
|
||
|
return False
|
||
|
|
||
|
def execute(self, context):
|
||
|
trim(self)
|
||
|
return {'FINISHED'}
|
||
|
|
||
|
|
||
|
|
||
|
def trim(self):
|
||
|
# Wrap the mesh texture around the
|
||
|
print("Trim Mesh Texture :)")
|
||
|
|
||
|
# Collect UV mesh
|
||
|
obj_uv = utilities_meshtex.find_uv_mesh(bpy.context.selected_objects)
|
||
|
if not obj_uv:
|
||
|
self.report({'ERROR_INVALID_INPUT'}, "No UV mesh found" )
|
||
|
return
|
||
|
|
||
|
# Collect texture meshes
|
||
|
obj_textures = utilities_meshtex.find_texture_meshes( bpy.context.selected_objects )
|
||
|
|
||
|
|
||
|
if len(obj_textures) == 0:
|
||
|
self.report({'ERROR_INVALID_INPUT'}, "No meshes found for mesh textures" )
|
||
|
return
|
||
|
|
||
|
# Setup Thickness
|
||
|
utilities_meshtex.uv_mesh_fit(obj_uv, obj_textures)
|
||
|
|
||
|
|
||
|
# Apply bool modifier to trim
|
||
|
for obj in obj_textures:
|
||
|
name = "Trim UV"
|
||
|
|
||
|
if name in obj.modifiers:
|
||
|
obj.modifiers.remove( obj.modifiers[name] )
|
||
|
|
||
|
modifier_bool = obj.modifiers.new(name=name, type='BOOLEAN')
|
||
|
modifier_bool.object = obj_uv
|
||
|
|
||
|
bpy.ops.ui.textools_popup('INVOKE_DEFAULT', message="Collapse modifiers before wrapping")
|
||
|
|
||
|
|
||
|
bpy.utils.register_class(op)
|
||
|
|
||
|
|