I'm the creator of Ambigram Generator (https://www.ambigramgenerator.me/). It generates rotationally symmetrical ambigrams—words or phrases that read the same when inverted (rotated 180 degrees).
The Engineering Deep Dive: From SVG to 3D Print
While the 2D generation relies on a complex rule-based dictionary for character pairing and SVG path merging (a significant combinatorial challenge in itself), the most interesting part for makers and engineers is the 3D functionality.
1. 3D Model Generation and WebGL:
Once the optimal 2D ambigram is generated, we extrude the 2D SVG vector path into a 3D mesh. This involves:
Mesh Extrusion: Using Three.js to handle the complex geometry of the merged character paths. We implemented custom logic to ensure clean, manifold geometry, crucial for the next step.
Real-time Preview: The 3D view is rendered using WebGL, allowing users to interactively rotate the model to confirm the ambigram symmetry from all angles. We also include a feature to generate a looping GIF preview that cycles through angles, providing an immediate, shareable demonstration of the effect.
2. The Bridge to the Physical World: STL Export
The generator's core utility is the ability to export the resulting 3D model as an STL file. This transforms the generated word into a physical object ready for 3D printing.
Key Challenge: STL files require closed, watertight meshes (manifold geometry). Any flaws in the initial SVG or the extrusion process (like overlapping faces or open edges) will result in a non-printable file. We spent considerable time tuning the extrusion depth and simplifying the mesh to produce robust, validated STL files.
Open Questions for the Makers/3D Community
I'd appreciate any feedback on the 3D pipeline:
Slicing Optimization: Have any makers here found particular settings (e.g., specific wall thickness or infill patterns) that work best for printing these highly detailed and symmetrical text models?
WebAssembly for Geometry: Currently, all geometry processing is client-side in JS. Would integrating a C++/Rust geometry library via WebAssembly be a worthwhile effort to speed up complex mesh generation before export?
Try generating an ambigram and check out the 3D preview and STL export feature!
I'm the creator of Ambigram Generator (https://www.ambigramgenerator.me/). It generates rotationally symmetrical ambigrams—words or phrases that read the same when inverted (rotated 180 degrees).
The Engineering Deep Dive: From SVG to 3D Print While the 2D generation relies on a complex rule-based dictionary for character pairing and SVG path merging (a significant combinatorial challenge in itself), the most interesting part for makers and engineers is the 3D functionality.
1. 3D Model Generation and WebGL: Once the optimal 2D ambigram is generated, we extrude the 2D SVG vector path into a 3D mesh. This involves:
Mesh Extrusion: Using Three.js to handle the complex geometry of the merged character paths. We implemented custom logic to ensure clean, manifold geometry, crucial for the next step.
Real-time Preview: The 3D view is rendered using WebGL, allowing users to interactively rotate the model to confirm the ambigram symmetry from all angles. We also include a feature to generate a looping GIF preview that cycles through angles, providing an immediate, shareable demonstration of the effect.
2. The Bridge to the Physical World: STL Export The generator's core utility is the ability to export the resulting 3D model as an STL file. This transforms the generated word into a physical object ready for 3D printing.
Key Challenge: STL files require closed, watertight meshes (manifold geometry). Any flaws in the initial SVG or the extrusion process (like overlapping faces or open edges) will result in a non-printable file. We spent considerable time tuning the extrusion depth and simplifying the mesh to produce robust, validated STL files.
Open Questions for the Makers/3D Community I'd appreciate any feedback on the 3D pipeline:
Slicing Optimization: Have any makers here found particular settings (e.g., specific wall thickness or infill patterns) that work best for printing these highly detailed and symmetrical text models?
WebAssembly for Geometry: Currently, all geometry processing is client-side in JS. Would integrating a C++/Rust geometry library via WebAssembly be a worthwhile effort to speed up complex mesh generation before export?
Try generating an ambigram and check out the 3D preview and STL export feature!