We’re introducing two new algorithms for the _Squish command that offer more control and robustness compared to the original implementation. Like before, these methods flatten a 3D mesh into 2D by minimizing distortion, but now with enhanced physical realism.
The new solvers account for orthotropic material behavior, allowing independent control over stretch, compression, and shear along principal fiber directions. This enables more accurate flattening of materials like woven fabrics, composites, or anisotropic sheets.
Two new algorithms
The new Squish variants explore two strategies for mesh flattening: a physical and a geometric approach. Both approaches aim to preserve the original mesh’s shape as much as possible in 2D, but offer different levels of control depending on your application.
Physical Strain
This method uses a physically based formulation. It minimizes strain energy derived from directional stretch and shear, measured relative to orthotropic material axes. This requires users to specify material properties like strain and shear modulus as described in detail below. Try it in _TestSquishPhysicalStrain.
Geometrical Stretch
This method takes a geometric approach, evaluating stretch and shear from triangle shapes. It models deformation by analyzing triangle shapes and minimizing relative distortion, without requiring material parameters but rather ratios or weights for the different components. Try it in _TestSquishGeometricalStretch.
Fabrics and sheet metal
We are focused on providing fabric designers with control over material behavior. These algorithms are also very robust to many different kind of meshing defects, and work just as well on isotropic materials like steel. Sheet metal drafters should also see benefits to using these new algorithms. If you have example problems in these areas, we are really looking forward to hearing from you.
Improvements
One known limitation of the original Squish command is its difficulty handling surfaces with large bends. The example below shows a case where both new commands can handle the deformation:
Another interesting comparison point are the TexturingTools flattening methods, such as LSCM and ARAP. Unlike these, the new Squish algorithms let you assign material properties per direction and specify a fiber angle. This allows directional control over stretch and shear, which is not possible in traditional geometric methods.
How to try it
The new algorithms are available as _TestSquishPhysicalStrain and _TestSquishGeometricalStretch. These may be integrated into the main Squish command later, but are currently separate to allow more flexibility during development. The available command options for both are described below.
Command Options
For both commands
-
FiberAngle: Angle (in degrees) between the weft fiber direction and the global x-axis. This sets the material’s principal directions for anisotropic energy terms and influences how stretch is measured and minimized. The default is0. -
MaxIterations: Maximum number of iterations for the local/global optimization loop; default value is50. -
ConvergenceTolerance: Specifies the energy-change threshold for early termination of the optimization. If the change in total energy between successive steps falls below this value, the algorithm stops. Lower values enforce stricter convergence, while higher values allow faster but potentially less precise results. Default is1e-6.
For TestSquishPhysicalStrain
-
StrainModulusU,StrainModulusV: Strain modulus in the u and v directions (warp and weft), measured inN/mm. Controls how resistant the material is to stretching along u and v. Higher values represent stiffer materials that stretch less under force. -
ShearModulus: In-plane shear modulus of the material inN/mm·rad. This parameter governs how resistant the material is to shearing (i.e., distortion of angles) between the u and v directions. A higher value leads to more resistance against local angular deformations.
For TestSquishGeometricStretch
-
WeightStretchU,WeightStretchV: Controls the weighting of stretch energy along the weft and warp direction of the material. Increase this to more strongly resist distortion along these axis. -
WeightRigid: Sets the weighting factor for the rigid energy term in the optimization. A higher value penalizes deviation from rigid transformations more strongly, favoring solutions that preserve local shape and orientation.
In the example below, we vary the WeightRigid value for squishing a half-sphere. The higher this weight is, the more the edges of the mesh will be stretched when going from 2d to 3d, but the least closer to a square the flat mesh is:
What’s next
The new Squish algorithms are in active development and still have many limitations and missing features such as improved result visualization, restriction to meshes only and computational time. However, we are looking forward to receiving your feedback on both algorithms as we continue developing them.




