{"id":262,"date":"2010-09-23T11:53:57","date_gmt":"2010-09-23T11:53:57","guid":{"rendered":"http:\/\/www.dtic.upf.edu\/~jagenjo\/?p=262"},"modified":"2010-09-23T11:53:57","modified_gmt":"2010-09-23T11:53:57","slug":"infografia-i-practica-5-camaras-2","status":"publish","type":"post","link":"https:\/\/tamats.com\/upf\/?p=262","title":{"rendered":"Infografia I, Pr\u00e1ctica 5: C\u00e1maras"},"content":{"rendered":"<p>En esta pr\u00e1ctica se trata todo el tema relacionado con las  transformaciones geometricas, c\u00f3mo posicionar objetos en nuestro entorno  y c\u00f3mo moverlos, rotarlos y escalarlos. Tambien se profundiza en el  concepto de sistema de coordenadas.<\/p>\n<p>Para ello se tendr\u00e1 que hacer uso de las transformaciones mediante  matrices. Es importante tener fresca toda la teor\u00eda de algebra asociada a  matrices (multiplicacion de matrices, propiedades de las matrices,  etc).<\/p>\n<p>Esta pr\u00e1ctica es clave para moverse con facilidad por entornos 3D.<\/p>\n<h3>Material<\/h3>\n<ul>\n<li><a href=\"https:\/\/docs.google.com\/present\/view?id=dg932qn8_151hsxmrtdg\" target=\"_blank\">Slides sobre Camaras<\/a><\/li>\n<li><strong><a href=\"uploads\/practicas\/framework_prac5.zip\">Framework de la  practica 5<\/a><\/strong><\/li>\n<\/ul>\n<h3>Requisitos<\/h3>\n<ul>\n<li> Implementar las siguientes funciones del framework:\n<pre lang=\"cpp\">Class Camera\n\tvoid updateViewMatrix( void );\n\tvoid updateProjectionMatrix( void );\n<\/pre>\n<\/li>\n<li>La escena tiene que tener varios objetos en diferentes posiciones comportandose de manera independiente.<\/li>\n<li>La posici\u00f3n de la camara (eye) se tiene que poder controlar con el teclado (sin afectar al center).<\/li>\n<li>La posicion donde apunta la camara (center) se tiene que poder controlar con el teclado (sin afectar al eye).<\/li>\n<li>Sugerencias  opcionales:\n<ul>\n<li>Se valorar\u00e1 la interacci\u00f3n con la c\u00e1mara, la comodidad para moverse por el entorno, poder cambiar de c\u00e1mara, etc.<\/li>\n<li>Interaccion m\u00e1s compleja: Poder mover la c\u00e1mara relativa a donde est\u00e1 apuntando para navegar por la escena.<\/li>\n<li>Pintar la escena desde dos puntos de vista distintos a la vez, usando <a href=\"http:\/\/www.opengl.org\/sdk\/docs\/man\/xhtml\/glViewport.xml\">glViewport<\/a> (esta instrucci\u00f3n nos permite definir la regi\u00f3n de la pantalla donde vamos a dibujar).<\/li>\n<\/ul>\n<\/ul>\n<h3>Fallos comunes<\/h3>\n<ul class=\"bad\">\n<li><strong>Tener la viewmatrix mal y no darse cuenta<\/strong>. Fijaos si el resultado de mover el eye o el center concuerda con lo que intuitivamente deber\u00eda pasar. Si se mueve solo el eye entonces lo que haya en el centro debe seguir en el centro, si se mueve el center entonces la posici\u00f3n de la camara tiene que ser exactamente la misma. Podeis comparar vuestros resultados con los que genera el codigo de OpenGL, si hay mucha diferencia entonces hay algun fallo. Mirad de no estar usando la transpuesta en algun paso.<\/li>\n<li>Al mover la camara se percibe como si rotase sobre el eje Z (roll), no deberia pasar si el up es (0,1,0). No confundir el vector Top por el Up.<\/li>\n<li>Llenar el codigo de variables model. Si teneis m\u00e1s de una model podeis hacer un array de models en lugar de usar variables sueltas.<\/li>\n<li>Utilizar las funciones de OpenGL que crean las matrices automaticamente (glLookAt o glPerspective)<\/li>\n<li>Multiplicar los vectores en lugar de hacer producto vectorial. Teneis un m\u00e9todo en la clase Vector3 para realizar el producto vectorial.<\/li>\n<\/ul>\n<div class=\"legend\">Valor: <strong>10 puntos<\/strong><\/div>\n","protected":false},"excerpt":{"rendered":"<p>En esta pr\u00e1ctica se trata todo el tema relacionado con las transformaciones geometricas, c\u00f3mo posicionar objetos en nuestro entorno y c\u00f3mo moverlos, rotarlos y escalarlos. Tambien se profundiza en el concepto de sistema de coordenadas. Para ello se tendr\u00e1 que hacer uso de las transformaciones mediante matrices. Es importante tener fresca toda la teor\u00eda de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/posts\/262"}],"collection":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=262"}],"version-history":[{"count":0,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/posts\/262\/revisions"}],"wp:attachment":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}