Hola a todos, después de mucho tiempo de adquirir conocimientos a través de la gran comunidad conformada por Touchdesigners por fin puedo hacer mi aporte para que los mismos coders y nuevos coders puedan comprender mejor el funcionamiento de los grandiosos operadores que nos obsequia el equipo de Derivative.
Preliminarmente al tutorial quiero dar una pequeña introducción al porqué de esta serie de post / tutoriales que estarán saliendo.
Siempre me ha motivado mucho la ciencia de las matemáticas y como dicha ciencia ayuda mucho a entender descubrimientos y comportamientos casi sino es que exactos de las demás ciencias existentes, por consiguiente, debido a que siento que el arte es un campo necesario para que el desarrollo del humano sea pleno y placentero, me he dedicado a la búsqueda de entender de qué manera podemos generar arte a través de las matemáticas.
Buscando información en internet llegue a una serie de libros fantásticos sobre las diferentes ciencias y en esta serie de libros hay uno dedicado al diseño, en el cual aborda los patrones de diseño desde tiempos remotos hasta lo más reciente.
Les dejo el link del libro por si desean adquirirlo (100% Recomendado):
En los apéndices de este libro me encontré con una gráfica donde diferentes curvas matemáticas son mostradas, la cual despertó en mi la pregunta "¿Como poder recrear dichas curvas en Touchdesigner?" Así que después de una exhaustiva búsqueda, encontré la manera de recrear la mayoría de dichas curvas.
Algunos objetivos de los próximos tutoriales serán:
- Traducir funciones matemáticas a Touchdesigner usando CHOP's y Python
- Modificación de parámetros en tiempo real para editar las curvas realizadas
- Comprender más a detalle algunas funciones de operadores como Function CHOP, Script CHOP, entre otros.
Así que, sin más preámbulo, continuemos con la parte emocionante.
Muchos preguntaran: ¿Porque un tutorial sobre el circulo, si este operador viene por default en Touchdesigner? Y es por eso mismo que al ser la curva default, podemos entender de una manera más simple la conversión de las ecuaciones, así como la manera en que serán presentada esta serie de tutoriales. Así que primero lo primero:
Crearemos un círculo con la familia SOP en este caso escogeremos el operador Circle, y escogeremos la opción Open Arc del parámetro Arc Type:
Touchdesigner viene con una increíble serie de operadores los cuales nos permiten convertir nuestra información de una familia a otra, y para este estudio lo que necesitamos es convertir nuestra información SOP a información CHOP, la cual nos permite ver las posiciones en x,y,z de cada punto de nuestra figura SOP.
Así que el siguiente paso será conectar nuestro operador Circle1 al operador SOP to de la familia CHOP. Esto se puede hacer de manera fácil al hacer clic medio en nuestro mouse sobre la salida de Circle1 y después dirigirnos a la familia CHOP donde solamente nos mostrara los operadores a los que nuestro Circle1 puede ser conectado, escogemos SOP to y lo acomodamos en nuestro network:
Por último, para reconfirmar que dicha información en nuestro operador CHOP nos genera un círculo, conectamos un Null al CHOP Sopto1 y después convertir nuestro CHOP a SOP con el operador CHOP to de la familia SOP y podemos repetir el proceso de conexión descrito anteriormente para evitar pasos extra:
Y efectivamente, nuestra información CHOP crea un círculo idéntico al operador Circle 1.
Así que lo siguiente que te preguntaras: ¿Pero bueno, matemáticamente que es un círculo y como puedo hacerlo desde cero con CHOP’s? Vamos a descubrir cómo en los siguientes párrafos.
Definición tomada desde Wolfram MathWorld:
Dónde :
- r = Tamaño del radio de nuestro circulo.
- t = Longitude del ángulo.
- x = Posición en eje X del ángulo dado.
- y = Posición en eje Y del ángulo dado.
- Constant CHOP: Aquí es donde definiremos nuestros parámetros, así como nuestra constante en z para no tener que modificar la conversión a SOP.
- Select CHOP: Un operador muy funcional para poder seleccionar canales individuales desde otros operadores.
- Math CHOP: Operador con el cual podemos realizar diversas operaciones matemáticas.
- Pattern CHOP: Este componente nos ayudará a definir el valor de nuestro ángulo.
- Function CHOP: Este es de mis operadores favoritos, ya que realiza diferentes funciones matemáticas al operador que se introduzca.
- Merge CHOP: Con este operador juntaremos nuestros canales para solo tener una salida que sea funcional al momento de convertir nuestra información CHOP a SOP.
- Rename CHOP: Nos servirá para asignar el nombre correcto para la conversión.
- Null CHOP: El muy funcional null CHOP que nos servirá para realizar la exportación de nuestra información.
Paso 1:
Crear un Constant CHOP en el cual declararemos:
- Samples: Longitud en muestras/puntos de nuestro circulo, en este cso le daremos valor de 40 (Que es igual al valor default de circle1).
- r: Radio de nuestro circulo el cual será de 1.
PASO 2:
Crear Pattern CHOP:
- En el parámetro Type escogeremos la opción Ramp
- En nuestro parámetro Length exportaremos el canal samples de constant1.
Paso 3:
PASO 4:
Utilizar Merge CHOP para unir nuestros dos canales y colocaremos un Select CHOP para seleccionar el parámetro 'r' que se encuentra definido en el operador Constant1:
PASO 5:
Multiplicar nuestras funciones (cos t,sin t) por el valor del parámetro r, para esto conectamos los operadores select1 y merge1 a un Math CHOP, en el cual tenemos que modificar el parámetro Combine CHOPs a 'Multiply':
pASO 6:
- Copiar y pegar el operador pattern1. En la copia(pattern2) realizar los siguientes cambios:
- Cambiar el parámetro Type a Constant.
- Cambiar el parámetro Amplitude a 0.
- En la pestaña Channel cambiar el nombre del canal en el parametro Channel Names a ‘tz’.
Por lo que podremos asegurar que todo el proceso que realizamos dibujara un círculo en la familia SOP. Para esto lo que tenemos que realizar es hacer el proceso de Conectar/Exportar el operador 'null2' a un operador CHOPto de la familia SOP:
RECURSOS:
https://mathworld.wolfram.com/Circle.html
https://mathworld.wolfram.com/ParametricEquations.html