CompuServe Messages

Frame Dist. Rendering

    01-Nov-93 13:33:24
Sb: #1-Frame Dist. Rendering
Fm: Jim Hogarty 72110,1576
To: Gary Yost
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