Page tree


Shutter opening and closing rates are controlled by the shutteropening RiCamera option. The shutter interval is determined by the values passed to RiShutter.) In shutter-normalized time, the shutter interval is mapped to [0,1]. The basic version of the shutteropening option takes two parameters in this time:

Camera "world" "float[2] shutteropening" [opentime closetime]

The shutter begins opening at time 0. The opentime is the time at which it becomes fully open. Between opentime and closetime the shutter remains fully open. At closetime, it begins closing, and it fully closes at time 1.

The following image shows a blue sphere moving from the screen left to screen right. The camera shutter opens and closes instantaneously, which is the default behavior if shutteropening is not given. The sphere is made artificially bright so that its blur shows up more. Because the shutter is completely open during the entire shutter interval, the motion samples are uniformly distributed, giving a constant blur:

By modifying the shutteropening parameters to [0.0 0.0], we can make the shutter still open instantaneously, but then spend the time between 0 and 1 closing at a constant speed. This generates the most samples at the beginning of the sphere's motion, at screen left, and gradually fewer samples as it moves across the screen, making the blur fade out to screen right.

Camera "world" "float[2] shutteropening" [0.0 0.0]

Having this shutter spend the entire interval opening and then close instantaneously reverses the image and the blur fades in over the sphere's motion.

Camera "world" "float[2] shutteropening" [1.0 1.0]

Since real camera shutters cannot move infinitely fast, they generally spend some nonzero amount of time opening, remain open for a bit, and then spend some nonzero amount of time closing. We can model this by having the shutter opening between 0 and 0.35, fully-open between 0.35 and 0.65, and closing between 0.65 and 1.

Camera "world" "float[2] shutteropening" [0.35 0.65]

To approximate a real camera shutter even more accurately, we can relax the restriction that it opens and closes at a constant rate and model the acceleration of the shutter as it begins to open and the deceleration as it reaches its fully open or fully closed position. For this we need a more complex parametric description:

Camera "world" "float[10] shutteropening" [opentime closetime c1 c2 d2 d2 e1 e2 f1 f2]

The first two parameters, opentime and closetime are the same as the simpler version of shutteropening; they are the times at which the shutter becomes fully open and at which it begins to close. The subsequent eight parameters represent four points on a graph representing the motion of the shutter:

The points c1,c2 and d1,d2 must lie in the axis-aligned rectangle with corners at (0,0) and (opentime,1) and are the control points of a bezier curve segment. Likewise, e1,e2 and f1,f2 are control points of a bezier curve between (closetime,1) and (1,0) and must lie in the axis-aligned rectangle with corners at those points. In addition, the bezier curve itself must be a function, i.e. its slope must never be infinite within the defined segment.

Here are images of the shutter taking the entire interval to open. The first is the same as before, with the shutter opening at a constant rate. The second bends the bezier curve segment down to make the shutter open very slowly at first and accelerate throughout the opening interval, going very fast at the point that it finally becomes fully open. This moves the distribution of motion samples even more towards the end of the shutter interval, so the streak at the beginning of the interval is less pronounced and it becomes brighter more sharply.

Camera "world" "float[10] shutteropening" [1 1 0 0 1 1 1 1 1 1]


Camera "world" "float[10] shutteropening" [1 1 0.8 0.1 0.9 0.2 1 1 1 1]

The sharper shutter opening curve preserves more of the static shape of the moving object and can be more aesthetically appealing.