I am researching a method to train people to learn art (how to draw/paint) faster, and for this I need a utility that allows me to create simple 3D shapes in different lighting conditions with as realistic reproduction of light and shade as possible in order to learn how to draw these simple shapes from different perspectives and under different lighting conditions.

The simple shapes I have in mind are specifically Sphere, Box and Cylinder/Pipe.

The accurate reproduction of light and shadow is my primary goal (meaning I need to have a customizable light source).

Ideally I want a program as simple as possible and cheap/free rather than paid.



allows me to create simple 3D shapes

The simple shapes I have in mind are specifically Sphere, Box and Cylinder/Pipe.

has built-in shapes for plane, cube, cylinder, circle, sphere, cone and torus

different lighting conditions

and you can use point lamps, spots, suns, hemispheres and area lights. For even more realistic lighting, you could even download lamp definitions (as provided by some lamp vendors) and integrate them.

with as realistic reproduction of light and shade as possible

There are several renderers available, Blender Render is one of the fastest, but it's a bit hard to get photorealistic renderings. Cycles is slower, generates more noisy images, but if you can wait long enough you'll get photorealistic results.

in order to learn how to draw these simple shapes from different perspectives and under different lighting conditions.

This requirement IMHO contradicts the previous one. Why would you need very precise lighting if it is used for learning purposes?

The accurate reproduction of light and shadow is my primary goal (meaning I need to have a customizable light source).

Spot lights can e.g. be customized in energy, falloff, angle, soft size. Enough to get thousands of combinations.

You can have ambient lighting, environment lighting and even HDR sky images.

Ideally I want a program as simple as possible and cheap/free rather than paid.

Blender is definitely not simple. But it's probably the only free and complete program to do this. You should plan 40 hours to be a bit productive and achieve what you want. I participated in the Blender Guru Nature Academy which took about 40 hours to complete.

Here's an example of a scene I could create in ~5 minutes. It has 3 objects, a plane as ground and 2 spot lights with different energy. It makes use of ambient occlusion and indirect lighting. Is that realistic enough and worth learning 40 hours for the result?

Blender Render according requirements

| improve this answer | |
  • I don't see the contradiction in being able to see an object from different perspective and having realistic lighting, both things I deem equally important. But in the end, Blender is not the program I am looking for, it is way overkill, it's not something any beginning artist would be thrilled to learn, I need something a lot simpler. It seems that such a program really isn't out there (I'm a bit surprised) I think maybe since this is the case I could fashion something out of UE4 when I have the time, that should do the trick nicely. – Cestarian Dec 12 '15 at 5:17

I would suggest Blender - while it has quite a steep learning curve there are a number of advantages:

  • Free both Libre and FLOSS
  • Cross platform works on Windows, Linux and OS-X
  • Accurate light source modelling including multiple light sources and types
  • Many active user groups & publications
  • Good texturing
  • Very good rendering
  • You can produce animations or walkrounds
| improve this answer | |
  • Thanks, that program does seem to suit my purposes although it is a bit complex and you could say overkill. Coincidentally however I already had plans to learn how to use blender either way so for me personally this is a pretty good answer. But after rendering a model and lighting in blender, can I freely rotate the camera around the object to see it from different angles? – Cestarian Aug 25 '14 at 22:07
  • You can either construct the model and specify the lighting then add a camera path and render to a video showing the view from varying angles or you can use the game engine to allow your users to fly/walk round the model looking at it from various angles. You can even add motion to the light(s) as well, e.g. Object lit by incandescent light & window at different times of day. Note that rendering takes place for a specific combination of camera, scene and lighting. – Steve Barnes Aug 26 '14 at 5:14
  • "Steep learning curve" - does it mean hard to learn or easy to learn? – Thomas Weller Dec 7 '15 at 17:54
  • It means that it is daunting to start with - this is of course true of every powerful 3-D modelling system that I have ever used. To take a rambling analogy you will be thinking rope and crampons rather than a comfy pair of shoes but the books and on-line training/help sites are a BIG help. Once you get up to speed it is amazing what you can do and how quickly - did I mention that it was free. – Steve Barnes Dec 7 '15 at 18:36

Less capable than blender but easier to learn, (subject to needing some maths), is Visual Python. The results are not as photo-realistic as for blender but for your usage it may well suffice.

  • Free, Gratis & Open Source
  • Cross Platform
  • Easy installation:
    • First download and install Python 2.7 32 or 64 bit depending on your machine & OS note not Python 3 at the moment - best to accept the defaults but do select "Add to path".
    • Second download and install the matching version of vPython.
  • Then start with the examples - on a windows machine if you accepted the defaults these will be in the C:\Python27\Lib\site-packages\visual\examples directory. The texture_and_lighting.py example is 72 lines and produces and animated picture such as: texture_and_lighting.py

Where the striped ball is rolling from side to side and the light swinging from front to back. You can navigate around the image with the right mouse button and into it with the middle.

With a little playing about with the demo I was able to produce:

Steve Barnes 07/12/2015
Based on Bruce Sherwood, August 2006
Demonstration of transparency (opacity), materials, and local lights in Visual 5
from __future__ import division
from visual import *

scene.width = scene.height = 1000
scene.forward = (-0.2,-0.2,-1)
width = 10 # of wood table
thick = 0.5 # thickness of wood
depth = 7 # of wood table
height = 2 # of side bars of table
R = 2 # radius of components
H = 10 # height of underside of ceiling above floor
L = 5 # length of pendulum to center of hanging lamp

# top of floor is at y=0 for convenience
floor = box(pos=(0,-thick/2,0), size=(width,thick,depth),
            shininess=0, color=color.orange, material=materials.wood)
left = box(pos=(-(width/2+thick/2),height/2-thick,0), size=(thick,height,depth),
            shininess=0, color=color.orange, material=materials.wood)
right = box(pos=(width/2+thick/2,height/2-thick,0), size=(thick,height,depth),
            shininess=0, color=color.orange, material=materials.wood)
back = box(pos=(0,height/2-thick,-(depth/2+thick/2)), size=(width+2*thick,height,thick),
            shininess=0, color=color.orange, material=materials.wood)

# Block at the top and the pendulum light
ceiling = box(pos=(0,H+thick/2,0), size=(width/10,thick,width/10), color=color.orange, material=materials.wood)
pendulum = frame(pos=(0,H,0), axis=(0,-1,0))
wire = curve(frame=pendulum, pos=[(0,0,0),(L,0,0)])
lamp = sphere(frame=pendulum, pos=(L,0,0), radius=0.03*L, color=color.white, material=materials.emissive)

# Cubic Planet
box(pos=(-0.3*width,R/4,-0.25*depth), size=(R, R, R), material=materials.earth)
# Make the Pipe
C1 = shapes.circle(pos=(0.15*width,R/4,0.3*depth), radius=R/3)#, axis=(0,H/4,0), visible=0)
C2 = shapes.circle(pos=(0.15*width,R/4,0.3*depth), radius=R/2)#, axis=(0,H/4,0), visible=0)
Ring = C2-C1
pipe = extrusion(pos=paths.line((0.15*width,0,0.2*depth), (0.15*width,R,0.2*depth)), shape=Ring, material=materials.bricks)
# Cone
cone(pos=(0.1*width,0,-0.15*depth), radius=R/2, axis=(0,2,0), color=color.cyan, material=materials.marble)
# Ball for good measure
sphere(pos=(0.15*width,R/4,-0.3*depth), radius=R/4, color=color.green, material=materials.marble)

# Ambiant Lighting
scene.lights = []
scene.ambient = color.gray(0.25)
l1 = distant_light(direction=(6,2,4), color=color.gray(0.3))
l2 = distant_light(direction=(-10,2,4), color=color.gray(0.2))
lamplight = local_light(frame=pendulum, pos=(L,0,0), color=color.gray(0.5))
scene.center = (0,0.4*H,0)

dt = 0.03
t = 0

while True:
    angle = 0.02*cos(t)
    pendulum.rotate(axis=(1,0,0), angle=angle)
    t += dt

Which gave: My Scene

| improve this answer | |
  • Yeah I could probably spend a week and create a program suiting my purposes with this. Still I find the lighting reproduction not really good enough. Now that I think of it if I had to go that route I might as well do something with UE4, takes me a little while to learn, but I could create a very easy realtime program in there with very nice lighting reproduction, that engine really takes lighting seriously. – Cestarian Dec 12 '15 at 5:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.