Colori

Gli oggetti 3D hanno 2 proprietà con le quali si possono impostare il colore e l’opacità/trasparenza.

color

Nel sistema di colore RGB un colore si specifica come terna RGB (red, green, blue) con la quale si specifica quanto sono accesi i punti colorati corrispondenti dello schermo

  • Il colore bianco corrisponde alla massima intensità per i tre colori fondamentali (1, 1, 1)
  • Il nero corrisponde a tutto spento (0, 0, 0)
  • Il colore rosso più acceso si ottiene con (1, 0, 0), che significa tutto rosso e niente verde e blu.

Ecco alcuni esempi di triple RGB con il nome corrispondente

vector(0, 0, 0)color.blackcolor.gray(0)
vector(0, 0, 1)color.blue
vector(0, 1, 1)color.cyan
vector(0, 1, 0)color.green
vector(1, 0, 1)color.magenta
vector(1, 0.5, 0)color.orange
vector(0.4, 0.2, 0.6)color.purple
vector(1, 0, 0)color.red
vector(1, 1, 1)color.whitecolor.gray(1)
vector(1, 1, 0)color.yellow

Per creare qualsiasi sfumatura di colore si possono scegliere 3 valori a piacere per i 3 colori

  • vector(1, 0.7, 0.2), a coppery color

Le sfumature di grigio hanno una definizione specifica con un valore da 0.0 a 1.0

  • vector(0.5, 0.5, 0.5)
    color.gray(0.5), grigio scuro

Il sistema di colore HSV (hue, saturation, brightness) non è disponibile ma ci sono 2 funzioni per passare dal sistema RGB a HSV e viceversa

  • c2=color.rgb_to_hsv(c1)
  • c1=color.hsv_to_rgb(c2)

Esempi

c =vector(1,1,0)        # color.yellow
c2=color.rgb_to_hsv(c)  # convert RGB to HSV
print(c2)               # vector(0.16667, 1, 1)

c3=color.hsv_to_rgb(c2) # convert back to RGB
print(c3)               # vector(1, 1, 0) 

sphere(radius=2, color=color.hsv_to_rgb(vector (0.5,1,0.8))

Il programma dimostrativo https://www.glowscript.org/#/user/GlowScriptDemos/folder/Examples/program/Color-RGB-HSV-VPython permette di agire su dei cursori per i valori di R, G, B, H, S, V e ottenere il colore desiderato e il codice corrispondente da copiare.

opacity

Gli oggetti diventano più o meno trasparenti specificando un valore da 0 a 1 per l’attributo opacity.

  • opacity=0, significa oggetto totalmente trasparente
  • opacity=1, significa oggetto opaco

Per esempio

box(color=color.red, opacity=0.8)

è un cubo rosso leggermente trasparente.

Nell’uso dei colori e della trasparenza ci sono alcuni problemi

  • gli oggetti curve, convex, faces, points e helix non accettano il parametro opacity
  • la scena con oggetti trasparenti potrebbe presentare degli errori…

Lascia un commento