---
title: "P3D: Exportar mallas OBJ"
---

Es posible exportar nuestras mallas / objetos 3D desde Processing, a un archivo con un formato común llamado .OBJ

Normalmente estos archivos pueden importarse en software de modelado 3D, render o incluso de impresión 3D.

# Configuración

Instala la biblioteca *OBJExport*:

*Sketch -> Importar biblioteca -> Añadir biblioteca*. Ahí busca: *OBJExport* y presiona en *Instalar*

[Enlace original de la biblioteca](https://n-e-r-v-o-u-s.com/tools/obj/)

# Ejemplo de uso

## Polígonos triangulares y cuadrangulares

Este ejemplo guarda los objetos dibujados entre la función `beginRecord( )` y `endRecord()`, al iniciar el programa

```java
import peasy.*;
PeasyCam cam;

// importa biblioteca objexport
import nervoussystem.obj.*;
boolean record = true; // cambia a false para no guardar

void setup() {
  size(400, 400,P3D);
  
    // cámara a 50 unidades de 0,0,0
  cam = new PeasyCam(this, 50);

  // ajusta perspectiva: ve en un rango entre 1 y 500 unidades
  perspective(PI/3, 1.0*width/height, 1, 500);
}

void draw() {
  background(255);
  // Establece "luces" por defecto
  lights();
  
  // guía de ejes coordenados con largo de 10
  dibujaEjes(10);
  
  // inicia grabación de archivo
  if (record) {
    beginRecord("nervoussystem.obj.OBJExport", "nombredearchivo.obj"); 
  }  
  
  // dibuja aquí:
  box(10);
  
  
  // termina de grabar el archivo
  if (record) {
    endRecord();
    record = false;
  }
} // cierra draw()

void dibujaEjes(float d) {
  // esta función dibuja los ejes coordenados X, Y, Z
  // de colores R, G, B respectivamente
  // d: longitud de las líneas
  
  // eje X: rojo
  stroke(255, 0, 0);
  line(0, 0, 0, d, 0, 0);

  // eje Y: verde
  stroke(0, 255, 0);
  line(0, 0, 0, 0, d, 0);

  // eje Z: azul
  stroke(0, 0, 255);
  line(0, 0, 0, 0, 0, d);

  // regresa al color negro de línea
  stroke(0, 0, 0);
} // cierra función dibujaEjes( )
```


## Polígonos de más de 4 aristas

Si estás creando mallas con polígonos que no son triángulos ni cuadriláteros (por ejemplo, al crear caras sin modo de dibujo especificado, y/o con `bezierVertex( )`), usa la función `beginRaw( )` en lugar de `beginRecord( )` para que tu archivo consista en la malla teselada (convertida a triángulos) por Processing.


