diff --git a/src/index.md b/src/index.md index c2f1f2a..a99077b 100644 --- a/src/index.md +++ b/src/index.md @@ -94,6 +94,7 @@ title: "🍃 jardínBit" * [[P3D: Mallas]](/notasP3D/mallas.html) * [[P3D: Sólidos cilíndricos y cónicos]](/notasP3D/cilindricos-y-conicos.html) * [[P3D: Retícula]](/notasP3D/reticula.html) +* [[P3D: Exportar mallas OBJ]](/notasP3D/obj.html) ### Apariencia diff --git a/src/notasP3D/obj.md b/src/notasP3D/obj.md index 76436f2..4b74dd1 100644 --- a/src/notasP3D/obj.md +++ b/src/notasP3D/obj.md @@ -1,3 +1,92 @@ --- -title: "P3D: Exportar e importar mallas OBJ" +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. + +