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 ...
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 …