As business moves toward distributed working environments, and as transmission of electronic data becomes a valuable business tool, it becomes increasingly important to efficiently transport various types of data through computer networks. Transmission of graphical data may pose unique challenges for a number of reasons, including the relatively large size of various types of graphical data and relatively slow and unreliable network transmission bandwidths. Moreover, the size of the graphical data handled by conventional software applications has increased exponentially, making it impracticable to work with local graphical data from remote locations since there is no economical, efficient, and secure way to remotely access the data.
Graphical data may be stored in a computer as a three dimensional (3-D) graphical model, which is a 3-D representation of a real or computer-generated object. Normally, a particular view of the 3-D graphical model is computed using high-end computer hardware, software, and high-end graphics accelerators before it can be displayed to a user in the form of a two-dimensional (2-D) image. The terms display and image may be used interchangeably when reference is made to a user, client and server. The process of extracting a 2-D image from a 3-D graphical model often includes a technique known as rendering. Rendering is the process of creating views from selected viewing angles and adding 3-D visual cues and qualities, such as lighting, textures, shadows, color and image attributes, stereographic perception, animation, and motion-parallax, to the extracted 3-D graphical model in order to enhance the 2-D image understanding of the model. One technique for rendering graphics is called ray tracing. Another type of rendering is scanline rendering, which renders images one horizontal line at a time instead of object-by-object as in ray tracing.
Various techniques exist for the transmission of, or remote display of, graphical data. These techniques may be implemented on a network of computers. The network of computers may include a server, which is a computer running a particular graphics application and managing various resources, and one or more clients, which are computers that rely on the server to perform one or more operations. Alternatively, the network of computers may include a plurality of nodes. The nodes may be computers that are configured to share information without functioning in a structured client-server relationship.
Various image compression techniques may be used to reduce the bandwidth required for transmitting 3-D models or 2-D images locally or across a network. For example, a 3-D model or 2-D image may be compressed at a server or at a first node and transmitted using hardware image compression and hardware data compression techniques. The compressed data may then be decompressed at a client or at a second node in order to image the original data. Conventional image compression techniques, such as transform coding, vector quantisation, segmentation and approximation, spline approximation, wavelet compression, or fractal coding, often lead to lossy or distorted images. In addition, lossy techniques often lead to image degradation at each compression stage. As a result, lossless image compression techniques, including run-length encoding, Huffman encoding, Lempel/Ziv coding, or area coding, were developed.
These conventional techniques, nevertheless, suffer from inherent disadvantages. For example, both the server or first node and the client or second node must perform a compression or decompression step, which is an inefficient use of computing or computer resources. Furthermore, some conventional techniques may be difficult to implement, particularly across multiple heterogeneous platforms normally found in all computing environments. Moreover, lossless image compression techniques may suffer from compression ratios that are not as high as conventional lossy techniques.
U.S. Pat. No. 6,219,057 describes a collaborative work environment for allowing remote users to manipulate a 3-D model using conventional techniques. In this system, each node or client requires its own local copy of the original 3-D model. A local copy of the original 3-D model is rendered at each node or client. Each user may manipulate its local copy of the original 3-D model using a transformation matrix. The transformation matrix is a set of data that represents a manipulation of the original 3-D model. The transformation matrix is used to communicate the viewing position and orientation of the manipulated 3-D model to other users, who use the information to render a new local copy based on the application of the transformation matrix to the original local copy. The system disclosed in the '057 patent is disadvantaged to the extent that it requires significant system resources at each node in the network. For example, each node requires high-end graphics-specific hardware that is sufficient to render the 3-D model. In addition, the rendering operation may require additional memory, system bus bandwidth, and other resources on each node in the network. This usually affects the performance of other applications running on each node.
Furthermore, the nature of the collaborative environment described by the '057 patent may not be practical when some of the 3-D model information is confidential or cannot reside on the client or node because the 3-D model is comprised of data that exceeds the system capacity of the client or node.
Other conventional systems that are available for displaying 3-D graphical data include OpenGL Performer® and OpenGL Vizserver™—both applications offered by Silicon Graphics, Inc. (SGI®). OpenGL Performer® includes a “Dynamic Video Resolution” feature that reduces the size of the rendered image, and correspondingly, the number of rendered pixels. As a result, the speed (frame rate) at which all processing is completed before updating the display with a new image is enhanced. Afterwards, specialized SGI® video hardware enlarges the images to the original size. This is accomplished by using a technique known as bipolar filtering to enlarge the image. In this way, the image is the correct size, but it contains a reduced number of pixels.
OpenGL Performer® is, nevertheless, disadvantaged to the extent that it requires specialized SGI video hardware on any machine that displays an object image. Furthermore, this system does not enable remote rendering, but is, rather, optimized to achieve high frame rates locally. While it can be used in conjunction with remote-enabling products in order to transmit 3-D graphics information, this requires enlarging the image at each node in the network. Therefore, each node must contain specialized video hardware. OpenGL Vizserver™ is similarly disadvantaged. For example, OpenGL Vizserver™ requires specialized hardware in the form of multiple (five) compression modules that compress/decompress the frames of a rendered 3-D graphics model. These compression modules reside at the client and server thus, reducing performance at each end when performing other necessary tasks and interacting with the 3-D graphics model. OpenGL Vizserver™ may also require additional customized modules which adversely impact the system resources of the client and server. In either application using OpenGL Performer®, OpenGL Vizserver™, or both, the cost of implementing such systems is significant.
Another example of a conventional system for displaying 3-D graphical data includes EarthCube® RemoteViz offered by Landmark Graphics Corporation. Like other conventional remote collaboration systems, EarthCube® RemoteViz requires specialized hardware in the form of image based or video based compression packages that are expensive and restrict the client and server system resources from performing other necessary functions.
As demonstrated by the state of the art, there is a need, among other things, for an efficient system that can remotely display 3-D graphical data through a distributed application, however, does not require specialized hardware or software on every node in the network. There is also a need for a single executable application that may be used in a collaborative way, yet may selectively grant control to remote users and runs on most existing client platforms and operating systems. In short, there is a need for a system that operates on most hardware platforms and enables high remote frame rates, transparent remote collaboration processes, and per-component adaptive resolutions while eliminating the need for any client processes, daemons, hardware image compression, software image compression, stream compression and/or data compression.