1. Field of the Invention
The present invention generally relates to a computer-based virtual world. More particularly, the present invention relates to sharing and exchanging virtual objects (e.g., avatar, virtual assets associated with the avatar) across different virtual worlds.
2. Description of the Prior Art
A virtual world is a computer-based simulated environment intended for its users to inhabit and interact via avatars (from Wikipedia; http://en.wikipedia.org/wiki/Virtual_world; Access date: Oct. 24, 2008). As virtual worlds (e.g., SecondLife®, Active Worlds, MetaVerse) become more and more popular, it is desirable that different virtual worlds interoperate and enables users to “teleport” between different virtual worlds freely. “Teleport”, in a virtual world environment, whether 2D or 3D implementations, means a movement of a player's virtual figure (e.g., Avatar) or virtual assets associated with the avatar from one virtual world to another virtual world, more or less instantaneously. A teleport action may span across different virtual worlds other than the same virtual world. For example, a user may teleport between virtual worlds provided by different vendors (Forterra, Linden Lab Second Life®, ActiveWorld etc.) or between virtual world instances of the same vendor. Technically, the teleport involves data transmission of virtual assets (teleport within the same virtual world on the same physical server devices) or bulk data transmission (teleport between different virtual worlds on distributed physical server devices). After teleport, a player's computer screen may change to reflect a result of teleportation, and render new scenes (i.e., a scene is a virtual environment where a virtual asset resides in). In addition, a state of the player's avatar including the virtual assets in the inventory, a state for a source virtual world (i.e., from where an avatar is teleported) and a state for a destination virtual world (i.e., to where an avatar is teleported) may change, in accord with the avatar changing its presence from the source virtual world to the destination virtual world by means of the “teleport”.
Virtual worlds may be hosted by the same or different vendors, and scenes in the virtual worlds and underlying engines (i.e., technologies that support the virtual worlds; e.g., OpenSimulator (an open source server for hosting virtual worlds—http://opensimulator.org/wiki/Main_Page), Torque Game Engine, etc.) may be homogeneous or heterogeneous. A technology to manage an end user's virtual assets to keep the end user's appearance and inventory the same in different virtual worlds (even in a current 2D web) is required.
Currently, different virtual worlds use different formats (e.g., a .DTS file format which is used with the Torque Game Engine) of 3D descriptions to represent virtual objects (e.g., avatar, building) in the different virtual worlds. This is a real issue when users try to teleport between different virtual worlds, and thus becomes an obstacle that prevents a user from providing a unified appearance and inventory to his/her friends in the virtual worlds. In addition, there is a need for users to share their virtual properties with other users across different worlds. End users also need to log in each different virtual world to manage their virtual assets in each different virtual world separately.
Thus, it would be desirable to provide a system and method for sharing and exchanging virtual objects across different virtual worlds.
The present invention is a system and method for sharing and exchanging virtual objects across different virtual worlds. The system and method may also be used for sharing and exchanging between a single virtual world.
In one embodiment, there is provided a system for sharing and exchanging virtual objects across different virtual worlds comprising:
a computer-implemented federation module for centrally managing the virtual objects from the different virtual worlds;
a virtual object repository for storing the virtual objects from the different virtual worlds and being connected to the federation module;
a computer-implemented cache management module for employing a cache policy to enforce data consistency of the virtual objects, when the virtual objects are shared across the different virtual worlds;
a computer-implemented virtual object management module for managing avatars, virtual assets associated with the avatars, the virtual objects and for managing relationships between avatars, the virtual assets, and the virtual objects;
a computer-implemented request dispatch module for receiving a request from a virtual world among the different virtual worlds, processing the request, and dispatching the request to a proper module among the modules;
a computer-implemented content transmission controller for managing data transmission associated with the virtual objects between the different virtual worlds; and
an computer-implemented event notification module for enabling a publish/subscribe mechanism in the different virtual worlds, virtual world clients, the federation module, the cache management module, the virtual object management module, the request dispatch module, and the content transmission controller.
In another embodiment, there is provided a method for sharing and exchanging virtual objects across different virtual worlds comprising:
storing the virtual objects from the different virtual worlds;
centrally managing the virtual objects from the different virtual worlds;
employing a cache policy to enforce data consistency of the virtual objects, when the virtual objects are shared across the different virtual worlds;
managing avatars, virtual assets associated with the avatars, and the virtual objects and managing relationships between the avatars, the virtual assets, and the virtual objects;
receiving a request from a virtual world among the different virtual worlds, processing the request, and dispatching the request;
managing data transmission associated with the virtual objects between the different virtual worlds; and
enabling a publish/subscribe mechanism in the different virtual worlds, virtual world clients, the storing, the centrally managing, the employing, the managing, the receiving, the managing data transmission.
In one embodiment, the present invention proposes a distributed and shared system that stores or aggregates virtual asset of users. The system enables shared appearances of virtual objects and enables sharing virtual objects across different virtual worlds (even 2D web). In another embodiment, there are methods to download/upload, share, modify, and teleport virtual objects.
The accompanying drawings are included to provide a further understanding of the present invention, and are incorporated in and constitute a part of this specification. The drawings illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention. In the drawings,
The inventory service 20 includes a federation module 40, a cache management module 30, an event notification module 50, a virtual object management module 60, a request dispatch module 90, and a content transmission controller 100. In one embodiment, the inventory service 20 further includes a content translation module 80.
The federation module 40 is a module to unite or collect virtual objects from different virtual worlds, In one embodiment, the federation module 40 is connected to a virtual object repository 230 where virtual objects from the different virtual worlds are stored. In one embodiment, the virtual object repository is a storage device such as a magnetic disk, hard disk, solid state drive, optical storage device, direct access storage device, etc. The federation module 40 enables the inventory service 20 to centrally manage all the virtual objects from the different virtual worlds. In one embodiment, the federation module 40 centrally manages virtual objects from the different virtual worlds. The management tasks of the federation module 40 include, but are not limited to: enumerating all virtual objects in a virtual object repository 230, querying metadata and state of virtual object(s) to the virtual object repository 230 and deleting virtual object(s) in the virtual object repository 230.
A cache management module 30 together with a content management module 210 in a virtual world 170 manages virtual objects in virtual worlds as a distributed cache system (i.e., each virtual world 170 includes each local cache memory 220). The content management module 210 manages virtual objects locally in virtual world. Before virtual objects are used or accessed, the virtual objects are fetched from a local cache memory (e.g., an object cache 220) first. If the virtual objects are not found in the local cache memory, the virtual objects are fetched from local cache memories in other virtual worlds or the cache management module 30 in the inventory service, which utilizes one or more cache policies. Synchronization of contents in the local caches is maintained by the cache management module 30. When virtual objects are shared across different virtual worlds, the cache management module 30 employs a certain cache policy to enforce data consistency (i.e., for a shared virtual object, same metadata or attributes of the shared virtual object is maintained in the local caches across the different virtual worlds) of the shared virtual objects. For example, if a deletion action of a virtual object is permitted and a virtual object is deleted in a virtual world, then the deletion action triggers a notification (i.e., a message indicating the virtual object is deleted in a virtual world). The notification is then broadcasted over a network (e.g., Internet) or via a protocol (e.g., HTTP, UDP (User Datagram Protocol)) to other virtual worlds that maintain the virtual object in local cache memories. Upon reception of the notification, local cache memories (e.g., a local cache memory 220) immediately invalidate an entry for the virtual object by flagging it as invalid. Furthermore, the entry may be deleted from the cache memories according to a cache policy. An attempt to access the virtual object in the local cache memories results in exceptions. A cache policy that the cache management module 30 employs includes, but is not limited to, MSI (Modified, Shared, and Invalid states) protocol, MESI (Modified, Exclusive, Shared, and Invalid states) protocol, MOESI (Modified, Owned, Exclusive, Shared, and Invalid states) protocol, Write-once protocol, Synapse protocol, Berkeley protocol, Illinois protocol, Firefly protocol, and Dragon protocol. Paul Sweazey, et al. “A Class of Compatible Cache Consistency Protocols and their Support by the IEEE Futurebus”, 1986 IEEE, which is wholly incorporated as reference herewith, describes these cache policies in detail.
An event notification module/service 50 enables a publish/subscribe mechanism in virtual worlds, virtual world clients, and modules (e.g., a cache management module 30, a federation module 40, a virtual object management module 60, a request dispatch module 90, a content translation module 80, and a content transmission controller 100) in the inventory service 20. In the publish/subscribe mechanism, any number of consumers of information can receive messages that are provided by one or more producers of that information. A producer of information is called a publisher and a consumer of that information is called subscriber. The publish/subscribe mechanism provides a concept of a topic on which any number of interested consumers of information can subscribe in order to register their interest. This is similar to the way that a person might subscribe only to magazine about topics in which they are interested. Each topic provides particular event or state information. A publisher can send messages containing information about a particular topic to all subscribers to that topic, without any knowledge of how many subscribers there are, or the details of the nodes that host those subscribers. Because of this, publish/subscribe mechanism completely decouples the provider of the information from the consumer of that information. Returning to
A virtual object management module 60 manages avatars, virtual assets associated with the avatars, and virtual objects within the inventory service 20 and manages relationships between the avatars, the virtual assets, and the virtual objects. The virtual object management module 60 interacts with the federation module 40 to provide a function of virtual object management, which includes but is not limited to: searching virtual objects in the virtual object repository 230, fetching virtual objects from the virtual object repository 230, adding virtual objects into the virtual object repository 230, removing virtual objects from the virtual object repository 230, modifying properties of virtual objects such as metadata or attributes modification of the virtual objects, ownership changes of the virtual objects and relationship changes between the virtual objects and other objects. Relationship may refer to a relative size and position between virtual objects. Virtual objects may be attached or combined together to form a complex virtual object.
Returning to
A request dispatch module 90 receives requests from virtual worlds or a web site via a network (e.g., Internet) 240 to which a computing device (not shown) including a web browser 70 is actively connected. Then, the request dispatch module 90 processes the requests, and dispatches the requests into a proper module (e.g., a virtual object management module 60) as implemented within the inventory service 20.
A content transmission controller 100 “manages” data transmission associated with virtual objects between virtual worlds and the inventory service 20. In one embodiment, a content transmission controller 100 “manages” data transmission associated with virtual objects between virtual worlds. In one embodiment, the content transmission controller 100 comprises a bulk data transmission controller 110, an asynchronize transmission controller 130, and a normal transmission controller 120. The bulk data transmission controller 110 “manages” large data transmission (e.g., avatar 3D module downloading and uploading) associated with a virtual object between virtual worlds. In one embodiment, the bulk data transmission controller 110 “manages” large data transmission (e.g., avatar 3D module downloading and uploading) associated with a virtual object between virtual worlds and the inventory service 20. The large data transmission is used when a major context switching in an application happens (e.g., when a user teleports from one virtual world to another virtual world). Large data refers to the number of virtual objects that have to be transmitted, not to the amount of data associated with virtual objects. In one exemplary embodiment, if more than 10% of total virtual objects in the virtual object repository 230 have to be transmitted, then the large data transmission may be used. The bulk data transmission controller 110 may utilize HSTCP (High-Speed TCP) protocol or bulk data transfer protocol. The asynchronize transmission controller 130 “manages” asynchronous message transmission associated with a virtual object between virtual worlds. In one embodiment, the asynchronize transmission controller 130 “manages” asynchronous message transmission associated with a virtual object between virtual worlds and the inventory service 20. The normal transmission controller 120 “manages” other types of messages (e.g., a request, a small data transmission) associated with a virtual object between virtual worlds. In one embodiment, the normal transmission controller 120 “manages” other types of messages (e.g., a request, a small data transmission) associated with a virtual object between virtual worlds and the inventory service 20. The small data refers to the number of virtual objects that have to be transmitted. If less than or equal to 10% of total virtual objects in the virtual object repository 230, then the normal transmission controller 120 may be used. The asynchronize transmission controller 130 and the normal transmission controller 120 may utilize HTTP protocol, TCP/IP protocol, UDP protocol, etc. In this context associated with a content transmission controller 100, “manage” may refer to a function of: addressing a target (e.g., IP address, port number or other method to locate a target machine), initializing data transmission (e.g., setting the target machine into a state for receiving data), formatting data (i.e., putting data into TCP/IP packet body), committing a transmission (i.e., performing the transmission), and/or finalizing the transmission (e.g., closing a communication channel upon a transmission completion or reserving a communication channel for later transmission).
In one embodiment, the modules (e.g., a cache management module 30, a federation module 40, an event notification service/module 50, a virtual object management module 60, a request dispatch module 90, a content translation module 80) and controllers (e.g., content transmission controller 100) in the inventory service 20 are used for sharing and exchanging virtual objects within identical virtual world(s). In a further embodiment, the modules in the inventory service 20 are used for a separate state management of virtual objects within the identical virtual world(s). In this embodiment, the virtual object management module 60 separately manages a shared virtual object and/or an exchanged virtual object per each avatar associated with the shared virtual object and/or the exchanged virtual object. For example, a virtual phone is shared between two different avatars, e.g., a first avatar and a second avatar. The virtual object management module 60 enables each avatar to enter different contact list(s) or direct dial number(s) in the virtual phone. However, the different contact list(s) and direct dial number(s) may not be shared between the two different avatars. Thus, when the first avatar accesses the virtual phone, the virtual object management module 60 configures the virtual phone to activate contact list(s) and/or direct dial number(s) associated with the first avatar. If the second avatar accesses the virtual phone, the virtual object management module 60 configures the virtual phone to activate contact list(s) and/or direct dial number(s) associated with the second avatar.
In one embodiment, the modules (e.g., a cache management module 30, a federation module 40, an event notification service/module 50, a virtual object management module 60, a request dispatch module 90, a content translation module 80) and controllers (e.g., content transmission controller 100) in the inventory service 20 are implemented as hardware through a computing device. The computing device comprises a central processing unit (CPU), memories, secondary storage devices, input/output devices, network connectors, a CD-ROM drive, etc. The all the modules in the inventory service 20 may comprise methods, programs, instructions stored in the memories and executed by the CPU.
The virtual world 170 includes a content transmission module 180, a content dispatch module 200, and a content management module 210. In one embodiment, the virtual world 170 further includes a content translation module 190. The content transmission module 180 manages data transmission associated with a virtual object between different virtual worlds. In one embodiment, the content transmission module 180 manages data transmission associated with a virtual object between different virtual worlds and the inventory service 20. In one embodiment, the content transmission module 180 manages a bulk data transmission channel (e.g., a channel for downloading or uploading avatar 3D module), an asynchronous message transmission channel, and normal transmission channel (e.g., a channel for a request delivery or a small data transmission). The bulk data transmission channel corresponds to the bulk data transmission controller 110 and performs the same tasks as it. The asynchronous message transmission channel corresponds to the asynchronous transmission controller 130 and performs the same tasks as it. The normal transmission channel corresponds to the normal transmission controller 120 and performs the same tasks as it.
In one embodiment, the virtual world 170 includes a content translation module 190. As like the content translation module 80 in the inventory service, the content translation module 190 translates a data format (e.g., .DTS file format) of a virtual object from one type to another for compatible execution on other user's computing environments. A content dispatch module 200 statically or dynamically dispatches messages between virtual worlds and the inventory service 20 via the three transmission channels (e.g., a bulk data transmission channel, an asynchronous message transmission channel, and normal transmission channel). In one embodiment, the content dispatch module 200 statically or dynamically dispatches messages between virtual worlds via the three channels. In one embodiment, there is no content dispatch module 200 in the virtual world 170. Instead, dispatching information (e.g., which channel will be used for delivering a message) is statically embedded into a message. For example, 3D data transmission message is dispatched from the virtual world 170 to the inventory service 20 over the bulk transmission channel. A request to fetch virtual object description is dispatched over the normal transmission channel. An object change status change notification (e.g., a message indicating a shared virtual object is modified) dispatched for a communication over the asynchronous transmission channel.
A content management module 210 manages virtual objects, which are located at virtual worlds, locally. The content management module 210 also manages data consistency of virtual objects between different virtual worlds. In one embodiment, a virtual world 170 maintains a local cache memory 220 where virtual objects and other information downloaded from inventory service 20 are stored. The local cache memory 220 is connected to the content management module 210. The content management module 210 maintains data consistency of virtual objects between different local cache memories by utilizing cache policies such as MOESI or firefly protocol.
In one embodiment, all modules in the virtual world 170 are implemented in hardware through a computing device. The computing device comprises a central processing unit (CPU), memories, secondary storage devices, input/output devices, network connectors, a CD-ROM drive, etc. The all the modules in the virtual world 170 may comprise methods, programs, instructions stored in the memories and executed by the CPU.
In another embodiment, J2EE (Jave 2 Platform, Enterprise Edition) is integrated in the virtual world 170 and the inventory service 20 to manage, modify, browse, and query virtual objects centrally. In this embodiment, a web browser 70 accesses the inventory service 20 directly via HTTP protocol.
At step 350, the content translation module 80 in the inventory service 20 performs data content translation if necessary. The step 350 may be skipped if data content translation is executed in the virtual world 170. At step 360, a data model (e.g., data and/or instructions for 3D virtual object's representation (3D geometry, 3D texture, etc) or a machine readable description that can be rendered in the virtual world 170) of the virtual object is sent through the bulk data transmission controller 110 in the inventory service 20. The data model of the virtual object is received in the virtual world 170 through a bulk data transmission channel in the content transmission module 180. At step 370, the content translation module 190 in the virtual world 170 performs data translation if necessary. The step 370 may be skipped if data content translation is executed in the inventory service 20. At step 380, the data model of the virtual object is entered into a local cache memory 220 in the virtual world 170. The content management module 210 in the virtual world 220 tracks a status of the virtual object.
At step 440, the cache management module 30 and the virtual object management module 60 track an uploading event of the virtual object. In one embodiment, the cache management module 30 and the virtual object management module 60 track a start of the uploading event. After the uploading is completed, the uploaded virtual object is placed in the inventory service's virtual object repository 230 through the federation module 40.
In one embodiment, the present invention supports a login process to the virtual world. A user provides an identification (ID) and a password to login through the web browser 70. After the ID and password are verified or a user authentication process (e.g., checking whether the user is a registered user based on the provided ID and password) is passed, a default data (e.g., the user's avatar) is fetched from the inventory service 20 to the virtual world 170. Then, a virtual world server (e.g., a server for hosting the virtual world 170) associated with the virtual world 170 subscribes to the event notification service 50 in the inventory service 20 to receive messages or notifications related to the user's avatar's shared virtual objects and/or register to the publisher's interface (e.g., an API used by publisher in the publish/subscribe mechanism to publish information through messages or notifications).
In one embodiment, the present invention supports a logout process from the virtual world. After a user decides to logout from the virtual world 170, virtual objects (e.g., avatar) associated with the user are uploaded to the inventory service 20 from the virtual world 170. After completing the uploading, the virtual objects in the local cache memory 220 are deleted or cleaned up. Then, a virtual world server (e.g., a server for hosting the virtual world 170) associated with the virtual world 170 communicates with the event notification service 50 in the inventory service 20 to un-subscribe messages or notifications related to shared virtual objects of the user's avatar.
In one embodiment, the content dispatch module 200 in the inventory service 20 manages messages statically or dynamically. For example, messages related to a virtual object (e.g., avatar or virtual assets associated with an avatar) status or data model changes (e.g., changes in 3D representation or a machine readable description) are dispatched for a communication over an asynchronous transmission channel (not shown) in the content transmission channel 180. Messages related to a virtual object data model transmission (e.g., transmission of 3D representation or a machine readable description of the virtual object) is dispatched to a bulk data transmission channel in the content transmission channel 180. Messages related to other data transmission (e.g., a small data transmission) is dispatched over a normal transmission channel (not shown) in the content transmission channel 180.
In one embodiment, the present invention supports removing virtual object sharing with other avatars (e.g., an original owner of a shared virtual object does not want to share the virtual object any more). In this embodiment, an avatar raises a request for stopping sharing his/her virtual objects. Then, virtual world severs where other avatars reside in communicate to the event notification service 50 to un-subscribe topic notifications related to shared virtual objects of the avatar that requested stopping his/her virtual object sharing. To maintain data consistency, after un-subscribing the topic notifications, virtual worlds except a virtual world where the avatar, which requested stopping his/her virtual object sharing, resides in can delete the shared virtual objects from local cache memories. In one embodiment, to remove a shared virtual object from sharing, the inventory service 20 stops sending topic notifications related to the shared virtual object to virtual world servers. Before removing a shared virtual object from sharing, data uploading (e.g., uploading the shared virtual object from a virtual world 170 to the inventory service 20), data fetching (e.g., updating the inventory service 20 with an up-to-date data model of the shared virtual object) and data deleting (e.g., deleting the shared virtual object in local cache memories in virtual worlds) may be performed to maintain data consistency of the shared virtual object.
In one embodiment, the present invention supports terminating sharing virtual object(s) of other avatars. For example, a second avatar, which had approved a request of sharing virtual objects of the first avatar, does not want to share the virtual objects of the first avatar any more. Then, the virtual world server associated with the second avatar communicates to the event notification service 50 in the inventory service 20 to un-subscribe topic notifications related to the virtual objects of the first avatar. Before quitting from sharing virtual objects of the first avatar, data uploading (e.g., uploading the shared virtual object from a virtual world where the second avatar resides in to the inventory service 20), data fetching (e.g., updating the inventory service 20 with an up-to-date data model of the virtual objects) and data deleting (e.g., deleting the virtual objects of the first avatar in the local cache memory in the virtual world where the second avatar resides in) may be performed to maintain data consistency of the virtual objects of the first avatar.
In one embodiment, the present inventions supports accessing a shared virtual object. When a virtual world client (e.g., a registered user for a virtual world) wants to access a shared virtual object, it is checked whether the shard virtual object has been modified since last access by the virtual world client. In one embodiment, each local cache memory has an entry per a virtual object. The entry indicates whether the virtual object associated with entry is valid (e.g., whether it is up-to-date) or not. If the shared virtual object has not been modified, an access to the shared virtual object is granted. However, if the shared virtual object has been modified, an up-to-date data model (e.g., 3D representation or machine readable description) of the shared virtual object is transferred from other virtual world servers that store the up-to-date data model of the shared virtual object via a bulk data transmission channel. In another embodiment, if the shared virtual object, which has been requested to access, has been modified, the inventory service 20 is notified to fetch an up-to-date data model of the shared virtual object from other servers which has a valid entry associated with the shared object in local cache memories. Then, the inventory service 20 transmits the up-to-date data model of the shared virtual object to the virtual world client who requested accessing the shared virtual object or to a virtual world server associated with the virtual world client who requested accessing the shared virtual object.
At step 710, the virtual world server A communicate with the event notification service 50 in the inventory service 20 to un-subscribe topic notifications related to shared virtual objects of the avatar. In addition, the virtual world server A unregisters from a publisher interface related to the shared virtual objects of the avatar. At step 720, when the avatar and the virtual assets are successfully teleported from the virtual world C to the virtual world D, the virtual world server B associated with the virtual world D downloads the avatar and the virtual assets from the inventory service 20 via a bulk data transmission channel. Data translation may be performed before the downloading via the content translation module 80 in the inventory service 20 or after the downloading via the content translation module 190 in the virtual world 170.
At step 730, the virtual world server B communicates with the event notification service 50 in the inventory service 20 to subscribe topic notifications related to shared virtual objects of the avatar that just teleported from the virtual world C to the virtual world D. The virtual world server B further registers to a publisher interface related to the shared virtual objects.
At step 810, the virtual world server A communicates with the event notification service 50 in the inventory service 20 to un-subscribe topic notifications related to shared virtual objects of the avatar. In addition, the virtual world server A unregisters from a publisher interface related to the shared virtual objects of the avatar. The virtual world server B communicates with the event notification service 50 in the inventory service 20 to subscribe topic notifications related to the shared virtual objects of the avatar. The virtual world server B further registers to a publisher interface related to the shared virtual objects.
Although the preferred embodiments of the present invention have been described in detail, it should be understood that various changes and substitutions can be made therein without departing from spirit and scope of the inventions as defined by the appended claims. Variations described for the present invention can be realized in any combination desirable for each particular application. Thus particular limitations, and/or embodiment enhancements described herein, which may have particular advantages to a particular application need not be used for all applications. Also, not all limitations need be implemented in methods, systems and/or apparatus including one or more concepts of the present invention.
The present invention can be realized in hardware, software, or a combination of hardware and software. A typical combination of hardware and software could be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein. The present invention can also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which—when loaded in a computer system—is able to carry out these methods.
Computer program means or computer program in the present context include any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after conversion to another language, code or notation, and/or reproduction in a different material form.
Thus the invention includes an article of manufacture which comprises a computer usable medium having computer readable program code means embodied therein for causing a function described above. The computer readable program code means in the article of manufacture comprises computer readable program code means for causing a computer to effect the steps of a method of this invention. Similarly, the present invention may be implemented as a computer program product comprising a computer usable medium having computer readable program code means embodied therein for causing a function described above. The computer readable program code means in the computer program product comprising computer readable program code means for causing a computer to effect one or more functions of this invention. Furthermore, the present invention may be implemented as a program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps for causing one or more functions of this invention.
It is noted that the foregoing has outlined some of the more pertinent objects and embodiments of the present invention. This invention may be used for many applications. Thus, although the description is made for particular arrangements and methods, the intent and concept of the invention is suitable and applicable to other arrangements and applications. It will be clear to those skilled in the art that modifications to the disclosed embodiments can be effected without departing from the spirit and scope of the invention. The described embodiments ought to be construed to be merely illustrative of some of the more prominent features and applications of the invention. Other beneficial results can be realized by applying the disclosed invention in a different manner or modifying the invention in ways known to those familiar with the art