• Home   /  Educacion   /  Campus   /  
  • Imagen espacio: Videomapping y realidad aumentada proyectada
Imagen espacio: Videomapping y realidad aumentada proyectada

1. Estudios teóricos


 

1.1 Casos de estudio

1.2 Textos a discusión

 

 

 

2. Estudios de Programación


 

 

2.1 Referencias de código

  • ..
  • .

 

 

2.2 IDE Integrated Development Environment

Desarrollaremos nuestros proyectos escribiendo el código, construyendo y ejecutando nuestros programas usando un IDE Integrated Development Environment.

Sigue esta guía para Instalar un IDE adecuado a tu sistema operativo.

Una vez abierto este programa la interfaz está dividida en

INTERFACE

 

 

2. 3 OpenFrameworks

Basado en el tipo de sistema operativo (OSX, Linux, Windows) descarga la distribución apropiada de openFrameworks (recomendada la versión 0.9.8). Más Instrucciones http://www.openframeworks.cc/download y en https://openframeworks.cc/download/older/

*Nota:Verificar actualizaciones en las guías y recomendación de instalación de openFrameworks

maluse

Una vez descomprimida, la carpeta contiene

EXE-_ArteCódigoC++ 050218 (5)

Ejemplos
Ordenados por tema, pueden ser un punto de partida para desarrollar aplicaciones similares.
Libs
Bibliotecas que openFrameworks utiliza para compilar los proyectos.

Project Generator
Generador de proyectos

Aplicaciones
Esta es la carpeta donde se colocan los archivos de proyecto al hacer nuevos proyectos. La descarga actual contiene la carpeta denominada “myApps” dentro de “apps y allí se alojarán los proyectos creados via Project Generator.

Addons
La carpeta “addons” contendrá los complementos, piezas adicionales de código que amplían las funcionalidades de OF. Los complementos “básicos”, ya vienen incluidos en la descarga. También puedes ir a ofxAddons donde encontrarás una enorme colección de complementos adicionales de la comunidad.

Project Generator

Primer uso del Project Generator

Estructura típica de un proyecto en openFrameworks

 

EXE-_ArteCódigoC++ 050218 (7)

Estructura de un proyecto de openFrameworks abierto con XCode

main.cpp Es el primer elemento en ser ejecutado en nuestro programa. Allí podemos encontrar las dimensiones de la ventana que ocupará nuestra aplicación en ejecución.
ofApp.h alberga las declaraciones de las funciones de nuestro programa.
ofApp.cpp contiene el desarrollo de dichas funciones.
ofApp.cpp y ofApp.h son partes inter conectadas de nuestro proyecto.

Una vez damos al botón “Run” las funciones se ejecutan esencialmente en esta secuencia:

EXE-_ArteCódigoC++ 050218 (8)

El archivo ofApp.cpp abierto en XCode

Nota: Bitácora del Curso de Programación C++ “Arte del código”.

El origen de coordenadas se sitúa en la esquina superior izquierda de la ventana de nuestra aplicación.
EXE-_ArteCódigoC++ 050218 (9)

A través de las abstracciones de C ++ de Openframeworks podemos conocer y definir todos los aspectos del comportamiento de nuestro programa. Un ejemplo de estas abstracciones OF es ofGetWindowWidth (), ofGetScreenHeight () para conocer el ancho o el alto de nuestras pantallas.

El vocabulario básico de C++ Openframeworks que encontraremos en un proyecto de video mapping incluye:

EXEVGU2019-1

Sintáxis de una función típica

EXEVGU2019-1-1

Los tipos de datos que admitirán nuestras Variables

 

EXEVGU2019-1-2

Operaciones que asignan valores a variables y operaciones aritméticas

 

EXEVGU2019-1-3

Las variables admiten operaciones de acuerdo a su Tipo

EXEVGU2019-1-4

Los eventos en la ejecución pueden seguir ciertas condiciones

EXEVGU2019-1-5

Ejecuta un conjunto de instrucciones en bucle hasta cumplir una condición dada.

 

2.4 Raspberry Pi

810xXvVWWwL._SX466_

  • Hardware Raspberry Pi 3+, fuente 5V 3A
    61EgA3pHAeL._SX425_
  • Preparar una Tarjeta SD >8GB con el Raspbian OS (Desktop).
    613E2rzuxGL._SX466_
  • Conectar el dispositivo a Internet.
  • Con Monitor: Conectar Monitor y Periféricos a la Raspberry Pi.
  • Abrir el Terminal:

Open-Terminal-Raspberry-Pi

  • Sin Monitor: En sudo raspi-config Preparar el acceso remoto SSH a Raspberry Pi, y conectar el dispositivo a la misma red que nuestro ordenador.
  • Setup de Openframeworks en RPI 3 con “Buster” OS
    https://openframeworks.cc/setup/raspberrypi/raspberry-pi-getting-started/
    Considerar no realizar el paso:
    “This is optional but suggested.

    1. Select 3 Boot Options
    2. Select B1 Console or B2 Console Autologin
  • Otra guía con los pasos completos aunque con algunas particularidades (pasos 5 y 6 no son necesarios): https://forum.openframeworks.cc/t/rpi3-buster-lite-of-0-11-0-cant-run-example/33947/16
  • Una vez compilado openFrameworks podemos probar un ejemplo navegando por ejemplo a cd openFrameworks/examples/graphics/graphicsExample, luego make && make run.
  • Descargar y preparar la descompresión ofxFreeMapping en la Raspberry Pi
  • Añadir ofxFreeMapping a addons
  • Preparar un proyecto nuevo a partir de emptyExample:
    “Unlike other platforms, OF Raspberry Pi projects do not make use of the projectGenerator. To create your own project from scratch, copy openFrameworks/examples/empty/emptyExample into openFrameworks/apps/myApps/yourProjectName folder and start from there.”
  • Añadir al nuevo proyecto el directorio SRC y directorios bin/data incluyendo los archivos de película, sonido, imágenes adecuados.
  • Para editar los archivos de código en Terminal:
    cd openFrameworks/apps/myApps/yourProjectName/src
    ó:
    cd openFrameworks/examples/empty/emptyExample/src
    y luego por ejemplo para ofApp.cpp:
    sudo nano ofApp.cpp
  • Un resumen de make, y make run para ofxFreeMapping ejemplo básico:

rpi-ofxfreemapping

  • Claves en el proceso:
  • En: cd openframeworks/libs/openFrameworksCompiled/project/linuxarmv6l/ o similar:
    Ejecutar: sudo nano config.linuxarmv6l.default.mk
    Y comentar la línea “USE_PI_LEGACY = 0”
    usando # Quedaría: # USE_PI_LEGACY = 0
    Captura de pantalla 2019-12-11 a las 15.32.14
  • (Opcional, No es un paso crítico)
    En un proyecto o ejemplo a construir localizar el config.make:
    cd .. && sudo nano config.make
    Y cambiar:
    PROJECT_LDFLAGS += -latomic

 

 

 

 

3. Referencias


 

Troubleshooting

Teóricas

 

Técnicas

 

Tags: , , , , , , , , , , , , , ,

18 Comentarios

MicaelaPublicado  8:51 pm - jul 18, 2016

Aquesta proposta es veu fenomenal! quan repetiran aquest curs?

DavidPublicado  7:09 pm - nov 24, 2016

Buenas, ens interessa molt aprendre sobre aquest tema. Com podríem organitzar aquest curs a Girona en els propers mesos?

Free SoftwarePublicado  8:09 pm - ene 6, 2017

Curso interesante que ofrece una mirada única sobre la construcción de sus propias programas de software que compiten con los programas comerciales que encontramos en el mercado

WalterPublicado  4:52 pm - may 17, 2017

Pregunta simple: Para obtener dibujo solo cuando el boton derecho del ratón esté presionado, he encontrado el siguiente código. alquien me puede guiar?

int White;
int Black;
float h;
float s;
float b;
color CurrentColor;

void setup()
{
size(640,480);
background(255);
frameRate(60);
s = saturation(0);
b = brightness(0);
h = hue(0);
Black = color(0);
White = color(255);
CurrentColor = color(255);

}
void draw()
{
fill(Black);
rect(0,0,30,30);

if (mousePressed)
{
noStroke();
fill(CurrentColor);

if ((mouseX>140) && (mouseY>20) && (mouseX<190) && (mouseY<70))
{
rect(mouseX-25,mouseY-25,50,50);
}
else
{
rect(mouseX-10,mouseY-10,20,20);
}
}
else
{
ellipse(mouseX,mouseY,20,20);
}
}

void setStrokeWeight()
{
if (keyPressed && key == '1')
strokeWeight(1);
else if (keyPressed && key == '2')
strokeWeight(2);
else if (keyPressed && key == '3')
strokeWeight(3);
else if (keyPressed && key == '4')
strokeWeight(4);
else if (keyPressed && key == '5')
strokeWeight(5);
else if (keyPressed && key == '6')
strokeWeight(6);
else if (keyPressed && key == '7')
strokeWeight(7);
else if (keyPressed && key == '8')
strokeWeight(8);
else if (keyPressed && key == '9')
strokeWeight(9);
else if (keyPressed && key == '0')
strokeWeight(0);
}

void keyPressed(){
if (key == 'c')
background(0);
}

    lablibertarioPublicado  4:56 pm - may 17, 2017

    Una primera idea:

    color c=color(0);
    int x, y, xp, yp;
    int strokeW=1,flag=0;
    void setup()
    {
    size(640, 480);
    background(255);
    }
    void draw()
    {
    noStroke();
    fill(c);
    rect(0, 0, 30, 30);
    stroke(c);
    strokeWeight(strokeW);
    if(flag==1) line(mouseX, mouseY, pmouseX, pmouseY);
    }

    void mouseDragged() {
    flag=1;
    }
    void mouseReleased(){
    flag=0;
    }

    void keyPressed() {
    if (key == 'c')
    background(0);
    if (key == CODED) {
    if (keyCode == UP) strokeW++;
    if (keyCode == DOWN) strokeW--;
    }
    if (strokeW<0)strokeW=1;
    if(key== ' ') c = color(random(0,255),random(0,255),random(0,255));
    }

DamienPublicado  7:05 pm - may 31, 2017

m’interessa molt la seva feina, parlem, tinc el seu correu, fins aviat!

Info@systemdesignstudio.comPublicado  12:14 pm - jun 16, 2017

Hola! al final no podré asistir al curso…. Espero poder hacerlo en un otro momento… Yo ya recibo su newsletter y trataré de estar al corriente de noticias suyas mirando vuestra página web, no la había visitado y he quedado encantada con su trabajo; Gracias por compartir y por hacer lo que hacéis! 😉

AlbaPublicado  6:26 pm - jul 1, 2017

Hola! felicitaros por el trabajo que hacéis y agradeceros por poner a disposición de todos tantos ejemplos e imágenes, definitivamente son de gran ayuda para quienes como yo somos autodidactas. Larga vida libertar.ios!

Caida Libre TechPublicado  5:14 am - ago 1, 2017

Hola buenas! Soy miembro de un laboratorio de nuevas tecnologías en Nantes Francia, interesado en apuntarme para el proximo taller de programación y video mapping. Ahi les dejé mi correo electrónico. Un saludo y muchas gracias

Ana B.Publicado  4:49 pm - dic 20, 2017

Muchas gracias por seguir compartiendo y actualizando tanta información! Llevé este curso a fines del 2016, y quedé sorprendida por todo lo que puedo hacer programando usando Processing. Me encantó la experiencia, lo pasé fenomenal y se la recomiendo a todo el mundo. El profesor fantástico, el grupo con el que compartí el curso también fue encantador. Un fuerte abrazo

Ximena RíosPublicado  9:12 pm - may 10, 2018

Me encantó el curso, muchas de las referencias que vimos fueron bellísimas. Conocer estas artes me ha encantado…voy a seguir visitando su página.

Marco JimenezPublicado  12:58 pm - jun 29, 2018

Uf, q buen post, impresionante, q buen trabajo el q han hecho, excelentes datos, gracias por compartir 🤘 🤘 🤘

MartaPublicado  2:34 pm - jul 20, 2018

Ha estat un gran plaer haver participat de l’últim curs d mapping, molt agraïda per tot el compartit, el profe super professional i bona persona

FutureXPublicado  1:58 pm - oct 16, 2018

súper gracias chicas! sigan compartiendo

Deja un comentario

Redes