{"id":721,"date":"2020-01-03T11:44:17","date_gmt":"2020-01-03T17:44:17","guid":{"rendered":"http:\/\/ofeliayorquesta.com\/blog\/?p=721"},"modified":"2020-01-03T11:53:31","modified_gmt":"2020-01-03T17:53:31","slug":"houdini","status":"publish","type":"post","link":"https:\/\/ofeliayorquesta.com\/blog\/2020\/01\/03\/houdini\/","title":{"rendered":"Houdini"},"content":{"rendered":"<p><em>Houdini<\/em> es un programa de animaci\u00f3n <em>3D<\/em>, que tiene una interfaz complicada.<\/p>\n<p><em>Houdini Apprentice<\/em> es la versi\u00f3n gratuita que te permite utilizar casi todas las herramientas del de paga, con la condici\u00f3n de que los <em>renders<\/em> salen con una marca de agua y una resoluci\u00f3n m\u00e1xima de 1280 \u00d7 720 pixeles.<\/p>\n<p>T\u00fa tal vez te preguntar\u00edas: &#8220;Bueno, \u00bfY para qu\u00e9 quiero descargar un programa que impone limitaciones tan importantes a mis gr\u00e1ficos?&#8221;<\/p>\n<p>Yo pens\u00e9 lo mismo.<\/p>\n<p>M\u00e1s a\u00fan, como explicar\u00e9 en p\u00e1rrafos posteriores, los gastos crecen, comenzando por la renderizaci\u00f3n. Pero a pesar de todo me gan\u00f3 la curiosidad de aprender un poco de <em>VFX, y\u00a0<\/em>as\u00ed\u00a0descargu\u00e9 este pedazo de software.<\/p>\n<p>El primer tutorial que realic\u00e9 fue el de part\u00edculas verdes que emanan de la figura de un puerquito.<\/p>\n<p>Fue dif\u00edcil exportarlo en video. M\u00e1s bien, el primer <em>render\u00a0<\/em>logrado fue una imagen fija del mismo puerquito; a\u00f1ad\u00ed iluminaci\u00f3n y un material.<\/p>\n<figure id=\"attachment_723\" aria-describedby=\"caption-attachment-723\" style=\"width: 660px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-723 size-large\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/pighead-1024x576.jpg\" alt=\"\" width=\"660\" height=\"371\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/pighead-1024x576.jpg 1024w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/pighead-300x169.jpg 300w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/pighead-768x432.jpg 768w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/pighead.jpg 1280w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><figcaption id=\"caption-attachment-723\" class=\"wp-caption-text\">Puerquito (20 de octubre de 2019).<\/figcaption><\/figure>\n<p>A continuaci\u00f3n es lo que se puede considerar mi primer dise\u00f1o original, en donde utilic\u00e9 MOPS (Motion Operators).<\/p>\n<figure id=\"attachment_722\" aria-describedby=\"caption-attachment-722\" style=\"width: 660px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-722 size-large\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/mops-1024x576.jpg\" alt=\"\" width=\"660\" height=\"371\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/mops.jpg 1024w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/mops-300x169.jpg 300w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/mops-768x432.jpg 768w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><figcaption id=\"caption-attachment-722\" class=\"wp-caption-text\">Dise\u00f1o original en Houdini (28 de octubre de 2019).<\/figcaption><\/figure>\n<p>Finalmente, en la v\u00edspera de navidad, a partir de<em> loops<\/em> cre\u00e9 una estrella:<\/p>\n<figure id=\"attachment_725\" aria-describedby=\"caption-attachment-725\" style=\"width: 960px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-725 size-full\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1.jpg\" alt=\"\" width=\"960\" height=\"540\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1.jpg 960w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1-300x169.jpg 300w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1-768x432.jpg 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><figcaption id=\"caption-attachment-725\" class=\"wp-caption-text\">Estrella (25 de diciembre de 2019).<\/figcaption><\/figure>\n<p>De las cosas m\u00e1s sencillas en <em>Houdini<\/em> es generar un cubo (creas un <em>geometry node<\/em> y adentro un <em>box<\/em>).<\/p>\n<p>Lo siguiente que se podr\u00eda hacer con un cubo, ser\u00eda agregarle una textura, e ir subdividi\u00e9ndola. As\u00ed:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-727\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3492-1024x583.png\" alt=\"\" width=\"660\" height=\"376\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3492.png 1024w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3492-300x171.png 300w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3492-768x437.png 768w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-728\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3493-1024x588.png\" alt=\"\" width=\"660\" height=\"379\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3493.png 1024w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3493-300x172.png 300w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3493-768x441.png 768w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/p>\n<p>Luego, lo que tal vez querr\u00edas hacer con un cubo, es hacerlo caer sobre un suelo. Y tal vez que se rompiera en cachitos.<\/p>\n<p>Simon Holmedal es un chavo que hace gr\u00e1ficos en movimiento y yo ve\u00eda su conferencia.<\/p>\n<p>En un anuncio que elabor\u00f3 para <em>Nike<\/em>, simula el interior y exterior de un tenis utilizando varias t\u00e9cnicas. Por ejemplo, a la figura geom\u00e9trica que modela la superficie del zapato se le puede encimar la animaci\u00f3n de \u201cuna infecci\u00f3n que va atravesando todo el zapato.\u201d<\/p>\n<p>En otro anuncio de <em>Logitech<\/em>, utiliza varios sistemas de part\u00edculas, los cu\u00e1les integra en el video.<\/p>\n<p>En <em>Houdini<\/em>, todo comienza con una figura modelada en <em>3D<\/em>, muy llana. \u00c9sta se anima, y luego, es posible usar esa figura para que termine pareciendo una fotograf\u00eda.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-729\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3504-1024x587.png\" alt=\"\" width=\"660\" height=\"378\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3504.png 1024w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3504-300x172.png 300w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3504-768x440.png 768w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/p>\n<p>Algunos ejemplos de cosas que se pueden lograr en <em>Houdini<\/em>:<\/p>\n<ol>\n<li>En un plano, asignar un ruido con un patr\u00f3n de infecci\u00f3n. Y usar otro ruido que dependa del primero, que genere otro patr\u00f3n m\u00e1s complicado.<\/li>\n<li>Usar una fotograf\u00eda, y sobre \u00e9sta, crear una infecci\u00f3n.<\/li>\n<li>Sobre una superficie se puede hacer una ola. Como la que se ve cuando tiende uno las s\u00e1banas o cuando se tira una piedra a un estanque.<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-730\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3502.png\" alt=\"\" width=\"683\" height=\"371\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3502.png 683w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3502-300x163.png 300w\" sizes=\"auto, (max-width: 683px) 100vw, 683px\" \/><\/p>\n<p>4.\u00a0 Luego, se puede combinar este efecto con el de una infecci\u00f3n, a partir de \u201cconectar l\u00edneas.\u201d<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-731\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3499-1024x488.png\" alt=\"\" width=\"660\" height=\"315\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3499.png 1024w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3499-300x143.png 300w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3499-768x366.png 768w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/p>\n<p>5.\u00a0Separadamente, crear dos figuras geom\u00e9tricas, como un cubo y una esfera texturizadas; luego combinarlas, y animarlas a partir de otra textura, creando al final una estalactita.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-732\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3506-1024x411.png\" alt=\"\" width=\"660\" height=\"265\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3506.png 1024w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3506-300x120.png 300w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3506-768x308.png 768w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/p>\n<p>Algunos efectos de simulaci\u00f3n requieren mucho procesamiento de memoria (me refiero por ejemplo, a un <em>mesh<\/em> que tiene muchas subdivisiones o a que existan muchas part\u00edculas en cierta superficie), y eso afecta la velocidad con que se puede efectuar la animaci\u00f3n. En una computadora laptop normal dif\u00edcilmente se podr\u00e1 hacer un <em>render<\/em> a alta velocidad.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-733 aligncenter\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3507.png\" alt=\"\" width=\"233\" height=\"227\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3507.png 475w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3507-300x293.png 300w\" sizes=\"auto, (max-width: 233px) 100vw, 233px\" \/><\/p>\n<p>6.\u00a0 La siguiente figura se obtuvo a partir de generar pol\u00edgonos aleatoriamente esparcidos, usando un <em>loop<\/em> de 4 vueltas, que fue creando, en cada iteraci\u00f3n, m\u00e1s pol\u00edgonos aleatoriamente esparcidos.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-734\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3508.png\" alt=\"\" width=\"684\" height=\"496\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3508.png 684w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/IMG_3508-300x218.png 300w\" sizes=\"auto, (max-width: 684px) 100vw, 684px\" \/><\/p>\n<p>Inspeccionando los nodos incluidos en <em>Houdini<\/em>\u00a0que implementan ciertos efectos, encuentras la programaci\u00f3n de \u00e9stos. No es necesario saber programar,\u00a0 y en vez de eso, es plausible usar nodos. Pero se puede programar en <em>Vex<\/em>; estrategia que, bien utilizada, simplifica el trabajo. Debiera ser sencillo, por ejemplo, programar lo siguiente: Una vez construido un suelo al que se le a\u00f1adieron divisiones, generar una ola que provoque un esparcimiento de \u00e9stas.<\/p>\n<p>\u00bfEs posible usar c\u00f3digos de<em> Processing<\/em> u <em>Openframeworks<\/em> para crear efectos en <em>Houdini<\/em>? NO. S\u00f3lo se puede usar <em>Vex<\/em>.<\/p>\n<p>\u00bfSe puede pasar de un lenguaje a otro usando un nodo que haga el trabajo de conversi\u00f3n, <em>Vex<\/em> a <em>Processing<\/em>, por ejemplo? No. As\u00ed la explicaci\u00f3n literal, en un foro:<\/p>\n<p>&#8220;Hay que poder entender ambos lenguajes en un nivel intermedio. Una parte esencial es comprender cu\u00e1les porciones del c\u00f3digo son intercambiables y cu\u00e1les no lo son. La implementaci\u00f3n y cosas relacionadas con la arquitectura del c\u00f3digo suelen no poder traducirse de un lenguaje a otro, a excepci\u00f3n de cuando ambas plataformas son muy similares. Por otro lado, los algoritmos s\u00ed suelen poder traducirse desde las f\u00f3rmulas matem\u00e1ticas, los pseudo-c\u00f3digos de Wikipedia, o desde secciones de c\u00f3digos que est\u00e1 escritos en otros lenguajes de programaci\u00f3n. La sintaxis tambi\u00e9n puede ser muy similar y los tipos, constantes y funciones (<em>types<\/em>, <em>constants<\/em>, <em>and functions<\/em>) suelen tambi\u00e9n parecerse. Trigonometr\u00eda, \u00e1lgebra lineal, trazo de rayos (<em>ray-trace<\/em>), ruidos y <em>PRNGs<\/em> pueden estar implementados de manera diferente, pero hacen lo mismo en un entorno o en otro.<\/p>\n<p>Por ejemplo, te tomar\u00eda como una hora traducir un algoritmo de intersecci\u00f3n en <em>2D<\/em> escrito en <em>C++<\/em> a su versi\u00f3n en <em>Vex<\/em>.<\/p>\n<p>Una ventaja del c\u00f3digo de <em>Vex<\/em> es que es preciso y usa menos l\u00edneas. Desarrolladores de bibliotecas suelen ocuparse de convertir a <em>Vex<\/em> ciertas funciones y clases cuyo c\u00f3digo, digamos en <em>C++<\/em>, tenga miles de l\u00edneas. Aunque a veces lo mejor es salirse de <em>Vex<\/em> y en vez de eso utilizar un par de nodos <em>SOP<\/em>. Que sean \u00e9stos los que calculen algunos atributos \u00fatiles.&#8221;<a href=\"#_ftn1\" name=\"_ftnref1\">[1]<\/a><\/p>\n<p>Esta es mi gu\u00eda de efectos visuales basada en videos de Y<em>outube<\/em>:<\/p>\n<ol>\n<li>En <a href=\"https:\/\/youtu.be\/4gYLIOaUjMY\">https:\/\/youtu.be\/4gYLIOaUjMY<\/a>\u00a0( &#8220;Point Waves with <em>VOPs<\/em>&#8220;) te tomas un toro y creas una ola en movimiento de part\u00edculas que se mueven en el toro. Con <em>mantra<\/em> (el <em>renderer<\/em> por default en <em>Houdini<\/em>) exportas el archivo en formato <em>.exr<\/em>, y as\u00ed lo puedes abrir en <em>After Effects<\/em>. En <em>After Effects<\/em> puedes enfatizar la luminosidad y crear un visual un poquito m\u00e1s impactante.<\/li>\n<li>En <a href=\"https:\/\/youtu.be\/CQ9VmCN2EsE\">https:\/\/youtu.be\/CQ9VmCN2EsE<\/a>\u00a0(&#8220;How to <em>render<\/em> a million of objects in <em>Blender<\/em>&#8220;) creas un tapiz de donas, y un modelo virtual en movimiento aparece de entre las donas. Es como la cabeza de un ni\u00f1o que sale de una alberca de pelotas. Sorprendentemente, el maniqu\u00ed virtual es reemplazado por una persona real en el videomontaje final.<\/li>\n<li>En <a href=\"https:\/\/youtu.be\/4hednNHS3JE\">https:\/\/youtu.be\/4hednNHS3JE<\/a>\u00a0(&#8220;Simple Disintegration&#8221;) creas un <em>geometry node<\/em>, adentro de este creas un <em>Font node<\/em>. Con un <em>Polyextrude<\/em> conviertes la letra a un objeto <em>3D<\/em>. Al lado creas una esfera, le conectas a un <em>mountain node<\/em> (que deforma la esfera), le conectas a esta un <em>transform node,<\/em>\u00a0con lo que puedes mover el objeto y automatizar este movimiento. Conectas <em>PolyExtrude<\/em> y <em>Transform<\/em> a un <em>Boolean node<\/em>. Con el<em> boolean node<\/em> seleccionas la opci\u00f3n \u201csubstract\u201d y as\u00ed programas quitar cada punto de una de las figuras cuando hay otro punto de la otra figura en ese mismo lugar (con la figura A sustraes la figura B). Con otro <em>boolean node<\/em> encuentras la intersecci\u00f3n de las dos figuras. Le conectas a este un <em>popnet<\/em>, para que se emitan part\u00edculas a partir de esa l\u00ednea. A\u00f1ades un <em>merge node<\/em> y un <em>windforce node<\/em>. Unos <em>tweaks<\/em> y ya tienes un efecto de texto que se desvanece. Lo exportas como <em>.exr<\/em> y en <em>After Effects<\/em> haces los toques finales. Dos segundos de animaci\u00f3n tardaron una hora y media en convertirse en ese <em>render<\/em>.<\/li>\n<li>En <a href=\"https:\/\/youtu.be\/uicuyjiDfiI\">https:\/\/youtu.be\/uicuyjiDfiI<\/a> (\u201cVolume Abstract Formas\u201d), importas el <em>mesh<\/em> de la cabeza de una persona. Con un ruido en un <em>cloud node<\/em>, se produce un efecto de deformaci\u00f3n del volumen, que hace que el <em>mesh<\/em> se vea como una escultura. Un <em>volume vop<\/em> le a\u00f1ade hoyos al volumen, y una impresi\u00f3n de vejez, desgaste o lava. Estos efectos est\u00e1n basados en el trabajo de Lee Griggs.<\/li>\n<li>En <a href=\"https:\/\/youtu.be\/ECRemmexgP0\">https:\/\/youtu.be\/ECRemmexgP0<\/a> (\u201cInfecting points using <em>VEX<\/em> &amp; the <em>solver SOP<\/em>\u201d), con ayuda de <em>Vex<\/em>, se programa un algoritmo en el que, en el primer paso, un solo punto est\u00e1 infectado de rojo y todos los dem\u00e1s son blancos. En el segundo paso, los cinco puntos m\u00e1s cercanos se infectan de rojo y los dem\u00e1s se quedan en blanco. En el tercer paso, los a lo m\u00e1s cinco puntos blancos m\u00e1s cercanos de cada punto rojo se infectan de rojo y todos los dem\u00e1s puntos se quedan blancos. Y as\u00ed sucesivamente hasta que casi todo punto blanco de la figura queda rojo.<\/li>\n<li>En <a href=\"https:\/\/youtu.be\/JXr6wkJeqK8\">https:\/\/youtu.be\/JXr6wkJeqK8<\/a> (\u201cFace Melt Tutorial\u201d), aprend\u00ed a derretir el <em>mesh<\/em> de la cabeza de una persona. La secuencia inicial pasa de usar a un actor de carne y hueso a usar el <em>mesh<\/em> del actor, el cual es derretido.<\/li>\n<li>En <a href=\"https:\/\/youtu.be\/-FAwlk_BGVQ\">https:\/\/youtu.be\/-FAwlk_BGVQ<\/a> (\u201cUsing Volumes, Flow Fields and Volume Velocity\u201d), creas unos \u201chilos\u201d que giran en torno a una esfera o cerca de esta, creando un efecto muy interesante.<\/li>\n<li>En <a href=\"https:\/\/youtu.be\/-l9Cot3jVY8\">https:\/\/youtu.be\/-l9Cot3jVY8<\/a> (&#8220;A few things to know before learning Houdini&#8221;) se explican qu\u00e9 son los puntos, atributos, primitivos y detalles (<em>points<\/em>, <em>attributes<\/em>, <em>primitives<\/em> <em>and detail<\/em>), algunos comandos de teclado tipo I, G, P, o c\u00f3mo ver dos figuras al mismo tiempo, creadas en un <em>geometry node<\/em>; agregar color, etc.<\/li>\n<li style=\"text-align: left;\">En <a href=\"https:\/\/youtu.be\/8VrbBE-XnXA\">https:\/\/youtu.be\/8VrbBE-XnXA<\/a> (&#8220;Applied Houdini Volumes I&#8221;) aprend\u00ed a convertir el <em>mesh<\/em>\u00a0de un puerquito en humo. Esto se hace usando &#8220;vol\u00famenes&#8221;, que es cuando empleas una figura que no est\u00e1 hueca por dentro. Luego encierras el volumen dentro de un contenedor, que es donde suceder\u00e1 la simulaci\u00f3n. Todo ese espacio est\u00e1 lleno de <em>voxels<\/em>. Los <em>voxels<\/em> son el equivalente a un pixel. Son unidades de medida con tres coordenadas, que almacenan la informaci\u00f3n de cada pedazo de volumen que compone a todo un <em>mesh<\/em>. Aumentar la resoluci\u00f3n de los <em>voxels<\/em> implica m\u00e1s uso de memoria para la computadora.<\/li>\n<\/ol>\n<p>Ya que tengo una idea suficiente de c\u00f3mo funciona <em>Houdini<\/em>, hay detalles que\u00a0 son importantes de controlar. Por ejemplo, la interacci\u00f3n de los objetos <em>3D<\/em>. En el tutorial (5), se afirma que en un video posterior se explicar\u00e1 c\u00f3mo hacer que la infecci\u00f3n sea provocada por otro objeto que se mueve a trav\u00e9s de ese plano, pero no existe tal tutorial. De modo que si yo quiero usar la misma infecci\u00f3n que acabo de aprender, se me debe ocurrir c\u00f3mo incluir la parte en que otro objeto influye.<\/p>\n<p>Ya s\u00e9 transferir el color de una figura a otra figura que le atraviesa: Pon t\u00fa que primero creaste un <em>grid<\/em> (un plano) \u00a0en un <em>geometry node<\/em> y al lado creaste una esfera. Con\u00e9ctale un <em>transform<\/em> a esa esfera para que puedas moverla en el espacio (en particular, para poder automatizar ese movimiento). Despu\u00e9s del <em>transform<\/em> conecta un color. Este es un atributo y colorea la esfera, digamos de rojo. Despu\u00e9s del color, conecta un <em>Attribute transfer node<\/em>. Un <em>Atribute transfer node<\/em> recibe dos <em>inputs<\/em> (la figura desde la que transfieres y la figura a la que transfieres el color). Con el par\u00e1metro <em>Distance Threshold<\/em> ajustas cu\u00e1nta regi\u00f3n del <em>grid<\/em> se colorear\u00e1 cuando pase la esfera.<\/p>\n<p>Esto es un principio b\u00e1sico de <em>Houdini<\/em>. De esto, partes para hacer todo el show de destruir una pared. Aqu\u00ed, en vez de transferir el color est\u00e1s activando la destrucci\u00f3n, cuando otro objeto pasa por ah\u00ed.<\/p>\n<p>Hay que pensar. En un <em>grid<\/em> siempre es posible ver los puntos que le componen (seleccionar <em>view points<\/em> o ver el <em>geometry spreadsheet<\/em>). Luego, ya que tengo mi modelo de una infecci\u00f3n, hay que a\u00f1adir, digamos una esfera y tal vez conectar un booleano que diga: Si un punto en la esfera intersecta a un punto del plano, m\u00e1rcalo como rojo y empieza la infecci\u00f3n.<\/p>\n<p>\u00bfC\u00f3mo est\u00e1 esa parte del c\u00f3digo en el tutorial de la infecci\u00f3n?<\/p>\n<p>Es as\u00ed: Creas un <em>grid<\/em>, le conectas un <em>scatter node<\/em> y a este le conectas un <em>Attribute Wrangle<\/em>. Este nodo, tiene al principio una opci\u00f3n \u201cGroup\u201d al que le escribes el n\u00famero 182. 182 es el nombre de uno de los puntos del <em>grid<\/em>.<\/p>\n<p>En la parte de <em>VEX Expression<\/em> (En <em>Attribute Wrangle<\/em>) escribes:<\/p>\n<p><code>@infect = 1;<br \/>\n@Cd = {1,0,0};<\/code><\/p>\n<p><sup>\u00a0<\/sup><\/p>\n<p>Lo que significa: asigna valor 1 y color rojo al grupo 182. Es decir, al punto 182 le dar\u00e1 un color rojo, y en el <em>geometry spreadsheet<\/em> observas que ese punto tiene infect = 1, mientras que los otros puntos tienen infect = 0.<\/p>\n<p>Despu\u00e9s del <em>Attribute Wrangle<\/em> creas un <em>Solver<\/em> y adentro le conectas un <em>Attribute Wrangle<\/em> (otro) que tiene el c\u00f3digo respectivo a la infecci\u00f3n, que es:<\/p>\n<p><code>if(@infect == 0){<\/p>\n<p>float search = ch('search');<\/p>\n<p>int spnts[] = nearpoints(0, @P, search, 5);<\/p>\n<p>int pt;<\/p>\n<p>foreach(pt; spnts) {<\/p>\n<p>if(point(0, 'infect', pt) == 1){<\/p>\n<p>@infect = 1;<\/p>\n<p>@Cd = {1,0,0};<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>}<\/code><\/p>\n<p><em>nearpoints<\/em> es una funci\u00f3n de <em>Vex<\/em>. Est\u00e1 buscando los 5 puntos m\u00e1s cercanos al punto actual P, con respecto a la distancia (especificada en <em>search<\/em>, una opci\u00f3n del <em>Attribute Wrangle<\/em>). Esos 5 puntos que encuentra los guarda en un arreglo (spnts). Luego, el <em>for each<\/em> hace lo siguiente: para cada punto que ten\u00eda valor de infecci\u00f3n igual a 0 en spnts, cambia su valor de infecci\u00f3n a 1 y el color del punto a rojo.<\/p>\n<p>En principio, creo que el chiste est\u00e1 en cambiar el valor del <em>Group<\/em>, para que est\u00e9 no sea un solo punto, sino un conjunto de puntos (los que est\u00e1n en la intersecci\u00f3n de la esfera con el plano). Y observar que eso multiplica las veces en que el algoritmo de b\u00fasqueda se tiene que inicializar: primero habr\u00e1 un solo punto en esa intersecci\u00f3n, justo en el momento en que haya una tangente a la esfera (aunque eso depende totalmente de c\u00f3mo est\u00e1n situados la esfera y los puntos). As\u00ed se comenzar\u00e1 la infecci\u00f3n, tomando ese punto rojo y luego los 5 puntos m\u00e1s cercanos, etc\u00e9tera. Pero la esfera r\u00e1pidamente atravesar\u00e1 m\u00e1s puntos en el plano (a manera de semic\u00edrculos o esferas) y cada uno de estos tendr\u00eda que comenzar una nueva propagaci\u00f3n de la infecci\u00f3n desde ese punto. Observar, que muchos de los puntos de intersecci\u00f3n (los interiores cercanos al centro de la esfera) tendr\u00e1n vecinos que son todos rojos y en ese caso, el algoritmo no har\u00eda nada. Tendr\u00eda que implementar esta idea y verificar que funciona. Es muy posible que s\u00f3lo cambiando el <em>group node<\/em>, no baste para lograr el efecto.<\/p>\n<p>Supongo que hay varias formas de fusionar los cuerpos o caras de dos personas. Ciertamente, una manera es con GANS.<\/p>\n<div style=\"width: 900px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-721-1\" width=\"900\" height=\"900\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/out_video_eyeglasses_00-1.mp4?_=1\" \/><a href=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/out_video_eyeglasses_00-1.mp4\">http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/out_video_eyeglasses_00-1.mp4<\/a><\/video><\/div>\n<p>Tambi\u00e9n se trata de decisiones est\u00e9ticas, tiempos y presupuestos. En (6), el paso de un personaje de carne y hueso a un <em>mesh<\/em> se ve muy artificial y eso\u00a0 no me lati\u00f3 tanto, en lo personal. Eso no significa que tal vez exista una aplicaci\u00f3n de esa idea, que mezcle mejor la realidad con la simulaci\u00f3n <em>3D<\/em>. Tal vez lo que yo necesite no sea una imagen fija de un modelo <em>3D<\/em> la cual quiera disolver en pedacitos, sino una captura de movimiento, lo que agrega dificultades (ver por ejemplo el <em>Keentools Face Tracker<\/em>, con un periodo de prueba de 15 d\u00edas y un precio de $149 d\u00f3lares). Si no, tal vez otra posibilidad es trabajar \u00fanicamente en un mundo virtual; hacer un <em>mesh<\/em> muy parecido a las personas que protagonizar\u00e1n el video y a partir de ah\u00ed trabajar en puro <em>3D<\/em>.<\/p>\n<p>De hecho, esto hace ver que mi querer establecer una relaci\u00f3n m\u00e1s personal con mi actriz y dar un car\u00e1cter performativo al visual, va totalmente en desacuerdo con elegir el camino de \u00fanicamente fotograf\u00edas en <em>3D<\/em>. Para hacer el <em>mesh<\/em>, s\u00f3lo tendr\u00eda que sentar a mi actriz en una silla, durante uno o varios d\u00edas (por la cuesti\u00f3n de la prueba y el error), y tomarle fotograf\u00edas. Voil\u00e1. No tendr\u00eda ella que saber nada m\u00e1s de m\u00ed por el resto de su vida. Para tal caso, me sirve m\u00e1s hacer el modelado <em>3D<\/em> de mi propia imagen.<\/p>\n<p>En cambio, planear una coreograf\u00eda, una trama, un beso, o un escenario f\u00edsico detallado se acerca m\u00e1s a generar una experiencia f\u00edsica, inmediata y divertida para los involucrados. Tambi\u00e9n requiere presupuesto. Tal vez son dos ideas que deben mantenerse separadas, pensando con sencillez y en lo que es funcional para m\u00ed.<\/p>\n<p>Regresando a hablar sobre <em>Houdini<\/em>. En (7), un efecto de hilos gira en torno a una esfera, pero este objeto podr\u00eda ser cambiado por el <em>mesh<\/em> de mi propia cabeza. Ya que el procedimiento para modelar un <em>mesh<\/em>, y haber llegado al punto de poder entender ese c\u00f3digo plantea toda una haza\u00f1a, m\u00e1s la bronca de crear un buen render, se podr\u00eda hacer un video s\u00f3lo con eso. Sin embargo, en una exploraci\u00f3n m\u00e1s profunda de <em>Houdini<\/em> podr\u00eda querer utilizar por lo menos dos efectos entrelazados (tomemos en consideraci\u00f3n que los visuales se prestan para incluir mucho detalle en apenas 2 segundos de una secuencia). El paso de un <em>mesh<\/em> a un convertirse en hilos o la manera de lograr una secuencia agradable entre dos efectos que est\u00e1n cambiando, parece un problema.<\/p>\n<p>Otro efecto que me gusta es el <em>Fog<\/em>. Esta es una propiedad de los vol\u00famenes en <em>Houdini<\/em> (Ver (9)).<\/p>\n<p>El trabajo de Simon Holmedal a veces parece muy simple: creas una figura con muchas subdivisiones, como un \u00fanico pol\u00edgono que tiene una textura fractal en la superficie. El material se ve casi como una cer\u00e1mica (muy org\u00e1nico), y a esto le agregas iluminaci\u00f3n. Luego le tomas fotograf\u00edas desde muy de cerca, para que se vea s\u00f3lo una parte de la figura y en diversos \u00e1ngulos, alternando vistas cercanas y lejanas del mismo objeto. O en otro ejemplo, una c\u00e1mara est\u00e1 programada en forma de espiral (como las tomas a\u00e9reas de la ciudad de Nueva York en una superproducci\u00f3n Holywoodense) mientras que una simulaci\u00f3n de una textura peluda se mueve en forma de crecimiento.<\/p>\n<p>Simon Holmedal hace algunos de sus <em>renders<\/em> en <em>RedShift<\/em>, que es un <em>renderer<\/em> singular ya que utiliza <em>GPUs<\/em> en vez de <em>CPUs<\/em> (puede utilizar hasta <em>8 GPUs<\/em> concurrentes por m\u00e1quina). Nota cultural: una licencia de <em>RedShift<\/em> cuesta $500 d\u00f3lares (aproximadamente $9,400 pesos) y un <em>GPU Aorus RTX 2080 Ti Xtreme Waterforce 11GB<\/em> cuesta $1350 d\u00f3lares en <em>Amazon<\/em> (aproximadamente $25,420 pesos). Lo que hace las cosas a\u00fan m\u00e1s inaccesibles para una persona como yo, que ni tiene un trabajo estable. A la fecha no conozco alguien en M\u00e9xico que posea un <em>GPU<\/em> de este tipo al cual yo pueda solicitar un acceso cada que necesite hacer un <em>render<\/em> de una escena modelada en <em>3D<\/em>, ni s\u00e9 cu\u00e1l ser\u00eda el precio exacto por este servicio. Yo creo que en M\u00e9xico, hacer tanta inversi\u00f3n en una tonter\u00eda como esta ser\u00eda muy pero muy idiota, ya que nadie imaginar\u00eda los altos precios que implican esos gr\u00e1ficos para los cu\u00e1les que a ti te pagar\u00edan $3,000 pesos por crear un conjunto de <em>flyers<\/em> que se situar\u00edan en el <em>background<\/em> de la publicidad para redes sociales de las pel\u00edculas de la Cineteca Nacional.<\/p>\n<p>Si no es que deber\u00edas dedicar tu vida a los <em>motion graphics<\/em> de mal\u00edsimas series de TV comerciales; un ambiente de trabajo en donde a pocos les interesar\u00eda el paradigma cient\u00edfico de utilizar o no las redes neuronales para realizar una captura de movimiento.<\/p>\n<p>Por otro lado, hay personas como Gene Kogan, que ilustran el lado acad\u00e9mico del Machine Learning aplicado a las artes, y es ejemplo de alguien que, de alg\u00fan modo u otro, financi\u00f3 instalaciones de arte contempor\u00e1neo que requirieron emplear <em>GPUs<\/em>.<\/p>\n<p>\u201c<em>Before your very Eyes<\/em>\u201d de <em>Atoms for Peace<\/em>, es un video musical que dirigi\u00f3 Andrew Thomas Huang, el cual puedo analizar mejor ahora que estuve aprendiendo Houdini.<\/p>\n<p><iframe loading=\"lazy\" title=\"Atoms For Peace - Before Your Very Eyes\" width=\"900\" height=\"506\" src=\"https:\/\/www.youtube.com\/embed\/ZWrUEsVrdSU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<p>A continuaci\u00f3n puedes ver la foto que me tom\u00e9 con el cineasta en su conferencia en Bj\u00f6rk Digital M\u00e9xico.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-749\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2020\/01\/ATW-1024x554.png\" alt=\"\" width=\"660\" height=\"357\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2020\/01\/ATW-1024x554.png 1024w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2020\/01\/ATW-300x162.png 300w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2020\/01\/ATW-768x415.png 768w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2020\/01\/ATW.png 1167w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"#_ftnref1\" name=\"_ftn1\">[1]<\/a>\u00a0<a href=\"https:\/\/forums.odforce.net\/topic\/28099-converting-java-processing-code-to-vex\/\">https:\/\/forums.odforce.net\/topic\/28099-converting-java-processin<\/a><a href=\"https:\/\/forums.odforce.net\/topic\/28099-converting-java-processing-code-to-vex\/\">g-code-to-vex\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Houdini es un programa de animaci\u00f3n 3D, que tiene una interfaz complicada. Houdini Apprentice es la versi\u00f3n gratuita que te permite utilizar casi todas las herramientas del de paga, con la condici\u00f3n de que los renders salen con una marca de agua y una resoluci\u00f3n m\u00e1xima de 1280 \u00d7 720 pixeles. T\u00fa tal vez te<\/p>\n","protected":false},"author":1,"featured_media":725,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[50],"tags":[51],"class_list":["post-721","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-houdini","tag-houdini"],"uagb_featured_image_src":{"full":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1.jpg",960,540,false],"thumbnail":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1-150x150.jpg",150,150,true],"medium":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1-300x169.jpg",300,169,true],"medium_large":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1-768x432.jpg",768,432,true],"large":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1.jpg",900,506,false],"1536x1536":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1.jpg",960,540,false],"2048x2048":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1.jpg",960,540,false],"coup-single-post":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1.jpg",900,506,false],"coup-archive-sticky":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1.jpg",960,540,false],"coup-archive":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2019\/12\/estrella_1.jpg",450,253,false]},"uagb_author_info":{"display_name":"Ofelia Negrete","author_link":"https:\/\/ofeliayorquesta.com\/blog\/author\/ofelia-negrete\/"},"uagb_comment_info":1,"uagb_excerpt":"Houdini es un programa de animaci\u00f3n 3D, que tiene una interfaz complicada. Houdini Apprentice es la versi\u00f3n gratuita que te permite utilizar casi todas las herramientas del de paga, con la condici\u00f3n de que los renders salen con una marca de agua y una resoluci\u00f3n m\u00e1xima de 1280 \u00d7 720 pixeles. T\u00fa tal vez te","_links":{"self":[{"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts\/721","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/comments?post=721"}],"version-history":[{"count":18,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts\/721\/revisions"}],"predecessor-version":[{"id":754,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts\/721\/revisions\/754"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/media\/725"}],"wp:attachment":[{"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/media?parent=721"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/categories?post=721"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/tags?post=721"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}