Hi everybody,
as an university group project we developed and implemented a client/server
system in perl for rendering povray scenes on distributed machines in a
network.
We plan to publish the project under an open source license to make it available
to the povray scene.
Although there are several tools that provide distributed computing we could
only find PVMPOV that does the job in combination with povray out of the box.
Nevertheless there are some features that could be interesting using our tool
instead of PVMPOV.
The system consists of three parts:
- a frontend (CLI and GUI) for the enduser to submit/retrieve povray jobs
- a server that manages the jobs in a queue and distributes rendering tasks to a
network of nodes
- nodes that run on several machines in the network and receive/transmit
rendering jobs from/to the server
The whole project is written in Perl and the server and node part will only run
under Linux because of forking.
Communication between server and frontend is realized using sockets, between
server and nodes it's done via XML RPC.
Each node can be easily integrated into the rendering farm by setting some
parameters in a config file and starting it on a machine.
The nodes will start to communicate with the server and to request rendering
tasks from the server which holds a queue with user-submitted jobs. These tasks
can be complete povray scene or just a chunk.
With the frontend the user can submit povray jobs (single .pov-file or zip
archive containing .pov- and .inc-files), which will be enqueued according to
their priority (normal, next in queue, instant).
The server will convert output files to a desired format (jpg, png, gif or ppm).
Jobs are referenced by a username submitted with the job information.
Both CLI and GUI offer the whole functionality of
submitting/receiving/removing/viewing jobs.
Since a picture is worth a thousand words we attached a screenshot of the GUI.
Feedback would be appreciated.
Regards Checkmates
Post a reply to this message
Attachments:
Download 'gui.png' (14 KB)
Preview of image 'gui.png'
|