Patent Publication Number: US-9898873-B2

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

Description:
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&#39;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  202   b  in  FIG. 2B  and step  203  in  FIG. 2A  is replaced with step  203   b  in  FIG. 2B . Further step  203   b  is before step  202   b . At step  203   b , a message is created corresponding to the change of a 3D graphic object. Then at step  202   b , a unique identifier is then assigned to the message created at step  203   b . 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&#39;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  601   a  is a building information module computer aided design tool, authoring tool  601   b  is a virtual reality design tool, scene engine  603   a  is embedded in a virtual reality headset, and scene engine  603   b  is embedded in a smart mobile phone. When a change is made through authoring tool  601   a , 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  601   b , scene engine  603   a , and scene engine  603   b . When another change is made through authoring tool  601   b , such as changing the length of the room, the change will then also be reflected, after processing by content processor  602 , in authoring tool  601   a , scene engine  603   a , and scene engine  603   b . 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  601   a , 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  601   b , scene engines  603   a  and  603   b . As authoring tool  601   b , scene engines  603   a  and  603   b  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&#39;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&#39; 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  601   a , 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  601   b  to reflect the new window size in authoring tool  601   b . The decision-making module also sends the new window size information to be shown by scene engine  603   a.    
     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.