Tech ENABLE_WORLD_COORDINATE - Fixed unconstrained scaling in world coordinates for volumes
This commit is contained in:
parent
122b2077b4
commit
a31594b562
3 changed files with 24 additions and 6 deletions
|
@ -426,11 +426,23 @@ void GLGizmoScale3D::do_scale_along_axis(Axis axis, const UpdateData& data)
|
|||
curr_scale = (m * curr_scale).cwiseAbs();
|
||||
starting_scale = (m * starting_scale).cwiseAbs();
|
||||
}
|
||||
else if ((selection.is_single_volume() || selection.is_single_modifier()) && world_coordinates) {
|
||||
const Transform3d mi = Geometry::assemble_transform(Vec3d::Zero(), selection.get_volume(*selection.get_volume_idxs().begin())->get_instance_rotation());
|
||||
const Transform3d mv = Geometry::assemble_transform(Vec3d::Zero(), selection.get_volume(*selection.get_volume_idxs().begin())->get_volume_rotation());
|
||||
const Transform3d m = mi * mv;
|
||||
curr_scale = (m * curr_scale).cwiseAbs();
|
||||
starting_scale = (m * starting_scale).cwiseAbs();
|
||||
}
|
||||
|
||||
curr_scale(axis) = starting_scale(axis) * ratio;
|
||||
|
||||
if (selection.is_single_full_instance() && world_coordinates)
|
||||
m_scale = (Geometry::assemble_transform(Vec3d::Zero(), selection.get_volume(*selection.get_volume_idxs().begin())->get_instance_rotation()).inverse() * curr_scale).cwiseAbs();
|
||||
else if ((selection.is_single_volume() || selection.is_single_modifier()) && world_coordinates) {
|
||||
const Transform3d mi = Geometry::assemble_transform(Vec3d::Zero(), selection.get_volume(*selection.get_volume_idxs().begin())->get_instance_rotation()).inverse();
|
||||
const Transform3d mv = Geometry::assemble_transform(Vec3d::Zero(), selection.get_volume(*selection.get_volume_idxs().begin())->get_volume_rotation()).inverse();
|
||||
m_scale = (mv * mi * curr_scale).cwiseAbs();
|
||||
}
|
||||
else
|
||||
m_scale = curr_scale;
|
||||
#else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue