Collada - add flag to limit precision of exported data, mainly to simplify debugging
This commit is contained in:
@@ -304,7 +304,9 @@ void ArmatureExporter::add_bone_transform(Object *ob_arm, Bone *bone, COLLADASW:
|
||||
}
|
||||
}
|
||||
|
||||
bc_sanitize_mat(mat, 6); // XXX: Make this optional ?
|
||||
if (this->export_settings->limit_precision)
|
||||
bc_sanitize_mat(mat, 6);
|
||||
|
||||
TransformWriter::add_node_transform(node, mat, NULL);
|
||||
|
||||
}
|
||||
|
@@ -533,7 +533,8 @@ std::string ControllerExporter::add_inv_bind_mats_source(Object *ob_arm, ListBas
|
||||
|
||||
invert_m4_m4(mat, world);
|
||||
converter.mat4_to_dae(inv_bind_mat, mat);
|
||||
bc_sanitize_mat(inv_bind_mat, 6); // XXX: Make this optional ?
|
||||
if (this->export_settings->limit_precision)
|
||||
bc_sanitize_mat(inv_bind_mat, 6);
|
||||
source.appendValues(inv_bind_mat);
|
||||
}
|
||||
}
|
||||
|
@@ -53,6 +53,7 @@ public:
|
||||
BC_export_transformation_type export_transformation_type;
|
||||
|
||||
bool open_sim;
|
||||
bool limit_precision;
|
||||
bool keep_bind_info;
|
||||
|
||||
char *filepath;
|
||||
|
@@ -90,7 +90,7 @@ int collada_export(Scene *sce,
|
||||
int sort_by_name,
|
||||
BC_export_transformation_type export_transformation_type,
|
||||
int open_sim,
|
||||
|
||||
int limit_precision,
|
||||
int keep_bind_info)
|
||||
{
|
||||
ExportSettings export_settings;
|
||||
@@ -116,8 +116,8 @@ int collada_export(Scene *sce,
|
||||
export_settings.sort_by_name = sort_by_name != 0;
|
||||
export_settings.export_transformation_type = export_transformation_type;
|
||||
export_settings.open_sim = open_sim != 0;
|
||||
|
||||
export_settings.keep_bind_info = keep_bind_info;
|
||||
export_settings.limit_precision = limit_precision != 0;
|
||||
export_settings.keep_bind_info = keep_bind_info !=0;
|
||||
|
||||
int includeFilter = OB_REL_NONE;
|
||||
if (export_settings.include_armatures) includeFilter |= OB_REL_MOD_ARMATURE;
|
||||
|
@@ -85,6 +85,7 @@ int collada_export(struct Scene *sce,
|
||||
BC_export_transformation_type export_transformation_type,
|
||||
|
||||
int open_sim,
|
||||
int limit_precision,
|
||||
int keep_bind_info);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@@ -99,6 +99,7 @@ static int wm_collada_export_exec(bContext *C, wmOperator *op)
|
||||
int export_transformation_type;
|
||||
|
||||
int open_sim;
|
||||
int limit_precision;
|
||||
int keep_bind_info;
|
||||
|
||||
int export_count;
|
||||
@@ -150,6 +151,7 @@ static int wm_collada_export_exec(bContext *C, wmOperator *op)
|
||||
export_transformation_type = RNA_enum_get(op->ptr, "export_transformation_type_selection");
|
||||
open_sim = RNA_boolean_get(op->ptr, "open_sim");
|
||||
|
||||
limit_precision = RNA_boolean_get(op->ptr, "limit_precision");
|
||||
keep_bind_info = RNA_boolean_get(op->ptr, "keep_bind_info");
|
||||
|
||||
/* get editmode results */
|
||||
@@ -178,6 +180,7 @@ static int wm_collada_export_exec(bContext *C, wmOperator *op)
|
||||
export_transformation_type,
|
||||
|
||||
open_sim,
|
||||
limit_precision,
|
||||
keep_bind_info
|
||||
);
|
||||
|
||||
@@ -276,9 +279,13 @@ static void uiCollada_exportSettings(uiLayout *layout, PointerRNA *imfptr)
|
||||
|
||||
row = uiLayoutRow(box, false);
|
||||
uiItemR(row, imfptr, "sort_by_name", 0, NULL, ICON_NONE);
|
||||
|
||||
row = uiLayoutRow(box, false);
|
||||
uiItemR(row, imfptr, "keep_bind_info", 0, NULL, ICON_NONE);
|
||||
|
||||
row = uiLayoutRow(box, false);
|
||||
uiItemR(row, imfptr, "limit_precision", 0, NULL, ICON_NONE);
|
||||
|
||||
}
|
||||
|
||||
static void wm_collada_export_draw(bContext *UNUSED(C), wmOperator *op)
|
||||
@@ -396,6 +403,9 @@ void WM_OT_collada_export(wmOperatorType *ot)
|
||||
RNA_def_boolean(func, "open_sim", 0, "Export to SL/OpenSim",
|
||||
"Compatibility mode for SL, OpenSim and other compatible online worlds");
|
||||
|
||||
RNA_def_boolean(func, "limit_precision", 0,
|
||||
"Limit Precision", "Reduce the precision of the exported data to 6 digits");
|
||||
|
||||
RNA_def_boolean(func, "keep_bind_info", 0,
|
||||
"Keep Bind Info", "Store Bindpose information in custom bone properties for later use during Collada export");
|
||||
|
||||
|
@@ -285,6 +285,7 @@ static void rna_Scene_collada_export(
|
||||
int sort_by_name,
|
||||
int export_transformation_type,
|
||||
int open_sim,
|
||||
int limit_precision,
|
||||
int keep_bind_info)
|
||||
{
|
||||
collada_export(scene,
|
||||
@@ -311,6 +312,7 @@ static void rna_Scene_collada_export(
|
||||
|
||||
export_transformation_type,
|
||||
open_sim,
|
||||
limit_precision,
|
||||
keep_bind_info);
|
||||
}
|
||||
|
||||
@@ -422,7 +424,12 @@ void RNA_api_scene(StructRNA *srna)
|
||||
RNA_def_boolean(func, "open_sim", false,
|
||||
"Export to SL/OpenSim", "Compatibility mode for SL, OpenSim and other compatible online worlds");
|
||||
|
||||
RNA_def_boolean(func, "keep_bind_info", false, "Keep Bind Info",
|
||||
RNA_def_boolean(func, "limit_precision", false,
|
||||
"Limit Precision",
|
||||
"Reduce the precision of the exported data to 6 digits");
|
||||
|
||||
RNA_def_boolean(func, "keep_bind_info", false,
|
||||
"Keep Bind Info",
|
||||
"Store bind pose information in custom bone properties for later use during Collada export");
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user