- started OBJ importer conversion

- added Mesh.add_uv_layer, Object.add_vertex_group
This commit is contained in:
Arystanbek Dyussenov 2009-07-01 18:23:11 +00:00
parent 87a7dd3773
commit 6ede28a05a
4 changed files with 1350 additions and 7 deletions

1280
release/io/import_obj.py Normal file

File diff suppressed because it is too large Load Diff

@ -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.");

@ -384,6 +384,7 @@ static void rna_GameObjectSettings_state_set(PointerRNA *ptr, const int *values)
}
}
/*
static PointerRNA rna_DupliObject_object_get(PointerRNA *ptr)
{
DupliObject *dob= (DupliObject*)ptr->data;
@ -391,6 +392,7 @@ static PointerRNA rna_DupliObject_object_get(PointerRNA *ptr)
RNA_pointer_create(&dob->ob->id, &RNA_Object, dob->ob, &newptr);
return newptr;
}
*/
#else
@ -1207,9 +1209,9 @@ static void rna_def_dupli_object(BlenderRNA *brna)
/* RNA_def_struct_ui_icon(srna, ICON_OBJECT_DATA); */
prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "Object");
/* RNA_def_property_struct_type(prop, "Object"); */
RNA_def_property_pointer_sdna(prop, NULL, "ob");
RNA_def_property_pointer_funcs(prop, "rna_DupliObject_object_get", NULL, NULL);
/* RNA_def_property_pointer_funcs(prop, "rna_DupliObject_object_get", NULL, NULL); */
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Object", "Object this DupliObject represents.");

@ -36,6 +36,10 @@
#include "DNA_object_types.h"
#include "BLO_sys_types.h" /* needed for intptr_t used in ED_mesh.h */
#include "ED_mesh.h"
/* parameter to rna_Object_create_mesh */
typedef enum CreateMeshType {
CREATE_MESH_PREVIEW = 0,
@ -56,10 +60,6 @@ typedef enum CreateMeshType {
#include "BLI_arithb.h"
#include "BLO_sys_types.h" /* needed for intptr_t used in ED_mesh.h */
#include "ED_mesh.h"
/* copied from init_render_mesh (render code) */
static Mesh *rna_Object_create_mesh(Object *ob, bContext *C, ReportList *reports, int type)
{
@ -108,7 +108,7 @@ static void rna_Object_create_duplilist(Object *ob, bContext *C, ReportList *rep
/* free duplilist if a user forgets to */
if (ob->duplilist) {
BKE_reportf(reports, RPT_WARNING, "%s.dupli_list has not been freed.", RNA_struct_identifier(&RNA_Object));
BKE_reportf(reports, RPT_WARNING, "Object.dupli_list has not been freed.");
free_object_duplilist(ob->duplilist);
ob->duplilist= NULL;
@ -155,6 +155,47 @@ static void rna_Object_convert_to_triface(Object *ob, bContext *C, ReportList *r
DAG_object_flush_update(sce, ob, OB_RECALC_DATA);
}
static int rna_Object_add_vertex_group(Object *ob, char *group_name)
{
bDeformGroup *defgroup= add_defgroup_name(ob, group_name);
return BLI_findindex(&ob->defbase, defgroup);
}
/*
static void rna_Mesh_assign_verts_to_group(Object *ob, bDeformGroup *group, int *indices, int totindex, float weight, int assignmode)
{
if (ob->type != OB_MESH) {
BKE_report(reports, RPT_ERROR, "Object should be of MESH type.");
return;
}
Mesh *me = (Mesh*)ob->data;
int group_index = get_defgroup_num(ob, group);
if (group_index == -1) {
BKE_report(reports, RPT_ERROR, "No deform groups assigned to mesh.");
return;
}
if (assignmode != WEIGHT_REPLACE && assignmode != WEIGHT_ADD && assignmode != WEIGHT_SUBTRACT) {
BKE_report(reports, RPT_ERROR, "Bad assignment mode." );
return;
}
// makes a set of dVerts corresponding to the mVerts
if (!me->dvert)
create_dverts(&me->id);
// loop list adding verts to group
for (i= 0; i < totindex; i++) {
if(i < 0 || i >= me->totvert) {
BKE_report(reports, RPT_ERROR, "Bad vertex index in list.");
return;
}
add_vert_defnr(ob, group_index, i, weight, assignmode);
}
}
*/
#else
@ -190,6 +231,12 @@ void RNA_api_object(StructRNA *srna)
RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
parm= RNA_def_pointer(func, "scene", "Scene", "", "Scene where the object belongs.");
RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "add_vertex_group", "rna_Object_add_vertex_group");
RNA_def_function_ui_description(func, "Add vertex group to object.");
parm= RNA_def_string(func, "name", "Group", 0, "", "Vertex group name.");
parm= RNA_def_int(func, "group_index", 0, 0, 0, "", "Index of the created vertex group.", 0, 0);
RNA_def_function_return(func, parm);
}
#endif