From 3fce2f282644a632fe2768ae516a50e394c1179f Mon Sep 17 00:00:00 2001 From: Arystanbek Dyussenov Date: Tue, 23 Jun 2009 17:52:58 +0000 Subject: - added Mesh.transform - fixed Object.create_dupli_list - continuing OBJ exporter conversion --- source/blender/makesrna/intern/rna_mesh_api.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'source/blender/makesrna/intern/rna_mesh_api.c') diff --git a/source/blender/makesrna/intern/rna_mesh_api.c b/source/blender/makesrna/intern/rna_mesh_api.c index 26fb77777d7..0aa4faeddd8 100644 --- a/source/blender/makesrna/intern/rna_mesh_api.c +++ b/source/blender/makesrna/intern/rna_mesh_api.c @@ -54,8 +54,15 @@ void rna_Mesh_copy_applied(Mesh *me, Scene *sce, Object *ob) } */ -void rna_Mesh_transform(Mesh *me, float **mat) +void rna_Mesh_transform(Mesh *me, float *mat) { + /* TODO: old API transform had recalc_normals option */ + int i; + MVert *mvert= me->mvert; + + for(i= 0; i < mesh->totvert; i++, mvert++) { + Mat4MulVecfl(mat, mvert->co); + } } #if 0 @@ -85,14 +92,13 @@ static void rna_Mesh_verts_add(PointerRNA *ptr, PointerRNA *ptr_item) void RNA_api_mesh(StructRNA *srna) { - /*FunctionRNA *func; - PropertyRNA *prop;*/ + FunctionRNA *func; + PropertyRNA *parm; - /* - func= RNA_def_function(srna, "copy", "rna_Mesh_copy"); - RNA_def_function_ui_description(func, "Copy mesh data."); - prop= RNA_def_pointer(func, "src", "Mesh", "", "A mesh to copy data from."); - RNA_def_property_flag(prop, PROP_REQUIRED);*/ + func= RNA_def_function(srna, "transform", "rna_Mesh_transform"); + RNA_def_function_ui_description(func, "Transform mesh vertices by a matrix."); + parm= RNA_def_float_matrix(func, "matrix", 16, NULL, 0.0f, 0.0f, "", "Matrix.", 0.0f, 0.0f); + RNA_def_property_flag(parm, PROP_REQUIRED); /* func= RNA_def_function(srna, "add_geom", "rna_Mesh_add_geom"); -- cgit v1.2.3 From 3f2fef55c2bbeb1f837b48c76263e3e035d56792 Mon Sep 17 00:00:00 2001 From: Arystanbek Dyussenov Date: Wed, 24 Jun 2009 19:23:34 +0000 Subject: - added API functions: * Main.remove_object * Scene.add_object * Scene.remove_object * Object.convert_to_triface * Object.create_preview_mesh - a small tweak in set_mesh (blenkernel/inter/mesh.c) to make it work on objects having data == NULL --- source/blender/makesrna/intern/rna_mesh_api.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'source/blender/makesrna/intern/rna_mesh_api.c') diff --git a/source/blender/makesrna/intern/rna_mesh_api.c b/source/blender/makesrna/intern/rna_mesh_api.c index 0aa4faeddd8..984e6a5d30f 100644 --- a/source/blender/makesrna/intern/rna_mesh_api.c +++ b/source/blender/makesrna/intern/rna_mesh_api.c @@ -36,6 +36,7 @@ #include "BKE_customdata.h" #include "BKE_DerivedMesh.h" +#include "BLI_arithb.h" #include "DNA_mesh_types.h" #include "DNA_scene_types.h" @@ -60,7 +61,7 @@ void rna_Mesh_transform(Mesh *me, float *mat) int i; MVert *mvert= me->mvert; - for(i= 0; i < mesh->totvert; i++, mvert++) { + for(i= 0; i < me->totvert; i++, mvert++) { Mat4MulVecfl(mat, mvert->co); } } -- cgit v1.2.3 From 1557736756b41dfa8fff4d7c887a7d6da2b1f468 Mon Sep 17 00:00:00 2001 From: Arystanbek Dyussenov Date: Sun, 28 Jun 2009 13:29:03 +0000 Subject: OBJ exporter working (Python 3.0), but needs testing and fixing. Current issues: - NURBS - needs API additions - "all scenes" export - cannot switch scene in bpy - normal calculation, disabled - duplis - need testing, only dupliverts tested - matrix problem - UI, 18 options currently don't fit into filesel panel, will do manual lay out once it's available - probably others... BPY: - made operator "execute" method required to avoid crash - added bpy.sys module which replicates old "sys" module API: - replaced create_*_mesh with a single create_mesh accepting type parameter - added Mesh.create_copy to create a copy of a mesh with 0 users Ran `dos2unix` on source/blender/python/SConscript --- source/blender/makesrna/intern/rna_mesh_api.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'source/blender/makesrna/intern/rna_mesh_api.c') diff --git a/source/blender/makesrna/intern/rna_mesh_api.c b/source/blender/makesrna/intern/rna_mesh_api.c index 984e6a5d30f..f4bc52bc517 100644 --- a/source/blender/makesrna/intern/rna_mesh_api.c +++ b/source/blender/makesrna/intern/rna_mesh_api.c @@ -36,6 +36,8 @@ #include "BKE_customdata.h" #include "BKE_DerivedMesh.h" +#include "BKE_mesh.h" + #include "BLI_arithb.h" #include "DNA_mesh_types.h" @@ -66,6 +68,14 @@ void rna_Mesh_transform(Mesh *me, float *mat) } } +Mesh *rna_Mesh_create_copy(Mesh *me) +{ + Mesh *ret= copy_mesh(me); + ret->id.us--; + + return ret; +} + #if 0 /* extern struct EditVert *addvertlist(EditMesh *em, float *vec, struct EditVert *example); */ @@ -101,6 +111,11 @@ void RNA_api_mesh(StructRNA *srna) parm= RNA_def_float_matrix(func, "matrix", 16, NULL, 0.0f, 0.0f, "", "Matrix.", 0.0f, 0.0f); RNA_def_property_flag(parm, PROP_REQUIRED); + func= RNA_def_function(srna, "create_copy", "rna_Mesh_create_copy"); + RNA_def_function_ui_description(func, "Create a copy of this Mesh datablock."); + parm= RNA_def_pointer(func, "mesh", "Mesh", "", "Mesh, remove it if it is only used for export."); + RNA_def_function_return(func, parm); + /* func= RNA_def_function(srna, "add_geom", "rna_Mesh_add_geom"); RNA_def_function_ui_description(func, "Add geometry data to mesh."); -- cgit v1.2.3 From 6ede28a05ae7cfbf8159277f3618b763d1fbb2c2 Mon Sep 17 00:00:00 2001 From: Arystanbek Dyussenov Date: Wed, 1 Jul 2009 18:23:11 +0000 Subject: - started OBJ importer conversion - added Mesh.add_uv_layer, Object.add_vertex_group --- source/blender/makesrna/intern/rna_mesh_api.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'source/blender/makesrna/intern/rna_mesh_api.c') diff --git a/source/blender/makesrna/intern/rna_mesh_api.c b/source/blender/makesrna/intern/rna_mesh_api.c index 00d5bacfef0..ecc32b23249 100644 --- a/source/blender/makesrna/intern/rna_mesh_api.c +++ b/source/blender/makesrna/intern/rna_mesh_api.c @@ -232,6 +232,12 @@ static void rna_Mesh_add_faces(Mesh *mesh, int len) mesh->totface= totface; } +/* +static void rna_Mesh_add_faces(Mesh *mesh) +{ +} +*/ + static void rna_Mesh_add_geometry(Mesh *mesh, int verts, int edges, int faces) { if(verts) @@ -242,6 +248,11 @@ static void rna_Mesh_add_geometry(Mesh *mesh, int verts, int edges, int faces) rna_Mesh_add_faces(mesh, faces); } +static void rna_Mesh_add_uv_layer(Mesh *me) +{ + me->mtface= CustomData_add_layer(&me->fdata, CD_MTFACE, CD_DEFAULT, NULL, me->totface); +} + #else void RNA_api_mesh(StructRNA *srna) @@ -267,6 +278,9 @@ void RNA_api_mesh(StructRNA *srna) parm= RNA_def_pointer(func, "mesh", "Mesh", "", "Mesh, remove it if it is only used for export."); RNA_def_function_return(func, parm); + func= RNA_def_function(srna, "add_uv_layer", "rna_Mesh_add_uv_layer"); + RNA_def_function_ui_description(func, "Add new UV layer to Mesh."); + /* func= RNA_def_function(srna, "add_geom", "rna_Mesh_add_geom"); RNA_def_function_ui_description(func, "Add geometry data to mesh."); -- cgit v1.2.3 From 617851bf21ac5da10bfd171816187e1336cd4a69 Mon Sep 17 00:00:00 2001 From: Arystanbek Dyussenov Date: Thu, 2 Jul 2009 20:46:35 +0000 Subject: - added API functions: - Mesh.calc_normals - Object.add_vertex_to_group - Main.add_material - Main.add_texture - Material.add_texture - OBJ importer conversion in progress --- source/blender/makesrna/intern/rna_mesh_api.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'source/blender/makesrna/intern/rna_mesh_api.c') diff --git a/source/blender/makesrna/intern/rna_mesh_api.c b/source/blender/makesrna/intern/rna_mesh_api.c index ecc32b23249..b2157340207 100644 --- a/source/blender/makesrna/intern/rna_mesh_api.c +++ b/source/blender/makesrna/intern/rna_mesh_api.c @@ -253,6 +253,11 @@ static void rna_Mesh_add_uv_layer(Mesh *me) me->mtface= CustomData_add_layer(&me->fdata, CD_MTFACE, CD_DEFAULT, NULL, me->totface); } +static void rna_Mesh_calc_normals(Mesh *me) +{ + mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL); +} + #else void RNA_api_mesh(StructRNA *srna) @@ -281,6 +286,9 @@ void RNA_api_mesh(StructRNA *srna) func= RNA_def_function(srna, "add_uv_layer", "rna_Mesh_add_uv_layer"); RNA_def_function_ui_description(func, "Add new UV layer to Mesh."); + func= RNA_def_function(srna, "calc_normals", "rna_Mesh_calc_normals"); + RNA_def_function_ui_description(func, "Calculate vertex normals."); + /* func= RNA_def_function(srna, "add_geom", "rna_Mesh_add_geom"); RNA_def_function_ui_description(func, "Add geometry data to mesh."); -- cgit v1.2.3 From 59abddc2024080b3d243d14710d3fb3340766737 Mon Sep 17 00:00:00 2001 From: Arystanbek Dyussenov Date: Wed, 5 Aug 2009 12:01:42 +0000 Subject: - added Mesh.add_material function - tweaked OBJ importer. It reads primitive files (cube, cone, etc.) --- source/blender/makesrna/intern/rna_mesh_api.c | 37 ++++++++++++++++++++------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'source/blender/makesrna/intern/rna_mesh_api.c') diff --git a/source/blender/makesrna/intern/rna_mesh_api.c b/source/blender/makesrna/intern/rna_mesh_api.c index 9a527948b0f..b50cc678f4f 100644 --- a/source/blender/makesrna/intern/rna_mesh_api.c +++ b/source/blender/makesrna/intern/rna_mesh_api.c @@ -258,6 +258,29 @@ static void rna_Mesh_calc_normals(Mesh *me) mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL); } +static void rna_Mesh_add_material(Mesh *me, Material *ma) +{ + int i; + int totcol = me->totcol + 1; + Material **mat; + + /* don't add if mesh already has it */ + for (i = 0; i < me->totcol; i++) + if (me->mat[i] == ma) + return; + + mat= MEM_callocN(sizeof(void*) * totcol, "newmatar"); + + if (me->totcol) memcpy(mat, me->mat, sizeof(void*) * me->totcol); + if (me->mat) MEM_freeN(me->mat); + + me->mat = mat; + me->mat[me->totcol++] = ma; + ma->id.us++; + + test_object_materials((ID*)me); +} + #else void RNA_api_mesh(StructRNA *srna) @@ -289,17 +312,13 @@ void RNA_api_mesh(StructRNA *srna) func= RNA_def_function(srna, "calc_normals", "rna_Mesh_calc_normals"); RNA_def_function_ui_description(func, "Calculate vertex normals."); - /* - func= RNA_def_function(srna, "add_geom", "rna_Mesh_add_geom"); - RNA_def_function_ui_description(func, "Add geometry data to mesh."); - prop= RNA_def_collection(func, "verts", "?", "", "Vertices."); - RNA_def_property_flag(prop, PROP_REQUIRED); - prop= RNA_def_collection(func, "faces", "?", "", "Faces."); - RNA_def_property_flag(prop, PROP_REQUIRED); - */ - func= RNA_def_function(srna, "update", "rna_Mesh_update"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); + + func= RNA_def_function(srna, "add_material", "rna_Mesh_add_material"); + RNA_def_function_ui_description(func, "Add a new material to Mesh."); + parm= RNA_def_pointer(func, "material", "Material", "", "Material to add."); + RNA_def_property_flag(parm, PROP_REQUIRED); } #endif -- cgit v1.2.3 From 44ddff5c516058a73f0297a94845b2e835307d2f Mon Sep 17 00:00:00 2001 From: Arystanbek Dyussenov Date: Thu, 13 Aug 2009 11:14:06 +0000 Subject: - 3ds importer working (without the "scale to size" option) - changing object.matrix now updates object.loc/rot/scale - added bpy.data.add_lamp() --- source/blender/makesrna/intern/rna_mesh_api.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source/blender/makesrna/intern/rna_mesh_api.c') diff --git a/source/blender/makesrna/intern/rna_mesh_api.c b/source/blender/makesrna/intern/rna_mesh_api.c index b50cc678f4f..9d4dad1fb5b 100644 --- a/source/blender/makesrna/intern/rna_mesh_api.c +++ b/source/blender/makesrna/intern/rna_mesh_api.c @@ -248,7 +248,7 @@ static void rna_Mesh_add_geometry(Mesh *mesh, int verts, int edges, int faces) rna_Mesh_add_faces(mesh, faces); } -static void rna_Mesh_add_uv_layer(Mesh *me) +static void rna_Mesh_add_uv_texture(Mesh *me) { me->mtface= CustomData_add_layer(&me->fdata, CD_MTFACE, CD_DEFAULT, NULL, me->totface); } @@ -306,8 +306,8 @@ void RNA_api_mesh(StructRNA *srna) parm= RNA_def_pointer(func, "mesh", "Mesh", "", "Mesh, remove it if it is only used for export."); RNA_def_function_return(func, parm); - func= RNA_def_function(srna, "add_uv_layer", "rna_Mesh_add_uv_layer"); - RNA_def_function_ui_description(func, "Add new UV layer to Mesh."); + func= RNA_def_function(srna, "add_uv_texture", "rna_Mesh_add_uv_texture"); + RNA_def_function_ui_description(func, "Add a UV texture layer to Mesh."); func= RNA_def_function(srna, "calc_normals", "rna_Mesh_calc_normals"); RNA_def_function_ui_description(func, "Calculate vertex normals."); -- cgit v1.2.3 From 7220792f187f91a2ef3eb0c930a13674b2a8a80a Mon Sep 17 00:00:00 2001 From: Arystanbek Dyussenov Date: Wed, 19 Aug 2009 09:52:13 +0000 Subject: Various fixes in rna_*_api.c files to remove compiler warnings. --- source/blender/makesrna/intern/rna_mesh_api.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source/blender/makesrna/intern/rna_mesh_api.c') diff --git a/source/blender/makesrna/intern/rna_mesh_api.c b/source/blender/makesrna/intern/rna_mesh_api.c index 9d4dad1fb5b..1db2f155d14 100644 --- a/source/blender/makesrna/intern/rna_mesh_api.c +++ b/source/blender/makesrna/intern/rna_mesh_api.c @@ -42,6 +42,7 @@ #include "BKE_DerivedMesh.h" #include "BKE_main.h" #include "BKE_mesh.h" +#include "BKE_material.h" #include "DNA_mesh_types.h" #include "DNA_scene_types.h" @@ -52,6 +53,8 @@ #include "WM_api.h" #include "WM_types.h" +#include "MEM_guardedalloc.h" + static void rna_Mesh_calc_edges(Mesh *mesh) { CustomData edata; -- cgit v1.2.3