From 9ed566efb67a20c66e6d8c2965546b89bdd9764e Mon Sep 17 00:00:00 2001 From: Aras Pranckevicius Date: Sat, 19 Mar 2022 17:13:21 -0400 Subject: Fix T96415: new OBJ exporter was applying scaling factor incorrectly Instead of scaling "the scene" (i.e. transform vertices by object matrix, then multiply by scale factor), it was instead first applying the scale factor in local space, and then transforming by the object matrix. Cherry picked from 5bfdaaa80082, original differential D14347. --- source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc | 2 +- source/blender/io/wavefront_obj/tests/obj_exporter_tests.cc | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc b/source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc index c1b9b0a8ccf..2670272f4b7 100644 --- a/source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc +++ b/source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc @@ -248,8 +248,8 @@ float3 OBJMesh::calc_vertex_coords(const int vert_index, const float scaling_fac { float3 r_coords; copy_v3_v3(r_coords, export_mesh_eval_->mvert[vert_index].co); - mul_v3_fl(r_coords, scaling_factor); mul_m4_v3(world_and_axes_transform_, r_coords); + mul_v3_fl(r_coords, scaling_factor); return r_coords; } diff --git a/source/blender/io/wavefront_obj/tests/obj_exporter_tests.cc b/source/blender/io/wavefront_obj/tests/obj_exporter_tests.cc index 7e60492bac2..07b799b80b3 100644 --- a/source/blender/io/wavefront_obj/tests/obj_exporter_tests.cc +++ b/source/blender/io/wavefront_obj/tests/obj_exporter_tests.cc @@ -443,6 +443,17 @@ TEST_F(obj_exporter_regression_test, cube_normal_edit) _export.params); } +TEST_F(obj_exporter_regression_test, cubes_positioned) +{ + OBJExportParamsDefault _export; + _export.params.export_materials = false; + _export.params.scaling_factor = 2.0f; + compare_obj_export_to_golden("io_tests/blend_geometry/cubes_positioned.blend", + "io_tests/obj/cubes_positioned.obj", + "", + _export.params); +} + TEST_F(obj_exporter_regression_test, suzanne_all_data) { OBJExportParamsDefault _export; -- cgit v1.2.3