sábado, 31 de agosto de 2024

Calendario Inkscape del mes: September 2024

Desde el lunes pasado está disponible el mensil de setiembre del calendario 2024 que arma Moini para su web VektorRascheln.

Es un calendario, en inglés, cuya ilustración mensual es tomada de las imágenes que originalmente fueron creadas para el concurso del “About-Screen” de Inkscape.

Para este mes de setiembre el diseño que eligió fue el titulado “Contest”, obra de Djelita Abderrahmane, uno de los diseños finalista del concurso para la versión 1.3.

El diseño se acompaña, como siempre, con una cita relacionada a Inkscape a la derecha del mensil.
Esta vez la cita está firmada “Rj” y su traducción al español sería algo así:

“Gracias por la mágica esperiencia. Inkscape me ha ayudado con el empujón inicial a una carrera de diseño”.

sábado, 24 de agosto de 2024

¿Por qué no me funciona el z-index?

Hace unos días estaba armando una página web y quería que un elemento específico quedara por encima de los demás. Así que hice uso, en la hoja de estilos CSS, de la propiedad z-index para colocarlo arriba en el orden de apilamiento. Pero no me daba los resultados esperados.

Así que, búsqueda mediante, di con es siguiente video del canal de YouTube Coder Coder, de Jessica Chan:

En él explica que hay algunas circunstancias donde no es suficiente con poner un número más alto como valor de la propiedad z-index para conseguir que un elemento se muestre por encima de los demás.

Estas son las condiciones a tener en cuenta a la hora de usar la propiedad z-index:

1. Contexto de apilamiento
Los elementos en el mismo contexto de apilamiento se muestran en orden de aparición, con los elementos posteriores por encima de los anteriores.
2. Elementos posicionados
Los elementos necesitan tener su posición definida (con la propiedad position) con cualquier valor que no sea static para que z-index pueda funcionar.
Además, los elementos posicionados (con la propiedad position) se mostrarán por encima de los elementos no posicionados.
3. Propiedades especiales
Algunas propiedades CSS como opacity y transform colocan a los elementos en un nuevo contexto de apilamiento.
Aplicar la propiedad transform a un elemento hace que se comporte como si tuviera un static con valor cero.
4. Orden de los ancestros
El z-index de un elemento puede quedar limitado por el valor de z-index de su elemento padre.

Teniendo en cuenta estos puntos pude solucionar el problema que se me había presentado.

Como alternativa al video, pueden leer la misma entrada en coder-coder.com, la web de la autora del video.

lunes, 19 de agosto de 2024

Full Circle #207 (julio 2024)

Aquí va mi reseña de la edición #207 de Full Circle magazine. Es el número correspondiente a julio de 2024 y se publicó el 26 de julio. Consiste en un PDF de 64 páginas y 7,5 MB.

Como siempre, empiezo con la sección Noticias (páginas 4 a 17):

Del resto de notificaciones de lanzamientos, destaco:

Y, en cuanto a los artículos propiamente dichos, resalto:

  • Entre las páginas 31 y 35, Mark Crutch escribe un nuevo artículo de su fantástica serie sobre Inkscape, que ya hace varias ediciones viene dedicándose a las mejoras que trajo la versión 1.3. En esta oportunidad trata sobre las muchas mejoras que incorpora en la interfaz de usuario del editor de Patrones en la ventana de diálogo de Relleno y borde.
  • En las páginas 27 a 29, Robert Boardman presenta una nueva parte de su serie sobre LaTeX. En esta oportunidad explora el paquete geometry, que permite gestionar las dimensiones y la composición de la página.
  • En la columna sobre Stable Diffusion (páginas 25 y 26) Jon Hoskin continúa escribiendo sobre Fooocus, una interfaz gráfica para Stable Diffusion y, en particular, sobre algunos problemas que se pueden encontrar al intentar instalarlo y sus posibles soluciones.
  • En las páginas 54 y 55 Ronnie Tucker escribe una reseña sobre su nueva laptop: una Asus TUF. Yo tengo una desde hace 5 años (la FX504) y anda muy bien. Su único problema, como también comenta Ronnie en su reseña, es el escaso tiempo de autonomía que tiene su batería.
  • Y, nuevamente, la nota de tapa son las habituales reseñas de Adam Hunt sobre distribuciones GNU/Linux: esta vez le toca el turno a Lubuntu 24.04 LTS (páginas 47 a 49) y a Xubuntu 24.04 LTS.

Finalmente, aquí va mi traducción libre de la editorial, escrita, como siempre, por Ronnie Tucker:

jueves, 8 de agosto de 2024

Calendario Inkscape del mes: August 2024

Ya hace un par de semanas que está disponible el mensil de agosto del calendario 2024 que arma Moini para su web VektorRascheln.

Es un calendario, en inglés, cuya ilustración mensual es tomada de las imágenes que originalmente fueron creadas para el concurso del “About-Screen” de Inkscape.

Para este mes de agosto el diseño que eligió fue el titulado “A new dawn”, obra de Fabian Mosakowski para el concurso de la versión 1.2.

Además del diseño del mensil, Moini nos deja una descripción del mismo: ”...un parque en un área suburbana habitado por personitas que simbolizan distintas herramientas de Inkscape”. A saber:

  • la herramienta Selector
  • la herramienta Nodo
  • la herramienta Elipse
  • la herramienta Estrella/Polígono
  • la herramienta Pluma
  • la herramienta Lápiz
  • la herramienta Texto
  • la herramienta Cuentagotas
  • la herramienta Cubo de pintura
  • la herramienta Spray

A ver cuántas de esas referencias pueden encontrar en el diseño (sin mirar la entrada original, que tiene la respuesta).

El diseño se completa, como siempre, con una cita relacionada a Inkscape a la derecha del mensil.
Esta vez es de un colaborador anónimo de Inkscape y su traducción al español sería algo así:

“Me encantan los gráficos vectoriales y el software de código abierto e Inkscape es la herramienta perfecta para satisfacer mi curiosidad”.

lunes, 5 de agosto de 2024

Novedades del Editor de Video en la edición 4.2 de Blender

Aras Pranckevičius es un programador lituano que, además de ser patrocinador corportativo de Blender, colabora con el proyecto escribiendo código y, últimamente se ha dedicado al Editor de video de Blender (el Video Sequence Editor).

Personalmente he estado utilizando este Editor de video y me resultó interesante una entrada en el blog de Aras Pranckevičius, titulada More Blender VSE stuff for 4.2, donde resume su trabajo en esta área de Blender para la versión recientemente publicada.

Aquí está la traducción libre al español que hice de esa entrada, publicada originalmente en inglés el 22 de julio de

Hice un montón de trabajo para el Editor de Video (VSE) de Blender 4.1, y como nadie revocó mi permiso de publicación de cambios en el programa, continué en la misma área para Blender 4.2. ¿Es usted uno de los aproximadamente siete usuarios de Blender VSE? ¡Entonces siga leyendo!

Blender 4.2 acaba de salir, y las novedades del Editor de Video en esta versión están listados en esta página. Probablemente la mitad de esa lista sea mi culpa trabajo, y como la 4.2 es una versión de soporte a largo plazo (LTS), esto significa que tendré que mantenerla y arreglarle cualquier problema durante tres años más, hurra :)

Actualizaciones visuales y renderización de clips en un sombreador (shader)

Lo que comenzó en algún chat o en una tarea de diseño como una pregunta casual de “¿podríamos tener las esquinas redondeadas en los clips?”, fue creciendo y creciendo hasta convertirse en, bueno, esquinas redondeadas. Las esquinas redondeadas en los controles y widgets de la interfaz de usuario se han vuelto actualmente tan omnipresentes que parece algo trivial. Y lo sería... si contara con un renderizador de gráficos vectoriales completo con recorte/enmascaramiento y anti-aliasing. Pero no lo tengo.

Los «widgets» de la línea de tiempo del Editor de video (VSE) en Blender 4.1 y anteriores son prácticamente sólo «rectángulos y líneas». El «widget de control» es sorprendentemente complejo y puede tener muchas partes - además de las obvias como la miniatura de la imagen, la forma de onda de audio o el título del texto, hay fondo, superposición de etiqueta de color, superposición de curva de animación (volumen o transición), triángulo de transición de desvanecimiento, teclas de retemporización, manejadores de transformación, rectángulos de contenido de los meta-clip, franjas «bloqueadas» y algunos otros. Aquí hay una línea de tiempo de ejemplo que muestra la mayoría de las opciones posibles, en Blender 4.1:

Las miniaturas, las formas de onda, las curvas, las franjas bloqueadas y los textos se dibujan a su manera, pero todo lo demás no es más que un montón de “fusionar un rectángulo semitransparente” o “fusionar una línea semitransparente”.

Entonces, ¿cómo hacer “esquinas redondeadas”? Bueno, un “rectángulo” necesitaría conseguir redondear sus esquinas de alguna manera. Podría ser a través de la sustitución del rectángulo (dos triángulos) por una forma geométrica más compleja, pero entonces también querría que las esquinas redondeadas tuvieran suavizado (anti-aliasing). Y, lo que es más complicado, es que también querría “todo lo demás” redondeado (por ejemplo, el borde de los clips), o enmascarado por la esquina redondeada (por ejemplo, las franjas diagonales que indican el bloqueo, o la miniatura de la imagen que no se “salga” de la forma redondeada).

Otra forma de hacer todo esto, desde que Iñigo Quílez popularizó los Campos de distancia con signo (Singled Distance Fields), sería dibujar cada widget como un simple rectángulo, y hacer toda la evaluación de “esquinas redondeadas”, enmascaramiento y anti-aliasing dentro de un sombreador (shader). Hace tiempo quería probar con mover todos (o la mayoría) de los widget de los clips a un sombreador dedicado, así que esta fue una excusa para hacerlo.
El proceso fue así:

  1. Paré todo y lo pospuse por un mes, pensando en lo aterrador que sería desenmarañar todo el código actual de dibujado de widgets del Editor de video (VSE) y migrarlo, de alguna manera, a un sombreador. Por mucho tiempo lo seguí posponiendo o encontrando excusas para no hacerlo.
  2. Finalmente me puse a hacerlo y resultó que sólo insumió un día de trabajo (#122576). ¡Fácil!
  3. El siguiente mes lo dediqué a una docena más de solicitudes de admisión de código (#122764, #122890, #123013, #123065, #123119, #123221, #123369, #123391, #123431, #123515, #124210, #124965, #125220), para hacer que las esquinas redondeadas funcionaran de verdad. Algunas de ellas eran correcciones (ajuste a la cuadrícula de píxeles, reconocimiento de los DPI, temas de precisión), otras eran retoques del diseño y del aspecto visual.

Todo esto, sumado a otras varias actualizaciones de diseño y UX realizadas por Richard Antalik y Pablo Vázquez, resultaron en el aspecto actual del Editor de video (VSE) de Blender 4.2:

También he implementado una indicación visual de los medios faltantes (clips que refieren a archivos de imagen/video/sonido inexistentes) #116869; también se puede ver en la captura de pantalla sobre estas líneas.

Sombras de texto y contornos

Los clips de texto en el Editor de video tenían una opción de sombra arrojada, pero sin la posibilidad de modificar la distancia y ángulo con respecto al texto, por lo que, en general, no era muy útil.
Hice que la distancia y el ángulo fueran configurables, y añadí la opción de desenfoque de la sombra. De paso, el texto ganó una opción de contorno (#121478).

Los contornos se implementan con el algoritmo Jump-Flooding, maravillosamente descrito por Ben Golus en este artículo: «The Quest for Very Wide Outlines».

Rendimiento

Blender 4.1 trajo muchas y grandes mejoras de rendimiento en el Editor de video. La versión 4.2 no tantas, pero, sin embargo, hay algunas:

“Eliminación de la oclusión” (“Occlusion culling”) para imágenes/videos opacos (#118396). El Editor de video ya tenía una optimización para cuando un clip que se sabe que que es totalmente opaco, cubre toda la pantalla. En ese caso se detiene el procesamiento de todas los clips por debajo de él (ya que, de todos modos, no serían visibles). Ahora la misma optimización se aplica en algunos casos de clips que no cubren toda la pantalla pero sí cubren completamente algún clip debajo de él (el clip inferior no se evalúa ni se renderiza).

El caso típico es el efecto letterboxing: hay un fondo negro que cubre toda la pantalla, pero el “contenido real” sólo cubre un área más pequeña. En las previsualizaciones del Proyecto Gold, esto ahorró alrededor del 7% del tiempo total de renderizado. No es mucho, pero algo es algo.

Optimización de partes de la decodificación de video ffmpeg

  • Caché de los contextos de conversión de color de la biblioteca libswscale (#118130). Antes de este cambio, cada clip de video individual creaba un objeto de “contexto de conversión de color”, que se utiliza principalmente para hacer la conversión YUVRGB. Sin embargo, la mayoría de ellos terminan siendo exactamente los mismos, por lo que hay que tener un grupo de ellos y reutilizarlos cuando sea necesario.
  • Dejar de hacer algún trabajo redundante al iniciar la reproducción de un clip de video (#118503). Esto no sólo hace las cosas más rápidas, sino que también elimina alrededor de 200 líneas de código. ¡Ganamos todos!
  • (no es de rendimiento en sí, pero igual) Eliminar el soporte al formato AVI que no sea el provisto por ffmpeg (#118409). Blender tenía un soporte muy limitado del formato de video .avi más allá del de ffmpeg. Era una especie de herencia maldita de dudosa utilidad. Finalmente se ha ido, junto con 3600 líneas de código. 🎉

Cómo sigue

Investigué el soporte para videos de 10/12 bits y HDR, pero no conseguí terminar nada a tiempo para Blender 4.2. No es de mucha ayuda mi ignorancia sobre codecs de video o sobre la ciencia del color lol :) Pero quizás deba continuar con eso.

El dibujado de la línea de tiempo de Editor de Video claramente tiene partes que “no estaría mal completar“, algunas de las cuales también solucionarían problemas de rendimiento. En este momento, la mayor parte de los controles de los clips se dibujan dentro de un sombreador dedicado de la GPU, pero hay partes que todavía se dibujan por separado (miniaturas, las formas de onda de audio, los meta contenidos de las clips, las superposiciones de las curvas de animación). Conseguir que ellos también se dibujen dentro del mismo sombreador (probablemente) simplificaría el trabajo de la CPU.

La funcionalidad en general del Editor de video dentro de Blender podría beneficiarse de miles de pequeñas mejoras, pero quizás también las personas pertinentes deberían discutir cuál es el panorama general y los planes reales para él. Es bueno seguir haciendo mejoras incrementales discrecionales, pero de vez en cuando también es útil discutir y decidir "¿dónde queremos llegar exactamente?". Quizá deberíamos hacerlo pronto.

Eso es todo.