METHOD AND SYSTEM FOR LOADING THREE DIMENSIONAL VISUAL
OBJECTS INTO THE VIDEO DISPLAY AREA OF A TWO DIMENSIONAL
GRAPHICAL USER INTERFACE
FIELD OF THE INVENTION
The present invention relates to a method for displaying three-dimensional visual entities on a computer video display area, in general and to a method for loading three-dimensional objects into a video display area of a computer associated with a two-dimensional graphical user interface environment, in particular.
BACKGROUND OF THE INVENTION
A desktop is a metaphor used to illustrate visually computer file systems by utilizing a display area, which simulates a real office desktop in a graphical user interface environment associated with a computer system. A window is also used to illustrate the same computer file system. The display area typically contains a continuous visual background texture and pictures such as icons, which are loaded into it. The icons are graphical entities representing the kinds of objects one might find on a genuine desktop or window such as cabinets, files, folders, phonebooks, telephones, reference sources, writing instruments, drawing tools and miscellaneous documents such as letters, reports, notes and the like. Icons can be arranged on the simulated desktop or window just as real objects can be arranged on a real desktop by moving them around, putting one on the top of another, or throwing them away.
A desktop can be contained in a window area that is a portion of the total display area, or can be "full-screen", that is, the desktop can be disposed along the entire length and width of the displayable area. A plurality of desktops or windows might exist for diverse projects or work environments respectively with the added option of switching among the different desktops or windows. At present practically
all the operative desktop and windows environments are implemented within two dimensional graphical display systems.
Some advanced applications require the option of overlaying selected portions of a desktop or window with externally created visual objects or displaying the suitable objects on the desktop or window beside the existing icons therein. The requisite visual objects are preferably three-dimensional (3-D) that is having, or seeming to have the dimension of depth as well as width and height and thereby providing perception of depth. A number of solutions exist that provide appropriate methods for the insertion of separate images into a typical graphical user interface display area. Previously, standard techniques required the use of a rectangular bounded window surrounding the specified displayable object. Novel techniques such as Microsoft Agent developed and distributed by Microsoft Corporation effect loading of the objects independently without the bounded frame. However, current operational methods support only the insertion and the display of objects limited to two dimensions (length and width) as the insertion of a three-dimensional object to a typical desktop or operative window involves some highly complex operations such as calculating the boundaries of the 3-D object.
It is easily perceived that in order to load 3-D, visually complex, dynamic, non-rectangular forms into a typical desktop or windows environment, a new and novel method is required to provide a solution not present or contemplated by the prior art.
SUMMARY OF THE INVENTION
One aspect of the present invention regards a computing environment established on a computer platform that includes a central processing unit, a communication device, a video display device, and a storage device. The storage device includes an operating system, a graphical interface application, and a method of loading visually three dimensional objects into a video display area associated with images representative of two graphical interface application components. The method consists of establishing an environment operative in handling visually three dimensional objects, capturing the visually representative image of a graphical interface application component, selectively handling messages responsive to system events which are sent by the graphical interface application component to the operating system for appropriate processing, and iteratively displaying and manipulating a visually three dimensional object integrated with the captured image of the video display area representative of the graphical interface application component.
A second aspect of the present invention regards a computing environment established on a computer platform. The computer platform includes a central processing unit, a communication device, a video display device, and a storage device. The storage devices includes an operating system, a graphical interface application, and a system for controlling the method of loading of visually three dimensional objects onto the video display are of the video display device associated with images representative of the graphical interface application components. The system includes a three dimensional object loading driver component, a subclass component to capture the representative image and the messages originated by the graphical interface application component, and a set of data structures representative of a three dimensional object.
A third aspect of the present invention regards a computer system established on a computer platform that includes a central processing unit, a communication device, a video display device, and a storage device. The storage
device includes an operating system controlling a graphical interface application, and a method of integrating visually three dimensional objects with visually two dimensional images representative of a graphical user interface. The method consists of locally establishing an operative environment for the processing of three dimensional objects, capturing a displayed image visually representative of a graphical user interface component, selectively processing messages indicative of system events which are sent by the graphical user interface component to the operating system for appropriate processing, and repeatedly projecting, moving and rendering a visually three dimensional object in combination with the captured image of the video display area representative of the graphical user interface component.
Each of the above aspects of the present invention provides the advantage of loading a visually complex, free-form, non-rectangular three dimensional object into a display area occupied by a two dimensional image representative of a graphical interface application component.
Each of the above aspects of the present invention provides the advantage of selectively modifying the appearance of the displayed three dimensional object in coordination with the changes in the appearance of the two dimensional image representative of the graphical interface application component.
Each of the above aspects of the present invention provides the advantage of animating the displayed three dimensional object on the background of the two dimensional image representative of the graphical interface application component.
BRIEF DESCRIPTION OF THE DRAWINGS
The unique novel features held to be specific to the invention are recited in the appended claims. The invention itself, however, as well as a preferred mode of embodiment, will be best understood and appreciated by reference to the following detailed description of an illustrative embodiment when read in conjunction with the illustrative drawings, wherein:
Fig. 1 is a pictorial representation of a computing device which can be utilized to implement the method and system of the present invention;
Fig. 2 depicts a block diagram illustrative of selected components in a personal computer system which can be utilized to implement the method and system of the present invention;
Fig. 3A, and 3B are block diagrams illustrative of selected components in a personal computer system operative in the operation the method and system, according to a preferred embodiment of the present invention;
Fig. 4 is a flow diagram that shows step utilized to carry out the method and system of the present invention, according to a preferred embodiment of the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
A new and novel method and system for the loading of visual three-dimensional objects into two-dimensional graphical environments is disclosed. The method and system provides the option of dynamically overlaying visually complex, free-form, non-bounded, static or animated graphical entities, having the dimension of depth in addition to the dimensions of length and width and thereby providing enhanced depth perception, on two dimensional dynamic visual frames displayed on suitable video display devices of a computing device.
In the preferred embodiment of the present invention the method involves the use of the sub-classing technique, the system providing the two dimensional graphic background is Microsoft Windows 95/98 or Windows ME developed by Microsoft Corporation, and the loadable three dimensional objects are graphical entities used as virtual objects, such as toys or characters, having interactive capabilities. It will be apparent to one skilled in the art that the following description is provided to facilitate a thorough understanding of the present invention and should not be construed as limitation of any kind to other possible embodiments and other possible alternative uses that could be contemplated without departing from the spirit of the invention and the scope of the appended claims.
In other embodiments of the present invention the operating system could be any other operating system associated with a graphical user interface-oriented environment such as Linux, X- Window, Windows NT, Windows 2000 or OS/2 and the loadable 3-D objects could be entities representing virtual guides for e-commerce shop-fronts or virtual helpers assisting clients running a specific software application implemented in a computing environment. Any other three dimensional object which can be visualized on a display is contemplated as well.
To accomplish the objectives of the present invention the proposed method and system utilizes the window procedure sub-classing technique. For a
better understanding of the proposed method and system a concise description of sub-classing will be given next.
A window is a distinct display area on a computer display screen in a system that allows multiple display areas as part of a graphical user interface. Every window has an associated window procedure, which includes a set of functions designed to process all the messages sent to the window. A message is an infoimation unit generated by a particular window-related operation or event such as a keystroke or a pointing device-related action. All aspects of a window's appearance and behavior depend on the window procedure's response to the messages. When a software application creates a window, the operating system allocates a unique identifier to the window such as a Handle, and a block of memory for storing information specific to the window, including the address of the window procedure. In the event that the operating system is required to pass a specific message to the window, the address of the window procedure is obtained from the allocated memory block and the message is sent to the window procedure pointed at by the address. Sub-classing is a method that allows a specific software application to intercept and process the messages sent to a particular window before the window procedure message-processing functions are activated. By sub-classing a window, a software application can augment, modify, or monitor the behavior of the window. An application may sub-class a window by replacing the address of the window's original window procedure with an address of a new window procedure. Thereafter the new procedure receives any messages sent to the window. The new window procedure can perform a number of alternative actions upon receiving a message. The message can be passed unprocessed to the original window procedure, or can be modified prior to being passed, or can be processed and not passed to the window procedure.
The code for the functionalities of the various windows such as the window or a desktop window is embedded within the respective operating system. Thus to change the behavior of specific windows, such as the desktop window or
any other window, through code modifications is not a viable option. However, messages controlling the appearance and behavior of the desktop or a window can be intercepted and handled by utilizing the above-described sub-classing technique.
In the proposed method and system of the present invention a user operating a computing device such as a personal computer or a personal data assistant and the like initiates a software module in order to load and process a 3-D visual object encoding a specific image. Such software module can be a desktop application or a Windows application such as a utility or productivity software application or a video game and the like. Specifically, it is contemplated that the present method and system can be used for a wide variety of purposes such as for business-related applications such as word processing and for graphical processing applications and for game or other related applications. It will be appreciated that the present method and system can be utilized by any software application required to load and process a 3-D visual object encoding a specific image. In the present example, shown to illustrate better the workings of the method and system shown, the image preferably representing a virtual 3-D visual object such as a toy figure or a character that is displayed on the desktop window or in a window of the personal computer device. The 3-D image could be static or animated and could have specific interactive capabilities such as the performance of a series of predefined movements according to predefined events such-, as keyboard presses, pointing device clicks or movements and the like. The user preferably interacts with the 3-D image by manipulating the suitable hardware components of the computing device that will evoke the appropriate events. In yet another example, the image may be a virtual electronic device figure or character which is displayed on the desktop window or a window of the personal computer device and predetermined events will instruct a user of the method for operating said electronic device. The desktop events are persistently coordinated with the 3-D image events by virtue of the interception and processing of the window messages (also sent to the desktop).
The system accomplishes its objectives in the following manner: A driver routine is created in association with a Dynamic Load Library (DLL) module. A DLL includes a set of computer program functions to be used by an executing computer program. The DLL includes functions related to the handling of
3-D objects, and functions designed to subclass the window (which could be the desktop). The DLL also provides a new window procedure, which will be denoted as the "subclass procedure" in the text of this document. After activation by the user the driver routine calls the hook function embedded in the DLL module, which obtains the window or the desktop handle. A hook is created on any messages of the windows or the desktop by replacing the window or the desktop procedure with the subclass procedure within the DLL. Next a 3-D environment is created, and initialized. Next the window or the desktop window screen is captured by the DLL.
The driver routine passes parameters pertinent to a displayable 3-D object to the
DLL. Consequently the DLL loads the 3-D object files and renders the 3-D object as a 3-D image into the window or the desktop window in an iterative manner by utilizing the previously captured window or desktop screen (as the case maybe) as background to the 3-D image. During the period in which the 3-D image is displayed on the window or desktop the subclass procedure continuously taps all the messages sent to the specific window or desktop from the operating system and according to the relevant received messages appropriately manipulates the displayed 3-D image.
In the foregoing description the window or desktop was selected as the object of the manipulation by the described sequence of actions. In this application the reference made to the desktop window also refers to a window generated an operating system allowing multiple display areas. Such can include a Microsoft
Windows operating system window or a Linux operating system window usually used for associated with a procedure, and the like. It is important to note that the desktop window is used in the text of this document as an exemplary component only. In other preferred embodiments of the present invention all the operative
windows of a specific graphical user interface can be utilized and manipulated in the above-described manner. According to the teaching of the present invention the entire set of windows that are created, operated and maintained by a specific operating system through an appropriate interface can be individually and separately sub-classed, hooked, captured and being advantageously overlaid with specific 3-D images.
With reference now to the figures and, in particular to Fig. 1, there is depicted a pictorial representation of an exemplary computing device in which the present invention may be implemented. A personal computer system 10 is depicted which includes a system unit 11 and a video display terminal 12. In addition, input devices 5, such as an alphanumeric keyboard, a pointing device such as a mouse
(not shown), a game controller device (not shown) and the like also can be included in the personal computer. Computer 10 can be implemented utilizing any suitable computer such as IBM model 6663 a product of the IBM Corporation or any available PC. Although the depicted embodiment involves a personal computer, a preferred embodiment of the present invention may be implemented in other types of computing devices such as hand held personal data assistants, cellular devices and the like. Computer 10 also preferably includes a graphical user interface associated with an operating system such as Windows 95/98 a product of Microsoft
Corporation that resides within a machine-readable^ media such as a disk device to control and direct the operation of the computer. Video display terminal 12 contains a display screen 14 exhibiting a typical graphical user interface window such as the desktop display window 16. Desktop display window 16 comprises a 2-D background texture or wallpaper 13, and a plurality of 2-D images 20,22,24,26,28.
Desktop window 16 further contains 3-D image 18 rendered from suitable 3-D object files representing a virtual 3-D visual object such as a toy figure or a character entity. It will be appreciated by those skilled in the art that the same composition of objects may exist within a window associated with a particular
windows procedure distinct from said desktop and visually operative and displayed on top of desktop window 16.
Referring now to Fig. 2 there is depicted a bloc diagram of selected components in personal computer 10 of Fig. 1 in which a preferred embodiment of the present invention may be implemented. Personal computer 10 of Fig. 1 preferably includes a Central Processing Unit (CPU) 36, a communication device
38, a video display device 40, and a storage device 42. CPU 36 is the computational and control unit of personal computer 10. CPU 36 fetches, decodes, interprets and executes instructions and transfers information to and from various local computer resources. Communication device 38 supports the transfer of information units to and from personal computer 10 to remote computing devices via suitable communication lines. Communication device 38 is operative in connecting personal computer 10 to data communication networks such as the Internet by utilizing suitable communication tools and applications such as network browsers. Video display device 40 provides information display capabilities such as viewing structured frames of data edited and organized by graphical user interface services.
Device 40 is also capable of displaying two and three-dimensional images that represent files stored in the storage device 42 of computer device 10. The images displayed are graphically rendered visual structures such as characters, icons, fonts, sprites, photographic frames, animation, video clips, and the like. Storage device 42, which is preferably a disk device such as a hard disk, holds the various software files and data structures instituting an operatively running computer system. Storage device 42 includes operating system 44, Application Driver routine 46, DLL module 48, 3-D object files 56, Window (desktop or other window) 62, captured desktop or window screen 58, and rendered 3-D object 60. Operating system 44 supervises and controls the operation of the computer system. Operating system 44 allocates memory, handles I/O units, and manages files, controls communications, queues, processes and the like. Window 62 is a memory block containing data relevant to the operation of specific desktop (or window) 16 of Fig. 1. Window 62
contains desktop or window screen 66, and desktop or window handle 64. Desktop or window handle 64 is a unique number issued by the operating system in order to provide identification to a specific component resource. Desktop or window screen
66 is the image of the displayed window kept in a memory device. Application driver 46 is the routine responsible for accomplishing the 3-D object display process. A user of application activates application driver 46. 3-D object files are suitable data structure storing 3-D object-related data in various predefined formats.
Captured desktop or window screen 58 is an image file holding the copy of the desktop or window screen 66. Rendered 3-D object 60 is an image file holding the reconstructed image of 3-D object 58. DLL 48 is a Dynamic Link Library module loaded into memory by Application driver 48. DLL 48 contains hook module 50,
3-D parameters handler module 52, and subclass procedure 54. The functionalities and the operation of the modules embedded in the DLL 48 will be described hereunder in association with the following drawings.
It is important to note that, while the present invention is described in the context of a fully functional computer system, those skilled in the art will appreciate that the present invention is capable of being applied within a variety of computer systems and other similar devices and that the present invention applies equally regardless of the particular type of hardware platform being utilized.
In Fig. 2, Fig. 3A, and Fig. 3B, like parts are indicated by like numbers. Fig. 3A illustrates a block diagram illustrative of the components and execution paths operative in the hooking phase of the proposed method. Application driver 46 is activated by a user (not shown) in order to load and display a 3-D object on the desktop (window) 16 of Fig. 1. Consequently Application driver 46 performs a call (68) to DLL 48. Driver 46 sends (68) call carrying parameters concerning 3-D object 56 such as 3-D object name and the like to the DLL 48. DLL 48 obtains (70) the desktop or window handle 64, captures (72) desktop or window screen 66, and saves (74) captured desktop or window screen 58 into a memory buffer.
Fig. 3A illustrates a block diagram illustrative of the components and execution paths operative in the rendering phase of the proposed method. DLL 48 loads (78) 3-D object file 56 and renders (80) in an iterative manner rendered 3-D object 68. The DLL 48, via the subclass function embedded therein, intercepts (76) all the messages sent to window 62 from operating system 44 and according to the intercepted message content modifies (80) rendered 3-D object 60.
3-D development includes tools to create and integrate graphic images, overlays, sprite, and other elements, including sound. A number of known technologies could be used for creating 3-D effects such as DirectX manufactured by Microsoft Corporation. DirectX is an application program interface for creating and managing graphic images and multimedia effects in applications such as games or active Web pages that will run in Microsoft's Windows 95/98+ operating system. Such an application program might be written in C++, or Visual C/C++, or Java. DirectX two modes - Retained and Immediate may be used in conjunction with the present invention. Other technologies that could be used for the development and handling of 3-D objects are VRML and OpenGL. The Virtual Reality Modelling Language (VRML) could be used to specify images and the rules for their display and interaction using textual language statements.
In the preferred embodiment of the present invention the DirectX application developed and distributed by Microsoft Corporation is used for the creation of the 3-D effects. It will be easily perceived that in other embodiments of the present invention other 3-D engines could be used. In the given environment the 3-D object is encoded into the so-called "X" format. The object encoded into the said format has among others the following sub-objects:
1) Named or unnamed sets of points in 3-D (X,Y,Z) representing the vertices in 3-D space
2) A set of bitmaps representing textures on the object's surfaces
3) Sets of positions and times for the named 3-D sets in order to represent the object's animations, the position in a first point in time, and the position in a second point in time.
In order to identify the 3-D file to be loaded, after the hooking of the window is established a message is sent to the window containing the name of the 3-D file. Next the 3-D object is loaded into the memory subsequent to the calling of the DirectX Load function. The driver application sends the hooked window a 10 Hz frequency WM_TIMER message. Upon the reception of the message the hooked window calls first the DirectX function Move to move the animated object. Then the hooked window calls the DirectX function Render to render the object's new position on the display screen.
The DirectX Move function is operative in animating the 3-D object. The animation is performed by interpolating between the angular positions, scales and other parameters of the 3-D object in respect to a first and a second point in time, and setting the positions of the 3-D point sets according to the interpolations.
The DirectX Render function is operative rendering the 3-D object. The rendering is performed by iterating on the current positions of the entire set of 3-D points, project the points from a 3-D coordinate system to a 2-D screen under a perspective projection, and paint the appropriate textures on the surfaces of the 3-D objects. In the present embodiment DirecX Retained mode is used to accomplish the desired result. Other environment, such as DirectX Immidiate may be used to accomplish this result.
Fig. 4 is a flow diagram that shows the steps utilized to carry out the method and system of the present invention, according to a preferred embodiment of the present invention. Thus, as depicted at step 80 the process is initiated. At step 80 the user (not shown) of the system activates an application driver routine. Application driver routine performs a call to the hook module embedded in the DLL module. To subclass a window the application program must have a handle to the window. The hook function of DLL module obtains the desktop / window handle at
step 82, and creates a hook on the operating system messages. At step 84 the subclass procedure embedded within the DLL captures the desktop or window screen, and at step 86 the 3-D environment is initialized as preparation for the processing of the 3-D object files. Next, at step 88 the application driver calls 3-D parameters handle routine in DLL with the parameters specifying the 3-D object files such as the object name. The parameters are received and processed by 3-D parameter handler module and consequently the DLL loads the specific 3-D object files (step 90). Utilizing the previously initiated 3-D environment the 3-D object files are rendered into the 3-D object image that is sent to the desktop or the window overlaid on the previously saved desktop or window screen (step 92).
As the desktop or window is sub-classed by the subclass procedure of the DLL all the messages directed to the desktop or window are intercepted by the subclass procedure at step 96. Messages irrelevant to the appearance and behavior of the displayed 3-D image are routinely forwarded to the original window procedure of the desktop or window. Messages that may affect in some manner the appearance and behavior of the displayed 3-D image are utilized to activate appropriate 3-D-related functions to re-draw, re-render, or suitably modify the 3-D image displayed on the desktop or on the window (step 98).
It will be easily perceived by one skilled in the art that although in the foregoing description frequent references were made also to a window's desktop as a preferred 2-D background into which a specific 3-D object is loaded, other functional windows being part of a graphical user interface could be advantageously utilized for the same purpose.
While the invention has been particularly shown as described with reference to a preferred embodiment, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and the scope of the invention.