Quartz Composer es un lenguaje de programación visual basado en nodos que se proporciona como parte del entorno de desarrollo Xcode en macOS para procesar y representar datos gráficos.
Desarrollador (es) | computadora Apple |
---|---|
Lanzamiento estable | 4.6.2 / 12 de diciembre de 2016 |
Sistema operativo | Mac OS X v10.4 (Versión 2.0) Mac OS X v10.5 (Versión 3.0) Mac OS X v10.5 + iPhone SDK (Versión 3.1) Mac OS X v10.6 (Versión 4.0) Mac OS X v10.12 ( Versión 4.6.2) |
Disponible en | inglés |
Tipo | Lenguaje de programación visual / herramienta de desarrollo de software |
Licencia | Propiedad |
Sitio web | Apple - Quartz Composer (Guía del usuario) |
Quartz Composer utiliza OpenGL (incluido GLSL ), OpenCL (solo en Mac OS X 10.6 y posterior), Core Image , Core Video , JavaScript y otras tecnologías para crear una API y una herramienta de desarrollo en torno a un paradigma de programación visual simple. Apple ha incorporado tecnologías Quartz profundamente en el sistema operativo . Las composiciones creadas en Quartz Composer se pueden reproducir de forma independiente en cualquier aplicación compatible con QuickTime [1] (aunque solo en Mac OS X 10.4 y posterior), como protector de pantalla del sistema , [2] como visualizador de iTunes, desde dentro de la aplicación Quartz Composer. , o puede integrarse en una aplicación Cocoa o Carbon a través de los widgets de interfaz de usuario suministrados . Si bien Quartz Composer se incluye con el SDK de iPhone, a diciembre de 2015 [actualizar]no hay forma de ejecutar Quartz Compositions en dispositivos iOS . A partir de macOS 10.15 Catalina, el marco Quartz Composer ha quedado obsoleto, aunque todavía está presente por compatibilidad. [3]
Parches
La programación de Quartz a través de Quartz Composer funciona implementando y conectando parches . [4] Similar a las rutinas en los lenguajes de programación tradicionales, los parches son unidades de procesamiento base. Ejecutan y producen un resultado. Para un mejor rendimiento, la ejecución de parches sigue un enfoque de evaluación perezoso , lo que significa que los parches solo se ejecutan cuando se necesita su salida. Hay tres tipos de parches: consumidores, procesadores y parches de entrada externa que pueden recibir y generar clics, desplazamientos y movimientos del mouse; MIDI y audio; teclado; u otros movimientos. Una colección de parches se puede combinar en uno, llamado macro. Las macros se pueden anidar y sus subrutinas también se pueden editar.
Para controlar el orden de renderizado, a cada renderizador se le asigna una capa, indicada en su esquina superior derecha. Las capas se representan secuencialmente, de menor a mayor. Los renderizadores se pueden habilitar o deshabilitar, esencialmente activando o desactivando esa capa en particular. La desactivación de las capas no utilizadas a menudo da como resultado un mejor rendimiento, ya que se necesitan evaluar menos parches ascendentes.
Algunos parches pueden tener subparches, lo que permite cambios de parámetros globales solo en los subparches incluidos. Esto es útil para iluminación, transformación 3D y sombreadores GLSL , entre otras cosas. El soporte de subparche se indica mediante esquinas cuadradas en un parche, en lugar de las típicas esquinas redondeadas.
Con la versión 3.0, fue posible convertir composiciones en parches virtuales. Estos permiten al usuario reutilizar la funcionalidad sin tener que almacenar copias duplicadas en cada composición. Quartz Composer Editor permite al usuario guardar una copia "aplanada" (con los parches virtuales completamente expandidos en el interior), para una fácil distribución. La versión 4.0 amplió esta funcionalidad aún más e incluye automáticamente copias "aplanadas" de parches virtuales para usar como respaldo si el parche virtual deseado no está instalado en el sistema host. Esto simplifica enormemente la distribución de la composición.
La funcionalidad de red se mejoró enormemente con el lanzamiento de Leopard. Se hizo posible transmitir datos y sincronizar a través de una interfaz de red, y también agregó soporte para la transmisión y recepción de Open Sound Control .
Complementos
También nuevo en la Versión 3.0 fue la posibilidad de escribir complementos de parche personalizados, usando una plantilla Xcode , y la noción de un " modo seguro ", donde los complementos y otros parches inseguros no se cargan. Esto evita que las composiciones maliciosas realicen operaciones peligrosas o inseguras. Los parches personalizados que utilizan la plantilla Xcode de Apple siempre se consideran inseguros.
Era posible desarrollar complementos de parche personalizados para la versión 2.0, pero la API no estaba documentada y era privada, y Apple nunca la admitió. Finalmente, se lanzaron plantillas para simplificar este procedimiento. [5]
Opciones ocultas
En el editor Quartz Composer, manteniendo presionada la tecla de opción mientras selecciona "Preferencias ..." en el menú, se agregan 3 pestañas adicionales de opciones para que el usuario las configure. Estas opciones incluyen la configuración del sistema, la configuración del editor y la configuración de integración de QuickTime. Las opciones notables incluyen información sobre herramientas expandida, procesamiento de software y procesamiento de velocidad de fotogramas sin límites. El antialiasing multimuestra (MSAA) se agregó como una opción oculta en la versión 4.0, lo que permite el antialiasing dentro del QC Editor, aunque solo funciona en GPU que admiten MSAA.
Tipos de datos nativos
Los datos dentro de QC pueden ser de uno de los siguientes tipos:
- Booleano : un valor booleano, 0 o 1
- Índice: un número entero positivo entre 0 y 2147483647
- Número: un número de punto flotante de doble precisión
- Cadena: una cadena Unicode
- Color: un cuarteto RGBA o CMYK , o un valor de escala de grises
- Imagen: una imagen 2D de dimensiones arbitrarias (posiblemente infinitas)
- Estructura: una colección de objetos ordenados o con nombre, incluidas las estructuras anidadas.
- Virtual: cualquiera de los anteriores
Se introdujeron dos tipos adicionales en la versión 4.0:
- Malla: una colección de vértices y normales por vértice, coordenadas de textura y colores en 3 espacios
- Interacción: un tipo sin valor que se utiliza para asociar la entrada del usuario con elementos interactivos de la composición.
Conversión de tipo
Por lo general, los datos se pueden convertir a otros tipos de forma transparente. En Quartz Composer 3.0, las conexiones entre parches cambian de color para indicar las conversiones que se están produciendo. Las conexiones amarillas significan que no se está realizando ninguna conversión, el naranja indica una posible pérdida de datos de la conversión (número a índice) y el rojo indica una conversión grave; Imagen a booleana, por ejemplo.
Composiciones
Los documentos de Quartz Composer se denominan Composiciones . Las composiciones son binarios listas de propiedades (aunque XML versiones también son compatibles) con una extensión de archivo .qtz , y un com.apple.quartz-compositor-composición UTI . [6] Los patches, sus conexiones y los estados de sus puertos de entrada se guardan en el archivo de composición. Las imágenes también se pueden almacenar dentro de una composición, lo que las convierte en composiciones autónomas con gráficos incrustados. Al arrastrar un archivo de película al editor Quartz Composer, se crea una referencia al archivo de película, lo que proporciona una imagen cambiante que se puede conectar a un renderizador.
Las composiciones también almacenan metadatos como el autor de la composición, los derechos de autor y la descripción. El usuario también puede agregar elementos de metadatos arbitrarios, si lo desea.
Se admiten muchos formatos de imagen, incluidos JPEG , JPEG2000 , GIF , PNG , TIFF , TGA , OpenEXR , BMP , ICO , PDF , PICT , ICNS y algunos tipos de cámaras digitales sin procesar. [7] Las imágenes se mantienen en su forma original durante el mayor tiempo posible antes de rasterizarlas para su visualización. Esto significa que Quartz Composer mantendrá las imágenes vectoriales como vectores al recortar, escalar, rotar o traducir, lo que le permite trabajar con dimensiones de imagen lógica muy grandes sin consumir grandes cantidades de memoria o tiempo de procesamiento. Esta funcionalidad es más evidente cuando se trabaja con imágenes basadas en texto o PDF.
La versión 3.0 agregó la capacidad de agregar anotaciones a áreas de la composición, llamadas notas . Estas notas son comentarios paralelos en otros lenguajes de programación. Las notas pueden ser amarillas, rojas, verdes, azules o grises y pueden superponerse a otras notas.
Protocolos de composición
En la versión 3.0, se introdujo el concepto de protocolos de composición. Los protocolos proporcionan una plantilla de entradas y salidas requeridas y opcionales para calificar las composiciones conformes para varios propósitos. Los siguientes protocolos están disponibles de forma predeterminada:
- Animación gráfica: estos no tienen entradas o salidas requeridas, pero se requieren para renderizar en la pantalla. Las animaciones gráficas son útiles para fondos animados en aplicaciones como Keynote .
- Filtro de imagen: modifica una imagen mediante filtros. No se permiten procesadores en los filtros de imagen, a menos que estén dentro de un entorno de procesamiento en imagen.
- Transición gráfica: genera una transición de una imagen de origen a una imagen de destino durante un intervalo de tiempo fijo.
- Visualizador RSS: analiza y muestra una fuente RSS .
- Protector de pantalla: se integra con Finder para protectores de pantalla animados.
- Visualizador de música: se integra con iTunes para visualización de audio.
Hay un protocolo adicional que Apple usa en su API privada:
- Visualizador de fotos: recibe una lista de imágenes, proporciona información sobre el recuento total de imágenes y la imagen mostrada actualmente.
Se agregó un nuevo protocolo en la versión 4.0:
- Filtro de malla: deforma una malla de entrada.
No existe una forma oficialmente compatible de agregar protocolos adicionales a Quartz Composer. Sin embargo, existen algunos métodos indocumentados que pueden hacer esto posible en el futuro. [8]
Tiempos de ejecución de composición
Además de los protocolos, las composiciones también pueden ajustarse a diferentes tiempos de ejecución en los que Quartz Composer está disponible. En Leopard, hay tiempos de ejecución para Tiger (32 bits), así como versiones de 32 y 64 bits del tiempo de ejecución de Leopard Quartz Composer. El editor también puede indicar parches usados que no son seguros o no están disponibles en Tiger para ayudar a hacer composiciones compatibles.
Repositorio de composición
Un repositorio de composición para todo el sistema está disponible a partir de la versión 3.0. [9] Esto permite que las aplicaciones compartan y utilicen composiciones comunes para efectos y procesamiento. También es posible que las aplicaciones consulten el repositorio en busca de composiciones que coincidan con ciertos criterios, como la conformidad del protocolo.
El repositorio se distribuye en 3 ubicaciones del sistema de archivos :
- / Sistema / Biblioteca / Composiciones: composiciones del sistema central (el usuario normalmente no las modifica)
- / Biblioteca / Composiciones: composiciones disponibles para todos los usuarios
- / Usuarios / nombre de usuario / Biblioteca / Composiciones: composiciones disponibles solo para este usuario
Agregar composiciones al repositorio es tan simple como agregar el archivo de composición a una de estas ubicaciones.
Comparando composiciones
Fue posible comparar composiciones en Quartz Composer 3.0. Esta función permite al usuario comparar las entradas, la salida renderizada y la apariencia gráfica de dos composiciones cualesquiera.
Software relacionado
Visualizador Quartz Composer
Una herramienta de desarrollo llamada Quartz Composer Visualizer fue lanzada con Quartz Composer 3.0 que permite que las composiciones se rendericen en múltiples pantallas en una sola máquina, o incluso en varias máquinas y pantallas.
Soporte Automator
Se agregó soporte para algunas acciones de Automator con el lanzamiento de Leopard.
- Aplicar filtro de composición de cuarzo a archivos de imagen
- Convertir composiciones de cuarzo en películas QuickTime
- Renderice composiciones de cuarzo a archivos de imagen
Historia
Pierre-Olivier Latour desarrolló originalmente el predecesor de Quartz Composer con el nombre de PixelShox Studio . [10]
Referencias
- ^ Guía del usuario de Quartz Composer Archivada el 4 de marzo de 2009 en Wayback Machine.
- ^ Guía del usuario de Quartz Composer: creación de un protector de pantalla Archivado el 4 de marzo de 2009 en Wayback Machine
- ^ Notas de la versión de Xcode 11
- ^ Guía del usuario de Quartz Composer - Parches [ enlace muerto permanente ]
- ^ fdiv.net: Plantilla Xcode para parches personalizados de Quartz Composer
- ^ Descripción general de identificadores de tipo uniforme
- ^ Usando el marco de ImageIO
- ^ Creación de sus propios protocolos
- ^ Guía del usuario de Quartz Composer: Repositorio de composición [ enlace muerto permanente ]
- ^ "Tecnología PixelShox" . Archivado desde el original el 29 de enero de 2017 . Consultado el 8 de marzo de 2009 .
enlaces externos
Libros
- Libro de compositor de cuarzo en japonés
- Aprendiendo Quartz Composer Book & DVD en inglés
Tutoriales y documentación
- Guía de programación de Quartz Composer de Apple
- Tutoriales de Quartz Composer
- Wiki el compositor de cuarzo
- Wiki de control de calidad de kineme.net
- quartzcomposer.com (sitio web no oficial)
- Blog de programación y diseño de George Toledo
- Rob Duarte's 2015 series de videos tutoriales de Quartz Composer
- Guía de JavaScript de Quartz Composer de cybero, blog y otros tutoriales de Quartz Composer
- Tutoriales de diseño de interacción de Quartz Composer
Lista de correo
- Lista de correo
- Archivos de listas de distribución
- Foro Kineme Quartz Composer, parches y complementos
Composiciones
- QuartzCompositions.com Foro y repositorio de composición
- Repositorio de composición de kineme.net
- ZUGAKOUSAKU
- Directorio de composición de Quartz Composer
- Archivos GLSL, CoreImage y OpenCL Quartz Composer de toneburst en máquinas
- Blog de programación y diseño de George Toledo
Parches / complementos personalizados
- plugins y efectos v002 de vade
- Parches Kineme QC
- Parches de Google Quartz Composer
- Parches personalizados Qtzlcodex Quartz Composer
- _1024 complementos de Francois Wunschel
- Parches de compositor de cuarzo de Minuek
- Paolo Manna QC LuaPlugin
- Abra Emu para QC
- Marcos abiertos para control de calidad
- Complementos de Tom Butterworth
- Complementos CoGe de Tamas Nagy
- Blog de programación y diseño de George Toledo (una variedad de complementos api oficiales y no oficiales y proyectos de Xcode)
- I Love QC Nuevo sitio dedicado a aprender Quartz Composer, crear archivos y respaldar el libro de educación de Pearson Learning Quartz Composer
- jQC de QCDesigners, un marco de diseño de interacción para Quartz Composer
- Facebook Origami, un kit de herramientas de creación de prototipos de diseño gratuito para Quartz Composer
Imagenes y videos
- Compositor de cuarzo en Flickr
- Compositor de cuarzo en Vimeo