¿Qué es Python?

Es un lenguaje de alto nivel de propósito general diseñado con el mayor énfasis en simplificar la gramática, para mejorar la legibilidad del código, facilitar la lectura y escritura, y mejorar la funcionalidad del programador y la confiabilidad del código.

Wikipedia

Python es un lenguaje de programación interpretado de tipado dinámico cuya filosofía hace hincapié en una sintaxis que favorezca un código legible. Se trata de un lenguaje de programación multiparadigma y disponible en varias plataformas.

Dicho de otro modo, Python es:

  • Interpretado: Se ejecuta sin necesidad de ser procesado por el compilador y se detectan los errores en tiempo de ejecución.
  • Multiparadigma: Soporta programación funcionalprogramación imperativa y programación orientada a objetos.
  • Tipado dinámico: Las variables se comprueban en tiempo de ejecución.
  • Multiplataforma: disponible para plataformas de Windows, Linux o MAC.
  • Gratuito: No dispone de licencia para programar.

Una de las razones de su éxito es que cuenta con una licencia de código abierto que permite su utilización en cualquier escenario. Esto hace que sea uno de los lenguajes de iniciación de muchos programadores siendo impartido en escuelas y universidades de todo el mundo. Sumado a esto cuenta con grandes compañías que hacen de este un uso intensivo. Tal es el caso de Google, Facebook o Youtube, ya que permite, entre otras de sus características la automatización de procesos y ejecución de tareas en tanto en entorno cliente como servidor.

Python es ideal para trabajar con grandes volúmenes de datos ya que, el ser multiplataforma, favorece su extracción y procesamiento, por eso lo eligen las empresas de Big Data. A nivel científico, tiene una gran biblioteca de recursos con especial énfasis en las matemáticas para aspirantes a programadores en áreas especializadas.

 

Primeros pasos

Inicie Touch Designer y aprete  Alt + T , se abrirá una ventana negra como esta, donde podrá ver la versión actual de python en su maquina.

 

Gramática básica

Comencemos con un ejemplo simple, usando la cadena de caracteres.
Ingrese el siguiente código y presione la tecla Enter.

print("Hello World")

Visualizara el resultado debajo. «Hello World»

Cálculo numérico

A traves de python podemos hacer cálculos de todo tipo, como por ejemplo una suma:

print(3+5)

Otras operaciones posibles:

 

Los elementos que desea calcular primero se incluyen entre ().

variable

Una variable es como una caja que almacena un valor.

a = 1
print(a)
1

Actualizar el valor

print(a)
1
a = 2
print(a)
2

Agregar un número al valor actual

a = 1
a = a + 10
print(a)
11

 

Python es un lenguaje dinámico, le permite escribir variables sin tener que especificarlas.

 

print(type(1))
<class 'int'>
print(type("1"))
<class 'str'>

Por lo tanto, puede verificar el tipo de objeto dentro de los paréntesis con type ().

Comparación

Comparará valores.
Devuelve True si las condiciones coinciden, False si no coinciden.

 

 

print(1==1)
True
print(1!=1)
False

Operador lógico

Establece verdadero si coinciden, sino falso.

A = True
B = False

print(A or B)
True
print(A and B)
False
print(not A)
false

Estructuras:

Indentación (sangría) en python

Esta es una de las principales señas de identidad de Python y es fuente de una gran parte de los errores que se producen. En Python, las líneas de código que están dentro de un mismo sistema deben estar agrupadas, teniendo el mismo número de espacios a la izquierda de cada línea, ejemplo:

  • Comercio
    • Tecnología
      • Televisión
      • Computadora
    • Decoración
      • Muebles
      • Alfombras

En Python, se recomienda usar bloques de cuatro espacios, aunque si se usan otro número de espacios, también funcionaría. Otra opcion es usar tabuladores.

Operador condicional

Se cambia el procesamiento segun las condiciones.

a = 1
if a > 0:
    print(True)   Ejecutar cuando la expresión condicional es True
else:
    print(False)  # Ejecutar cuando la expresión condicional es False
True

Texto compuesto

  • Un grupo de código que consta de varias declaraciones.
  • La característica principal de Python es que «la profundidad de la sangría determina el rango de bloque de una declaración compuesta».
  • Este método es especial, mientras que otros idiomas usan paréntesis y especificación de rango por principio-fin.
  • Una palabra clave de instrucción compuesta (como if) es seguida por dos puntos (:) y luego las instrucciones sangradas con el mismo número de espacios se consideran un bloque.
  • Se recomienda utilizar 4 espacios básicos para la sangría.
a = 1
if a > 0:
    print(True)   #if bloque de instrucciones
else:
    print(False)  #else bloque de instrucciones

También puedes anidar bloques como este

A = True
B = False

if A:
    if B:
        print("A:True, B:True")
    else:
        print("A:True, B:False")  
else:
    if B:
        print("A:False, B:True")
    else:
        print("A:False, B:False")

Repeticion (for)

Es un proceso para buscar objetos con múltiples elementos, como listas en orden.

for fruit in ["apple", "orange", "banana"]:
        print(fruit)
    
apple
orange
banana
for i in range(3):    
        print(i)
    
0
1
2

range (x) crea una lista de 0 a x (valor entero) En este ejemplo [0,1,2]

Repetir mientras (While)

La instrucción while continúa en bucle mientras la expresión condicional es True, y el bucle termina cuando se convierte en False.

 

x = 3
while x > 0:
      print(x)
      x = x - 1

3
2
1

 

Módulo

Un módulo nos permite reutilizar un programa de otro archivo.
Además de los módulos que crea usted mismo, hay «módulos integrados» que están manera predeterminada en TD.
Vamos a usar un módulo incorporado predeterminado llamado Math (matemática), su uso es simple.

Al inicio del programa importamos el modulo

import math

Ejemplo de uso

import  math 

print ( math . pi ) 
3.141592653589793 
print ( math . cos ( 0 )) 
1.0

Otro modulo de uso frecuente es el aleatorio.

import random

print(random.random())    # Devuelve un valor flotante aleatorio en el rango de 1.0 ~
0.7607203658655518

print(random.uniform(3.0, 10.0))     # Devuelve un valor flotante
7.411074375066043

print(random.randint(10, 100))   # Devuelve un valor entero aleatorio.
66

 

  1. Textport
  2. DAT
  3. Operator Parameters

Textport

Se ejecuta mientras interpreta de manera secuencial el código escrito y las expresiones utilizadas.

DAT

Al usar este operador, la programación se puede realizar de manera conveniente y efectiva dentro de Touch Designer.
Dado que el código fuente son datos de texto.

Operator Parameters

También puede manejar los parámetros de los operadores con códigos de Python Script (Expresión). Por ejemplo, el archivo de Movie TOP tiene Expresión escrita en alguno de sus parámetros de forma predeterminada. La expresión se escribe cuando el centro de los tres cuadrados pequeños se rellena de color.

 

Expresiones de uso frecuente

absTime.frame

Obtiene el número de frames que han pasado desde el inicio.

 

absTime.seconds

Obtiene el tiempo transcurrido desde que se inició.

me.digits

Puede obtener el número al final del nombre.

Escribir Python con Text DAT

Después de crear textDAT, presione el botón en forma de cruz en la parte inferior derecha para activarlo.
Luego podrá escribir el texto.

print ( "¡Hola, mundo!" )

Luego, suelte desactive el estado activo y haga clic con el botón derecho en el operador.
Haz clic en Ejecutar script.

Abrimos el cuadro de texto Alt+t , debería decir ¡Hola Mundo !.

 

Run Script ejecutará el programa escrito en TextDAT.
Si escribe varias líneas, se ejecutarán secuencialmente desde la primera línea.

 

Acceder a los parámetros del operador

A continuación, accedamos a los parámetros del operador desde un script de Python.
Agrege un operador ConstantTop

 

r = op('constant1').par.colorr
print(r)

 

Cuando ejecuto el script, se mostrara el valor de ColorR de Constant 1, en la consola de comando.
Intente cambiar el valor de R y ejecútelo nuevamente para ver el cambio de valor.

Analicemos la línea que obtiene el valor del parámetro.

op()Para obtener el operador.
.parPara obtener los parámetros del operador.
.colorrEstá obteniendo el valor de colorr en el parámetro.

Puede acceder a otras variables cambiando la parte de colorr.

El nombre se encuentra en esta parte del parámetro.

A continuación, cambiemos el valor de Python.

op('constant1').par.alpha = 0.5

Cuando ejecuta este código, el Alfa de ConstantTOP cambiará a 0.5
Desde Python puede asignar valores a cualquier parámetro de un operador.

Ejecutar script automáticamente

El operador para ejecutar un script incluye el nombre Execute

 

 

Como ejemplo usaremos Execute y Chop Execute

Execute

def onFrameStart(frame):
    print(frame)
    return

Este script genera el número de Frame actual en el puerto de texto. Puede escribir el código que desea ejecutar al inicio en OnStart().

 

CHOP Execute

CHOP Execute se ejecuta cuando cambia el valor CHOP especificado.
De los On y Off que aparecen aquí, aquellos que son mayores que cero están On, y aquellos que son cero o menos están Off.

Cree la siguiente cadena de operadores:

  • ButtonCOMP, NullCHOP, CHOPExecute y ConstantTOP
  •  Coloque Null1 en el parámetro de CHOPExecute.

 

Escriba el siguiente código en CHOP Execute, y configure el parámetro Value Change en On.

def onValueChange(channel, sampleIndex, val, prev):
    op('constant1').par.alpha = val
    return

Ahora, cuando hace clic en el botón, el Alfa de la constante TOP se convierte en el valor del botón.

Cambie el Tipo de botón a Momentáneo y configure los parámetros ValueChange (Off) y Off to On (On)

import random

def onOffToOn(channel, sampleIndex, val, prev):
    op('constant1').par.colorr = random.random()
    op('constant1').par.colorg = random.random()
    op('constant1').par.colorb = random.random()
    return

Ahora, cuando hace click en el botón, el color de Constant TOP cambia de forma aleatoria.
De esta forma, el valor solo se puede actualizar en un momento específico.

 

Cómo usar un editor externo

A medida que el código crece, se hace difícil escribir en Touch Designer.
Puede usar un editor de texto externo pera un mejor desempeño.

  • Abrimos Preferencias y especificamos el Editor de texto en DAT.
  • Después de configurar, haga clic derecho en el DAT que desea editar y seleccione Edit Contents…

 

 

Podrá editar el contenido del DAT seleccionado con un editor externo.

Después de editar y sobrescribir en el editor, vera los cambios reflejados dentro de Touch Designer.

 

 

Callback DAT

Cuando crea OscDAT, SerieDAT, ReplicatorCOMP, etc., el DAT que aparece en la parte inferior se llama Callback DAT.

veamos Replicator como ejemplo.
Cree ReplicatorCOMP y realice los siguientes cambios.

Cree ConstantTOP y coloque la siguiente expresión python en los parámetros de colores RGB

me.digits / (op('replicator1').par.numreplicants-1)

 

Podemos editar el operador Callback DAT, por defecto tiene el siguiente código:

def onReplicate(comp, allOps, newOps, template, master):

    for c in newOps:
        #c.display = True
        #c.render = True
        #c.par.display = 1
        #c.par.clone = comp.par.master
        pass

    return

Se ejecutara cuando el operador Replicate sea modificado, podemos aumentar el numero de replicas para accionar el código.

En la seccion for c in newOps: , vamos a desmarcar c.display eliminando el símbolo de comentario #

def onReplicate(comp, allOps, newOps, template, master):

    for c in newOps:
        c.display = True
        #c.render = True
        #c.par.display = 1
        #c.par.clone = comp.par.master
        pass

    return

Haciendo este cambio, cuando repliquemos el operador contantTop, se activara la vista previa por defecto, la bandera Azul se activara.

 

De esta manera, los operadores con Callback DAT pueden realizar un procesamiento más avanzado.

 

TouchDesigner es un entorno de programación visual, donde puedes desarrollar tus proyectos sin escribir lineas de código, hay cosas que solo se pueden hacer usando código, tambien sistemas difíciles de replicar con operadores, vale la pena adentrarnos en python para implementar soluciones en nuestros proyectos de forma mas eficiente.

 

Fuente:

https://qiita.com/joe0hara/items/37b6b4dc514aea4b3837

https://qiita.com/joe0hara/items/19c229c3d0e790006581

Share this: