13.05.2013 Views

desarrollo de sistemas de realidad virtual y aumentada para la ...

desarrollo de sistemas de realidad virtual y aumentada para la ...

desarrollo de sistemas de realidad virtual y aumentada para la ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

salida <strong>la</strong> posición y orientación actual <strong>de</strong> <strong>la</strong> marca si ésta está visible o una posición<br />

alejada, <strong>de</strong> forma que no aparezca el objeto en pantal<strong>la</strong> si <strong>la</strong> marca no está visible.<br />

Adicionalmente, se hizo que los tres marcadores funcionaran como uno solo, lo<br />

que <strong>de</strong>bía ser una mejora importante y dotaría <strong>de</strong> mayor estabilidad al sistema, ya que<br />

<strong>la</strong> posición y orientación siempre era <strong>la</strong> media obtenida <strong>de</strong> todas <strong>la</strong>s marcas<br />

capturadas en un frame.<br />

En condiciones i<strong>de</strong>ales, todas <strong>la</strong>s marcas situadas en un mismo p<strong>la</strong>no <strong>de</strong>ben<br />

<strong>de</strong>volver <strong>la</strong> misma orientación, pero <strong>la</strong>s <strong>de</strong>ficiencias en <strong>la</strong> óptica <strong>de</strong> <strong>la</strong> cámara utilizada,<br />

y sobre todo en el entorno lumínico <strong>de</strong> <strong>la</strong> aplicación hacen aparecer cierto error.<br />

La i<strong>de</strong>a era crear <strong>la</strong> lógica necesaria <strong>para</strong> calcu<strong>la</strong>r en cada frame <strong>la</strong> orientación<br />

media <strong>de</strong> <strong>la</strong>s tres marcas. Lo que ocurre es que hacer una media <strong>de</strong> los ángulos<br />

<strong>de</strong>vueltos por un elemento <strong>de</strong> <strong>la</strong> lista <strong>de</strong>l plugin <strong>de</strong> ARToolKit no es una buena<br />

solución, ya que hacer <strong>la</strong> media <strong>de</strong> dos ángulos que estén justo en el límite <strong>de</strong><br />

<strong>de</strong>finición <strong>de</strong> los mismos resultará en un ángulo que realmente no es <strong>la</strong> media <strong>de</strong> los<br />

dos. Lo más a<strong>de</strong>cuado <strong>para</strong> obtener <strong>la</strong> orientación media es utilizar los vectores <strong>de</strong><br />

orientación que también <strong>de</strong>vuelve el elemento <strong>de</strong> <strong>la</strong> lista <strong>de</strong>l plugin <strong>de</strong> ARToolKit.<br />

Lo que se hace es promediar el valor resultante <strong>de</strong> sumar los vectores directores<br />

X e Y <strong>de</strong> <strong>la</strong>s marcas visibles en un <strong>de</strong>terminado instante <strong>de</strong> tiempo. De este modo se<br />

obtiene los vectores <strong>de</strong> orientación X e Y medios en cada instante. Posteriormente, se<br />

calcu<strong>la</strong>n los ángulos ‘head’, ‘pitch’ y ‘roll’ (h, p, r) correspondientes a dichos vectores,<br />

com<strong>para</strong>ndo <strong>la</strong> matriz <strong>de</strong>vuelta por el elemento <strong>de</strong> <strong>la</strong> lista <strong>de</strong>l plugin <strong>de</strong> ARToolKit y <strong>la</strong><br />

matriz <strong>de</strong> rotación <strong>de</strong> un marcador, <strong>de</strong>scrita por:<br />

⎛ cos( h)<br />

cos( r)<br />

− sen(<br />

h)<br />

sen(<br />

p)<br />

sen(<br />

r)<br />

⎜<br />

T = ⎜ sen(<br />

h)<br />

cos( r)<br />

+ sen(<br />

r)<br />

cos( h)<br />

sen(<br />

p)<br />

⎜<br />

⎝ − sen(<br />

r)<br />

cos( p)<br />

Se obtiene:<br />

− sen(<br />

h)<br />

cos( p)<br />

cos( h)<br />

cos( p)<br />

sen(<br />

p)<br />

cos( h)<br />

sen(<br />

r)<br />

+ sen(<br />

h)<br />

sen(<br />

p)<br />

cos( r)<br />

⎞<br />

⎟<br />

sen(<br />

h)<br />

sen(<br />

r)<br />

− cos( r)<br />

cos( h)<br />

sen(<br />

p)<br />

⎟<br />

cos( p)<br />

cos( r)<br />

⎟<br />

⎠<br />

p=asen(T32) h=atan(-T12/ T22) r=atan(-T31/ T33) si T32≠1<br />

p=180º h=atan(T21/ T23) r=0 si T32=1<br />

Los resultados <strong>de</strong> todos estos cálculos se obtienen mediante <strong>la</strong> utilización <strong>de</strong> una<br />

serie <strong>de</strong> maps, actualizados cada ciclo <strong>de</strong> refresco <strong>de</strong> <strong>la</strong> tarjeta gráfica.<br />

81<br />

Desarrollo <strong>de</strong> <strong>sistemas</strong> <strong>de</strong> Realidad Virtual y Aumentada <strong>para</strong> el tratamiento <strong>de</strong> <strong>la</strong> acrofobia. Estudios …

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!