當前位置: 首頁>>代碼示例>>Python>>正文


Python bmesh.update_edit_mesh方法代碼示例

本文整理匯總了Python中bmesh.update_edit_mesh方法的典型用法代碼示例。如果您正苦於以下問題:Python bmesh.update_edit_mesh方法的具體用法?Python bmesh.update_edit_mesh怎麽用?Python bmesh.update_edit_mesh使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在bmesh的用法示例。


在下文中一共展示了bmesh.update_edit_mesh方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: remove_base_mesh

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def remove_base_mesh(obj):
    bpy.ops.object.mode_set(mode="EDIT")
    bm = bmesh.from_edit_mesh(obj.data)
    bm.verts.ensure_lookup_table()
    verts = []
        
    if "coa_base_sprite" in obj.vertex_groups:
        v_group_idx = obj.vertex_groups["coa_base_sprite"].index
        for i,vert in enumerate(obj.data.vertices):
            for g in vert.groups:
                if g.group == v_group_idx:
                    verts.append(bm.verts[i])
                    break

    bmesh.ops.delete(bm,geom=verts,context=1)
    bm = bmesh.update_edit_mesh(obj.data) 
    bpy.ops.object.mode_set(mode="OBJECT") 
開發者ID:ndee85,項目名稱:coa_tools,代碼行數:19,代碼來源:functions.py

示例2: unwrap_with_bounds

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def unwrap_with_bounds(obj,uv_idx):
    bpy.ops.object.mode_set(mode="EDIT")
    me = obj.data
    bm = bmesh.from_edit_mesh(me)
    bm.verts.ensure_lookup_table()
    uv_layer = bm.loops.layers.uv[uv_idx]
    scale_x = 1.0 / get_local_dimension(obj)[0] * obj.coa_tiles_x
    scale_z = 1.0 / get_local_dimension(obj)[1] * obj.coa_tiles_y
    offset = [get_local_dimension(obj)[2][0] * scale_x , get_local_dimension(obj)[2][1] * scale_z]
    for i,v in enumerate(bm.verts):
        for l in v.link_loops:
            uv_data = l[uv_layer]
            uv_data.uv[0] = (bm.verts[i].co[0] * scale_x) - offset[0]
            uv_data.uv[1] = (bm.verts[i].co[2] * scale_z)+1 - offset[1]
   
    bmesh.update_edit_mesh(me)
    bm.free()
    bpy.ops.object.mode_set(mode="OBJECT") 
開發者ID:ndee85,項目名稱:coa_tools,代碼行數:20,代碼來源:functions.py

示例3: collapse_short_edges

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def collapse_short_edges(bm,obj,threshold=1.0):
    ### collapse short edges
    edges_len_average = 0
    edges_count = 0
    shortest_edge = 10000
    for edge in bm.edges:
        if True:
            edges_count += 1
            length = edge.calc_length()
            edges_len_average += length
            if length < shortest_edge:
                shortest_edge = length
    edges_len_average = edges_len_average/edges_count

    verts = []
    for vert in bm.verts:
        if not vert.is_boundary:
            verts.append(vert)
    bmesh.update_edit_mesh(obj.data)
    
    bmesh.ops.remove_doubles(bm,verts=verts,dist=edges_len_average*threshold)

    bmesh.update_edit_mesh(obj.data) 
開發者ID:ndee85,項目名稱:coa_tools,代碼行數:25,代碼來源:edit_mesh.py

示例4: clean_mesh

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def clean_mesh(self,obj):
        bm = bmesh.from_edit_mesh(obj.data)
        
        faces = []
        for face in bm.faces:
            if not face.hide:
                face_ok = False
                invalid_edges = 0
                for edge in face.edges:
                    if not edge.is_manifold and not edge.is_wire and not edge.is_boundary:
                        invalid_edges += 1
                        
                if invalid_edges == len(face.edges):
                    faces.append(face)
        bmesh.ops.delete(bm,geom=faces,context=3)
        bmesh.update_edit_mesh(obj.data) 
開發者ID:ndee85,項目名稱:coa_tools,代碼行數:18,代碼來源:edit_mesh.py

示例5: main

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def main(context):
    obj = context.active_object
    me = obj.data
    bm = bmesh.from_edit_mesh(me)

    uv_layer = bm.loops.layers.uv.verify()
    bm.faces.layers.tex.verify()  # currently blender needs both layers.

    # adjust UVs
    for f in bm.faces:
        for l in f.loops:
            luv = l[uv_layer]
            if luv.select:
                # apply the location of the vertex as a UV
                luv.uv = l.vert.co.xy

    bmesh.update_edit_mesh(me) 
開發者ID:Microvellum,項目名稱:Fluid-Designer,代碼行數:19,代碼來源:operator_mesh_uv.py

示例6: build

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def build(cls, context, prop):
        verify_facemaps_for_object(context.object)

        me = get_edit_mesh()
        bm = bmesh.from_edit_mesh(me)

        if cls.validate(bm):
            cls.add_floor_facemaps(context, prop)
            selected_faces = [f for f in bm.faces if f.select]
            if selected_faces:
                create_floors(bm, selected_faces, prop)
                select(bm.faces, False)
            else:
                all_faces = [f for f in bm.faces]
                create_floors(bm, all_faces, prop)
            bmesh.update_edit_mesh(me, True)
            return {"FINISHED"}
        return {"CANCELLED"} 
開發者ID:ranjian0,項目名稱:building_tools,代碼行數:20,代碼來源:floor.py

示例7: noise_obj

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def noise_obj(obj, context, self):
    bm = bmesh.from_edit_mesh(obj.data)
    verts = [v for v in bm.verts if v.select]
    if not verts:
        verts = [v for v in bm.verts if v.hide is False]

    for vert in verts:
        noise_pos = self.frequency * vert.co.copy()
        noise_pos.x += self.offset_x
        noise_pos.z += self.offset_y
        noise_pos.z += self.offset_z

        noise_val = None
        if self.noise_type == 'Turbulence':
            noise_val = mathu.noise.turbulence(noise_pos, self.octaves, self.hard, mathu.noise.types.STDPERLIN, self.amplitude_scale, self.frequency_scale)
        elif self.noise_type == 'Fractal':
            noise_val = mathu.noise.fractal(noise_pos, self.amplitude_scale, self.frequency_scale, self.octaves, mathu.noise.types.STDPERLIN)
        else:
            noise_val = mathu.noise.hetero_terrain(noise_pos, self.amplitude_scale, self.frequency_scale, self.octaves, 0, mathu.noise.types.STDPERLIN)

        vert_offset = vert.normal.copy().normalized() * noise_val
        vert.co += vert_offset * self.intensity

    bm.normal_update()
    bmesh.update_edit_mesh(obj.data) 
開發者ID:mifth,項目名稱:mifthtools,代碼行數:27,代碼來源:mi_noise.py

示例8: noise_obj

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def noise_obj(obj, context, self):
    bm = bmesh.from_edit_mesh(obj.data)
    verts = [v for v in bm.verts if v.select]
    if not verts:
        verts = [v for v in bm.verts if v.hide is False]

    for vert in verts:
        noise_pos = self.frequency * vert.co.copy()
        noise_pos.x += self.offset_x
        noise_pos.z += self.offset_y
        noise_pos.z += self.offset_z

        noise_val = None
        if self.noise_type == 'Turbulence':
            noise_val = mathu.noise.turbulence(noise_pos, self.octaves, self.hard, noise_basis="PERLIN_ORIGINAL", amplitude_scale=self.amplitude_scale, frequency_scale=self.frequency_scale)
        elif self.noise_type == 'Fractal':
            noise_val = mathu.noise.fractal(noise_pos, self.amplitude_scale, self.frequency_scale, self.octaves, noise_basis="PERLIN_ORIGINAL")
        else:
            noise_val = mathu.noise.hetero_terrain(noise_pos, self.amplitude_scale, self.frequency_scale, self.octaves, 0, noise_basis="PERLIN_ORIGINAL")

        vert_offset = vert.normal.copy().normalized() * noise_val
        vert.co += vert_offset * self.intensity

    bm.normal_update()
    bmesh.update_edit_mesh(obj.data) 
開發者ID:mifth,項目名稱:mifthtools,代碼行數:27,代碼來源:mi_noise.py

示例9: hide_base_sprite

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def hide_base_sprite(obj):
    context = bpy.context
    selected_object = bpy.data.objects[context.active_object.name]
    if "coa_sprite" in obj and obj.type == "MESH":
        orig_mode = obj.mode
        context.scene.objects.active = obj
        bpy.ops.object.mode_set(mode="OBJECT")
        bpy.ops.object.mode_set(mode="EDIT")
        me = obj.data
        bm = bmesh.from_edit_mesh(me)
        bm.verts.ensure_lookup_table()
        
        vertex_idxs = []
        if "coa_base_sprite" in obj.vertex_groups:
            v_group_idx = obj.vertex_groups["coa_base_sprite"].index
            for i,vert in enumerate(obj.data.vertices):
                for g in vert.groups:
                    if g.group == v_group_idx:
                        vertex_idxs.append(i)
                    
        for idx in vertex_idxs:
            vert = bm.verts[idx]
            vert.hide = True
            vert.select = False
            for edge in vert.link_edges:
                edge.hide = True
                edge.select = False
            for face in vert.link_faces:
                face.hide = obj.data.coa_hide_base_sprite
                face.select = False
                
        if "coa_base_sprite" in obj.modifiers:
            mod = obj.modifiers["coa_base_sprite"]
            mod.show_viewport = obj.data.coa_hide_base_sprite
            mod.show_render = obj.data.coa_hide_base_sprite
            
        bmesh.update_edit_mesh(me)               
        bpy.ops.object.mode_set(mode=orig_mode)                      
    context.scene.objects.active = selected_object 
開發者ID:ndee85,項目名稱:coa_tools,代碼行數:41,代碼來源:functions.py

示例10: update_uv_unwrap

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def update_uv_unwrap(context):
    obj = context.active_object
    me = obj.data
    bm = bmesh.from_edit_mesh(me)
    
    ### pin uv boundary vertex
    uv_layer = bm.loops.layers.uv.active
    for vert in bm.verts:
        
        uv_vert = get_uv_from_vert(uv_layer, vert)
        if uv_vert != None:
            pass

    bmesh.update_edit_mesh(me) 
開發者ID:ndee85,項目名稱:coa_tools,代碼行數:16,代碼來源:functions.py

示例11: remove_base_sprite

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def remove_base_sprite(obj):
    bpy.context.scene.objects.active = obj
    obj.hide = False
    bpy.ops.object.mode_set(mode="EDIT")
    bm = bmesh.from_edit_mesh(obj.data)
    bm.verts.ensure_lookup_table()
    verts = []

    if "coa_base_sprite" in obj.vertex_groups and obj.data.coa_hide_base_sprite:
        v_group_idx = obj.vertex_groups["coa_base_sprite"].index
        for i,vert in enumerate(obj.data.vertices):
            for g in vert.groups:
                if g.group == v_group_idx:
                    verts.append(bm.verts[i])
                    break

    bpy.ops.mesh.reveal()
    bpy.ops.mesh.select_all(action='SELECT')
    bpy.ops.mesh.quads_convert_to_tris(quad_method='BEAUTY', ngon_method='BEAUTY')


    bmesh.ops.delete(bm,geom=verts,context=1)
    bm = bmesh.update_edit_mesh(obj.data)
    bpy.ops.object.mode_set(mode="OBJECT")



##### get mesh data like vertices, edges, triangles and uvs   ##### Start 
開發者ID:ndee85,項目名稱:coa_tools,代碼行數:30,代碼來源:export_dragonbones.py

示例12: clean_boundary_edges

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def clean_boundary_edges(bm,obj):
    edges_len_average, shortest_edge = get_average_edge_length(bm,obj)
    edges = []
    
    for edge in bm.edges:
        if edge.calc_length() < edges_len_average*.12 and not edge.tag:
            edges.append(edge)
    bmesh.ops.collapse(bm,edges=edges,uvs=False)        
    bmesh.update_edit_mesh(obj.data) 
開發者ID:ndee85,項目名稱:coa_tools,代碼行數:11,代碼來源:edit_mesh.py

示例13: average_edge_cuts

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def average_edge_cuts(bm,obj,cuts=1):
    ### collapse short edges
    edges_len_average, shortest_edge = get_average_edge_length(bm,obj)
    
    subdivide_edges = []
    for edge in bm.edges:
        cut_count = int(edge.calc_length()/shortest_edge)*cuts
        if cut_count < 0:
            cut_count = 0
        if not edge.is_boundary:
            subdivide_edges.append([edge,cut_count])
    for edge in subdivide_edges:
        bmesh.ops.subdivide_edges(bm,edges=[edge[0]],cuts=edge[1])
        bmesh.update_edit_mesh(obj.data) 
開發者ID:ndee85,項目名稱:coa_tools,代碼行數:16,代碼來源:edit_mesh.py

示例14: triangle_fill

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def triangle_fill(bm,obj):
    edges = []
    for edge in bm.edges:
        if edge.select == True:
            edges.append(edge)
    triangle_fill = bmesh.ops.triangle_fill(bm,edges=edges,use_beauty=True)
    bmesh.update_edit_mesh(obj.data)
    if triangle_fill["geom"] == []:
        return False
    else:
        return True 
開發者ID:ndee85,項目名稱:coa_tools,代碼行數:13,代碼來源:edit_mesh.py

示例15: triangulate

# 需要導入模塊: import bmesh [as 別名]
# 或者: from bmesh import update_edit_mesh [as 別名]
def triangulate(bm,obj):
    bmesh.ops.triangulate(bm,faces=bm.faces) 
    bmesh.update_edit_mesh(obj.data) 
開發者ID:ndee85,項目名稱:coa_tools,代碼行數:5,代碼來源:edit_mesh.py


注:本文中的bmesh.update_edit_mesh方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。