Frame Dist. Rendering
This message is regarding a technique for distributing the task of rendering a
single frame to multiple machines.
The two main problems to solve are alignment of the individual
portions of the image and the compositing of those images.
The first problem can be solved by rendering a region of a camera
view. It must be a camera view because if one tries to select a
window in a non-camera viewport, the second corner begins to scroll
the display. The region must be roughly one nth of the viewport,
where n is the number of machines to which te job will be
distributed. Which area of the viewport the region window covers is
not important, the rule of thumb is to cover a proportional amount of
geometry in the scene. As a simple example, for four machines, one
might select the four qaudrants of the screen, or four equal sized
horizontal bands, or whatever, the regions must, however, overlap
each other a least a little bit. (Or perfectly tile the screen which
is not realistic to expect.) Covering the edges of the viewport
seems to be the har part of the task, but not that hard. These
region renderings become the sub-tasks to distribute to other
machines, once these sub-tasks are completed it is time to composite
them.
The compositing task is extremely simple. Go into video post, add
four (or however many sub-tasks were created) events, change them to
bitmap images which are the completed rendered regions, and
(important!!!) use RGB black for alpha information. Make sure your
background is set to none (black). The finished composition is
identical to a full rendering of the viewport, provided that the
regions selected completely cover the screen!
The reason for my message is to point out two behaviors of 3D-Studio
R. 3 that could be enhanced to facilitate this single-frame
distributed rendering technique. The ability to dispatch these
rendering sub-tasks over the network is impeded by the fact that if
you render region to a network queue, the ENTIRE VIEWPORT is
rendered, NOT just the region. I suspect the cmd file that gets
written only can issue which viewport to render and not window
coordinates. As such, these sub-tasks may NOT currently be
dispatched over the network and must be started individually on each
machine to be used. This either requires a hardware lock, or the
temporary installation of a hardware lock, to be removed after the
rendering has been started.
The other interesting behavior is that on region renderings, the
portion of the resulting image file that is outside of the region has
alpha that is pure white, not black as might be expected. (Non
rendered areas you'd typically want to be see-through since nothing
was rendered, just like a background.)
Aside from these two items (especially the first) this distributed
rendering technique works great, and can substantially reduce the
amount of time to produce a still rendering of an extremely large
model.
Please let me know if there is a work-around to passing render region
jobs over a network (a command-line switch would suffice, but I
couldn't find one), or even an IPAS if one were available. Thank you,
Jim Hogarty 72110,1576