Tech ENABLE_WORLD_COORDINATE - Fixed rendering of selection bounding box

This commit is contained in:
enricoturri1966 2022-12-13 13:31:34 +01:00
parent ebc8a00f76
commit 828293ab08

View File

@ -1394,9 +1394,7 @@ void Selection::scale_and_translate(const Vec3d& scale, const Vec3d& translation
} }
else { else {
if (!is_single_volume_or_modifier()) { if (!is_single_volume_or_modifier()) {
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
assert(transformation_type.world()); assert(transformation_type.world());
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
const Transform3d scale_matrix = Geometry::scale_transform(relative_scale); const Transform3d scale_matrix = Geometry::scale_transform(relative_scale);
const Vec3d offset = volume_data.get_instance_transform().get_matrix_no_offset().inverse() * (m_cache.dragging_center - inst_trafo.get_offset()); const Vec3d offset = volume_data.get_instance_transform().get_matrix_no_offset().inverse() * (m_cache.dragging_center - inst_trafo.get_offset());
v.set_volume_transformation(Geometry::translation_transform(offset) * scale_matrix * Geometry::translation_transform(-offset) * volume_data.get_volume_transform().get_matrix()); v.set_volume_transformation(Geometry::translation_transform(offset) * scale_matrix * Geometry::translation_transform(-offset) * volume_data.get_volume_transform().get_matrix());
@ -1739,8 +1737,8 @@ void Selection::render(float scale_factor)
} }
else if (coordinates_type == ECoordinatesType::Local && is_single_volume_or_modifier()) { else if (coordinates_type == ECoordinatesType::Local && is_single_volume_or_modifier()) {
const GLVolume& v = *get_first_volume(); const GLVolume& v = *get_first_volume();
box = v.transformed_convex_hull_bounding_box(v.get_volume_transformation().get_scaling_factor_matrix()); box = v.bounding_box();
trafo = v.get_instance_transformation().get_matrix() * v.get_volume_transformation().get_matrix_no_scaling_factor(); trafo = v.world_matrix();
} }
else { else {
const Selection::IndicesList& ids = get_volume_idxs(); const Selection::IndicesList& ids = get_volume_idxs();
@ -1748,9 +1746,7 @@ void Selection::render(float scale_factor)
const GLVolume& v = *get_volume(id); const GLVolume& v = *get_volume(id);
box.merge(v.transformed_convex_hull_bounding_box(v.get_volume_transformation().get_matrix())); box.merge(v.transformed_convex_hull_bounding_box(v.get_volume_transformation().get_matrix()));
} }
const Geometry::Transformation inst_trafo = get_first_volume()->get_instance_transformation(); trafo = get_first_volume()->get_instance_transformation().get_matrix();
box = box.transformed(inst_trafo.get_scaling_factor_matrix());
trafo = inst_trafo.get_matrix_no_scaling_factor();
} }
render_bounding_box(box, trafo, ColorRGB::WHITE()); render_bounding_box(box, trafo, ColorRGB::WHITE());