mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 12:11:15 -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) | ||||
| { | ||||
|     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); | ||||
|     else | ||||
|         m_stats.volume = - m_stats.volume; | ||||
|         det = -det; | ||||
|     } | ||||
|     m_stats.volume *= det; | ||||
|     update_bounding_box(this->its, this->m_stats); | ||||
| } | ||||
| 
 | ||||
| void TriangleMesh::transform(const Matrix3d& m, bool fix_left_handed) | ||||
| { | ||||
|     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); | ||||
|     else | ||||
|         m_stats.volume = - m_stats.volume; | ||||
|         det = -det; | ||||
|     } | ||||
|     m_stats.volume *= det; | ||||
|     update_bounding_box(this->its, this->m_stats); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vojtech Bubnik
						Vojtech Bubnik