Home

If you're new to Python
and VPython: Introduction

A VPython tutorial

Pictures of 3D objects

What's new

Classic VPython web site
VPython license
Python web site

 

Color

In the RGB color system, you specify a color in terms of fractions of red, green, and blue, corresponding to how strongly glowing are the tiny red, green, and blue dots of the computer screen. In the RGB scheme, white is the color with a maximum of red, blue, and green (1, 1, 1). Black has minimum amounts (0, 0, 0). The brightest red is represented by (1, 0, 0); that is, it has the full amount of red, no green, and no blue.

Here are some examples of RGB colors, with names you can use in VPython:

    vec(1,0,0) color.red vec(1,1,0) color.yellow vec(0,0,0) color.black
   vec (0,1,0) color.green vec(1,0.6,0) color.orange vec(1,1,1) color.white
    vec(0,0,1) color.blue vec(0,1,1) color.cyan  
    vec(0.4,0.2,0.6) color.purple vec(1,0,1) color.magenta  

You can also create your own colors, such as these:

vector(0.5, 0.5, 0.5) a rather dark gray; or you can say color=color.gray(0.5) to mean (0.5,0.5,0.5)

vector(1,0.7,0.2) a coppery color

Colors may appear differently on different computers, and under different 3D lighting conditions. The named colors above are most likely to display appropriately, because RGB values of 0 or 1 are unaffected by differing color corrections ("gamma" corrections).

There is a VPython demo program that lets you adjust RGB sliders to visualize colors and print color triples that you copy into your program. It also provides HSV sliders to adjust hue, saturation (how much white is added to dilute the hue), and value (brightness), which is an alternative way to describe colors.

VPython only accepts RGB color descriptions, but there are functions for converting color triples between RGB and HSV:

c = vector(1,1,0)
c2 = color.rgb_to_hsv(c) # convert RGB to HSV
print(hsv) # vector(0.16667, 1, 1)
c3 = color.hsv_to_rgb(c2) # convert back to RGB
print(c3) # vector(1, 1, 0)

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

Opacity

You can make most objects be transparent by specifying a value from 0-1 inclusive for the attribute "opacity". For example, box(color=color.red, opacity=0.8) is slightly transparent. An opacity value of 0 means totally transparent, and 1 means totally opaque. Currently curve and helix objects do not allow transparency.