STL

De Viquipèdia
Salta a la navegació Salta a la cerca

STL és un format d'arxiu que permet emmagatzemar la descripció d'un objecte 3D. És un format creat per la companyia "3D Systems" pel seu programari "stereolithography CAD". STL es pot interpretar com Standard Triangle Language (llenguatge estàndard de triangles) o també Standard Tessellation Language. Hi ha una gran quantitat de programaris capaços de llegir i/o escriure aquest format, sent àmpliament utilitzat en els processos d'impressió 3D, el prototipatge i la fabricació assistida per ordinador. Els arxius STL descriuen només la geometria de la superfície d'un objecte tridimensional sense qualsevol representació de color, textura o altres atributs del model, encara que s'han definit extensions no oficials que sí inclouen algunes d'aquestes dades. El format de STL especifica dos possibles variants: text i binaria. Els arxius binaris són més comuns, donat que per un mateix objecte tenen una mida més reduïda que els textuals.

Un arxiu STL descriu directament una superfície com un conjunt de triangles, cada un dels quals es defineix pels seus vèrtexs i el vector normal a ell. Els vèrtexs són ortonormals. En l'especificació original, les coordenades havien de ser nombres positius, però aquesta restricció no és aplicable i avui en dia es poden trobar àmpliament fitxers amb coordinades negatives. Els arxius STL no contenen cap informació d'escala, i les unitats són arbitràries.

STL ASCII[modifica]

Un arxiu STL ASCII comença amb la línia:

solid nom

on el nom és un text opcional (tanmateix si el nom és omès, encara hi ha d'haver un espai després de "solid"). L'arxiu continua amb un nombre qualsevol de triangles, cadascú representat de la manera següent:

facet normal ni nj nk
    outer loop
        vertex v1x v1y v1z
        vertex v2x v2y v2z
        vertex v3x v3y v3z
    endloop
endfacet

on cada n o v és un nombre real en el format signe-mantissa-"e"-signe-exponent, per exemple: "2.648000e-002". L'arxiu conclou amb

endsolid nom
Un exemple de STL ASCII que conté un sphericon

Espai en blanc (espais, tabuladors, salts de línia) pot ser inclòs a qualsevol lloc de l'arxiu excepte dins de nombres o paraules. L'espai entre "facet" i "normal" i entre "outer" i "loop" és requerit.

STL binari[modifica]

Donat que els arxius STL ASCII poden esdevenir molt grans, existeix una versió binària del format STL. Un arxiu de STL binari té un encapçalament de 80 caràcters (que és generalment ignorat i que mai hauria de començar amb "solid" perquè això podria fer que algun programari ho identifiques com un arxiu STL ASCII). A continuació de l'encapçalament hi ha un sencer (sense signe, en format de quatre bytes little-endian) que indica el nombre de facetes triangulars en l'arxiu. A continuació es troben els triangles de la forma. El fitxer acaba directament després de l'últim triangle, sense cap dada addicional.

Cada triangle és descrit per dotze nombres de punt flotant: tres pel vector normal i tres per les coordinades X, Y i Z de cada vèrtex. Després d'aquestes dades segueix un nombre sencer (sense signe, dos bytes) amb el significat de "nombre de bytes de l'atribut". És recomanable que aquest valor sia sempre zero, donat que la majoria de programari no entén qualsevol altra cosa.

Els nombres en punt flotant són representats segons el estàndard IEEE. S'assumeix un format little-endian, tot i que això no és declarat a l'especificació.

UINT8[80] – Capçalera
UNIT32 – Nombre de triangles

per cada triangle:
  REAL32[3] – el vector Normal
  REAL32[3] – Vertex 1
  REAL32[3] – Vertex 2
  REAL32[3] – Vertex 3
  UINT16 – Nombre de bytes de l'atribut.

El vector normal a la superfície[modifica]

Un cub descrit en format STL, on es poden veure els triangles (dotze en total) que formen les cares i les normals a aquestes (línies en blau).
Un cub descrit en format STL, on es poden veure els dotze triangles que formen les cares i les normals a aquestes (línies en blau). Imatge creada amb el programari Blender.

En els fitxers STL, el vector normal a la superfície hauria de ser un vector unitat que assenyala cap enfora de l'objecte sòlid. Molts programaris permetent llegir un fitxer d'entrada amb aquest vector igual a (0,0,0), i el programari automàticament calcularà una normal basada en l'ordre del triangle vèrtexs utilitzant la "regla de la mà dreta". Alguns programaris (com ara el plugin STL per "Art of IIlusion") controlen que la normal estigui d'acord amb el valor calculat a partir dels vèrtexs del triangle i adverteixen si no ho és. Altres programaris poden ignorar la normal enterament i fer ús només del vector calculat segons la regla de la mà dreta. Tot i que és infreqüent el cas d'un vector normal que no pot ser calculat utilitzant la regla de la mà dreta, per tal de ser enterament estàndard, un arxiu ha d'incloure el vector normal i ordenar el vèrtexs apropiadament.

Una excepció notable és SolidWorks, que utilitza la normal pels efectes d'ombrejar.

Ús en els processos d'impressió 3D[modifica]

El fitxers STL son àmpliament empleats durant el procés d'impressió 3D, en particular com entrada al programari tallador (slicer).

Per aquesta aplicació, el fitxer ha de contenir la descripció d'un sòlid real, un volum 3D. La superfície representada ha de ser tancada i continua, on cada costat és part de dos i només dos triangles i no es creua amb si mateix. La sintaxi de STL no obliga a aquestes restriccions, ja que en altres aplicacions no són necessàries. Això implica que un fitxer STL pot contenir una forma impossible per a la impressió 3D.

Existeix programari 3D capaç de resoldre petites discrepàncies i errors, fent les correccions necessàries en la posició dels triangles o en el vector normal. Alguns errors habituals que poden impedir la impressió 3D son:[1]

Object en format STL amb la normal de una cara apuntant a l'interior, i com el programari (Blender en aquest cas) detecta el error.
Descripció STL de un cub amb un forat en la seva superfície i com el programari (Blender en aquest cas) detecta el error.
  • Normals no orientades a l'exterior: una o més de les normals de les cares poden apuntar a l'interior de l'objecte, el que impedeix al programari específic per la impressió 3D determinar correctament quina part de l'espai és part de l'objecte a construir i quina és el buit que l'envolta. Aquest tipus d'errors solen anomenar-se com errors de desplegament (manifold).
  • Forats en la superfície de l'object: La superfície de l'objecte no pot contenir forats. L'objecte sí que pot contenir-los, però aquests tindran una superfície interior continua.
  • Triangles degenerats: triangles amb àrea nul·la o costats amb longitud nul·la o per sota d'un mínim.
  • Triangles que interseccionen: els triangles de la superfície no poden interseccionar uns en altres.

En afegit, algunes advertències habituals que el programari pot donar són:

  • Elements massa prims o massa aguts: un element que no tingui un gruix mínim pot ser no imprimible o trencar-se després de la impressió.
  • Elements flotants o amb angle massa pla: les parts de l'objecte que no reposen sobre una capa inferior en un percentatge suficient poden no ser imprimibles o necessitar l'addició de suports per la seva impressió.

Referències[modifica]

  1. «Extensions:2.6/Py/Scripts/Modeling/PrintToolbox - BlenderWiki» (en anglès). [Consulta: 21 setembre 2018].