diff options
author | Arystanbek Dyussenov <arystan.d@gmail.com> | 2009-06-28 17:29:03 +0400 |
---|---|---|
committer | Arystanbek Dyussenov <arystan.d@gmail.com> | 2009-06-28 17:29:03 +0400 |
commit | 1557736756b41dfa8fff4d7c887a7d6da2b1f468 (patch) | |
tree | 32da2cded80ffac6cf1623ec7a42bbdbb19f0901 /source/blender/makesrna/intern | |
parent | 83a5a585e48ce9abb39e67372bd1ff400877d178 (diff) |
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
Diffstat (limited to 'source/blender/makesrna/intern')
-rw-r--r-- | source/blender/makesrna/intern/rna_mesh_api.c | 15 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_object_api.c | 60 |
2 files changed, 39 insertions, 36 deletions
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."); diff --git a/source/blender/makesrna/intern/rna_object_api.c b/source/blender/makesrna/intern/rna_object_api.c index 1b6c298eba4..b09acb51084 100644 --- a/source/blender/makesrna/intern/rna_object_api.c +++ b/source/blender/makesrna/intern/rna_object_api.c @@ -36,6 +36,12 @@ #include "DNA_object_types.h" +/* parameter to rna_Object_create_mesh */ +typedef enum CreateMeshType { + CREATE_MESH_PREVIEW = 0, + CREATE_MESH_RENDER = 1 +} CreateMeshType; + #ifdef RNA_RUNTIME #include "BKE_customdata.h" @@ -55,7 +61,7 @@ #include "ED_mesh.h" /* copied from init_render_mesh (render code) */ -static Mesh *create_mesh(Object *ob, bContext *C, ReportList *reports, int render_mesh) +static Mesh *rna_Object_create_mesh(Object *ob, bContext *C, ReportList *reports, int type) { /* CustomDataMask mask = CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL; */ CustomDataMask mask = CD_MASK_MESH; /* this seems more suitable, exporter, @@ -71,8 +77,13 @@ static Mesh *create_mesh(Object *ob, bContext *C, ReportList *reports, int rende BKE_report(reports, RPT_ERROR, "Object should be of type MESH."); return NULL; } - - dm= render_mesh ? mesh_create_derived_render(sce, ob, mask) : mesh_create_derived_view(sce, ob, mask); + + if (type == CREATE_MESH_PREVIEW) { + dm= mesh_create_derived_view(sce, ob, mask); + } + else { + dm= mesh_create_derived_render(sce, ob, mask); + } if(!dm) { /* TODO: report */ @@ -87,16 +98,6 @@ static Mesh *create_mesh(Object *ob, bContext *C, ReportList *reports, int rende return me; } -static Mesh *rna_Object_create_render_mesh(Object *ob, bContext *C, ReportList *reports) -{ - return create_mesh(ob, C, reports, 1); -} - -static Mesh *rna_Object_create_preview_mesh(Object *ob, bContext *C, ReportList *reports) -{ - return create_mesh(ob, C, reports, 0); -} - /* When no longer needed, duplilist should be freed with Object.free_duplilist */ static void rna_Object_create_duplilist(Object *ob, bContext *C, ReportList *reports) { @@ -162,33 +163,20 @@ void RNA_api_object(StructRNA *srna) FunctionRNA *func; PropertyRNA *parm; - /* copied from rna_def_object */ - static EnumPropertyItem object_type_items[] = { - {OB_EMPTY, "EMPTY", 0, "Empty", ""}, - {OB_MESH, "MESH", 0, "Mesh", ""}, - {OB_CURVE, "CURVE", 0, "Curve", ""}, - {OB_SURF, "SURFACE", 0, "Surface", ""}, - {OB_FONT, "TEXT", 0, "Text", ""}, - {OB_MBALL, "META", 0, "Meta", ""}, - {OB_LAMP, "LAMP", 0, "Lamp", ""}, - {OB_CAMERA, "CAMERA", 0, "Camera", ""}, - {OB_WAVE, "WAVE", 0, "Wave", ""}, - {OB_LATTICE, "LATTICE", 0, "Lattice", ""}, - {OB_ARMATURE, "ARMATURE", 0, "Armature", ""}, - {0, NULL, 0, NULL, NULL}}; - - func= RNA_def_function(srna, "create_render_mesh", "rna_Object_create_render_mesh"); - RNA_def_function_ui_description(func, "Create a Mesh datablock with all modifiers applied for rendering."); - RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS); - parm= RNA_def_pointer(func, "mesh", "Mesh", "", "Mesh created from object, remove it if it is only used for export."); - RNA_def_function_return(func, parm); + static EnumPropertyItem mesh_type_items[] = { + {CREATE_MESH_PREVIEW, "PREVIEW", 0, "Preview", "Apply preview settings."}, + {CREATE_MESH_RENDER, "RENDER", 0, "Render", "Apply render settings."}, + {0, NULL, 0, NULL, NULL} + }; - func= RNA_def_function(srna, "create_preview_mesh", "rna_Object_create_preview_mesh"); - RNA_def_function_ui_description(func, "Create a Mesh datablock with all modifiers applied for preview."); + func= RNA_def_function(srna, "create_mesh", "rna_Object_create_mesh"); + RNA_def_function_ui_description(func, "Create a Mesh datablock with all modifiers applied."); RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS); + parm= RNA_def_enum(func, "type", mesh_type_items, 0, "", "Type of mesh settings to apply."); + RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_pointer(func, "mesh", "Mesh", "", "Mesh created from object, remove it if it is only used for export."); RNA_def_function_return(func, parm); - + func= RNA_def_function(srna, "create_dupli_list", "rna_Object_create_duplilist"); RNA_def_function_ui_description(func, "Create a list of dupli objects for this object, needs to be freed manually with free_dupli_list."); RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS); |