stla_to_tri_surface, a MATLAB code which reads data from an ASCII STLA file describing a triangular mesh of a 3D surface, and converts it to a pair of arrays describing a triangular mesh or TRI_SURFACE.

Especially if you are reading large ASCII STL files, you might want to consider the "fast" version of the program, which uses the routines STLA_SIZE_FAST and STLA_READ_FAST, provided by Bill Seufzer of NASA Langley.

An ASCII STL file contains a description of the surface of a solid that has been decomposed into triangles. The vertices of the triangles should be listed in counterclockwise order, as viewed from outside the surface. A normal vector for the triangle may also be listed.

A TRI_SURFACE or triangulated mesh surface, is described by a pair of arrays:


The computer code and data files described and made available on this web page are distributed under the MIT license


stla_to_tri_surface is available in a MATLAB version.

Related Data and Programs:

obj_to_tri_surface, a MATLAB code which reads an OBJ file and extracts the surface mesh data as a TRI_SURFACE dataset.

stla, a data directory which contains a description and examples of STLA files.

stla_display, a MATLAB code which reads an ASCII STL file and displays it.

stla_io, a MATLAB code which reads or writes a an ASCII STL file.


stla_to_tri_surface_fast, a MATLAB code which is a faster version of stla_to_tri_surface().

tri_surface, a data directory which contains examples of TRI_SURFACE files.

tri_surface_display, a MATLAB code which displays a TRI_SURFACE dataset.

tri_surface_to_stla, a MATLAB code which reads a TRI_SURFACE dataset and extracts the surface mesh data as an ASCII STL file.


  1. 3D Systems, Inc,
    Stereolithography Interface Specification,
    October 1989.

Source Code:

Last revised on 24 March 2019.