{"id":48,"date":"2014-09-17T04:26:31","date_gmt":"2014-09-17T04:26:31","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/eadiaz\/?p=48"},"modified":"2014-09-17T04:26:31","modified_gmt":"2014-09-17T04:26:31","slug":"ray-casting","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/eadiaz\/2014\/09\/17\/ray-casting\/","title":{"rendered":"Ray Casting"},"content":{"rendered":"<p>El Ray Casting es un algoritmo de renderizado de gr\u00e1ficos de computadora que se basa en el algoritmo de Raytracing, el cual tiene como objetivo crear escenas tridimensionales en im\u00e1genes bidimensionales.<\/p>\n<p>Esta t\u00e9cnica se basa en los principios f\u00edsicos de la reflexi\u00f3n, refracci\u00f3n y absorci\u00f3n de la luz; una fuente de luz emite rayos luminosos hasta ser interrumpida por un cuerpo el cual puede ser tener propiedad reflectivas, refractivas y absortivas dependiendo de los colores del mismo o si es trasl\u00facido o transparente. Los rayos luminosos ser\u00e1n a su vez reflejados o refractados por otros obst\u00e1culos (cuerpos) siendo estos finalmente captados por el ojo humano con su respectiva percepci\u00f3n de la profundidad.<\/p>\n<p>Aplicando \u00e9ste principio natural a la geometr\u00eda de gr\u00e1ficos computacionales es posible recrear este fen\u00f3meno asumiendo que cada pixel existente en pantalla proyecta un rayo geom\u00e9trico trazado hacia el ojo del observador, el cual representa la luz reflejada desde el objeto hacia el ojo del observador como ocurre en el fen\u00f3meno natural logrando de esta forma la percepci\u00f3n tridimensional de un objeto en pantalla.<\/p>\n<p>Otro ejemplo de \u00e9ste fen\u00f3meno f\u00edsico se aprecia en la captura de im\u00e1genes por c\u00e1maras anal\u00f3gicas y digitales. En la pantalla bidimensional del dispositivo es posible observar una imagen cuyos elementos poseen profundidad de campo, niveles de luminosidad, saturaci\u00f3n y todas las caracter\u00edsticas producidas por los fen\u00f3menos de refracci\u00f3n y absorci\u00f3n de la luz.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/eadiaz\/files\/2014\/09\/ray1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-49\" src=\"http:\/\/blog.espol.edu.ec\/eadiaz\/files\/2014\/09\/ray1-300x183.png\" alt=\"ray1\" width=\"300\" height=\"183\" srcset=\"https:\/\/blog.espol.edu.ec\/eadiaz\/files\/2014\/09\/ray1-300x183.png 300w, https:\/\/blog.espol.edu.ec\/eadiaz\/files\/2014\/09\/ray1.png 646w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><strong>Teor\u00eda de Fondo y aspectos t\u00e9cnicos<\/strong><\/p>\n<p>La idea es que estamos construyendo un mundo en 3D lanzando un n\u00famero de rayos hacia una escena. Estos rayos est\u00e1n basados en la posici\u00f3n del observador, la direcci\u00f3n y el campo de visi\u00f3n. Los n\u00fameros enteros representan celdas o bloques coloreados\u00a0 mientras que el valor de \u201c0\u201d representa un espacio vac\u00edo.<\/p>\n<p>Iteramos desde el lado izquierdo de la ventana hacia el derecho trazando un rayo por cada columna de pixeles. Cada vez que un rayo golpea\u00a0 el borde de una celda se calcula\u00a0 su longitud. Basado en qu\u00e9 tan lejos est\u00e9 del borde dibujamos una l\u00ednea vertical de pixeles centrada en la cuadr\u00edcula, as\u00ed es como logramos el efecto de profundidad.<\/p>\n<p>Dado que su implementaci\u00f3n no involucra ninguna geometr\u00eda tridimensional (ya que el 3D que se percibe es un efecto \u00f3ptico) esta t\u00e9cnica puede ser utilizada en cualquier medio que soporte un contexto 2D, esto incluye lienzos HTML5\u00a0 e incluso dispositivos TI-83.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Aplicaciones del Ray Casting<\/strong><\/p>\n<p>El Ray Casting tiene diversas aplicaciones con lo que respecta a los gr\u00e1ficos de videojuegos y renderizado 3D. En la d\u00e9cada de los 90\u2019s cuando los procesadores de las computadoras no eran capaces de ejecutar verdaderos motores gr\u00e1ficos en 3D, el ray casting fue utilizado como una soluci\u00f3n. El juego m\u00e1s conocido que utilizaba \u00e9sta t\u00e9cnica era Wolfenstein 3D, lanzado al mercado en 1992.<\/p>\n<p>Adem\u00e1s tiene aplicaciones en la medicina como lo es en la imagenolog\u00eda m\u00e9dica, la cual tiene como fin crear representaciones visuales y tridimensionales del interior del cuerpo humano , vali\u00e9ndose de las tecnolog\u00edas actuales de captura de im\u00e1genes como lo son rayos X, resonancias magn\u00e9ticas, termograf\u00edas, endoscop\u00edas, ultrasonido y fotograf\u00eda m\u00e9dica.<\/p>\n<p>Esto es posible gracias a la unidad procesadora gr\u00e1fica de los equipos m\u00e9dicos computarizados , la cual transforma las im\u00e1genes obtenidas de los medios diagn\u00f3sticos ya mencionados en im\u00e1genes tridimensionales que pueden ser interpretadas por los m\u00e9dicos para detectar posibles patolog\u00edas, malformaciones o incluso puede ser usada para fines educativos dentro del \u00e1rea.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/eadiaz\/files\/2014\/09\/ray2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-50\" src=\"http:\/\/blog.espol.edu.ec\/eadiaz\/files\/2014\/09\/ray2-300x200.jpg\" alt=\"ray2\" width=\"300\" height=\"200\" srcset=\"https:\/\/blog.espol.edu.ec\/eadiaz\/files\/2014\/09\/ray2-300x200.jpg 300w, https:\/\/blog.espol.edu.ec\/eadiaz\/files\/2014\/09\/ray2.jpg 451w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>En la actualidad, el algoritmo de trazado de rayos es la base para otros algoritmos m\u00e1s complejos de s\u00edntesis de im\u00e1genes \u00a0(mapeado de fotobes, Metropolis, entre otros) capaces de reproducir efectos de iluminaci\u00f3n como la mezcla de colores.<\/p>\n<p>El ray casting al igual que otras t\u00e9cnicas en la historia de la tecnolog\u00eda computacional toma como referencia principios naturales como es el de la refracci\u00f3n, reflexi\u00f3n y absorci\u00f3n de la luz. Tiene un sinf\u00edn de posibilidades en cuanto a lo que respecta a sus aplicaciones.<\/p>\n<p>Podemos complementar \u00e9sta tecnolog\u00eda con otras \u00e1reas, tales como la medicina, la biolog\u00eda, dise\u00f1o y producci\u00f3n de videojuegos, animaci\u00f3n, las cuales tienen una participaci\u00f3n muy importante en cuanto a las necesidades y el consumo de la poblaci\u00f3n.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Recomendaciones<\/strong><\/p>\n<p>En mi opini\u00f3n personal siento que el potencial del Ray Casting puede ser explotado en la educaci\u00f3n implementando el dise\u00f1o de plataformas virtuales que permitan la interacci\u00f3n entre el estudiante y el computador. Adem\u00e1s aprovechar\u00eda sus propiedades en el campo de b\u00fasqueda y rescate de personas mediante la creaci\u00f3n de softwares que permitan obtener una imagen tridimensional de lugares accidentados que permitan reconocer la existencia de individuos desaparecidos en el per\u00edmetro.<\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>Bibliograf\u00eda<\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/link.springer.com\/article\/10.1007\/s00371-008-0261-9#page-1\">http:\/\/link.springer.com\/article\/10.1007\/s00371-008-0261-9#page-1<\/a><\/li>\n<\/ul>\n<ul>\n<li><a href=\"http:\/\/lodev.org\/cgtutor\/raycasting.html\">http:\/\/lodev.org\/cgtutor\/raycasting.html<\/a><\/li>\n<\/ul>\n<ul>\n<li><a href=\"http:\/\/benjamin.mora.free.fr\/A%20new%20object-order%20RayCasting%20algorithm.pdf\">http:\/\/benjamin.mora.free.fr\/A%20new%20object-order%20RayCasting%20algorithm.pdf<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El Ray Casting es un algoritmo de renderizado de gr\u00e1ficos de computadora que se basa en el algoritmo de Raytracing, el cual tiene como objetivo crear escenas tridimensionales en im\u00e1genes bidimensionales. Esta t\u00e9cnica se basa en los principios f\u00edsicos de la reflexi\u00f3n, refracci\u00f3n y absorci\u00f3n de la luz; una fuente de luz emite rayos luminosos [&hellip;]<\/p>\n","protected":false},"author":6324,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-48","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/eadiaz\/wp-json\/wp\/v2\/posts\/48","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/eadiaz\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/eadiaz\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/eadiaz\/wp-json\/wp\/v2\/users\/6324"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/eadiaz\/wp-json\/wp\/v2\/comments?post=48"}],"version-history":[{"count":1,"href":"https:\/\/blog.espol.edu.ec\/eadiaz\/wp-json\/wp\/v2\/posts\/48\/revisions"}],"predecessor-version":[{"id":51,"href":"https:\/\/blog.espol.edu.ec\/eadiaz\/wp-json\/wp\/v2\/posts\/48\/revisions\/51"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/eadiaz\/wp-json\/wp\/v2\/media?parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/eadiaz\/wp-json\/wp\/v2\/categories?post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/eadiaz\/wp-json\/wp\/v2\/tags?post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}