[Bf-blender-cvs] [d47318fb453] soc-2020-io-performance: Add scaling factor in geometry transform.
Ankit Meel
noreply at git.blender.org
Wed Jun 17 12:07:51 CEST 2020
Commit: d47318fb4537277e3013b362f804e739ddee96f6
Author: Ankit Meel
Date: Wed Jun 17 15:37:28 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rBd47318fb4537277e3013b362f804e739ddee96f6
Add scaling factor in geometry transform.
===================================================================
M source/blender/editors/io/io_obj.c
M source/blender/io/wavefront_obj/IO_wavefront_obj.h
M source/blender/io/wavefront_obj/intern/wavefront_obj.hh
M source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc
===================================================================
diff --git a/source/blender/editors/io/io_obj.c b/source/blender/editors/io/io_obj.c
index 74ef10405c7..adf69f33de7 100644
--- a/source/blender/editors/io/io_obj.c
+++ b/source/blender/editors/io/io_obj.c
@@ -105,6 +105,7 @@ static int wm_obj_export_exec(bContext *C, wmOperator *op)
export_params.forward_axis = RNA_enum_get(op->ptr, "forward_axis");
export_params.up_axis = RNA_enum_get(op->ptr, "up_axis");
+ export_params.scaling_factor = RNA_float_get(op->ptr, "scaling_factor");
OBJ_export(C, &export_params);
@@ -136,12 +137,16 @@ static void ui_obj_export_settings(uiLayout *layout, PointerRNA *imfptr)
/* Transform options. */
box = uiLayoutBox(layout);
row = uiLayoutRow(box, false);
- uiItemL(row, IFACE_("Transform"), ICON_NONE);
+ uiItemL(row, IFACE_("Geometry Transform"), ICON_NONE);
row = uiLayoutRow(box, false);
uiItemR(row, imfptr, "forward_axis", 0, NULL, ICON_NONE);
+
row = uiLayoutRow(box, 1);
uiItemR(row, imfptr, "up_axis", 0, NULL, ICON_NONE);
+
+ row = uiLayoutRow(box, false);
+ uiItemR(row, imfptr, "scaling_factor", 0, NULL, ICON_NONE);
}
static void wm_obj_export_draw(bContext *UNUSED(C), wmOperator *op)
@@ -236,6 +241,15 @@ void WM_OT_obj_export(struct wmOperatorType *ot)
"Forward",
"");
RNA_def_enum(ot->srna, "up_axis", io_obj_transform_axis_up, OBJ_AXIS_Z_UP, "Up", "");
+ RNA_def_float(ot->srna,
+ "scaling_factor",
+ 1.000f,
+ 0.001f,
+ 10 * 1000.000f,
+ "Scale",
+ "Scaling Factor: both position and object size are affected",
+ 0.01,
+ 1000.000f);
}
static int wm_obj_import_invoke(bContext *C, wmOperator *op, const wmEvent *event)
diff --git a/source/blender/io/wavefront_obj/IO_wavefront_obj.h b/source/blender/io/wavefront_obj/IO_wavefront_obj.h
index 4b8fa72b5bf..9095fa88a8a 100644
--- a/source/blender/io/wavefront_obj/IO_wavefront_obj.h
+++ b/source/blender/io/wavefront_obj/IO_wavefront_obj.h
@@ -60,6 +60,7 @@ struct OBJExportParams {
/** Geometry Transform options */
int forward_axis;
int up_axis;
+ float scaling_factor;
};
struct OBJImportParams {
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj.hh b/source/blender/io/wavefront_obj/intern/wavefront_obj.hh
index 6e6811b5959..62d7af22932 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj.hh
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj.hh
@@ -85,6 +85,7 @@ typedef struct OBJ_object_to_export {
int forward_axis;
int up_axis;
+ float scaling_factor;
} OBJ_object_to_export;
} // namespace obj
} // namespace io
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc b/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc
index 01d5ba754f8..32e9081b4fa 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc
@@ -75,6 +75,7 @@ static void get_transformed_mesh_vertices(Mesh *me_eval,
for (uint i = 0; i < num_verts; i++) {
copy_v3_v3(object_to_export.mvert[i].co, me_eval->mvert[i].co);
mul_m4_v3(world_transform, object_to_export.mvert[i].co);
+ mul_v3_fl(object_to_export.mvert[i].co, object_to_export.scaling_factor);
}
}
@@ -229,6 +230,7 @@ static void export_frame(bContext *C, const OBJExportParams *export_params, cons
object_to_export.depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
object_to_export.forward_axis = export_params->forward_axis;
object_to_export.up_axis = export_params->up_axis;
+ object_to_export.scaling_factor = export_params->scaling_factor;
get_geometry_per_object(export_params, object_to_export);
}
More information about the Bf-blender-cvs
mailing list