b'\n_START_ARTICLE_\nRay casting\n_START_SECTION_\nConcepto\n_START_PARAGRAPH_\nEl Ray casting es el m\xc3\xa1s b\xc3\xa1sico de muchos algoritmos de renderizaci\xc3\xb3n de gr\xc3\xa1ficos por computadora que usan el algoritmo geom\xc3\xa9trico de ray tracing. Los algoritmos basados en ray tracing operan en orden de imagen para renderizar escenas tridimensionales a im\xc3\xa1genes bidimensionales. Los rayos geom\xc3\xa9tricos son trazados desde el ojo del observador (trazado hacia atr\xc3\xa1s) para calcular la radiancia que viaja hacia el observador en la direcci\xc3\xb3n del rayo. La rapidez y simplicidad del trazado de los rayos provienen de computar el color de la luz sin trazar recursivamente rayos adicionales para obtener la radiancia incidente en el punto donde el rayo intercepta. Esto elimina la posibilidad de renderizar con exactitud las reflexiones, refracciones, y las sombras. Aun as\xc3\xad todos estos elementos pueden ser simulados en un cierto grado, con el uso ingenioso de mapas de textura u otros m\xc3\xa9todos.  La velocidad de c\xc3\xb3mputo del ray casting lo convirti\xc3\xb3 en un m\xc3\xa9todo pr\xc3\xa1ctico de renderizado para los primeros videojuegos de 3D con renderizaci\xc3\xb3n de escenas en tiempo real._NEWLINE_En la naturaleza, una fuente de luz emite un rayo de luz que viaja eventualmente hacia una superficie que interrumpe su trayectoria. Uno puede figurarse dicho "rayo" como un flujo de fotones que viajan a lo largo del mismo camino.  Al llegar a este punto, cualquier combinaci\xc3\xb3n de tres cosas podr\xc3\xada pasar con la luz del rayo: absorci\xc3\xb3n, reflexi\xc3\xb3n, y refracci\xc3\xb3n.  La superficie puede reflejar toda o parte del rayo de luz, en una o varias direcciones; pudiendo incluso absorber parte del mismo, resultando esto en una p\xc3\xa9rdida de intensidad de la luz reflejada y/o refractada.  Si la superficie posee propiedades de transparencia o es trasl\xc3\xbacida, ella refracta una porci\xc3\xb3n de la luz que viaja dentro de la misma en una direcci\xc3\xb3n, absorbiendo a su vez parte del espectro (y posiblemente alterando el color). Para el c\xc3\xb3mputo de la luz absorbida, reflejada y refractada no debe considerarse m\xc3\xa1s de la propia luz que llega a la superfiacie.  Una superficie no puede, por ejemplo, reflejar el 66% de un rayo de luz y refractar el 50% del mismo, ya que entre los dos sumarian 116%. En este punto los rayos reflejados y/o refractados pueden golpear otras superficies, momento en donde sus propiedades de absorci\xc3\xb3n, refracci\xc3\xb3n, y reflectantes son recalculadas bas\xc3\xa1ndose en los rayos incidentes.  Algunos de estos rayos viajan de tal manera que interceptan nuestros ojos, haciendo posible que veamos la escena, asi que contribuyen con la renderizaci\xc3\xb3n final de la imagen.  Entonces para aminorar el c\xc3\xb3mputo, tan s\xc3\xb3lo una fracci\xc3\xb3n de los rayos son considerados, en este caso, los que llegan al observador._NEWLINE_El primer algoritmo ray casting usado para renderizar fue presentado por Arthur Appel en 1968.\xe2\x80\x8b La idea detr\xc3\xa1s de ray casting es trazar rayos desde el observador, uno por pixel, y encontrar el objeto m\xc3\xa1s cercano que interrumpe la trayectoria del mismo. Usando las propiedades de los materiales y el efecto de las luces en la escena, este algoritmo puede determinar el sombreado de este objeto.  Por la hip\xc3\xb3tesis de simplificaci\xc3\xb3n podemos decir que si una superficie est\xc3\xa1 orientada hacia una fuente de luz y no hay ning\xc3\xban objeto en su trayectoria, la luz alcanzar\xc3\xa1 esa superficie y no ser\xc3\xa1 bloqueada o sombreada.  El sombreado de la superficie es calculado usando los modelos tradicionales de sombreado de gr\xc3\xa1ficos por computadora en 3D.  Una importante ventaja del ray casting que resalta por encima de los scanline-rendering fue su habilidad de lidiar f\xc3\xa1cilmente con superficies no planas y s\xc3\xb3lidos, como conos y esferas. Si una superficie matem\xc3\xa1tica puede ser interceptada por un rayo, esta puede ser renderizada por ray casting. Modelos m\xc3\xa1s complejos pueden ser creados usando t\xc3\xa9cnicas de modelizaci\xc3\xb3n de s\xc3\xb3lidos y ser f\xc3\xa1cilmente renderizados._NEWLINE_Un uso temprano del algoritmo de renderizaci\xc3\xb3n ray casting de Appel fue hecho por El Grupo de Aplicaciones Matem\xc3\xa1ticas, Inc., (MAGI) de Elmsford, Nueva York.\xe2\x80\x8b\n_START_SECTION_\nTrazado hacia adelante y hacia atr\xc3\xa1s\n_START_PARAGRAPH_\nCuando el trazado de los rayos se implanta de forma que emule el viaje natural de los fotones, se trata del trazado hacia adelante. El trazado de rayos hacia adelante es te\xc3\xb3ricamente un m\xc3\xa9todo v\xc3\xa1lido. Ocurre, sin embargo, que muchos fotones que salen de la l\xc3\xa1mpara nunca llegan al observador, es decir, que no juegan papel alguno en la construcci\xc3\xb3n de la imagen. Dado que computacionalmente es muy caro trazar rayos que no sirven de nada, es necesario encontrar una soluci\xc3\xb3n a este problema. La clave para evitar el coste que representa el c\xc3\xa1lculo in\xc3\xbatil est\xc3\xa1 en invertir el recorrido de los fotones._NEWLINE_Si un fot\xc3\xb3n llega al ojo del observador, necesariamente ha tenido que cruzar la pantalla siguiendo la direcci\xc3\xb3n del rayo. Entonces, si se trazan exclusivamente los rayos de luz que parten del punto de visi\xc3\xb3n, a trav\xc3\xa9s de los p\xc3\xadxeles de la pantalla hacia el espacio vectorial (conocidos como rayos primarios), nos aseguramos de que el sistema gr\xc3\xa1fico trabaje \xc3\xbanicamente con los rayos \xc3\xbatiles. Cuando el trazado de rayos se realiza de esta forma, se trata del trazado hacia atr\xc3\xa1s. Dado el ahorro de c\xc3\xa1lculos que implica el invertir el recorrido de los fotones, el trazado de rayos hacia atr\xc3\xa1s es el procedimiento utilizado.\n_START_SECTION_\nFases en el algoritmo de ray casting\n_START_PARAGRAPH_\nSiguiendo la pista de los fotones partiendo del punto de visi\xc3\xb3n hacia los objetos y fuentes de luz, los pasos que ha de dar el algoritmo de ray casting son los siguientes: _NEWLINE_Paso 1:_NEWLINE_Suponiendo que llegasen fotones al punto de visi\xc3\xb3n siguiendo la trayectoria de un rayo dado, es preciso saber de d\xc3\xb3nde viene dicha luz, es decir, cu\xc3\xa1l es su punto de partida o procedencia. Los puntos de procedencia pueden encontrarse en las superficies de los objetos, en las fuentes de luz o ser luz de fondo, es decir, carente de un punto concreto de procedencia._NEWLINE_Paso 2:_NEWLINE_En la fase anterior hemos supuesto que llega luz al punto de visi\xc3\xb3n, pero no sabemos si realmente llega. Entonces, para una trayectoria dada, una vez que se conoce el punto de procedencia, se ha de averiguar si existen fotones que recorran el camino del rayo. Si al punto de procedencia llega luz desde de cualquier lugar, cabe la posibilidad de que parte de esa luz alcance tambi\xc3\xa9n el punto de visi\xc3\xb3n, siguiendo la trayectoria del rayo. Por tanto, es necesario averiguar si llega luz al punto de procedencia y, en caso afirmativo, cu\xc3\xa1nta llega y de qu\xc3\xa9 color._NEWLINE_Paso 3:_NEWLINE_Una vez que se conoce la intensidad y color de la luz que llega al punto de procedencia, la \xc3\xbaltima cuesti\xc3\xb3n que ha de resolver el algoritmo es averiguar qu\xc3\xa9 cantidad de esta luz llega al observador, y cu\xc3\xa1l es su color. _NEWLINE_El trazado de un rayo cualquiera finaliza pintando el p\xc3\xadxel cruzado por el rayo con el color e intensidad de la luz que llega al observador. Si por cada p\xc3\xadxel de la pantalla se efect\xc3\xbaan los pasos anteriores, al finalizar tendremos en la pantalla la imagen que ve el observador.\n_START_SECTION_\nWolfenstein 3-D\n_START_PARAGRAPH_\nEl mundo en Wolfenstein 3-D est\xc3\xa1 construido de una cuadr\xc3\xadcula de paredes con altura uniforme encontradas en pisos unicolor y techos. Para dibujar el mundo, un solo rayo es trazado por cada columna de p\xc3\xadxeles de pantalla y un trozo vertical de textura de pared es seleccionado y escalado seg\xc3\xban donde en el mundo el rayo intercepta una pared y qu\xc3\xa9 tan lejos viaja antes de hacerlo.\xe2\x80\x8b\n_START_SECTION_\nSerie Comanche\n_START_PARAGRAPH_\nEl motor de Voxel Space  desarrollado por NovaLogic para los Comanche games traza un rayo a trav\xc3\xa9s de cada columna de p\xc3\xadxeles de la pantalla y prueba cada rayo contra los puntos en un mapa de alturas. Entonces transforma cada elemento del mapa a una columna de p\xc3\xadxeles, determina cu\xc3\xa1les son visibles y los dibuja con el color correspondiente del mapa de textura.\xe2\x80\x8b\n_START_SECTION_\nRelaci\xc3\xb3n con la geometr\xc3\xada computacional\n_START_PARAGRAPH_\nEn geometr\xc3\xada computacional, el problema de ray casting es tambi\xc3\xa9n conocido como el problema de lanzamiento del rayo y puede ser presentado como el siguiente problema de consulta: Dado un conjunto de objetos en d-espacio dimensional, preprocesarlos en una estructura de datos de modo que para cada rayo de consulta, el primer objeto interceptado por el rayo pueda ser encontrado r\xc3\xa1pidamente. El problema ha sido investigado para varias configuraciones: dimensi\xc3\xb3n espacial, tipos de objetos, restricciones sobre los rayos de consulta, etc.\xe2\x80\x8b Una t\xc3\xa9cnica es utilizar un sparse voxel octree.'