Librería (shape)
¿Para qué sirve?
Section titled “¿Para qué sirve?”La librería shape es una de las más poderosas y extensas de Kara Effector. Proporciona un control total sobre las figuras vectoriales de ASS (\p1, \p<num>). Con estas funciones, puedes crear figuras desde cero, manipular sus puntos, transformarlas geométricamente, animarlas a lo largo de trayectorias complejas, convertirlas en píxeles y mucho más. Es la base para todos los efectos visuales que van más allá de la manipulación de texto simple.
Funciones
Section titled “Funciones”Funciones de información y utilidad básica
Section titled “Funciones de información y utilidad básica”Estas funciones se utilizan para obtener información sobre un shape o para realizar conversiones y normalizaciones fundamentales.
Normaliza y limpia una cadena de texto de un shape. Convierte \clip rectangulares a su equivalente en shape, elimina espacios adicionales, redondea coordenadas y convierte segmentos de línea o curva largos en múltiples segmentos más cortos para asegurar la compatibilidad. Es una función de pre-procesamiento fundamental.
Shape: string | table: Elshapeo tabla deshapesa procesar.Round: number, opcional: El número de decimales al que se redondearán las coordenadas. Por defecto es2.
Redondea todas las coordenadas numéricas dentro de un shape a un número específico de decimales.
Shape: string | table: Elshapea redondear.Round: number, opcional: El número de decimales. Por defecto es0(redondeo al entero más cercano).
No devuelve un valor directamente, sino que calcula y almacena en variables globales temporales las propiedades geométricas de un shape. Estas variables son cruciales para ser usadas en otras funciones, especialmente en filtros.
Variables que establece:
minx, maxx, miny, maxy: Coordenadas de la caja contenedora (bounding box).w_shape, h_shape: Ancho y alto delshape.c_shape, m_shape: Coordenadas del centro delshape.n_points: Número total de puntos en elshape.
Shape: string: Elshapea analizar.
Se llama internamente antes de funciones como shape.filter para que las variables estén disponibles.
Calcula la longitud total del perímetro de un shape, incluyendo sus segmentos curvos.
Shape: string | table: Elshapea medir.partsopcional: Si se proporciona cualquier valor en este argumento, la función devuelve una tabla con la longitud de cada segmento individual en lugar de la suma total.
Calculan el ancho (width) o alto (height) de la caja contenedora del shape. shape.height es simplemente un atajo para llamar a shape.width con el segundo argumento.
Shape: string | table: Elshapea medir.Height?: string, opcional: Si se proporciona el string"height", la funciónshape.widthdevuelve la altura.
Crea un shape de línea recta.
P1: table: El punto de inicio{x, y}.P2: table | number: El punto final. Si es una tabla{x, y}, crea una línea entreP1yP2. Si es un número, se interpreta como un ángulo (en grados).Radius: number: SiP2es un ángulo, este es el largo (radio) de la línea.
Genera un shape de círculo a partir de los tres primeros puntos de un shape o clip rectangular. Calcula el círculo que pasa por esos tres puntos (circuncentro).
Shape: string | table: Elshapeo tabla de 3 puntos{cx, cy, radio}de la cual se derivará el círculo.
Extrae el trazado vectorial de un \iclip de la línea de karaoke actual y lo convierte en una nueva línea de diálogo completamente dibujable (con \an7\pos(0,0)\p1). Es útil para visualizar o manipular directamente la trayectoria de un clip.
Ejemplo
Section titled “Ejemplo”-- En una línea que ya tiene un \iclip(m...):return shape.from_clip()Similar a from_clip, pero en lugar de generar una línea nueva, devuelve únicamente el código de el shape extraído del \iclip de la línea actual. Si no se encuentra un \iclip, devuelve un shape rectangular del tamaño del objeto karaoke.
Tags?: string, opcional: Etiquetas que se añadirán al principio de la cadena devuelta (p.e.{\pos(100,100)}).
Ejemplo
Section titled “Ejemplo”-- En "Variables [fx]:", para guardar la trayectoria para uso posteriormi_trayectoria = shape.inclip()Realiza la operación inversa a shape.divide. Toma una tabla de segmentos de shape y los une en una única cadena de shape.
Table_points: table: Una tabla donde cada elemento es una cadena de un segmento deshape(p.e.{"m 0 0 l 10 10", "l 20 0"}).
Ejemplo
Section titled “Ejemplo”return shape.to_shape(mis_segmentos)Encuentra todos los puntos de intersección geométrica entre dos shapes. Antes de calcular, convierte todas las curvas Bézier en segmentos de línea.
Shape1, Shape2: string: Los dosshapesa comparar.
Devuelve una tabla de tablas, donde cada tabla interna contiene las coordenadas de un punto de intersección: {{x1, y1}, {x2, y2}, ...}.
Ejemplo
Section titled “Ejemplo”-- En "Variables [fx]:":puntos = shape.intersect(shape.rectangle, "m -10 50 l 110 50")-- 'puntos' contendrá {{0, 50}, {100, 50}}Permite obtener las coordenadas de puntos a lo largo de la trayectoria de un shape, un punto por cada iteración del bucle (j). La función establece automáticamente maxloop al número total de puntos generados.
Shape: string: Elshapeque servirá como trayectoria.Pixel?: number, opcional: La distancia aproximada entre cada punto a lo largo de la trayectoria. Un valor más bajo genera más puntos.
Devuelve una tabla {x=..., y=...} con las coordenadas del punto j en la trayectoria.
Ejemplo
Section titled “Ejemplo”-- En un Template [Shape]-- En "Variables [fx]:"mi_punto = shape.parametric(shape.circle, 5)-- En "Return [fx]:":-- Coloca una estrella en cada punto de la circunferencia.return "{\\pos("..mi_punto.x..","..mi_punto.y..")}" .. shape.starFunciones de transformación y posicionamiento
Section titled “Funciones de transformación y posicionamiento”Es la función principal para mover (desplazar) un shape. Puede mover la figura a coordenadas absolutas o de forma relativa a su centro, origen o primer/último punto.
Shape: string: Elshapea mover.Dx, Dy: number | string: El desplazamiento en los ejesXeY. Si se omite, es 0. También acepta atajos enstringcomo"incenter"o"origin".Mode?: string, opcional: Define el punto de anclaje para el desplazamiento.nil(por defecto): Desplazamiento absoluto."origin": Mueve la esquina superior izquierda delshapea las coordenadas(Dx, Dy)."center": Mueve el centro delshapea(Dx, Dy)."first": Mueve el primer punto delshapea(Dx, Dy)."last": Mueve el último punto delshapea(Dx, Dy).
Ejemplo
Section titled “Ejemplo”-- Mueve el centro del círculo a las coordenadas (100, 200)return shape.displace(shape.circle, 100, 200, "center")Escala un shape basándose en un factor de proporción. A diferencia de shape.size, no define un tamaño final en píxeles, sino que multiplica sus dimensiones actuales por el factor dado.
Shape: string: Elshapea escalar.Ratiox: number | table: Factor de escala horizontal (ej.1.5para 150%). Si se omite, usa el valor deRatioy.Ratioy: number | table: Factor de escala vertical. Si se omite, usa el valor deRatiox.Mode?: number, opcional: Un número del1al9que define el punto de anclaje para la escala (como\an). Por defecto es0(origen 0,0).
Ejemplo
Section titled “Ejemplo”-- Hace una shape el doble de ancha y la mitad de alta, anclada en su centroreturn shape.ratio(shape.rectangle, 2, 0.5, 5)Escala un shape para que tenga un ancho y alto específicos en píxeles.
Shape: string: Elshapea redimensionar.SizeX: number | table: El ancho final en píxeles. Si es una tabla{valor}, se suma al ancho actual.0para escalar proporcionalmente aSizeY.SizeY: number | table: El alto final en píxeles. Si es una tabla{valor}, se suma al alto actual.0para escalar proporcionalmente aSizeX.Mode?: number, opcional: Punto de anclaje (1-9). Por defecto es0(origen 0,0).
Ejemplo
Section titled “Ejemplo”-- Redimensiona un círculo para que mida 100x100 píxeles, anclado en su centro.return shape.size(shape.circle, 100, 100, 5)Crea un reflejo especular de un shape a través de un eje o una línea.
Shape: string: Elshapea reflejar.Axis?: string, opcional: El eje de reflexión."x"(horizontal),"y"(vertical, por defecto), o cualquier otro valor para reflejar a través del origen.Relative?: number, opcional: Coordenada de la línea de reflexión. Por defecto es0(el eje).
Ejemplo
Section titled “Ejemplo”-- Refleja un banner horizontalmente a través de la línea x=150return shape.reflect(mi_banner, "y", 150)Aplica un efecto de cizallado o inclinación (skew) a un shape, similar al estilo de letra cursiva.
Shape: string: Elshapea inclinar.Pixel: number | table: La cantidad de desplazamiento en píxeles. Si es una tabla{valor}, la inclinación es angular en lugar de lineal.Axis?: string, opcional: El eje de inclinación:"x","y", o"xy"(ambos).
Ejemplo
Section titled “Ejemplo”-- Inclina un rectángulo 20 píxeles en el eje X.return shape.oblique(shape.rectangle, 20, "x")Desplaza un shape entera de tal manera que uno de sus puntos (P1) se mueva para coincidir exactamente con una nueva coordenada de destino (P2).
Shape: string: Elshapea mover.P1: number | string | table: El punto de origen en elshape. Puede ser el índice del punto (2), unshapede punto ("m 10 10"), o una tabla de coordenadas ({10, 10}).P2: string | table: La coordenada de destino, comoshapede punto o tabla.
Ejemplo
Section titled “Ejemplo”-- Mueve un círculo para que su segundo punto de control quede en la posición (0,0).return shape.pointpos(shape.circle, 2, {0, 0})Cuando se aplica a un shape compuesto, esta función activa un bucle (loop) y devuelve la posición (\pos(...)) y el shape de cada sub-figura individual en cada iteración (j).
Shape: string: Elshapecompuesto.
Ejemplo
Section titled “Ejemplo”-- En un Template [Shape]-- 'mis_estrellas' es una shape compuesta de 5 estrellas. Esto creará 5 líneas,-- cada una con una estrella en su posición correcta.return shape.pos(mis_estrellas)Aplica una o más matrices de transformación 3x3 a cada punto de un shape. Es la herramienta de transformación más avanzada, permitiendo cualquier combinación de rotación, escala, desplazamiento y cizallado en una sola operación.
Shape: string: Elshapea transformar....: table: Una o más matrices 3x3. Se multiplican en secuencia. Se pueden usar las funcionesmath.matrix_...para generarlas.
Ejemplo
Section titled “Ejemplo”-- Rota una shape 45 grados y luego la desplaza 100px a la derecha.local matriz_rot = math.matrix_rot(45)local matriz_des = math.matrix_dis(100, 0)return shape.matrix(shape.rectangle, matriz_rot, matriz_des)Funciones de manipulación geométrica y estructural
Section titled “Funciones de manipulación geométrica y estructural”Estas funciones alteran la estructura o los puntos de un shape.
Redibuja un shape convirtiendo sus segmentos en una serie de líneas rectas más pequeñas de una longitud aproximada. Es fundamental para aplicar efectos que necesitan una mayor densidad de vértices.
Shape: string: Elshapea redibujar.tract: number: La longitud aproximada de cada nuevo segmento de línea.Section?: string, opcional: Define qué tipo de segmentos se redibujarán."line","bezier", o"all"(por defecto).Continued?: boolean, opcional: Si estrue, trata unshapecon múltiples figuras (m ...) como una sola figura continua.
Una de las funciones más potentes. Aplica una o más funciones de filtro a cada punto de un shape. La función de filtro recibe las coordenadas (x, y) del punto y debe devolver las nuevas coordenadas. Dentro del filtro, se tienen acceso a variables especiales como Dc (distancia al centro), Ac (ángulo desde el centro), Mp (progreso a lo largo del shape), etc.
Shape: string: Elshapea la que se aplicará el filtro.Split: number: Elshapese redibuja primero con este tamaño de segmento para tener más puntos a los que aplicar el filtro....: function: Una o más funciones de filtro a aplicar secuencialmente.
Convierte todos los segmentos de curva Bézier (b) de un shape en segmentos de línea (l). Es un atajo para shape.redraw con la sección "bezier".
Shape: string: Elshapea convertir.Tract?: number, opcional: La longitud de los nuevos segmentos de línea.
Convierte todos los segmentos de línea (l) de un shape en segmentos de curva Bézier (b).
Shape: string: Elshapea convertir.
Invierte el orden de los puntos de un shape, cambiando la dirección en la que fue dibujada.
Shape: string: Elshapea invertir.
Optimiza un shape eliminando puntos colineales redundantes. Por ejemplo, si un punto se encuentra exactamente en la línea recta formada por sus dos puntos vecinos, es eliminado.
Shape: string: Elshapea reducir.
Crea el contorno (borde) de un shape, generando un nuevo shape que representa el borde con un grosor determinado. Utiliza la librería Yutils.
Shape: string: Elshapede la que se creará el contorno.Bord?: number, opcional: El grosor del contorno. Por defecto es1.02.
Crea un borde para un shape generando dos figuras: el shape original escalada a un tamaño (Size) y una versión invertida y más pequeña en su interior, simulando un borde con grosor (Bord).
Shape: string: Elshapea la que se le creará el borde.Bord: number: El grosor del borde.Size?: number | table, opcional: El tamaño final delshapeexterior{ancho, alto}.
Elimina (retira) uno o más segmentos de un shape. Un segmento es cada comando de dibujo (m, l o b) y sus coordenadas correspondientes.
Shape: string: Elshapea modificar.Index_1: number: El índice del primer segmento a eliminar.Index_2?: number, opcional: Si se proporciona, se elimina el rango de segmentos desdeIndex_1hastaIndex_2.
Elimina figuras completas (cada figura empieza con m) de un shape compuesta.
Shape: string: Elshapecompuesto.Deletes: number | table | string: Especifica qué figuras eliminar.number:2elimina 1 de cada 2 figuras al azar.table:{1, 3, 5}elimina las figuras 1, 3 y 5.{{2, 4}}elimina el rango de la 2 a la 4."Rand"(por defecto): Elimina 1 de cada 2 figuras al azar.
Función de utilidad avanzada que prepara dos shapes para poder ser interpolados correctamente, incluso si tienen un número diferente de figuras o segmentos de curva. Añade puntos y segmentos “dummy” al shape más simple para que ambas tengan una estructura compatible.
Shape1, Shape2: string: Los dosshapesa compatibilizar.
Devuelve dos nuevas (shapes: Shape1_modificada, Shape2_modificada) listas para ser usadas en funciones como table.ipol.
Devuelve una tabla que contiene las coordenadas de todos los puntos que componen un shape. Es fundamental para analizar una figura o aplicar efectos a sus vértices.
Shape: string: Elshapede la cual se extraerán los puntos.Pixel?: number, opcional: Si se proporciona, elshapese redibuja primero con este tamaño de segmento para generar más puntos.
Devuelve una tabla de tablas, donde cada sub-tabla es un punto: {{x=..., y=...}, {x=..., y=...}, ...}.
Corta o divide un shape en un punto específico a lo largo de su trayectoria.
Shape: string: Elshapea cortar.t: number | table:number: El porcentaje (de 0 a 1) a lo largo de elshapedonde se hará el corte. Devuelve{shape_inicial, shape_final}.table:{n}divide elshapeennpartes iguales y devuelve una tabla con todas las partes.
AddPoint?: table, opcional: Si se usa el modo tabla, añade un punto central{x, y}a cada segmento para crear un efecto de “explosión”.
Deforma Shape1 para que siga la trayectoria de Shape2. Es conceptualmente similar a text.do_shape, pero opera entre dos shapes.
Shape1: string: Elshapeque será deformado (el “contenido”).Shape2: string: Elshapeque define la nueva trayectoria (el “molde”).Mode: number: Modo de alineación (1: centrado, 2: de inicio a fin, etc.).Split: number: La precisión de la deformación.
Funciones de animación y trayectorias
Section titled “Funciones de animación y trayectorias”Estas funciones están diseñadas para crear movimiento a lo largo de caminos definidos por shapes o funciones paramétricas, y para generar shapes complejas que sirvan como trayectorias.
Lineal Move. Genera un movimiento complejo a lo largo de una serie de puntos, creando una trayectoria con segmentos rectos. La función devuelve un conjunto de tags de posicionamiento (\fscx, \fscy) y \t para animar un objeto a lo largo de esa trayectoria.
Coor: table: Una tabla de coordenadas{x1, y1, x2, y2, ...}.Times: table, opcional: Una tabla con los tiempos de llegada a cada punto{t1, t2, ...}. Si se omite, los tiempos se calculan proporcionalmente a la distancia entre puntos.Times2: number | table, opcional: Permite especificar una duración total o un intervalo{t_inicio, t_final}.Accel?: number, opcional: La aceleración para las transiciones\t.
Parametric Move. Similar a lmove, pero la trayectoria se define mediante funciones paramétricas en lugar de puntos fijos. Esto permite crear movimientos curvos y complejos (círculos, espirales, sinusoides, etc.).
F_x, F_y: string: Las funciones paramétricas para X e Y en función de una variables. (ej."100 * cos(s)").domainF: number | table: El dominio para la variables. Puede ser un númeromax_s(el dominio será[0, max_s]) o una tabla{min_s, max_s}.t1, t2: number: Tiempos de inicio y fin del movimiento.Accel?: number, opcional: Aceleración.offset_t?: number, opcional: Duración de cada “paso” en la animación.
Shape Move. Genera un movimiento que sigue exactamente el contorno de una shape dada.
Shape: string | table: Elshapeque define la trayectoria.t1, t2: number: Tiempos de inicio y fin del movimiento.offset_t?: number, opcional: Duración de cada paso.Relative?: boolean, opcional: Si estrue, la trayectoria es relativa a la posición original del objeto; si no, es absoluta.
Random Move. Genera un movimiento aleatorio tipo shake o vibración.
Rx, Ry: number | table: La amplitud máxima del movimiento aleatorio en cada eje.t1, t2: number: Tiempos de inicio y fin.Accel?: number, opcional: Aceleración.offset_t?: number | table, opcional: Duración de cada “paso” del movimiento.Counter2, opcional: Un contador adicional para variar la semilla aleatoria.
Una variante de rmove que genera un movimiento aleatorio con pausas también aleatorias entre los shakes.
Rx, Ry: number: Amplitud del movimiento.t?: table, opcional: Una tabla de configuración de tiempos{t_inicio, t_final, dur_paso, dur_shake, dur_pausa}.Accel?: number, opcional: Aceleración.
Aplica rmove en múltiples segmentos de tiempo definidos en una tabla.
Rx, Ry: number: Amplitud del movimiento.t: table: Una tabla de tiempos{t1_ini, t1_fin, t2_ini, t2_fin, ...}.Accel?: number, opcional: Aceleración.offset_t?: number, opcional: Duración de cada paso.
Genera un movimiento aleatorio con un “doble shake”, superponiendo una vibración secundaria sobre el movimiento principal.
- Los mismos que
rmove, más: move4: table: Una tabla que configura el segundo shake:{dur_paso, amplitud, accel}.
Oscillating Move. Genera un movimiento oscilante entre una serie de puntos.
P: string | table: Los puntos entre los que se oscilará.t1, t2: number: Tiempos de inicio y fin.Dur: number: La duración de cada ciclo de oscilación.Accel?: number, opcional: Aceleración.
Simula un “salto de escena”, moviendo un objeto instantáneamente a diferentes posiciones definidas por los puntos de un shape extraído de un \iclip en la línea actual. Crea una serie de líneas de efecto, cada una con una posición diferente.
Mode?: number, opcional: Si se omite, genera etiquetas de movimiento (\fscx\fscy) en una sola línea. Si se proporciona un valor, genera múltiples líneas de efecto (maxloopse ajusta automáticamente), cada una con un\pos.Dur?: number, opcional: La duración que el objeto permanecerá en cada posición. Por defecto esframe_dur.Ini?: number, opcional: Tiempo de inicio para la primera posición.
Funciones generadoras de trayectorias
Section titled “Funciones generadoras de trayectorias”Estas funciones no mueven un objeto, sino que devuelven un shape que puede usarse como trayectoria para otras funciones (como shape.smove o text.do_shape).
Genera un shape aleatorio con un trazo suave y fluido, compuesto de curvas Bézier.
Loop_t: number: Número de segmentos de curva a generar.distance_min, distance_max: number: La longitud mínima y máxima de cada segmento.
Line Trajectory. Genera una trayectoria de curva suave a lo largo de una línea principalmente horizontal.
length_total: number: La longitud total de la trayectoria.length_curve: number: La longitud de cada “onda”.height_curve: number: La amplitud (altura) de cada “onda”.
Circle Trajectory. Genera una trayectoria aleatoria que se mantiene contenida dentro de un área circular.
Loop_Ct: number: Número de segmentos.radius_min, radius_max: number: El radio mínimo y máximo que puede alcanzar la trayectoria desde su origen.
Random Trajectory. Similar a Ctrajectory pero con un comportamiento más caótico y menos contenido.
- Los mismos que
Ctrajectory.
Segment Trajectory. Genera un shape aleatoria compuesta únicamente por segmentos de línea recta.
Loops_St: number: Número de segmentos de línea.Radius: number: La longitud máxima de cada segmento.
Funciones de creación múltiple y composites
Section titled “Funciones de creación múltiple y composites”Estas funciones generan shapes complejos compuestos por múltiples figuras más simples, ideales para fondos, patrones y efectos visuales elaborados.
Crea una serie de cuadrados concéntricos.
Size_shape: number: El tamaño del cuadrado exterior.Px: number | table: El grosor de cada “anillo” cuadrado. Si es una tabla, se cicla a través de sus valores.
Rellena un área rectangular con un patrón de diagonales.
Width, Height: number: Las dimensiones del área a rellenar.Pixel: number | table: El ancho de cada línea diagonal.
Crea figuras concéntricas a partir de un shape base, similar a multi1, pero para cualquier figura.
Size: number: El tamaño de la figura exterior.Bord: number | table: El grosor de cada “anillo”.Shape: string, opcional: Elshapebase. Por defecto esshape.circle.
Crea un polígono regular (Loop1 lados) y luego crea un arreglo de (Loop2) polígonos más pequeños dentro de cada lado, repitiendo el proceso (n) veces hacia el centro. Genera patrones tipo “mandala” o geométricos complejos.
Size: number: El tamaño del polígono exterior.Loop1: number: Número de lados del polígono principal.Loop2: number: Número de sub-polígonos por lado.n: number: Número de “capas” concéntricas a generar.
Crea un arreglo matricial (cuadrícula) rellenando un área rectangular con una o más shapes.
Shapes: string | table: Elshapeo tabla de shapes a usar para rellenar.Width, Height: number: El tamaño del área a rellenar.Dxy?: table, opcional: El espaciado{x, y}entre cada figura.
Crea el perímetro de un cuadrado dividido en rectángulos individuales.
Size: number: El tamaño del cuadrado.Bord: number: El grosor del perímetro.Part: number: El número de rectángulos que compondrán el perímetro.
Crea un círculo o un anillo circular compuesto por segmentos individuales.
Part: number: El número de segmentos en los que se dividirá el círculo.Radius: number | table: El radio del círculo. Si es una tabla{r1, r2, ...}, crea anillos concéntricos.
Crea una serie de shapes concéntricos interpolando su tamaño desde un valor inicial a uno final.
Shape: string: Elshapebase.Size_ini, Size_fin: number: Tamaño inicial y final.Loop: number: El número de pasos (figuras) en la interpolación.
Repite un shape varias veces en una sola línea de efecto, aplicando un conjunto de etiquetas diferente a cada repetición. Es extremadamente útil para crear “trails” (estelas) o conjuntos de objetos con propiedades distintas.
Shape: string | function: Elshapea repetir. Si es una función, se llama para cada repetición.Loop: number: El número de repeticiones.Tags: table: Una tabla de cadenas de etiquetas que se aplicarán cíclicamente a cada repetición.Vertical?: boolean, opcional: Si estrue, inserta un\Npara apilar losshapesverticalmente.
Una función general para crear arreglos de shapes. Puede generar arreglos lineales, radiales, rectangulares o a lo largo de otro shape.
Shape: string | table: Elshapeoshapesbase para el arreglo.loops: number | table: Número de repeticiones.{filas, columnas}para arreglos rectangulares.Angle_or_mode: number | string | table:number: Ángulo para un arreglo lineal.string: Modo."radial","radial2"(alternado),"radial3","array"(rectangular),"shape","shape2"(alternado).table:{angulo_array, angulo_shape}.
Dxy: number | string | table: Distancia/espaciado.number: Distancia lineal o radio.string:shapepara el modo"shape".table:{dist_x, dist_y}o{radio_ini, radio_fin, arco, angulo_ini}.
Genera un espectrograma (la forma de onda) de un archivo de audio .wav y lo devuelve como un shape. Crea una serie de líneas de efecto, cada una representando un pequeño segmento de tiempo del audio.
Audio_wav: string: El nombre del archivo.wav(debe estar en la misma carpeta que el script).Width: number: El ancho del espectrograma.Height_scale: number: Un factor para escalar la amplitud (altura) de la onda.Thickness: number: El grosor de la línea de la onda.Offset_time: number: Un desfase de tiempo en milisegundos.
Fusiona una tabla de shapes individuales en un solo shape compuesto, ajustando sus posiciones para que no se superpongan y aplicando opcionalmente etiquetas a cada uno.
Shapes: table: La tabla deshapesa fusionar.Tags?: table, opcional: Etiquetas a aplicar a cadashape.
Funciones de píxeles y manipulación avanzada
Section titled “Funciones de píxeles y manipulación avanzada”Estas funciones operan a un nivel más fundamental, ya sea convirtiendo shapes en sus representaciones de píxeles o realizando manipulaciones de bajo nivel sobre su estructura.
Convierte el relleno de un shape en una serie de píxeles individuales, cada uno como un objeto en un bucle (loop).
Shape: string: Elshapea pixelar.Shape2?: string, opcional: Elshapeque se usará para cada píxel (por defecto, un cuadrado de 1x1).Seed?: number, opcional: Un valor para aleatorizar la aparición de píxeles.Seed=5significa que solo aparecerá 1 de cada 5 píxeles, al azar.Filter?: function, opcional: Una función para aplicar transformaciones a cada píxel individualmente.Table?: boolean, opcional: Si estrue, devuelve una tabla con los datos de los píxeles en lugar de generar las líneas de efecto.
Similar a to_pixels, pero en lugar del relleno, convierte el borde del shape en píxeles.
Shape, Shape2, Seed, Filter: Mismos que ento_pixels.Pixel?: number, opcional: El tamaño de los segmentos de línea a usar para generar los puntos del borde.
Crea una animación de “morphing” (metamorfosis) entre dos shapes. Devuelve una tabla de shapes que representan los pasos intermedios de la transformación.
Size: number: El número de pasos (frames) de la animación.Shape1, Shape2: string: Losshapesde inicio y fin.Accel?: number | string, opcional: La aceleración de la interpolación.
Recorta un shape usando una o más líneas de corte. Devuelve una tabla con los shapes resultantes de la división.
Shape: string: Elshapea cortar.Lines: table: Una tabla deshapesde línea que actuarán como cuchillas de corte.Mark?: number | string | table, opcional: Unshapeo marcador para visualizar los límites.Ratio?: number, opcional: Escala aplicada a las coordenadas antes de cortar.
Grid Rectangle. Genera un shape de píxeles que representa un rectángulo. A diferencia de shape.grid, no se basa en una shape de entrada, sino que crea un rectángulo desde cero. Es ideal para crear fondos pixelados o efectos de matriz.
Width, Height: number: Ancho y alto del rectángulo en píxeles.Mode?: string, opcional: Modo de renderizado:"h"(barras horizontales),"v"(barras verticales), onil(cuadrícula).Filter: function | string: Función para colorear cada píxel o nombre de un archivo de imagen.bmp.Align?: number, opcional: Alineación de la imagen si se usa como filtro.Lines?: number | table, opcional: Si se proporciona, divide la salida en múltiples líneas de efecto.
Un efecto avanzado que aplica diferentes conjuntos de etiquetas (Set_tagfx) a los objetos que se encuentren dentro de diferentes áreas de recorte (Set_clips). La función genera automáticamente el bucle y las líneas de efecto necesarias.
Set_clips: table: Una tabla de cadenas\clip(vectoriales o rectangulares).Set_tagfx: table: Una tabla de cadena de etiquetas, una para cada clip.Indx_line?: table, opcional: Índices de las líneas a las que se aplica el efecto.
Crea una animación “frame a frame” ciclando a través de una tabla de shapes.
dur: number: Duración total de la animación.frame_duration: number: Duración de cada “frame” (cadashape).Shapes: table: La tabla deshapesa ciclar.Pscale: string | number: La etiqueta de escala a usar (ej.\p1).Random: boolean: Si estrue, muestra losshapesen orden aleatorio en lugar de secuencial.
Toma un shape compuesto (con múltiples comandos m) y lo divide en una tabla de shapes individuales.
Shape: string: Elshapea dividir.Mark?: string | number | table, opcional: Si se proporciona, añade unshapede “marco” a cada una de las figuras resultantes para definir sus límites.
Aplica una deformación de onda sinusoidal a los puntos de un shape.
Shape: string: Elshapea deformar.Deformed: number: La frecuencia de la onda.Pixel: number: La amplitud de la onda en píxeles.Axis: string: El eje de la deformación:'x','y', o'xy'.
Aplica una deformación aleatoria a los puntos internos de un shape compuesto, creando un efecto de “ruido”, irregularidad o distorsión. No afecta a los puntos del contorno exterior.
Shape: string: Elshapea deformar.Defor_x, Defor_y: number: La amplitud máxima de la deformación aleatoria en cada eje.
Aplica una o más funciones de filtro a cada sub-figura (cada m ...) de un shape compuesto. A diferencia de shape.filter que opera en puntos, esta función opera sobre shapes enteros, permitiendo modificar cada parte de forma individual dentro de un bucle.
Shape: string: Elshapecompuesto....: function: Una o más funciones de filtro. Cada función recibe elshapede la sub-figura actual (shp) y debe devolver elshapemodificado. Dentro del filtro, se tiene acceso a la variableSi(el índice de la sub-figura).
Ejemplo
Section titled “Ejemplo”-- En un Template [Shape]-- 'mi_mosaico' es una shape compuesta de muchos cuadrados.-- Esta función rota cada cuadrado según su índice.local filtro_rotacion = function(shp) return shape.rotate(shp, Si * 10, "center")endreturn shape.filtershape(mi_mosaico, filtro_rotacion)