From 1642e2888c296d71b2facd1a607f24a5992bb164 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 22 Apr 2012 23:51:50 +0000 Subject: rename Mesh.uv_loop_layers --> uv_layers add filtering for document generator to support --partial bpy.types.SomeType --- doc/python_api/rst/include__bmesh.rst | 13 +++-- doc/python_api/rst/info_gotcha.rst | 2 + doc/python_api/sphinx_doc_gen.py | 21 ++++++-- release/scripts/startup/bl_operators/mesh.py | 2 +- release/scripts/startup/bl_operators/object.py | 6 +-- .../startup/bl_operators/uvcalc_follow_active.py | 2 +- .../startup/bl_operators/uvcalc_lightmap.py | 4 +- .../startup/bl_operators/uvcalc_smart_project.py | 2 +- source/blender/makesrna/intern/rna_mesh.c | 62 +++++++++++----------- source/tests/bl_mesh_modifiers.py | 2 +- 10 files changed, 64 insertions(+), 52 deletions(-) diff --git a/doc/python_api/rst/include__bmesh.rst b/doc/python_api/rst/include__bmesh.rst index 24f113e7b50..212ab4e4708 100644 --- a/doc/python_api/rst/include__bmesh.rst +++ b/doc/python_api/rst/include__bmesh.rst @@ -32,12 +32,11 @@ For an overview of BMesh data types and how they reference each other see: .. warning:: - TODO Items Are + TODO items are... * add access to BMesh **walkers** - * add a way to re-tessellate an editmode bmesh. - * add deform vert custom-data access. - + * add api for calling BMesh operators (unrelated to bpy.ops) + * add custom-data manipulation functions add/remove/rename. Example Script -------------- @@ -110,8 +109,8 @@ Here are some examples ... shape_lay = bm.verts.layers.shape["Key.001"] for vert in bm.verts: - shape = vert[shape_lay] - print("Vert Shape: %f, %f, %f" % (shape.x, shape.y, shape.z)) + shape = vert[shape_lay] + print("Vert Shape: %f, %f, %f" % (shape.x, shape.y, shape.z)) .. code-block:: python @@ -125,7 +124,7 @@ Here are some examples ... for vert in bm.verts: dvert = vert[dvert_lay] - + if group_index in dvert: print("Weight %f" % dvert[group_index]) else: diff --git a/doc/python_api/rst/info_gotcha.rst b/doc/python_api/rst/info_gotcha.rst index 25ef5175976..eb312799b41 100644 --- a/doc/python_api/rst/info_gotcha.rst +++ b/doc/python_api/rst/info_gotcha.rst @@ -132,6 +132,8 @@ write useful tools in python which are also fast to execute while in edit-mode. For the time being this limitation just has to be worked around but we're aware its frustrating needs to be addressed. +.. _info_gotcha_mesh_faces: + NGons and Tessellation Faces ============================ diff --git a/doc/python_api/sphinx_doc_gen.py b/doc/python_api/sphinx_doc_gen.py index 54a3868c0d7..bfef94b35d7 100644 --- a/doc/python_api/sphinx_doc_gen.py +++ b/doc/python_api/sphinx_doc_gen.py @@ -230,10 +230,10 @@ if not ARGS.partial: else: # can manually edit this too: - FILTER_BPY_OPS = ("import.scene", ) # allow - FILTER_BPY_TYPES = ("bpy_struct", "Operator", "ID") # allow + #FILTER_BPY_OPS = ("import.scene", ) # allow + #FILTER_BPY_TYPES = ("bpy_struct", "Operator", "ID") # allow EXCLUDE_INFO_DOCS = True - EXCLUDE_MODULES = ( + EXCLUDE_MODULES = [ "aud", "bge", "bge.constraints", @@ -261,7 +261,7 @@ else: "mathutils", "mathutils.geometry", "mathutils.noise", - ) + ] # ------ # Filter @@ -269,7 +269,18 @@ else: # TODO, support bpy.ops and bpy.types filtering import fnmatch m = None - EXCLUDE_MODULES = tuple([m for m in EXCLUDE_MODULES if not fnmatch.fnmatchcase(m, ARGS.partial)]) + EXCLUDE_MODULES = [m for m in EXCLUDE_MODULES if not fnmatch.fnmatchcase(m, ARGS.partial)] + + # special support for bpy.types.XXX + FILTER_BPY_OPS = tuple([m[8:] for m in ARGS.partial.split(":") if m.startswith("bpy.ops.")]) + if FILTER_BPY_OPS: + EXCLUDE_MODULES.remove("bpy.ops") + + FILTER_BPY_TYPES = tuple([m[10:] for m in ARGS.partial.split(":") if m.startswith("bpy.types.")]) + if FILTER_BPY_TYPES: + EXCLUDE_MODULES.remove("bpy.types") + + print(FILTER_BPY_TYPES) EXCLUDE_INFO_DOCS = (not fnmatch.fnmatchcase("info", ARGS.partial)) diff --git a/release/scripts/startup/bl_operators/mesh.py b/release/scripts/startup/bl_operators/mesh.py index a54de25dbc7..4ed43a68e48 100644 --- a/release/scripts/startup/bl_operators/mesh.py +++ b/release/scripts/startup/bl_operators/mesh.py @@ -79,7 +79,7 @@ class MeshMirrorUV(Operator): polys = mesh.polygons loops = mesh.loops verts = mesh.vertices - uv_loops = mesh.uv_loop_layers.active.data + uv_loops = mesh.uv_layers.active.data nbr_polys = len(polys) mirror_pm = {} diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py index 4ade55c0af6..8268d7a9514 100644 --- a/release/scripts/startup/bl_operators/object.py +++ b/release/scripts/startup/bl_operators/object.py @@ -489,7 +489,7 @@ class JoinUVs(Operator): # seems to be the fastest way to create an array uv_array = array.array('f', [0.0] * 2) * nbr_loops - mesh.uv_loop_layers.active.data.foreach_get("uv", uv_array) + mesh.uv_layers.active.data.foreach_get("uv", uv_array) objects = context.selected_editable_objects[:] @@ -516,10 +516,10 @@ class JoinUVs(Operator): ), ) else: - uv_other = mesh_other.uv_loop_layers.active + uv_other = mesh_other.uv_layers.active if not uv_other: mesh_other.uv_textures.new() - uv_other = mesh_other.uv_loop_layers.active + uv_other = mesh_other.uv_layers.active if not uv_other: self.report({'ERROR'}, "Could not add " "a new UV map tp object " diff --git a/release/scripts/startup/bl_operators/uvcalc_follow_active.py b/release/scripts/startup/bl_operators/uvcalc_follow_active.py index 99ae5a3e436..d6f657683a5 100644 --- a/release/scripts/startup/bl_operators/uvcalc_follow_active.py +++ b/release/scripts/startup/bl_operators/uvcalc_follow_active.py @@ -59,7 +59,7 @@ def extend(obj, operator, EXTEND_MODE): vidx_source = face_source.vertices vidx_target = face_target.vertices - uv_layer = me.uv_loop_layers.active.data + uv_layer = me.uv_layers.active.data uvs_source = [uv_layer[i].uv for i in face_source.loop_indices] uvs_target = [uv_layer[i].uv for i in face_target.loop_indices] diff --git a/release/scripts/startup/bl_operators/uvcalc_lightmap.py b/release/scripts/startup/bl_operators/uvcalc_lightmap.py index 417ae89218c..3bd0d6fa4cc 100644 --- a/release/scripts/startup/bl_operators/uvcalc_lightmap.py +++ b/release/scripts/startup/bl_operators/uvcalc_lightmap.py @@ -88,7 +88,7 @@ class prettyface(object): self.children = [] else: # blender face - uv_layer = data.id_data.uv_loop_layers.active.data + uv_layer = data.id_data.uv_layers.active.data self.uv = [uv_layer[i].uv for i in data.loop_indices] # cos = [v.co for v in data] @@ -158,7 +158,7 @@ class prettyface(object): I = [i for a, i in angles_co] #~ fuv = f.uv - uv_layer = f.id_data.uv_loop_layers.active.data + uv_layer = f.id_data.uv_layers.active.data fuv = [uv_layer[i].uv for i in f.loops] # XXX25 if self.rot: diff --git a/release/scripts/startup/bl_operators/uvcalc_smart_project.py b/release/scripts/startup/bl_operators/uvcalc_smart_project.py index bb3086f711b..1e18825a155 100644 --- a/release/scripts/startup/bl_operators/uvcalc_smart_project.py +++ b/release/scripts/startup/bl_operators/uvcalc_smart_project.py @@ -889,7 +889,7 @@ def main(context, if not me.uv_textures: # Mesh has no UV Coords, don't bother. me.uv_textures.new() - uv_layer = me.uv_loop_layers.active.data + uv_layer = me.uv_layers.active.data me_verts = list(me.vertices) if USER_ONLY_SELECTED_FACES: diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index 78f62194735..d5e79ab971c 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -509,19 +509,19 @@ static void rna_CustomDataLayer_clone_set(PointerRNA *ptr, CustomData *data, int CustomData_set_layer_clone_index(data, type, n); } -/* uv_loop_layers */ +/* uv_layers */ -DEFINE_CUSTOMDATA_LAYER_COLLECTION(uv_loop_layer, ldata, CD_MLOOPUV) -DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_loop_layer, ldata, CD_MLOOPUV, active, MeshUVLoopLayer) -DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_loop_layer, ldata, CD_MLOOPUV, clone, MeshUVLoopLayer) -DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_loop_layer, ldata, CD_MLOOPUV, stencil, MeshUVLoopLayer) -DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_loop_layer, ldata, CD_MLOOPUV, render, MeshUVLoopLayer) +DEFINE_CUSTOMDATA_LAYER_COLLECTION(uv_layer, ldata, CD_MLOOPUV) +DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_layer, ldata, CD_MLOOPUV, active, MeshUVLoopLayer) +DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_layer, ldata, CD_MLOOPUV, clone, MeshUVLoopLayer) +DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_layer, ldata, CD_MLOOPUV, stencil, MeshUVLoopLayer) +DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_layer, ldata, CD_MLOOPUV, render, MeshUVLoopLayer) /* MeshUVLoopLayer */ static char *rna_MeshUVLoopLayer_path(PointerRNA *ptr) { - return BLI_sprintfN("uv_loop_layer[\"%s\"]", ((CustomDataLayer*)ptr->data)->name); + return BLI_sprintfN("uv_layers[\"%s\"]", ((CustomDataLayer*)ptr->data)->name); } static void rna_MeshUVLoopLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) @@ -1089,7 +1089,7 @@ static char *rna_FaceCustomData_data_path(PointerRNA *ptr, char *collection, int static char *rna_MeshUVLoop_path(PointerRNA *ptr) { - return rna_LoopCustomData_data_path(ptr, "uv_loop_layers", CD_MLOOPUV); + return rna_LoopCustomData_data_path(ptr, "uv_layers", CD_MLOOPUV); } static char *rna_MeshTextureFace_path(PointerRNA *ptr) @@ -2291,7 +2291,7 @@ static void rna_def_loop_colors(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); } -static void rna_def_uv_loop_layers(BlenderRNA *brna, PropertyRNA *cprop) +static void rna_def_uv_layers(BlenderRNA *brna, PropertyRNA *cprop) { StructRNA *srna; PropertyRNA *prop; @@ -2306,15 +2306,15 @@ static void rna_def_uv_loop_layers(BlenderRNA *brna, PropertyRNA *cprop) prop = RNA_def_property(srna, "active", PROP_POINTER, PROP_UNSIGNED); RNA_def_property_struct_type(prop, "MeshUVLoopLayer"); - RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_loop_layer_active_get", - "rna_Mesh_uv_loop_layer_active_set", NULL, NULL); + RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_layer_active_get", + "rna_Mesh_uv_layer_active_set", NULL, NULL); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Active UV loop layer", "Active UV loop layer"); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); prop = RNA_def_property(srna, "active_index", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_funcs(prop, "rna_Mesh_uv_loop_layer_active_index_get", - "rna_Mesh_uv_loop_layer_active_index_set", "rna_Mesh_uv_loop_layer_index_range"); + RNA_def_property_int_funcs(prop, "rna_Mesh_uv_layer_active_index_get", + "rna_Mesh_uv_layer_active_index_set", "rna_Mesh_uv_layer_index_range"); RNA_def_property_ui_text(prop, "Active UV loop layer Index", "Active UV loop layer index"); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); } @@ -2385,7 +2385,7 @@ static void rna_def_polygon_string_layers(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_function_return(func, parm); } -/* mesh.uv_layers */ +/* mesh.tessface_uv_layers */ static void rna_def_tessface_uv_textures(BlenderRNA *brna, PropertyRNA *cprop) { StructRNA *srna; @@ -2446,7 +2446,7 @@ static void rna_def_uv_textures(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_function_return(func, parm); /* - func = RNA_def_function(srna, "remove", "rna_Mesh_uv_layers_remove"); + func = RNA_def_function(srna, "remove", "rna_Mesh_uv_texture_layers_remove"); RNA_def_function_ui_description(func, "Remove a vertex color layer"); RNA_def_function_flag(func, FUNC_USE_REPORTS); parm = RNA_def_pointer(func, "layer", "Layer", "", "The layer to remove"); @@ -2519,36 +2519,36 @@ static void rna_def_mesh(BlenderRNA *brna) "Use another mesh for texture indices (vertex indices must be aligned)"); /* UV loop layers */ - prop = RNA_def_property(srna, "uv_loop_layers", PROP_COLLECTION, PROP_NONE); + prop = RNA_def_property(srna, "uv_layers", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "ldata.layers", "ldata.totlayer"); - RNA_def_property_collection_funcs(prop, "rna_Mesh_uv_loop_layers_begin", NULL, NULL, NULL, - "rna_Mesh_uv_loop_layers_length", NULL, NULL, NULL); + RNA_def_property_collection_funcs(prop, "rna_Mesh_uv_layers_begin", NULL, NULL, NULL, + "rna_Mesh_uv_layers_length", NULL, NULL, NULL); RNA_def_property_struct_type(prop, "MeshUVLoopLayer"); RNA_def_property_ui_text(prop, "UV Loop Layers", "All UV loop layers"); - rna_def_uv_loop_layers(brna, prop); + rna_def_uv_layers(brna, prop); - prop = RNA_def_property(srna, "uv_loop_layer_clone", PROP_POINTER, PROP_UNSIGNED); + prop = RNA_def_property(srna, "uv_layer_clone", PROP_POINTER, PROP_UNSIGNED); RNA_def_property_struct_type(prop, "MeshUVLoopLayer"); - RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_loop_layer_clone_get", - "rna_Mesh_uv_loop_layer_clone_set", NULL, NULL); + RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_layer_clone_get", + "rna_Mesh_uv_layer_clone_set", NULL, NULL); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Clone UV loop layer", "UV loop layer to be used as cloning source"); - prop = RNA_def_property(srna, "uv_loop_layer_clone_index", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_funcs(prop, "rna_Mesh_uv_loop_layer_clone_index_get", - "rna_Mesh_uv_loop_layer_clone_index_set", "rna_Mesh_uv_loop_layer_index_range"); + prop = RNA_def_property(srna, "uv_layer_clone_index", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_funcs(prop, "rna_Mesh_uv_layer_clone_index_get", + "rna_Mesh_uv_layer_clone_index_set", "rna_Mesh_uv_layer_index_range"); RNA_def_property_ui_text(prop, "Clone UV loop layer Index", "Clone UV loop layer index"); - prop = RNA_def_property(srna, "uv_loop_layer_stencil", PROP_POINTER, PROP_UNSIGNED); + prop = RNA_def_property(srna, "uv_layer_stencil", PROP_POINTER, PROP_UNSIGNED); RNA_def_property_struct_type(prop, "MeshUVLoopLayer"); - RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_loop_layer_stencil_get", - "rna_Mesh_uv_loop_layer_stencil_set", NULL, NULL); + RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_layer_stencil_get", + "rna_Mesh_uv_layer_stencil_set", NULL, NULL); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Mask UV loop layer", "UV loop layer to mask the painted area"); - prop = RNA_def_property(srna, "uv_loop_layer_stencil_index", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_funcs(prop, "rna_Mesh_uv_loop_layer_stencil_index_get", - "rna_Mesh_uv_loop_layer_stencil_index_set", "rna_Mesh_uv_loop_layer_index_range"); + prop = RNA_def_property(srna, "uv_layer_stencil_index", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_funcs(prop, "rna_Mesh_uv_layer_stencil_index_get", + "rna_Mesh_uv_layer_stencil_index_set", "rna_Mesh_uv_layer_index_range"); RNA_def_property_ui_text(prop, "Mask UV loop layer Index", "Mask UV loop layer index"); /* Tessellated face UV maps - used by renderers */ diff --git a/source/tests/bl_mesh_modifiers.py b/source/tests/bl_mesh_modifiers.py index 0ab2213c0e1..390679800f6 100644 --- a/source/tests/bl_mesh_modifiers.py +++ b/source/tests/bl_mesh_modifiers.py @@ -260,7 +260,7 @@ def mesh_uv_add(obj): if IS_BMESH: # XXX, odd that we need to do this. until uvs and texface # are separated we will need to keep it - uv_loops = obj.data.uv_loop_layers[-1] + uv_loops = obj.data.uv_layers[-1] uv_list = uv_loops.data[:] for poly in obj.data.polygons: poly_uvs = mesh_bmesh_poly_elems(poly, uv_list) -- cgit v1.2.3