[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