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.black | color.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.white | color.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…