Han pasado seis años desde que lancé mi primer tutorial sobre realidad aumentada. Ahora les comentaré cómo hacer realidad aumentadad NFT. No nos vamos a poner sentimentales; pero siempre que hablo sobre realidad aumentada+ processing me traen buenos recuerdos 😀
La semana pasada recibí un correo de Ryo; el creador de Nyartoolkit (librería de realidad aumentada multiplataforma) comentándome sobre su nueva versión de su librería que era compatible con processing 3 (la última actualización de processing). Esta nueva actualización de Nyartoolkit tenía una información interesante: la estabilidad de su sistema para trabajar Natural Feature Tracking (NFT), es decir no es necesario utilizar marcadores a blanco y negro como el Hiro tradicional, sino que permite reconocer imágenes a color y de diferentes formas.
Tutorial: realidad aumentada NFT
Primero vamos a explicar cómo instalar realidad aumentada con processing 3.2
- Instala processing. La plataforma por excelencia en esta web -> https://processing.org/download/
- Descarga Nyartoolkit. En realidad esta librería existe para varias plataformas; pero en este caso usaremos para processing -> https://github.com/nyatla/NyARToolkit-for-Processing
- Algunos recordarán que antes era necesario descargar el quicktime y el WinVDIG para configurar el tema de video. Ahora simplemente debes asegurarte que funcione tu cámara web y que tengas (just in case) la librería de video ya instalada. Para hacer eso vamos a processing -> sketch -> importar librería -> añadir librería

- Ahora vamos a analizar nuestros archivos descargados de nyartoolkit. En realidad existen dos archivos que posiblemente sean necesario descargar https://github.com/nyatla/NyARToolkit-for-Processing/releases. En este caso podemos ver. Yo descargo estas dos porque en ambos tenemos información sobre las librerías más completas (nyar4psg y Nyartoolkit) y en el otro source code podemos ver la carpeta de archivos data completa.

- Abrimos el primer ejemplo -> examples -> simpleLite. Una vez abierto es necesario agregar las dos librerías que les comenté. Simplemente arrastramos estas librerías hacia el sketch.

- Si te arroja un error con camera_data simplemente en la carpeta data buscamos este archivo y también lo arrastramos.

- Por fin -> Darle Run para ver si reconoce la cámara, marcador HIRO (que está en la carpeta data) y la imagen cubo.

- Ahora que más! Pues a realizar el uso de NATURAL FEATURE TRACKING (NFT) Sí! Por que en realidad el tutorial es sobre este tópico 😉 En la carpeta example existe un ejemplo llamado nftfilesGEN

- Utilizamos la imagen que deseemos (y que cumpla requisitos visuales importantes) e iniciamos el proceso de registro. Hacemos el import -> luego make feature set -> export

- Luego le damos exportar y tendremos tres archivos distintos. En mi caso será peru.iset, peru.fset,peru.fset3. Estos tres elementos lo pondremos dentro de nuestro sketch.
- El sketch que vamos utilizar es el simpleNFT. Abrimos el sketch y cambiamos la linea de código 24, donde estará colocada la información de addNFTtarget («infinitycat») por nuestro archivo nombrado

- RUN! y veremos nuestro marcador y el ejemplo inicial

El código sería:
/**
NyARToolkit for proce55ing/1.0.0
(c)2008-2011 nyatla
airmail(at)ebony.plala.or.jp
ARマーカとIdマーカを同時に使う例です。
ARマーカはkanji,hiro、idマーカは0,1番のマーカを使う事ができます。
This sample handles 2 ARToolkit style markers and 2 NyId markers at same time.
The ARToolKit marker files are kanji.patt and hiro.patt. NyId marker ids are #0 and #1.
*/
import processing.video.*;
import jp.nyatla.nyar4psg.*;
Capture cam;
MultiNft nya;
void setup() {
size(640,480,P3D);
colorMode(RGB, 100);
println(MultiMarker.VERSION);
cam=new Capture(this,640,480);
nya=new MultiNft(this,width,height,»camera_para5.dat»,NyAR4PsgConfig.CONFIG_PSG);
nya.addNftTarget(«peru»,160);//id=0
cam.start();
}
void draw()
{
if (cam.available() !=true) {
return;
}
cam.read();
nya.detect(cam);
background(0);
nya.drawBackground(cam);//frustumを考慮した背景描画
if(!nya.isExist(0)){
return;
}
nya.beginTransform(0);
fill(255,0,0);
translate(-80,55,20);
box(40);
nya.endTransform();
}













Deja un comentario