If the client requests an iso-surface for a given iso-value and
resolution level, the server computes the iso-surface and sends the
resulting triangles to the client. The server sends further information
in order to mark the triangles for building the hierarchy of surface
levels. The client-server communication is based on Berkeley sockets.
A simple protocol was defined, which consists of four client-server
and three server-client commands:
Client-Server commands
Load_Dataset Loads a volume dataset onto the server.
Compute_Isosurface Computes an iso-surface from level 0 to
a given end level.
Refine_Isosurface Refines an iso-surface from a start
level to a given end level.
Close_Connection Asks the server to close the socket
connection.
Server-Client commands
Sending_Maximum_Level Tells the client the maximum
level, up to which the iso-surface can be refined.
Sending_Isosurface Sends an iso-surface from level 0 up to
the requested end level.
Refining_Isosurface Refines an iso-surface from the
requested level to the end level.
The client application first requests the server to load a dataset
(Load_Dataset). The server loads the dataset and returns the
maximum level of resolution up to which the iso-surface can be
refined (Sending_Maximum_Level). An iso-surface can be
requested by the client applet for a given dataset, an iso-value and a
level of detail (Compute_Isosurface). The server responds with
the command Sending_Isosurface, which is followed by the
iso-surface data up to the requested level.
If a higher resolution is requested by the user, the client sends the
command Refine_Isosurface, and the server refines the
iso-surface. The server responds with the command
Refining_Isosurface and sends the corresponding surface levels.
Since only parts of the iso-surface change from one level to
another, the server sends the new triangles refining the surface. The
non-refined parts of the iso-surface are reused at the next level.