# Patent

## Title
Methods and systems for processing 3D graphic objects at a content processor

## Abstract

Method and systems for processing at least one three-dimensional (3D) graphic object include: identifying a change of 3D graphic objects, creating a message, assigning a unique identifier; and forwarding the message and the unique identifier to a scene engine. The change is made by an authoring tool. The message is embedded with change information corresponding to the change. The scene engine functions can be performed by the same or a different computing device as the computing device performing the authoring tool.

## Background
RELATED INVENTION
The present application is a Non-provisional Continuation-in-part Application which claims the benefit of and is based on Non-provisional application Ser. No. 13/858,324, titled “Method and Systems for Processing 3D Graphic Objects at a Content Processor after Identifying a Change of the Object”, filed on Apr. 8, 2013, now U.S. Pat. No. 9,600,940.


FIELD OF THE INVENTION
The present invention relates to processing of 3D graphic objects. More specifically, the present invention relates to a method for processing and displaying 3D graphic objects, which are being changed in the same computing device or in a different computing device for authoring changes.
BACKGROUND OF THE INVENTION
Currently, 3D objects created in or modified by scene engines and/or object authoring tools such as 3DMax and Maya have to go through many stages before the changes in scene or objects are reflected at a scene display application, such as game developer software or user's software, including:
exporting the specific files of the 3D modeling tools into binary files that are required by the applications;
baking lighting information and produce application specific lighting information;
optimizing file packing for fast loading and streaming operation;
inserting physics data for object association with the model such as convex hull, or primitive creations;
additional application data association such as Artificial Intelligence (AI) path finding or obstacle avoidance;
shader compilations; and
Level of Detail (LOD) generation.
Currently, change of one or more 3D Building Information Modeling (BIM) objects made through one authoring tool is not reflected in other authoring tools. It is common that different authoring tools excel in different fields. A user many need to use different authoring tools to complete a design. When a user makes a change of a 3D BIM object through a first authoring tool, the user also needs to make the same change of the same 3D BIM object through a second authoring tool in order to ensure the change is consistent. It is time consuming to make multiple changes.
SUMMARY OF THE INVENTION
A three dimensional (3D) scene is composed of many 3D graphic objects, including background, skinning, mesh, texture, lighting, shader, texture lighting, coordination, materials, rendering, vertex, and camera, changes in 3D graphic objects are forwarded to a content processor and then are sent to a scene engine after processing is performed by the content processor. The changes in 3D graphic objects are created by at least one authoring tool. The scene engine is then able to interact with the changes in 3D graphic objects. It is possible that an authoring tool is also a scene engine, such that the authoring tool can interface with the changes in 3D graphic objects that are created by it or by other authoring tools.
There are myriad ways for a 3D graphic object to be changed. For example, an authoring tool may change the shape of object, the size of a 3D graphic object, the physical model applied to a 3D graphic object, the mesh of a 3D graphic object, the texture of a 3D graphic object, the lighting of a 3D graphic object, the location of a 3D graphic object in a scene, the light used in a scene, the number of 3D objects placed in a scene, the camera angle of the scene, the camera angle of an object, the texture of a 3D graphic object, shaders, skinning etc. In one variant, there are multiple authoring tools changing objects at the same time. For example, an authoring tool may change the mesh of a 3D graphic object and another authoring tool may change the light of a scene. All these changes in 3D graphic objects are then forwarded from the authoring tool to the content processor.



BRIEF DESCRIPTION OF THE DRAWINGS
Further features and advantages of the present invention will become apparent from the following detailed description, taken in combination with the appended drawings, in which:
FIG. 1A illustrates a deployment topology of a content processor, an authoring tool and a scene engine.
FIG. 1B illustrates a deployment topology of content processor, a plurality of authoring tools and a plurality of scene engines.
FIG. 1C illustrates a deployment topology of a plurality of content processors, a plurality of authoring tools and a plurality of scene engines.
FIG. 2A illustrates a flow chart of one of the methods of processing a change in a 3D graphic object.
FIG. 2B illustrates a flow chart of one of the methods of processing a change in a 3D graphic object.
FIG. 3 illustrates a flow chart of one of the methods of processing a change in a 3D graphic object.
FIG. 4 is a block diagram of an example system architecture that can be utilized to implement the systems and methods described in this application.
FIG. 5 is a block diagram of an example system architecture that can be utilized to implement the systems and methods described in this application.
FIG. 6 illustrates a deployment topology of a content processor, a plurality of authoring tools, and a plurality of scene engines.
FIG. 7 illustrates a modular design approach of a content processor.
FIG. 8 illustrates a flow chart of one of the methods of processing a change in an object.
FIG. 9 illustrates an embodiment where a data output is generated.



DETAILED DESCRIPTION
The ensuing description provides preferred exemplary embodiment(s), and is not intended to limit the scope, applicability or configuration of the invention. Rather, the ensuing description of the preferred exemplary embodiment(s) will provide those skilled in the art with an enabling description for implementing a preferred exemplary embodiment of the invention. It is understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the invention as set forth in the appended claims.
Specific details are given in the following description to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments may be practiced without these specific details. In other instances, well-known processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments.
Also, it is noted that the embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed, but could have additional steps not included in the figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function.
Moreover, as disclosed herein, the term “storage medium” or “computer readable storage medium” may represent one or more devices for storing data, including read only memory (ROM), random access memory (RAM), magnetic RAM, Flash, non-volatile core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices and/or other machine readable mediums for storing information. The term “computer readable storage medium” includes, but is not limited to portable or fixed storage devices, optical storage devices, and various other mediums capable of storing, containing or holding instruction(s) and/or data. A queue may be implemented by a section or a plurality of sections in a storage medium.
Furthermore, embodiments may be implemented by hardware, software, virtual machine, cloud computing, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine readable medium such as storage medium. A processing unit(s) may perform the necessary tasks. A processing unit(s) by a CPU, an ASIC semiconductor chip, a semiconductor chip, a logical unit, a digital processor, an analog processor, a FPGA or any processor that is capable of performing logical and arithmetic functions. A code segment may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
A three dimensional scene used in computer game, video game, computer-aided design, movie development and other systems contains a plurality of 3D graphic objects. Background, skinning, mesh, texture, shader, texture lighting, coordination, materials, rendering, camera and other properties of 3D graphic objects are used, for example, by scene engine to generate 3D virtual scenes on the display screen of a computing device.
FIG. 1A illustrates one of the embodiments of the present invention. The system of the embodiment includes content processor 102, authoring tool 101 and scene engine 103. Content processor 102 processes information and changes information of scenes and 3D graphic objects received from authoring tool 101. Then content processor 102 processes the information and changes information and forwards messages corresponding to the information or change information to scene engine 103. Content processor 102 can be implemented by a program on a computing device, including laptop computer, desktop computer, tablet computer, and mobile phone.
Authoring tool 101 allows the creation, modification and deletion of 3D graphic objects. Authoring tool 101 receives an input from a human being and displays 3D graphic objects to the human being through the authoring tool. Thus authoring tool 101 has an inputting device and can be implemented by programming a computing device, including laptop computer, desktop computer, tablet computer, and mobile phone.
Content processor 102 processes messages received from authoring tool 101 and can be implemented by programming a computing device, including laptop computer, desktop computer, tablet computer, and mobile phone.
Scene engine 103 allows the viewing of a 3D scene based on the 3D graphic objects, and changes of 3D graphic objects, therefore the entire art asset creation process can be viewed almost simultaneously as changes of objects occur in authoring tool 101. Thus this speeds up 3D scene development process, such as a game development process.
There are myriad ways for a 3D graphic object to be changed. For example, authoring tool 101 may change the shape of a 3D graphic object, the size of a 3D graphic object, the physical model applied to a 3D graphic object, the location of a 3D graphic object in a 3D scene, the coordination of a 3D graphic object in a 3D scene, the light used in a 3D scene, the number of 3D graphic objects placed in a 3D scene, the camera angle of the scene, the camera angle of a 3D graphic object, the skinning of a 3D object, the mesh of a 3D object, the materials of a 3D graphic object, the shader of a 3D graphic object, the rendering of a 3D graphic object, the texture of a 3D graphic object, etc.
According to one of the embodiments of the present invention, the system of the embodiment includes authoring tool 101 and content processor 102. Content processor 102 and scene engine 103 communicate with each other through network 110, which may include a local area network, a wide area network, the Internet, an intranet, and an extranet. Authoring tool 101 and content processor 102 may be different threads of processes running inside the same computing device.
According to one of the embodiments of the present invention, the system of the embodiment includes content processor 102 and scene engine 103. Content processor 102 and authoring tool 101 communicate with each other through network 110, including local area network, wide area network, the Internet, an intranet and an extranet. Content processor 102 and scene engine 103 are different threads of processes running inside the same computing device.
According to one of the embodiments of the present invention, the system of the embodiment includes authoring tool 101, content processor 102, and scene engine 103 and can be implemented by programming one computing device or a plurality of computing devices. For example, authoring tool 101 and content processor 102 are implemented by programming one desktop computer while scene engine 103 is implemented by programming a mobile phone. In another example, authoring tool 101 is implemented by programming a desktop computer, content processor 102 is implemented by programming a server hosted at a cloud computing service provider, and scene engine 103 is implemented by programming a mobile phone. In another example, authoring tool 101, content processor 102 and scene engine 103 are all implemented by programming a tablet computer, and therefore can be communicating through a bus system of the tablet. When any two or all of authoring tool 101, content processor 102, and scene engine 103 are implemented by programming in a same computing device, the communications among authoring tool 101, content processor 102 and scene engine 103 that are implemented by programming in the same computing device do not need to be performed through communications networks, but through other communications technologies, including inter-process communication, inter-thread communication, bus communication, and serial communication.
For illustration purposes, when authoring tool 101 changes the shader of a 3D graphic object, the 3D graphic object changes are then forwarded to or captured by content processor 102 for processing. Content processor 102 then forwards one of more messages containing the processed 3D graphic object and/or change information for one or more scene engine 103 to display the updated 3D graphic object. In one variant, the forwarding of one or more messages containing processed 3D graphic object and/or change information to scene engine 103 from content processor 102 is based on a request received scene engine 103.
FIG. 1B illustrates one of the embodiments of the present invention. The system of the embodiment includes a plurality of authoring tools 101, content processor 102 and a plurality of scene engines 103. The plurality of authoring tools 101 communicates with content processor 102 through network 111. The plurality of authoring tools 101 changes one or more 3D graphic objects at the same time. For illustration purposes, a first authoring tool 101 changes the mesh of an object and a second authoring tool 101 changes the light of a 3D graphic object. All these 3D graphic object changes are then forwarded to or captured by content processor 102 for processing through network 111. Content processor 102 then forwards one of more messages containing the processed 3D graphic object and/or change information for one or more scene engine 103 to display the 3D graphic object through network 110. The communication between authoring tool 101 and content processor can be conducted by using Internet Protocol (IP) packets. The IP packets can be transmitted by authoring tool 101 using User Datagram Protocol (UDP) or Transmission Control Protocol (TCP).
FIG. 1C illustrates one of the embodiments of the present invention. The system of the embodiment includes a plurality of authoring tools 101, a plurality of content processors 102 and a plurality of scene engines 103. The plurality of authoring tools 101 changes one or more 3D graphic objects at the same time. For illustration purposes, a first authoring tool 101 changes the texture of a 3D graphic object and a second authoring tool 101 changes the position of the same 3D graphic object. The 3D graphic object change made by the first authoring tool 101 is then forwarded to or captured by a first content processor 102 for processing. Similarly, the 3D graphic object change made by the second authoring tool 101 is then forwarded to or captured by a second content processor 102 for processing. The first and second content processors 102 then forwards one of more messages containing the processed information for one or more scene engine 103 to display the 3D graphic object.
Persons skilled in the art will recognize that a server system, such as a data processing system, including a CPU, memory, I/O, program storage, a connecting bus, and other appropriate components, could be programmed or otherwise designed to facilitate the practice of the invention, including authoring tool 101, content processor 102 and scene engine 103. Such authoring tool 101, content processor 102 and scene engine 103 would include appropriate program means for executing the operations of the invention.
Methods
FIG. 2A illustrates one of the embodiments of the present invention. FIG. 2A, for illustration purposes, is viewed in conjunction with FIG. 1. When content processor 102 has identified a change in a 3D graphic object at step 201, content processor 102 assigns a unique identifier to the change in the 3D graphic object at step 202. A message, corresponding to the change in the 3D graphic object, is then created and stored in a queue at content processor 102 at step 203. For illustration purposes, the message contains change information corresponding to the updated values of vertex, skinning, shaders, and textures. In another illustration, the message may contain updated information of the shape of 3D graphic object, the size of a 3D graphic object, the physical model applied to a 3D graphic object, the mesh of a 3D graphic object, the texture of a 3D graphic object, the lighting of a 3D graphic object, the location of a 3D graphic object in a scene, the light used in a scene, the number of 3D graphic objects placed in a scene, the camera angle of the scene, the camera angle of a 3D graphic object, the texture of a 3D graphic object, shaders, skinning etc. According to one of the embodiments of the present invention, the message contains the complete updated value of the 3D graphic object or change information of the 3D graphic object. Alternatively, the message contains only the value of the changed property of the 3D graphic object.
Content processor 102 then forwards the message to scene engine 103 at step 204. Scene engine 103 then updates the 3D scene based on the messages received at step 205. According to one of the embodiments of the present invention, content processor 102 optimizes the content of the message by reducing the complexity of the change in the 3D graphic object. For illustration purposes, the reduction of the complexity of the change in the 3D graphic object includes reducing vertex count by finding common vertexes, removing information that is only relevant for the authoring tool.
The identification at step 201 can be performed by content processor 102 using a software hook, such as an application programmable interface (API) to authoring tool 101. Therefore, when authoring tool 101 has made a change in a 3D graphic object, it can be notified to identify the change. Alternatively, according to one of the embodiments of the present invention, hash codes are calculated for 3D graphic objects. When the hash code of a 3D graphic object changes, it implies that there is a change in the 3D graphic object. Therefore, content processor 102 can identify the change. There are many techniques to calculate a hash code, including using cyclic redundancy check (CRC) and Secure Hash Algorithm (SHA). The hash code is calculated based on the serialized data of the 3D graphic object or the file of the 3D graphic object. Serialization of the change in the 3D graphic object is performed by converting a data structure, object state, or file of the change in the 3D graphic object into a format that can be stored and/or transmitted. The calculation of the hash code may take place when the scene or object stored at a computer readable storage medium is updated, or periodically.
The unique identifier to the change in the 3D graphic object is to assist the recognition of the change in the 3D graphic object. As there may be a large number of changes in the 3D graphic object in a short period of time or changes in a large number of 3D graphic objects, the unique identifier can assist content processor 102 or scene engine 103 to distinguish one change from another change.
The message created in step 203 can be in the form of a string or binary data. The change in the 3D graphic object and the unique identifier form part of the message. Therefore, the size of the message varies. According to one of the embodiments of the present invention, a message containing new coordination of a 3D graphic object may only consist of the x, y, z coordinate information and the corresponding unique identifier, and the size of this message may be in the range of from about ten bytes to one thousand bytes. For example, a message containing new image of a 3D graphic object may consist of binary data of the new image and the corresponding unique identifier, and the size of this message may be in the range of from about ten thousand bytes to one gigabyte. Further, according to one of the embodiments of the present invention, if there is lighting, texture, mesh, and camera information associated with the new image, the size of the message may be in the range of from one kilobyte to tens of gigabytes, preferably not more than ten megabytes due to the capability of state-of-art networks.
The forwarding of the message at step 204 may be performed by many techniques that are known to those skilled in the art. Those skilled in the art would appreciate that there are many techniques to forward a message between different processes in a computing device, different threads in a computing device, different virtual machines in a computing device, and different computing devices in a communication network. In one example, the message is embedded in an IP packet, and the IP packet is sent using the TCP protocol. In another example, the message is embedded in an IP packet, and the IP packet is sent using the TCP protocol through a cellular network.
According to one of the embodiments of the present invention, the forwarding of the message is by storing the message at a piece of common computer readable storage medium if authoring tool 101 and content processor 102 are implemented by programming the same computing device. According to one of the embodiments of the present invention, the forwarding of the message is by transmitting packets through a network with the message embedded inside. According to one of the embodiments of the present invention, the forwarding of the message is by transmitting packets with the message embedded inside in a computing device with virtual machine capability that authoring tool 101 is implemented by programming one virtual machine of the computing device and content processor 102 is implemented by programming another virtual machine of the computing device. For illustration purposes, the message can be embedded in an Internet Protocol (IP) packet and be forwarded using Transmission Control Protocol (TCP), User Datagram Protocol (UDP) or other protocols.
Scene engine 103 updates the scene at step 205 after receiving the message from content processor 102 by processing the change information contained in the message with the scene and 3D graphic objects it already has stored, and then displays an updated scene with 3D graphic objects if it is required to do so. If scene engine 103 does not possess the scene information or 3D graphic object information related to the change information contained in the message, scene engine 205 requests the scene information or 3D graphic object information from content processor 102 or other sources. According to one of the embodiments of the present invention, scene engine 205 displays the updated scene and/or 3D graphic object via authoring tool 101.
FIG. 2B illustrates one of the embodiments of the present invention. FIG. 2B, for illustration purposes, is viewed in conjunction with FIG. 1. Step 202 in FIG. 2A is replaced be step 202b in FIG. 2B and step 203 in FIG. 2A is replaced with step 203b in FIG. 2B. Further step 203b is before step 202b. At step 203b, a message is created corresponding to the change of a 3D graphic object. Then at step 202b, a unique identifier is then assigned to the message created at step 203b. Step 204 and step 205 in FIG. 2B perform substantially the same operations as step 204 and step 205 in FIG. 2A. In one variant, at step 204 in FIG. 2B, the unique identifier is sent along with the message by embedding both the message and the unique identifier in data packet(s) to scene engine 103. In another variant, the message is amended to include the unique identifier and then sent to scene engine 103.
FIG. 3 illustrates one of the embodiments of the present invention. FIG. 3, for illustration purposes, is viewed in conjunction with FIG. 1. The differences between FIG. 3 and FIG. 2A are the additions of step 311 and step 312. After the message is created by content processor 102 at step 203, the message is first stored in a queue at step 311. The storage of the message is to allow the message to not be transmitted to scene engine 103 immediately after creation. There are many reasons why content processor 102 cannot or should not forward the message immediately to scene engine 103, including network capacity of network 110, processing capability of scene engine 103, processing capability of content processor 102, the message is outdated already, and the message is not a high priority message.
At step 312, the message is retrieved from the queue when content processor 102 determines to forward the message to scene engine 103 or when scene engine 103 informs content processor 102 that scene engine 103 is ready to accept message.
Similar to the embodiment of FIG. 2, the message is then forwarded to content processor 102 at step 205.
According to one of the embodiments of the present invention, when there is no more storage space in the queue or the queue size is more than a threshold value, the message that has been stored in the queue for the longest time is removed in order to have storage space to store the message that is just being created at step 203. Alternatively, a plurality of messages that have been stored in the queue are deleted in order to release the storage space. Alternatively, the message is discarded and not being stored, and therefore step 311 is omitted.
According to one of the embodiments of the present invention, when the message is created at step 203, a tag that categorizes the change in the 3D graphic object is also part of the message. The tag can be used by the content processor 102 or scene engine 103 to determine the type of the message. Content processor 102 can also use the tag to determine if the message contains the most updated change in the 3D graphic object and whether to delete messages that contain outdated change in the 3D graphic object.
According to one of the embodiments of the present invention, data received by content processor 102 from authoring tool 101 is processed by a shadow cache at content processor 102 prior to forwarding messages containing the data to scene engine 103. The data is retrieved in raw format from authoring tool 101. It then goes through initial checks to see if any changes have taken places since last processed. Once it is decided that an update is needed, the shadow cache will use a threaded system to process the data. The different values, such as vertex data, skinning data, shaders, and textures, will be parsed from the data. The data is optimized to produce the message. The optimizations include reducing vertex count by finding a common vertex. The optimization reduces the amount of data to be transfer and processed by scene engine 103.
According to one of the embodiments of the present invention, data received by content processor 102 from authoring tool 101 is categorized. The categorization is performed according to the unique identifier of the messages. Once the data is categorized, it is sent to be processed into the pipeline of scene engine 103. Scene engine 103 first reads the data from its pipeline into appropriate structures and creates data buffers either on the GPU memory or CPU memory of a computing device. The data retrieved from the data buffers is then put into a queue with a categorization tag and with a link to the original data from its pipeline. After the data retrieved from the data buffers has been validated as ready, it is considered to be active, and scene engine 103 deletes the original data from its pipeline. In one variant, scene engine 103 deletes the original data from its pipeline only after it is confirmed that the original data from its pipeline is not being used.
System
FIG. 4 is a block diagram of an example content processor system architecture 401 that can be utilized to implement the systems and methods of content processor 102 described in reference to FIGS. 1-3. Content processor system 401 can, for example, be implemented in a computer device, such as any one of the personal computer devices, servers, desktops, laptops, tablets, mobile phones etc.
Example content processor system 401 includes processing unit 402, main memory 403, secondary storage 404, and network interface 405. Bus system 410, such as a data bus and a motherboard, can be used to establish and control data communication between the components 402, 404, and 405. Other example system architectures, however, can also be used. Main memory 403 may communicate with processing unit 402 using data bus 410 or a different bus.
Processing unit 402 can, for example, include one or more microprocessors having one or more processing cores. Main memory 403 can, for example, include a random access memory storage device, such as a dynamic random access memory, or other types of computer-readable medium memory devices. Main memory 403 can be used as a cache to store temporary data, registers, and instructions that are received from processing unit 402 or secondary storage 404. Secondary storage 404 can, for example, include one or more hard drives, a flash memory, and/or a read only memory, or other types of computer-readable medium memory devices.
Network interface 405 can, for example, include a wired or wireless network device operable to communicate data to and from network 110 or 111.
In an implementation, content processor system 401 includes instructions defining an operating system stored in main memory 403 and/or secondary storage 404. Example operating systems can include WINDOWS and LINUX based operating system, or other operating systems. Upon execution of the operating system instructions, access to various system objects is enabled. Example system objects include data files, applications, functions, etc.
Processing unit 402 performs the functions, according to the instruction stored in main memory 403 and/or secondary storage 404, of identifying changes of 3D graphic objects in authoring tool 101, processing the change information of 3D graphic objects received from authoring tool 101, reducing the complexity of the change information, embedding the change information in messages, and forwarding the messages to scene engine 103 via network interface 405. When processing unit 402 decides to store the message temporarily, processing unit 402 stores the message in main memory 403 and/or secondary storage 404. When processing unit 402 decides to forward the message stored earlier, processing unit 402 retrieves the message in main memory 403 and/or secondary storage 404 and forwards the messages to scene engine 103 via network interface 405.
Processing unit 402 further performs the functions, according to the instructions stored in main memory 403 and/or secondary storage 404, to assign a unique identifier to a change of 3D graphic objects. In one variant, processing unit 402 assigns a unique identifier to the message containing change information of 3D graphic objects.
Processing unit 402 may also regularly examine main memory 403 and/or secondary storage 404 for messages to decide whether to delete a message from main memory 403 and/or secondary storage 404 as a message may become outdated and/or there is not enough room in main memory 403 and/or secondary storage 404 to store new messages.
A compute device running authoring tool 101 needs at least one human computer interface (HCI) to interact with a user and at least one display user interface to display scenes or 3D graphic objects to the user to allow the user to author, create, edit, and delete scenes and 3D graphic objects.
A compute device running scene engine 103 needs at least one display user interface to display scenes or 3D graphic objects to the user to view the scenes and 3D graphic objects.
According to one of the embodiments of the present invention, when authoring tool 101 and scene engine 103 are not running in the same system with content processor 102, content processor system 401 does not need to have a human computer interface (HCI) to interact with a user and does need to have a display user interface to display scenes or 3D graphic objects to the user.
FIG. 5 is an illustration according to one of the embodiments of the present invention when authoring tool 101 is running in the same system with content processor 102. Content processor system 501 performs operations similar to the operations performed by content processor system 401. Example content processor system 501 includes processing unit 502, main memory 503, secondary storage 504, and network interface 505. In addition, content processor system 501 has human computer interface (HCI) 506 to interact with a user and display interface 507 to display scenes or 3D graphic objects to the user. Bus system 510, such as a data bus and a motherboard, can be used to establish and control data communication between the components 502, 504, 505, 506 and 507. Other example system architectures, however, can also be used. Main memory 503 may communicate with processing 502 using data bus 510 or a different bus.
Processing unit 502, main memory 503, secondary storage 504 and network interface 505 are implemented as processing unit 402, main memory 403, secondary storage 404 and network interface 405, respectively.
Display interface 507 can, for example, include a video card, a graphics accelerator card, a graphics processing unit (GPU) or a display adapter, and is configured to generate and output images to a display device. In one implementation, display interface 507 can be realized in a dedicated hardware card connected to bus system 510. In another implementation, display interface 507 can be realized in a graphics controller integrated into a chipset of bus system 510.
Example input devices connecting to HCI 506 can include a video camera, a keyboard, a mouse, a stylus, etc., and example output devices connecting to display interface 507 can include a display device, a LCD monitor, a 3D capable monitor, computer screen, projector, television screen, LED display, etc.
Processing unit 502 can also perform the functions according to the instructions stored in main memory 503 and/or secondary storage 504, of authoring tool 101. Inputs from a user are received by processing unit 502 through HCI interface 506 to author, create, edit and delete scenes and 3D graphic objects stored in main memory 503 and/or secondary storage 504. Processing unit 502 processes scenes and 3D graphic objects and then displays the scenes and 3D graphic objects to the user through display interface 507. Processing unit 502 can also offload certain arithmetic calculations to display interface 507 to accelerate the processing.
FIG. 5 is also an illustration according to one of the embodiments of the present invention when scene engine 103 is running in the same system with content processor 102. Content processor system 501 may have a human computer interface (HCI) to interact with a user and has a display user interface to display scenes or 3D graphic objects to the user. Therefore content processor system 501 can also perform the function of scene engine 103. HCI interface 506 is optional depending on whether a user's input is required. Display interface 507 is then used to show processed scenes and 3D graphic objects based on the change information contained in the messages received.
Processing unit 502 can also perform the function, according to the instructions stored in main memory 503 and/or secondary storage 504, of scene engine 103. Optional inputs from a user are received by processing unit 502 through HCI interface 506. Processing unit 502 processes change information of a 3D graphic object contained in a message and then displays the updated scenes and 3D graphic objects to the user through display interface 507. Processing unit 502 can also offload certain arithmetic calculations to display interface 507 to accelerate the processing.
In one of the embodiments illustrated by FIG. 6, there are a plurality of authoring tools 601, content processor 602, and a plurality of scene engines 603. Authoring tools 601, content processor 602 and scene engines 603 communicate with each other through network 610. In one variant, authoring tools 601, content processor 602, and scene engines 603 are different software performing in one electronic device, such as a computer. When authoring tools 601, content processor 602, and scene engines 603 are performing on a plurality of electronic devices, it is preferred that this plurality of electronic devices are located physically in a close proximity in order to reduce network latency and to improve processing performance and responsiveness.
For example, authoring tool 601a is a building information module computer aided design tool, authoring tool 601b is a virtual reality design tool, scene engine 603a is embedded in a virtual reality headset, and scene engine 603b is embedded in a smart mobile phone. When a change is made through authoring tool 601a, such as changing wall tiles of a room in a schematic, the change will then be reflected, after processing by content processor 602, in authoring tool 601b, scene engine 603a, and scene engine 603b. When another change is made through authoring tool 601b, such as changing the length of the room, the change will then also be reflected, after processing by content processor 602, in authoring tool 601a, scene engine 603a, and scene engine 603b. The wall titles, the wall, the room are objects and have corresponding properties.
Authoring tools 601, content process 602, and scene engine 603 are allowed to send and receive from each other. For example, when a user makes a change through authoring tool 601a, content processor 602 receives the change and process the change. After content processor 602 processes the change, content processor 602 sends update messages to authoring tool 601b, scene engines 603a and 603b. As authoring tool 601b, scene engines 603a and 603b may process differently, use different data, and require different data formats, the messages sent to each of them may be different.
A content processor is illustrated by FIG. 7. Content processor 602 has simulation module 710, validation module 711, analysis module 712, and decision-making module 713. These modules assist a user to develop content through the authoring tool and display through the display engine.
In one of the embodiments illustrated by FIG. 8, results from a module are used as input data for another module. The data flow commences with providing data input 801 to simulation module 710. Information from simulation module 710 are then sent to validation module 711 for further processing. Similarly, information from validation module 711 are then sent to analysis module 712 for further processing. Decision-making module 713 will process information from analysis module 712 before providing data output 802. There is no limitation that all four modules have to be used for processing data input. For example, data input is provided directly to validation module 711 while skipping simulation module 710. In another example, data output 802 is provided by analysis module 712 without using decision-making module 713 for further processing.
The simulation module performs simulations on one or more objects chosen by a user. A user can then determine the suitable object(s) to be used. For example, a user builds a model of a house, which has a backyard. Blueprint, schematics, and information, such as height, size, length, building materials, and geographical locations are objects to the perspective of content processor 602. Each object has its own properties and data. Some objects may also be embedded with rules. The user, for example, can choose a pine tree and then place the pine tree in a backyard of a house through the authoring tool. The simulation engine is capable of simulating the pine tree's growth based on object information associated with the pine tree and the house. In a more detailed example, the pine tree is simulated with different growth patterns if the height of the house is changed and/or if the geographical location of the house is changed. The simulated results are shown or reflected to the user through the scene engine. The blueprint of the house can be considered a scene. The pine tree, the backyard, and the house are objects in the scene.
In one particular embodiment, the simulated results are inputted to the validation module for validation. Based on object properties, data, and rules optionally, the validation module is capable of determining if the simulated results are valid. Continuing to use the pine tree example, if there is a wall erected closely and adjacently to the west of the pine tree, the pine tree should not be able to grow freely to the west. Therefore, the validation engine takes into account the wall object and pine tree object, and removes the simulation results that the pine tree is simulated to grow freely to the west. In one detailed embodiment, the validation engine sends a message to the simulation engine to inform the simulation engine about the removal of simulation results. Then the simulation engine will not show or reflect those removed simulation results to the user. In one variant, the validation engine does not send the message to the simulation engine. Instead, it sends simulation results, but not including those removed simulation results, to the scene engine.
In one particular embodiment, after the validation, the simulated results are inputted to the analysis module for analysis. The analysis is to include more information from the user, the scene, the objects, and/or the database for further processing. The information may not necessarily be related to the simulation. In one example, a user placed a table in a kitchen in a scene and entered the desired number of chairs. The user tries to select a chair that fits the table. Based on the table size, the analysis module retrieves size information from available chair objects in a database and the determines the number of chairs that can be placed along the table according to size information in each chair object. As different chairs may have different sizes, the analysis module suggests types of chairs that meet the desired number of chairs requirement. For chairs that are too large or too small, the analysis module will not suggest them.
One of the functionality differences between the analysis module and verification module is that the analysis module may access objects that are not indicated specifically by the user or not placed in a scene. Continuing the chair type example, validation module does not proactively retrieve information from objects not placed in the scene or directly related to the scene. The analysis module is capable of retrieving information from difference sources, including objects not placed in the scene and information collected from the Internet.
In one particular embodiment, the decision-making module assists the user to test different scenarios and then provides one or more optimal decisions to the users. Continuing the chair type example, after the analysis module, there could be many suitable chair types found. The decision-making module prompts or asks the user to provide additional information, and then based on the additional information selects one or more optimal chair types to the user, to the scene engine, and/or to other authoring tools. For example, the user uses a first three-dimensional authoring tool to place the table, then the decision-making module that is relying on the results from the analysis module selects one optimal chair type and information of the optimal chair type to the first three-dimensional authoring tool and a second two-dimensional authoring tool, such as ArchiCAD. The optimal chair type then appears in the first three-dimensional authoring tool and also appears in the second two-dimensional authoring tool. As the first three-dimensional authoring tool and the second two-dimensional authoring tool may require different data and different data formats, the decision-making module creates the required data in required data formats for both authoring tools. One of the benefits of sending the same or different information based on the optimal decisions to multiple authoring tools and scene engines is to allow optimal decisions to be used by different third parties' software.
There is no limitation that the optimal decisions must be the best decision. The optimal decisions may be choices made in a limited period of time, with limited computing resource and limited information. For example, the optimal chair type selected may be a chair type that was first retrieved from a database. In one example, the database is a Building Information Modeling (BIM) database accessible locally or remotely. A chair is a BIM object. Texture, size, and price, for example, are properties of the chair BIM object. A table is another BIM object. The table BIM object also has multiple properties.
In one example, when a user changes the size of a window BIM object in a house BIM object through authoring 601a, the change information is sent to content processor 602. The simulation model simulates changes of the amount of sunlight that can enter the house BIM object through the window BIM object. The validation module validates whether the change is feasible. For example, the new size of the window BIM object cannot be taller than the wall BIM object that the window BIM object is placed at. Then the analysis module analyzes whether the amount of sunlight is still adequate during day time based on the direction of the window BIM object and the intended geographical location of the house to be built. When the amount of sunlight is not adequate, the analysis engine suggests one or more window sizes to the user. The decision-making module determines an optimal window size and sends the new window size information to allow authoring tool 601b to reflect the new window size in authoring tool 601b. The decision-making module also sends the new window size information to be shown by scene engine 603a. 
According to one of the embodiments illustrated by FIG. 9, data output 802 is generated by any of simulation module 710, validation module 711, analysis module 712, or decision-making module 713 is used by one or more of the other modules for further processing. Storage 901 allows the modules to store, retrieve and share data. Using the pine tree example, storage 901 stores the pine tree object and corresponding data. Storage 901 is a non-transitory computer readable storage medium. Storage 901 is also used to store simulation results from the simulation module. The simulation results are then retrieved from storage 901 and sent to the validation module for further processing. There is no limitation that the all four modules must process data input 801. One or more of the modules may process data input 801 in parallel, in series, or in a different order.
In one variant, each of the simulation module, validation module, analysis module, and decision-making module are performed by standalone processing units, and storage 901 is a data bus that allows processing units to send and receive data to and from each other.
This written description sets forth the best mode of the invention and provides examples to describe the invention and to enable a person of ordinary skill in the art to make and use the invention. This written description does not limit the invention to the precise terms set forth. Thus, while the invention has been described in detail with reference to the examples set forth above, those of ordinary skill in the art may effect alterations, modifications and variations to the examples without departing from the scope of the invention.

## Claims

1. A method for processing a first change of a 3D graphic object at a content processor on a first computing device, the method comprising:
a) identifying the first change, wherein the first change is made by a first authoring tool, wherein the first authoring tool is a program executed by the first computing device or by a second computing device;
b) processing the first change at the content processor;
c) reflecting the first change at a second authoring tool based on the result of step (b); and
d) showing the first change at a scene engine based on the result of step (b);
wherein the content processor has a simulation module that performs simulations on a plurality of objects chosen by a user to generate simulation results that are sent to the scene engine and shown to the user through the scene engine, wherein the plurality of objects are potential replacements of the 3D graphic object, a validation module that receives the simulation results from the simulation module and determines when an invalid simulation result in the simulation results is not valid based on object properties, data, or rules, and wherein the invalid simulation result is removed from the simulation results sent to the scene engine, wherein the invalid simulation result is not shown to the user through the scene engine, an analysis module that retrieves from an object database a new object that is not chosen by the user and is not present in the scene engine, and a decision-making module that shows the new object and the plurality of objects that does not include an object in the plurality of objects that created the invalid simulation result, and receives a selection from the user of a selected object that the user selects from the new object and the plurality of objects;

wherein identifying the first change comprises:
generating a new hash of a new object generated by the first authoring tool;
reading an existing hash of a corresponding object that corresponds to the new object;
comparing the new hash to the existing hash;
signaling identification of the first change when the new hash mis-matches the existing hash;
wherein generating the new hash comprises generating a Cyclic Redundancy Check (CRC) or a Secure Hash Algorithm (SHA) code from the new object;
wherein generating the new hash comprises serializing the new object to generate a serialized new data object and inputting the serialized new data object to a hash engine.

2. The method of claim 1, wherein the selected object from the decision-making module is sent from the content processor to the scene engine to reflect the first change to the user of the first authoring tool and to a second user of the second authoring tool.

3. The method of claim 1, wherein the simulation module, the validation module, the analysis module and the decision-making module store and retrieve data from a same non-transitory computer-readable storage medium.

4. The method of claim 3, wherein the simulation module, the validation module, the analysis module and the decision-making module operate in series.

5. The method of claim 1, further comprising discarding the first change.

6. The method of claim 1, further comprising, wherein the first change is identified by using an application programming interface of the first authoring tool.

7. The method of claim 1, wherein the 3D graphic object is a Building Information Module (BIM) object.

8. The method of claim 7, further comprising analyzing the first change with information in relation to other BIM objects.

9. The method of claim 1, wherein the scene engine is embedded in a virtual reality headset.

10. The method of claim 1 further comprising:
reducing complexity of the first change by finding common vertexes and removing duplicate vertexes to reduce a vertex count of the 3D graphic object.

11. The method of claim 1 further comprising:
reducing complexity of the first change by removing information that is only relevant for the first authoring tool.

12. A method for processing a first change of a 3D graphic object at a content processor on a first computing device, the method comprising:
e) identifying the first change, wherein the first change is made by a first authoring tool, wherein the first authoring tool is a program executed by the first computing device or by a second computing device;
f) processing the first change at the content processor;
g) reflecting the first change at a second authoring tool based on the result of step (b); and
h) showing the first change at a scene engine based on the result of step (b);

wherein the content processor has a simulation module that performs simulations on a plurality of objects chosen by a user to generate simulation results that are sent to the scene engine and shown to the user through the scene engine, wherein the plurality of objects are potential replacements of the 3D graphic object, a validation module that receives the simulation results from the simulation module and determines when an invalid simulation result in the simulation results is not valid based on object properties, data, or rules, and wherein the invalid simulation result is removed from the simulation results sent to the scene engine, wherein the invalid simulation result is not shown to the user through the scene engine, an analysis module that retrieves from an object database a new object that is not chosen by the user and is not present in the scene engine, and a decision-making module that shows the new object and the plurality of objects that does not include an object in the plurality of objects that created the invalid simulation result, and receives a selection from the user of a selected object that the user selects from the new object and the plurality of objects;
using a shadow cache coupled to the content processor to reduce complexity of the first change by finding common vertexes and removing duplicate vertexes to reduce a vertex count of the 3D graphic object.

13. A 3D graphics system comprising:
a content processor that processes a first change of a 3D graphic object at a first computing device;
a first authoring tool that is a program executed by the first computing device, the first authoring tool for making the first change of the 3D graphic object;
a scene engine that shows the 3D graphic object to a user on a display, the scene engine receiving the first change from the content processor and adjusting display of the 3D graphic object to reflect the first change;
a second authoring tool that receives the first change from the content processor, the second authoring tool adjusting the 3D graphic object to reflect the first change;
wherein the content processor comprises:
a simulation module that performs simulations on a plurality of objects chosen by the user to generate simulation results, the simulation results being sent to the scene engine and shown to the user through the scene engine;
wherein the plurality of objects are possible replacements of the 3D graphic object;
a validation module that receives the simulation results from the simulation module and determines when an invalid simulation result in the simulation results is not valid based on object properties, data, or rules;
wherein the invalid simulation result is removed from the simulation results sent to the scene engine, wherein the invalid simulation result is not shown to the user through the scene engine;
an analysis module that retrieves from an object database a new object that is not chosen by the user and is not present in the scene engine;
a decision-making module that shows the new object and the plurality of objects that does not include an object in the plurality of objects that created the invalid simulation result, and receives a selection from the user of a selected object that the user selects from the new object and the plurality of objects;
a shadow cache coupled to the content processor to reduce complexity of the first change by finding common vertexes and removing duplicate vertexes to reduce a vertex count of the 3D graphic object.

14. The 3D graphics system of claim 13 wherein content processor sends the selected object from the decision-making module to the scene engine to reflect the first change to the user of the first authoring tool and to a second user of the second authoring tool.