pmdblur(1) generate views for combined camera motion and depth blurring


pmdblur speed aperture nsamp v0file v1file


Pmdblur takes two viewfiles and generates nsamp views starting from v0file and moving towards v1file, simulating an aperture of diameter aperture in world coordinate units. When rendered and averaged together, these views will result in a picture with motion and depth-of-field blur due to a camera changing from v0 to v1 in a relative time unit of 1, whose shutter is open starting at v0 for speed of these time units. Either pinterp(1) or rpict(1) may be called to do the actual work. (The given v0file must also be passed on the command line to the chosen renderer, since pmdblur provides supplemental view specifications only.) 

For pinterp, feed the output of pmdblur to the standard input of pinterp and apply the -B option to blur views together. In most cases, two pictures with z-buffers at v0 and v1 will get a satisfactory result, though the perfectionist may wish to apply the -ff option together with the -fr option of pinterp.

To use pmdblur with rpict, apply the -S option to indicate a rendering sequence, and set the -o option with a formatted file name to save multiple output pictures. When all the renderings are finished, combine them with the pcomb(1) program, using appropriate scalefactors to achieve an average. Note that using rpict is MUCH more expensive than using pinterp, and it is only recommended if the scene and application absolutely demand it (e.g. there is prominent refraction that must be modeled accurately).

For both pinterp and rpict, the computation time will be proportional to the number of views from pmdblur. We have found a nsamp setting somewhere between 7 and 15 to be adequate for most images. Relatively larger values are appropriate for faster camera motion.

The -pm and/or -pd options of rpict may be used instead or in combination to blur animated frames, with the added advantage of blurring reflections and refractions according to their proper motion. However, this option will result in more noise and expense than using pmdblur with pinterp as a post-process. If both blurring methods are used, a smaller value should be given to the rpict -pm option equal to the shutter speed divided by the number of samples, and the -pd option equal to the aperture divided by the number of samples. This will be just enough to blur the boundaries of the ghosts which may appear using pmdblur with a small number of time samples.

To simulate a particular camera's aperture, divide the focal length of the lens by the f-number, then convert to the corresponding world coordinate units. For example, if you wish to simulate a 50mm lens at f/2.0 in a scene modeled in meters, then you divide 50mm by 2.0 to get 25mm, which corresponds to an effective aperture of 0.025 meters.


To use pinterp to simulate motion blur between two frames of a walk-through animation, where the camera shutter is open for 1/4 of the interframe distance with an aperture of 0.1 world units:
pmdblur .25 .1 8 fr1023.hdr fr1024.hdr | pinterp -B -vf fr1023.hdr -x 640 -y 480 fr1023.hdr fr1023.zbf fr1024.hdr fr1024.zbf > fr1023b.hdr


Greg Ward