Ir al contenido

Formas

Cada ejemplo de esta página se ejecuta después de estas dos líneas y termina enviando un color al nodo Salida:

from pyzed import shading
g = shading.Graph("demo")

Las formas son distancias con signo (SDF): cada píxel recibe su distancia al borde de la forma, negativa dentro y positiva fuera. Una distancia todavía no es una imagen: Relleno, Contorno y Resplandor la convierten en una máscara de 0 a 1. Las distancias se pueden combinar (unión, resta, intersección) antes de dibujar, incluso con una unión suave.

Circle · circle · Formas · g.circle(...)

La distancia con signo a un círculo (negativa dentro). Usa Relleno o Contorno para dibujarlo.

El nodo Círculo tal como se ve en la vista Shader, con su vista previa

Un círculo alrededor de center con un radius (en unidades de la altura). Dibújalo con Relleno, Contorno o Resplandor.

Entrada Tipo Por defecto
p vec2 Centrado (contexto)
center · centro vec2 (0, 0)
radius · radio float 0.3
Salida Tipo
distance · distancia float
Ejemplo
d = g.circle(radius=0.3)
g.output(g.rgba(g.fill(d), 1.0))

Box · box · Formas · g.box(...)

La distancia con signo a un rectángulo de tamaño size (redondeado por radius).

El nodo Rectángulo tal como se ve en la vista Shader, con su vista previa

Un rectángulo de tamaño size, con esquinas redondeadas por radius: tarjetas, botones, paneles.

Entrada Tipo Por defecto
p vec2 Centrado (contexto)
center · centro vec2 (0, 0)
size · tamaño vec2 (0.6, 0.4)
radius · radio float 0.05
Salida Tipo
distance · distancia float
Ejemplo
d = g.box(size=[0.8, 0.5], radius=0.08)
g.output(g.rgba(g.fill(d), 1.0))

Ring · ring · Formas · g.ring(...)

La distancia con signo a un anillo de radio radius y grosor thickness.

El nodo Anillo tal como se ve en la vista Shader, con su vista previa

Un anillo de radius y thickness: indicadores de carga, dianas, halos.

Entrada Tipo Por defecto
p vec2 Centrado (contexto)
center · centro vec2 (0, 0)
radius · radio float 0.3
thickness · grosor float 0.05
Salida Tipo
distance · distancia float
Ejemplo
d = g.ring(radius=0.3, thickness=0.04)
g.output(g.rgba(g.fill(d), 1.0))

Segment · segment · Formas · g.segment(...)

La distancia con signo a una línea de a a b, de grosor thickness.

El nodo Segmento tal como se ve en la vista Shader, con su vista previa

Una línea de a a b con extremos redondeados y un grosor thickness.

Entrada Tipo Por defecto
p vec2 Centrado (contexto)
a vec2 (-0.3, 0)
b vec2 (0.3, 0)
thickness · grosor float 0.04
Salida Tipo
distance · distancia float
Ejemplo
d = g.segment(a=[-0.4, -0.2], b=[0.4, 0.2], thickness=0.05)
g.output(g.rgba(g.fill(d), 1.0))

Polygon · polygon · Formas · g.polygon(...)

La distancia con signo a un polígono regular (sides esquinas, radius hasta ellas).

El nodo Polígono tal como se ve en la vista Shader, con su vista previa

Un polígono regular de sides esquinas: triángulos, hexágonos, octógonos.

Entrada Tipo Por defecto
p vec2 Centrado (contexto)
center · centro vec2 (0, 0)
radius · radio float 0.3
sides · lados float 6
rotation · rotación float 0
Salida Tipo
distance · distancia float
Ejemplo
d = g.polygon(radius=0.35, sides=6.0)
g.output(g.rgba(g.fill(d), 1.0))

Star · star · Formas · g.star(...)

La distancia con signo a una estrella (inner es la profundidad de sus valles, de 0 a 1).

El nodo Estrella tal como se ve en la vista Shader, con su vista previa

Una estrella de points puntas; inner es la profundidad de los valles entre puntas.

Entrada Tipo Por defecto
p vec2 Centrado (contexto)
center · centro vec2 (0, 0)
radius · radio float 0.35
points · puntas float 5
inner · interior float 0.45
rotation · rotación float 0
Salida Tipo
distance · distancia float
Ejemplo
d = g.star(radius=0.4, points=5.0, inner=0.45)
g.output(g.rgba(g.fill(d), 1.0))

Combine shapes · sdf_op · Formas · g.sdf_op(...)

Une dos formas (unión), recorta b de a (resta) o conserva donde se solapan (intersección); smooth funde la unión.

El nodo Combinar formas tal como se ve en la vista Shader, con su vista previa

Combina dos formas antes de dibujarlas: Unión las une, Restar forma recorta b de a e Intersecar deja la parte común. smooth mayor que 0 funde la unión, como dos gotas de agua.

Entrada Tipo Por defecto
a float 1
b float 1
smooth · suavizado float 0
Salida Tipo
distance · distancia float
Ajuste Valores Por defecto
op union, subtract, intersect union

Entradas de la barra lateral

Entrada Qué hace En Python
Unión Une dos formas; smooth las funde. g.union(...)
Restar forma Recorta la forma b de la forma a. g.subtract_shape(...)
Intersecar Conserva donde se solapan dos formas. g.intersect(...)
Ejemplo
a = g.circle(center=[-0.15, 0.0], radius=0.25)
b = g.circle(center=[0.15, 0.0], radius=0.25)
d = g.union(a, b, smooth=0.1)
g.output(g.rgba(g.fill(d), 1.0))

Fill · fill · Formas · g.fill(...)

Dibuja una forma: 1 dentro, 0 fuera, con un borde suavizado de softness píxeles.

El nodo Relleno tal como se ve en la vista Shader, con su vista previa

Dibuja una forma rellena: 1 dentro, 0 fuera, con un borde suavizado de softness píxeles. Sube softness para un borde difuso.

Entrada Tipo Por defecto
distance · distancia float 0
softness · suavidad float 1
Salida Tipo
mask · máscara float
Ejemplo
d = g.box(size=[0.6, 0.6], radius=0.1)
g.output(g.rgba(g.fill(d, softness=8.0), 1.0))

Stroke · stroke · Formas · g.stroke(...)

Dibuja el contorno de una forma, de grosor width (en las unidades de la forma).

El nodo Contorno tal como se ve en la vista Shader, con su vista previa

Dibuja solo el contorno de una forma, de ancho width.

Entrada Tipo Por defecto
distance · distancia float 0
width · ancho float 0.02
softness · suavidad float 1
Salida Tipo
mask · máscara float
Ejemplo
d = g.star(radius=0.4)
g.output(g.rgba(g.stroke(d, width=0.02), 1.0))

Glow · glow · Formas · g.glow(...)

Una luz suave alrededor de una forma que se desvanece a lo largo de radius.

El nodo Resplandor tal como se ve en la vista Shader, con su vista previa

Una luz suave alrededor de una forma que se desvanece en radius: letreros de neón y halos. Súmalo a un Relleno para una forma sólida con brillo.

Entrada Tipo Por defecto
distance · distancia float 0
radius · radio float 0.08
intensity · intensidad float 1
Salida Tipo
value · valor float
Ejemplo
d = g.ring(radius=0.3, thickness=0.01)
light = g.glow(d, radius=0.1)
g.output(g.rgba(g.compose(0.1, 0.8, 1.0) * light, 1.0))

Ver también: Primeros pasos · La vista Shader · Recetas · Grafos de shader en Python