mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-23 14:44:19 -06:00
Fixed update of mesh volume after applying a transformation.
Fixes flipped normals when importing some 3MFs.
This commit is contained in:
parent
aaf47884cd
commit
68de2a49a3
1 changed files with 10 additions and 6 deletions
|
@ -325,20 +325,24 @@ void TriangleMesh::mirror(const Axis axis)
|
||||||
void TriangleMesh::transform(const Transform3d& t, bool fix_left_handed)
|
void TriangleMesh::transform(const Transform3d& t, bool fix_left_handed)
|
||||||
{
|
{
|
||||||
its_transform(its, t);
|
its_transform(its, t);
|
||||||
if (fix_left_handed && t.matrix().block(0, 0, 3, 3).determinant() < 0.)
|
double det = t.matrix().block(0, 0, 3, 3).determinant();
|
||||||
|
if (fix_left_handed && det < 0.) {
|
||||||
its_flip_triangles(its);
|
its_flip_triangles(its);
|
||||||
else
|
det = -det;
|
||||||
m_stats.volume = - m_stats.volume;
|
}
|
||||||
|
m_stats.volume *= det;
|
||||||
update_bounding_box(this->its, this->m_stats);
|
update_bounding_box(this->its, this->m_stats);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TriangleMesh::transform(const Matrix3d& m, bool fix_left_handed)
|
void TriangleMesh::transform(const Matrix3d& m, bool fix_left_handed)
|
||||||
{
|
{
|
||||||
its_transform(its, m);
|
its_transform(its, m);
|
||||||
if (fix_left_handed && m.determinant() < 0.)
|
double det = m.block(0, 0, 3, 3).determinant();
|
||||||
|
if (fix_left_handed && det < 0.) {
|
||||||
its_flip_triangles(its);
|
its_flip_triangles(its);
|
||||||
else
|
det = -det;
|
||||||
m_stats.volume = - m_stats.volume;
|
}
|
||||||
|
m_stats.volume *= det;
|
||||||
update_bounding_box(this->its, this->m_stats);
|
update_bounding_box(this->its, this->m_stats);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue