Jim, There are two alternatives built in: either send Texture files [ambient texture, normal map texture, reflection texture] using Shape.set_draw_details()
Or else set the material rgb using Shape.set_material() see
http://pi3d.github.com/html/pi3d.html#module-pi3d.Shape
I can't remember now why it doesn't set the alpha value, it probably should be made to do that at some stage.
To draw an object using material rgb you need to use a shader beginning with mat_
It would be "very easy" to make a shader that blended from one shade to another but you would need to pass it the second shade as a uniform variable. Easiest would be to just use the 'standard' ones available via Shape.set_custom_data() unif[42] onwards these are used for the fancy shader effect you mention in Pi3d2.py