Y3K-it | Solution Builders

Y3K-it | Solution Builders
Mostrando entradas con la etiqueta Realidad aumentada. Mostrar todas las entradas
Mostrando entradas con la etiqueta Realidad aumentada. Mostrar todas las entradas

martes, 24 de julio de 2012

Impresora de Agua !!!



Consulte por alquiler de impresoras de agua

Escritura en la caída del agua, o caída continua con proyección color.

jueves, 27 de octubre de 2011

Realidad Aumentada en La Rural Ganadera



Y3K-it Solution Builders implemento el juego de Realidad Aumentada "Y3K-Catch The Fruit" en el stand del Ministerio de Agricultura de la Nacion, durante la Exposicion Rural Ganadera 2011.

Grandes y chicos participaron activamente del juego!

Para ver el video accede al siguiente link : http://youtu.be/BmH7E9_N244




lunes, 15 de agosto de 2011

Alternativa boquense

Lanzamos un nuevo site para la agurpación alternativa boquense, además de encontrar información del club, de los trabajos de la agrupación, fotos, videos y sonidos de los hinchas de boca, las personas que visisten el site podrán jugar al nuevo juego de captura de movimientos y podrán tener la cancha de boca en sus manos con la tenconología de realidad aumentada.



El sitio para visitar y jugar con el escudo de boca y de la agrupación es

http://www.alternativaboquense.com.ar/realidadaumentada.asp

Para más información escribanos a info@y3k-it.com

sábado, 19 de marzo de 2011

Y3Kanoid

Implementamos un nuevo juego de ralidad aumentada, en esta oportunidad Y3Kanoid, una adaptación del clásico Arkanoid con la incorporación de realidad aumentada para el maejo de la paleta.



El juego fue desarrollado en Flex usando las librerías FlarToolkit. A continuación el código usado para el juego.

// ----- Lógica juego ARKANOID -----
private var NUM_BLOCK_ROWS:int=5;
private var NUM_BLOCK_COLS:int=10;
private var BALL_RADIUS:int=6;
private var INITIAL_BALL_SPEED:int=25;
private var BLOCK_FIELD_Y:int=50;
private var BLOCK_GUTTER_X:int=2;
private var BLOCK_GUTTER_Y:int=2;
private var PADDLE_HEIGHT:int=10;
private var PADDLE_WIDTH:int=50;
private var PADDLE_DIST_FROM_BOTTOM:int=10;
private var blocks:Array=new Array(0);
private var ball:Sprite=new Sprite();
private var paddle:Sprite=new Sprite();
 
// Variables del estado del juego private var ball_dx:Number;


private var ball_dy:Number;
private var ball_speed:Number;
private var lives:int=3;
 
Embed(source="./assets/azul.jpg")]
private var GoldBlock:Class;
 
Embed(source="/assets/rojo.jpg")]
private var RedBlock:Class;
 
Embed(source="/assets/verde.jpg")]
private var BlueBlock:Class;
 
private var allBlocks:Array=new Array(GoldBlock, RedBlock, BlueBlock);
 
public function initGame():void     // Bola
    ball.graphics.beginFill(0xee00ee);
    ball.graphics.drawCircle(0, 0, BALL_RADIUS);
    ball.graphics.endFill();
    addChild(ball);
    resetBall();

    // Paddle  
    paddle.graphics.beginFill(0x000000);
    paddle.graphics.drawRect(-PADDLE_WIDTH / 2, -PADDLE_HEIGHT / 2, PADDLE_WIDTH,     PADDLE_HEIGHT);
    paddle.graphics.endFill();
    paddle.y=VIDEO_HEIGHT - PADDLE_DIST_FROM_BOTTOM;
    addChild(paddle);

    // Bloques var reference_block:DisplayObject=new GoldBlock();
    sprite.x=block_field_x + x * (reference_block.width + BLOCK_GUTTER_X);
    sprite.y=BLOCK_FIELD_Y + y * (reference_block.height + BLOCK_GUTTER_Y);
    addChild(sprite);
    blocks.push(sprite);
    current_block_index++;
    current_block_index=0;

    ticker.addEventListener(TimerEvent.TIMER, onTick);
    ticker.start();
}

var block_field_width:int=NUM_BLOCK_COLS * reference_block.width + (NUM_BLOCK_COLS - 1) * BLOCK_GUTTER_X;
var block_field_x:int=(VIDEO_WIDTH - block_field_width) / 2;
var current_block_index:int=0;
for (var x:int=0; x < NUM_BLOCK_COLS; x++)
    for (var y:int=0; y < NUM_BLOCK_ROWS; y++)
        var current_image:Class=allBlocks[current_block_index];
        var sprite:DisplayObject=new current_image();
        if (current_block_index >= allBlocks.length)var ticker:Timer=new Timer(10);

public function onTick(event:TimerEvent):void
{
    detect(null);

    // Ajustar paleta al mouse (sin realidad aumentada)
    //paddle.x=mouseX;
   
    // Ajustar paleta al marcador (con realidad aumentada)
    paddle.x=actualX;

    // Verificar colisión
    if (ball.hitTestObject(paddle))
    // Ajustar el recorrido de la bola segun golpe en la paleta
    ball_dx=(ball_dx + new_ball_dx) / 2;
    ball_dy=-ball_dy;
var new_ball_dx:Number=(ball.x - paddle.x) / (PADDLE_WIDTH / 2.0) * INITIAL_BALL_SPEED;
// Colision con bloques
{
    for (var i:int=0; i < blocks.length; i++)
        var block:DisplayObject=blocks[i];
        if (block == null)continue; // Colisión
        {
                if (ball.hitTestObject(block)) // Borrar el tocado
                removeChild(block);
                blocks[i]=null;

                // Calcular rebote de bola
                var ball_distance_norm_x:int=(ball.x - block.x) / block.width;
                var ball_distance_norm_y:int=(ball.y - block.y) / block.height;// No volver a la misma direccion de rebote
                ball_dy=-ball_dy;
                ball_dx=-ball_dx;
                ball_dx=-ball_dx;
                if (ball_distance_norm_x * ball_dx > 0)
                else if (ball_distance_norm_y * ball_dy > 0)
                else if (ball_distance_norm_x > ball_distance_norm_y)
                else
                  ball_dy=-ball_dy;

                // Aumentar velocidad un 2.5%
                ball_dx*=1.025;
                ball_dy*=1.025;
            }
        }

    if (ball.x - BALL_RADIUS < 0)if (ball.x + BALL_RADIUS > VIDEO_WIDTH)if (ball.y - BALL_RADIUS < 0)// Se fue la pelotita al carajo
    {
        lives-=1;
    }

        resetBall();
        if (ball.y - BALL_RADIUS > VIDEO_HEIGHT)if (lives > 0) {// todo: GAME OVER
        }
        // Mover pelotita
        ball.x+=ball_dx;
        ball.y+=ball_dy;
}
public function resetBall():void
{
        ball.x=0.25 * VIDEO_WIDTH;
        ball.y=0.5 * VIDEO_HEIGHT;
        ball_dx=INITIAL_BALL_SPEED * 0.70;
        ball_dy=INITIAL_BALL_SPEED * 0.70;
}
´
El método para la detección del patrón y movimiento del paddle o paleta:

private function detect(aEvent:Event):void
{
    bitmapData.draw(video);
    flarRgbRaster_BitmapData=new FLARRgbRaster_BitmapData(bitmapData);try
    {
    if (detector.detectMarkerLite(flarRgbRaster_BitmapData, 80) && detector.getConfidence() > 0.3) {
        //Mover paleta del Arkanoid segun el marcador
    }
}

El marcador que usamos para jugar:


Finalmente les dejo un link al juego para que lo prueben después de imprimir el marcador y el link de descarga del proyecto Flex completo

Juego:
http://produccion.y3k-it.com/Y3Kanoid/Y3Kanoid.html
Fuentes:
http://produccion.y3k-it.com/download/Y3Kanoid.rar



Para más información dirigirse a http://www.y3k-it.com/ o escribir a info@y3k-it.com.
 
{

sábado, 12 de marzo de 2011

Realidad aumentada en Allianz

Para el stand de Allianz en el evento Expoingeniería que tuvo lugar en la Sociedad Rural Argentina presentamos una trivia con realidad aumentada



La misma consistió en una serie de preguntas multiple chioce a las cuales se respondía presentando un marcador en pantalla. Siendo el slogan de la compañia Allianz de la A a la Z se presentaron como opciones de respuestas estos marcadores:



El impacto generado en el público fue en extremo positivo, se formaron largas filas para participar del juego logranda captar la atención de todos los visitantes de la expo.



Para más información visite http://www.y3k-it.com/ o escriba a info@y3k-it.com

miércoles, 9 de marzo de 2011

Realidad aumentada - Captura de movimientos

Y3K implementa un nuevo juego de realidad aumentada, esta vez usando tecnología de captura de movimientos


La tecnología de Motion Captura se logra comparando frame a frame de un video para ver el cambio de pixels entre un frame y otro, estos cambios de pixels se almacenan en un array logrando coordenadas de cambios o movimientos.
El algoritmo de detección de cambios es muy sencillo:

public function getDifferences():Array 
{
  newData.draw(video);
  var differences:Array=[]; 

  for (var px:int=0; px < newData.width; px+=blockSize)
  {
    for (var py:int=0; py < newData.height; py+=blockSize)
    {
      var oldPixel:uint=oldData.getPixel(px, py);
      var newPixel:uint=newData.getPixel(px, py);

      if (Math.abs(newPixel - oldPixel) > sensitivity)
      {
        differences.push(new Point(px, py));
      }
    }
  }

  oldData.copyPixels(newData, newData.rect, new Point(0, 0));
  return differences; 
}

Este método es el que retorna el array de cordenadas con los cambios.


Para probar el juego entrá en http://www.y3k-it.com/eventos/

Para más información visite http://www.y3k-it.com/ o escriba a info@y3k-it.com

Free Shop Car Race - Juego de realidad aumentada

Y3K-it implemento con éxito el juego de realidad aumentada llamado Free Shop Car Race, para DutyFreeShop de Ezeiza, durante la campaña de marketing la gente pudo disfrutar de un juego de carreras realizado con tencología de realidad aumentada.
Entre los participantes ademnás de premios como Ninntendo Wii o Nintendo DS, se sorteaba una Ferrari F-350. En la imágen se puede apreciar la pantalla inicial del juego promocionando la campaña.




El desarrollo contó con varios auspiciantes de renombre como Nestlpe, Dior, Versace, etc.




El juego fue desarrollado en Flex 4 usando las librerías FlarToolKit.

Para más información visite http://www.y3k-it.com o escriba a info@y3k-it.com

Inauguración

Desde Y3K-it inauguramos este espacio para afianzar la comunicación con nuestros clientes, publicando noticias de tecnología y comentando nuevos logros de la empresa. El objetivo es el de crear un espacio participativo donde recursos, clientes, proveedores, y, todas aquellas personas relacionadas con la empresda puedan intercambiar notas, opiniones, etc.

Para más información visite http://www.y3k-it.com o escriba a info@y3k-it.com