ShapeScript Mobile
Graphics & Design
Free · In-App Purchases
ShapeScript is a 3D modeling program for people who don’t like 3D modeling programs.
Instead of dragging polygons and vertices around in a GUI, ShapeScript lets you define your models precisely using code. No artistic skills are required - ShapeScript does all the drawing for you.
The ShapeScript app includes a parser for a simple language (also called “ShapeScript”). ShapeScript (the language) is a cross between a markup language and a programming language.
You don’t need to be a programmer to use ShapeScript. If you have ever worked with any kind of structured text like JSON or HTML then it should come naturally. But if you do have experience with programming, then you can apply those skills to create even more complex models by using loops, functions and variables to procedurally generate geometry.
Models can be rendered as images or exported in a variety of formats suitable for use in games or 3D printing (export functionality is a premium feature, unlockable via in-app purchase).
more • Syntax — Added support for composing and scaling rotations with the * operator.
• Functions — Added rotation constructor function for defining reusable rotation values.
• Export — The export cancellation dialog no longer flashes up briefly for every export.
• Help — Added offline help viewer with search function.
1.6.2 17 Aug
• Export — Fixed app freezing when exporting complex scenes.
• Export — Image export now preserves the aspect ratio when overriding only width or height.
• Bug fix — Fixed rotation command regression introduced in version 1.6.0.
• Help — Added direct access to online documentation from source editor.
1.6.1 14 Aug
• Syntax — Added inset function for paths and meshes.
• Primitives — Added icosphere geometry type.
• Paths — Added miterLimit property and support for root-level miter limits.
• Materials — Added HSB color support and path.color property.
• Syntax — Added angle-axis rotation literals and object syntax for color, rotation, size, point, path, polygon and mesh values.
• Debugging — Added focus command for inspecting selected geometry in complex scenes.
• Import — Fixed loading of directory-based model formats (e.g. OBJ + MTL).
• Import — Imported STL and OFF files now automatically fix incorrect polygon winding.
• Export — Long-running exports can now be cancelled.
• Export — CSG export now preserves circle and square semantics instead of converting them to generic polygons.
• Bug fix — Fixed occasional mesh corruption issues and improved watertightness.
• Bug fix — Fixed custom block transforms for tuple geometry returns.
• Bug fix — Fixed parsing of command arguments inside multiline tuples.
• Bug fix — Fixed command/property name shadowing.
• Rendering — Improved rendering of translucent planar meshes and opacity textures.
• Examples — Updated the example projects to showcase the new features and techniques.
1.6.0 11 Aug
• Crash fix — Fixed crash on app launch.
1.5.9 29 Jul
• Bug fix — Fixed incorrect count, allButFirst, allButLast and indexed member results for tuples.
• Bug fix — Fixed child transforms being ignored when looping over shape values returned from a function.
• Bug fix — Fixed performance regression when extruding along a path.
• Bug fix — Fixed blank lines being omitted from console output.
• Bug fix — Restored original subpath joining behavior.
• Bug fix — Fixed various cases of malformed or inverted geometry.
1.5.8 24 Jul
• Improvement — Improved handling of complex or self-intersecting paths.
• Bug fix — Fixed inverted edge vertex normals on complex extruded shapes, including text.
• Bug fix — Unlock Export Feature now works again.
1.5.7 14 Jul
• Bug fix — Fixed rendering of non-overlapping transparent objects.
• Object Selection — Added long-press contextual menu for selecting objects in the editor.
• Debug Console — Console is now a resizable bottom sheet instead of a fixed-size footer.
1.5.6 1 Jul
• Bug fix — Fixed rendering of nested transparent objects.
• Bug fix — Fixed spurious type mismatch warning.
• Bug fix — Unterminated block comments now produce an error.
• Bug fix — Fixed loft command when lofted shapes have different numbers of points.
• Crash fix — Fixed crash with non-finite scale or position values.
• Import — Added support for tilde in import paths.
• Import — Added size limits for imported files.
• Improvement — Improved cancellation responsiveness.
1.5.5 16 Jun
• Bug fix — Fixed unexpected flattening of nested tuple values.
1.5.4 4 Mar
• Syntax — You can now use if, switch and for statements inside expressions.
• Syntax — Added optional message parameter for assert command.
• Syntax — Textures and fonts can now be imported for later use with the import command.
• Bug fix — Fixed off-center convex hull calculation.
• Bug fix — Fixed expression snd func scope transforms.
• Bug fix — Editing or replacing a texture file now triggers reload automatically.
• Improvement — Removed redundant parentheses from logged values.
• Import — Lights are now included when importing scene files.
1.5.3 8 Feb
• Bug fix — Fixed misalignment when using twist option with extrude command
• Bug fix — Fixed vertex normals when extruding along a path with sharp corners
• Bug fix — Fixed loft command with coplanar paths producing inverted faces
• Bug fix — Fixed occasional missing vertices in hull command output
• Improvement — Improved hull and minkowski command performance
1.5.2 15/11/2025
• Crash fix — Fixed crash when creating a path from empty subpaths.
• Bug fix — Fixed minkowski command output with off-center input shapes.
• Bug fix — Fixed bounds calculation for intersection shapes.
• Bug fix — Fixed bug where mesh.triangles member returned polygons instead of triangles.
• Bug fix — Fixed partial render state sometimes not being shown after an error.
• Bug fix — Scene info no longer shows imported models and textures after they have been removed.
• Improvement — Improved detessellation algorithm (now merges more polygons than before).
• Improvement — Improved subpaths implementation (more reliably preserves distinct subpaths).
1.5.1 28/10/2025
• Minkowski sum — Added minkowski command for creating a Minkowski sum of meshes or paths.
• Editing — Added undo/redo buttons to built-in source editor.
• Export — Added support for exporting OpenSCAD CSG (Constructive Solid Geometry) files.
• Import/Export — Added support for importing and exporting OFF (Object File Format) files.
• Syntax — Custom blocks now accept child objects via implicit children parameter.
• Syntax — Added fonts property for listing available fonts.
• Syntax — Made font command name matching more lenient.
• Syntax — The sum function now works with vector inputs.
• Debugging — Improved error messaging for mismatched angle types.
• Debugging — Improved function parameter type inference.
• Debugging — Improved type error messages.
• Performance — Significantly improved performance when extruding complex paths such as text.
• Improvement — The smoothing command now works with imported meshes.
• Improvement — Improved vertex color blending for hull and extrusion commands.
• Crash fix — Fixed crash when a function has duplicate parameter names.
• Bug fix — The loft command now works correctly again with paths containing a single point.
• Bug fix — Fixed some bugs with transform commands and properties in custom blocks.
• Bug fix — Accessing mesh and polygon member properties now works for tuples of meshes/polygons.
• Bug fix — Fixed cache invalidation bug when using smoothing or hull commands.
1.5.0 14/10/2025
• Performance — Significantly improved performance when rendering geometry with high detail.
• Crash fix — Fixed crash in path command when successive points have the same coordinate.
• Crash fix — Fixed crash when displaying error line number in some cases.
• Bug fix — Fixed some text input glitches.
1.4.9 02/08/2025
• Bug fix — Significantly improved loft output when lofted shapes have different numbers of points.
• Performance — Repeated access to an imported file is now cached to reduce loading time.
• Improvement — Home Screen icon now supports dark and tinted modes.
1.4.8 30/06/2025
• Bug fix — The polygons, triangles and volume members should now work correctly in all cases.
• Improvement — Added support for the British spelling "centre" as an alias for "center".
1.4.7 01/06/2025
• Model info — Added mesh volume to model info.
• Meshes — Added mesh.volume member.
• Meshes — Added mesh.triangles and polygon.triangles members.
• Functions — Added sum() function.
• Syntax — Added partial ranges using the new "from" operator.
• Crash fix — Fixed crash when extruding single-point paths.
• Bug fix — Fixed bug with returning subscripted values.
• Bug fix — Fixed some bugs with negative or reversed ranges.
1.4.6 12/05/2025
• Bug fix — Fixed escaping of object names in 3MF export.
1.4.5 15/09/2024
• Export — Added 3MF export.
• Bug fix — Improved SVG path support.
• Bug fix — Fixed issue where bounds member didn't work on text command output.
• Editor — Tap to select shapes now works through invisible objects.
• Debugging — Partial scene progress is now displayed after an error to aid debugging.
1.4.4 26/07/2024
• Export — Added SVG export.
• Syntax — Added "in" operator for testing if a value lies within a tuple or range.
• Syntax — Negative subscript indices can now be used to access elements at the end of a list.
1.4.3 19/02/2024
• Bug fix — Exported images now have the correct background.
• Bug fix — Fixed alpha blending issues in exported images.
• Bug fix — Fixed aspect ratio distortion when exporting large images.
• Bug fix — Polygon vertex colors and path point colors now have consistent gamma.
• Bug fix — Fixed double application of local transform in functions.
• Bug fix — Fixed double application of local transform for imported shapes.
• Crash fix — Recursive function or block references no longer crash.
• Import — Improved error messages for missing or inaccessible file imports.
• Import — Vertex colors are now preserved for imported models.
1.4.2 21/01/2024
• Export — All image export formats from desktop ShapeScript are now supported on mobile.
• Export — Added camera.antialiased property to disable antialiasing in exported images.
• Export — Improved antialiasing quality for exported images.
• Export — ASCII STL files can now be exported.
• Import — Imported STL files now retain polygon color information.
• Import — Improved error reporting when import fails.
1.4.1 01/01/2024
• Syntax — Added switch/case statements.
• Syntax — Added subscripting support for objects and tuples.
• Syntax — Added object constructor command.
• Syntax — Added text.string, font, color and linespacing members.
• Syntax — You can now use import statements in expressions.
• Materials — The opacity property can now be set to a texture for variable opacity.
• Materials — Textures now use nearest-neighbor filtering for upscaling instead of linear.
• Materials — Added normals command for setting variable surface normals using a texture.
• Materials — Added roughness and metallicity properties for physically based rendering (PBR).
• Materials — Added material command for storing and setting all material properties at once.
• Lighting — Added light.shadow property to control shadow casting.
1.4.0 28/11/2023
• Bug fix — Fixed misaligned shapes when exporting a scene containing groups in USD format.
• Crash fix — Fixed crash when exporting a scene containing lights in DAE format.
• Syntax — Added point.isCurved and polygon.center member properties.
1.3.8 25/10/2023
• Bug fix — Fixed ambiguity when calling functions with parenthesized arguments.
• Debugging — Added error message when using more than 8 lights in a scene (previously this failed silently).
• Export — Exported STL files now retain polygon color information.
1.3.7 15/10/2023
• Syntax — Added support for composing and scaling rotations with the * operator.
• Functions — Added rotation constructor function for defining reusable rotation values.
• Export — The export cancellation dialog no longer flashes up briefly for every export.
• Help — Added offline help viewer with search function.
more Version 1.6.2 17 Aug
Data Not Collected The developer does not collect any data from this app.