Systems and methods for managing access to three-dimensional data

The system addresses secure and efficient access to large 3D data by selecting rendering servers based on load balancing scores, ensuring secure collaboration and optimized server usage for improved user interface and data management.

JP2025165875APending Publication Date: 2025-11-05THE BOEING CO
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025058731
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-04-11
Filing Date
2025-03-31
Publication Date
2025-11-05

AI Technical Summary

Technical Problem

Providing secure and efficient access to large three-dimensional data in web environments is challenging due to data security issues and resource-intensive rendering requirements, especially when using low-end devices and ensuring confidentiality of 3D models.

Method used

A system that enables secure 3D data streaming by selecting a rendering server based on load balancing scores, using image processing parameters, and managing access through authentication and load balancing among multiple servers, allowing secure access and collaboration on three-dimensional data sets.

Benefits of technology

Enables efficient and secure management of large 3D data across various devices, supports low-end display devices, and facilitates secure collaboration among multiple users, while optimizing server selection and load balancing for improved user interface and data access.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025165875000001_ABST
    Figure 2025165875000001_ABST
Patent Text Reader

Abstract

To provide a system, method, and non-transitory computer-readable medium for implementing efficient and secure data management of three-dimensional data.SOLUTION: A system 100 for managing access to three-dimensional data comprises at least one processor 106 and receives input data 130 associated with a user access request 132 for a data set 118 associated with a three-dimensional model 116 to be rendered, and further selects one rendering server from a plurality of rendering servers 134 based at least on a load balancing score 120 for each of the plurality of rendering servers, the load balancing score based at least on a graphics processing parameter 122 for each of the plurality of rendering servers. The system further communicates a request 144 to the selected rendering server to initiate rendering of the three-dimensional model for display on a user device via a client application 140.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure generally relates to systems and methods for managing access to three-dimensional data. [Background technology]

[0002] As the number of computing services running in web-based environments increases, so does the importance of ensuring security and reliability in providing these services. Such computing services often include data associated with three-dimensional models. For example, three-dimensional data may represent three-dimensional models of aircraft, automobiles, and other vehicles. Such data can be relatively large, and computer programs that render three-dimensional models from this data can be relatively resource-intensive. This can make providing rendered three-dimensional models in web environments challenging.

[0003] Additionally, 3D data presents unique challenges in securing online access. For example, 3D data providers often want to protect the confidentiality of their 3D models. This can lead to data security issues, such as copying 3D data to client computers outside of a controlled environment. Commonly used data security techniques (e.g., encryption and security through obscurity) may be insufficient, especially in graphics pipelines, where polygonal data is often unencrypted and available.

[0004] To efficiently and securely provide 3D data in a Web environment, it would be useful to provide 3D models without storing the 3D data on a remote or uncontrolled computer. While some existing data security methods (e.g., texture-based techniques such as impostor) can be used, they still require a computer infrastructure that supports their use in a production environment. Summary of the Invention

[0005] In certain embodiments, a method includes receiving input data associated with a user request for access to a dataset associated with a three-dimensional model to be rendered. The method includes selecting a rendering server from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers, the load balancing score being based at least on an image processing parameter of each of the plurality of rendering servers. The method further includes communicating a request to the selected rendering server to initiate rendering of the three-dimensional model for display on a user device via a client application.

[0006] In another specific embodiment, the apparatus includes one or more processors configured to receive input data associated with a user request for access to a dataset associated with a three-dimensional model to be rendered. The one or more processors are further configured to select a rendering server from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers, the load balancing score being based at least on image processing parameters of each of the plurality of rendering servers. The one or more processors are further configured to communicate a request to the selected rendering server to initiate rendering of the three-dimensional model for display on a user device via a client application.

[0007] In another particular embodiment, a non-transitory computer-readable medium includes instructions that, when executed by one or more processors, cause the one or more processors to receive input data associated with a user request for access to a dataset associated with a three-dimensional model to be rendered. The instructions cause the one or more processors to select a rendering server from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers, the load balancing score being based at least on image processing parameters of each of the plurality of rendering servers. The instructions further cause the one or more processors to communicate a request to the selected rendering server to begin rendering the three-dimensional model for display on a user device via a client application.

[0008] In another specific embodiment, an apparatus includes means for receiving input data associated with a user request for access to a dataset associated with a three-dimensional model to be rendered. The apparatus further includes means for selecting a rendering server from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers, the load balancing score being based at least on an image processing parameter of each of the plurality of rendering servers. The apparatus further includes means for communicating to the selected rendering server a request to initiate rendering of the three-dimensional model for display on a user device via a client application.

[0009] In another particular embodiment, a method includes receiving input data associated with a user request from a user for a dataset associated with a three-dimensional model to be rendered. The method includes communicating the user request to a rendering server. The selected rendering server is selected from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers. The load balancing score is based at least on image processing parameters of each of the plurality of rendering servers. The method includes receiving data associated with a rendered version of the three-dimensional model from the selected rendering server. The method further includes communicating the data to a user device for display to the user.

[0010] In another specific embodiment, an apparatus includes one or more processors configured to receive input data associated with a user request from a user for a dataset associated with a three-dimensional model to be rendered. The one or more processors are configured to communicate the user request to a rendering server. The selected rendering server is selected from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers. The load balancing score is based at least on image processing parameters of each of the plurality of rendering servers. The one or more processors are configured to receive data associated with a rendered version of the three-dimensional model from the selected rendering server. The one or more processors are further configured to communicate the data to a user device for display to the user.

[0011] In another particular embodiment, a non-transitory computer-readable medium includes instructions that, when executed by one or more processors, cause the one or more processors to receive input data associated with a user request from a user for a dataset associated with a three-dimensional model to be rendered. The instructions cause the one or more processors to communicate the user request to a rendering server. The selected rendering server is selected from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers. The load balancing score is based at least on image processing parameters of each of the plurality of rendering servers. The instructions cause the one or more processors to receive data associated with a rendered version of the three-dimensional model from the selected rendering server. The instructions further cause the one or more processors to communicate the data to a user device for display to the user.

[0012] In another specific embodiment, an apparatus includes means for receiving input data associated with a user request from a user for a dataset associated with a three-dimensional model to be rendered. The apparatus includes means for communicating the user request to a rendering server. The selected rendering server is selected from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers. The load balancing score is based at least on image processing parameters of each of the plurality of rendering servers. The apparatus includes means for receiving data associated with a rendered version of the three-dimensional model from the selected rendering server. The apparatus further includes means for communicating the data to a user device for display to the user. [Brief explanation of the drawings]

[0013] [Figure 1]1 is a block diagram illustrating an example system for managing access to three-dimensional data, according to some embodiments of the present disclosure. [Figure 2] FIG. 1 is a block diagram illustrating an example system for managing visualization of three-dimensional data, according to some embodiments of the present disclosure. [Figure 3] FIG. 1 illustrates an exemplary user interface displaying a rendered version of a three-dimensional model, according to some embodiments of the present disclosure. [Figure 4] 1 is a flowchart of an example method for managing access to three-dimensional data, according to some embodiments of the present disclosure. [Figure 5] 1 is a flowchart of an example method for managing visualization of three-dimensional data, according to some embodiments of the present disclosure. [Figure 6] FIG. 1 is a block diagram illustrating a computing environment including a computing device configured to support aspects of computer-implemented methods and computer-executable program instructions (or code) according to some embodiments of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0014] The systems and methods described herein enable 3D streaming of large datasets over the web by providing secure access to 3D data, back-end data management that is scalable to accommodate relatively large numbers of users, and, in some aspects, plug-in modules that connect web-based applications to external data and computational resources.

[0015] The secure web application described herein enables manufacturing, maintenance, repair, and other technicians to access the 3D data using low-end display devices (e.g., smartphones, tablets, etc.) in locations where network access (wired or wireless) is available. For example, technicians can access the 3D data of a vehicle from within or around the vehicle using a variety of computing devices, such as laptops, tablets, smartphones, etc.

[0016] A technical advantage of the present disclosure is that it enables efficient and secure data management of 3D data, such as enabling large 3D data sets to be analyzed across a fleet of vehicles to identify commonalities and differences among the vehicles.

[0017] Another technical advantage of the present disclosure is that it provides efficient server selection and load balancing among multiple servers for managing access to three-dimensional data. For example, the systems and methods described herein enable load balancing based on graphics processing metrics.

[0018] Another technical advantage of the present disclosure is an improved user interface for accessing three-dimensional data. For example, the systems and methods described herein enable multiple users in multiple environments to securely access and collaborate on a three-dimensional data set.

[0019] The accompanying drawings and the following description illustrate specific exemplary embodiments. It should be understood that those skilled in the art can devise various configurations that embody the principles set forth in the present disclosure, even if not explicitly or illustratively shown in the present specification, and that such configurations are also encompassed within the scope of the appended claims. Furthermore, any examples described herein are intended to aid in understanding the principles of the present disclosure and should not be construed as limiting. Therefore, the present disclosure is not limited to the specific embodiments and examples described below, but is limited by the claims and their equivalents.

[0020] Certain embodiments are described herein with reference to the accompanying drawings. In the following description, common features are designated by the same reference numerals throughout the drawings. Various terminology is used herein for the purpose of describing particular embodiments and is not intended to be limiting. For example, the singular is intended to encompass the plural unless the context clearly dictates otherwise. Furthermore, some features may be described in the singular in some embodiments and in the plural in other embodiments. For example, FIG. 1 illustrates a system 100 including one or more processors (e.g., processor 106 in FIG. 1). This description indicates that in some embodiments, system 100 includes a single processor 106 and in other embodiments, system 100 includes multiple processors 106. For ease of reference, such features may be introduced herein as "one or more" features and subsequently referred to as the singular or, alternatively, the plural in the description, except in embodiments in which the feature is multiple.

[0021] The term "comprise" and its conjugations are used synonymously with the term "include" and its conjugations. Additionally, the term "wherein" is used synonymously with the term "where." As used herein, "exemplary" refers to an example, embodiment, and / or aspect, and does not imply limitation, preference, or a preferred embodiment. When ordinal numbers (e.g., "first," "second," "third," etc.) are used herein to modify elements such as structures, components, processes, etc., these ordinal numbers do not imply a preference or a particular order of the elements relative to other elements. These ordinal numbers are merely used to distinguish the elements from other elements (which have the same name but for the ordinal number). As used herein, the term "set" refers to a collection of one or more elements, and the term "plurality" refers to a plurality of elements.

[0022] As used herein, the terms "generate," "calculate," "use," "select," "access," and "determining" are used interchangeably unless the context clearly indicates otherwise. For example, "generating," "calculating," or "determining" a parameter (or signal) can refer to actively generating, calculating, or determining the parameter (or signal), or to using, selecting, or accessing a parameter (or signal) that has already been generated, for example, by another computer or device. As used herein, "connected" includes being "communicatively connected," "electrically connected," or "physically connected," and may additionally (or alternatively) include any combination thereof. When two devices (or components) are connected (e.g., communicatively connected, electrically connected, or physically connected), the devices may be directly connected or indirectly connected via one or more other devices, components, wires, buses, networks (e.g., wired networks, wireless networks, or combinations thereof), etc. As a non-limiting example, two electrically connected devices (or components) may be included in the same apparatus, or two devices included in separate apparatuses may be connected by an electronic circuit, one or more connectors, or inductive coupling. In some embodiments, two devices (or components) communicatively connected, e.g., by electrical communication, may directly transmit and receive electrical signals (digital or analog signals) or may indirectly transmit and receive such signals via, e.g., one or more wires, buses, networks, etc. As used herein, the term "directly connected" means that two devices are connected (e.g., communicatively connected, electrically connected, or physically connected) without any intervening components.

[0023] 1 illustrates an exemplary system 100 for managing access to three-dimensional data, in accordance with some embodiments of the present disclosure. In some embodiments, the system 100 includes a computing device 102 configured to communicate with one or more devices 104, one or more authentication servers 137, and / or multiple rendering servers 134. The computing device 102 includes one or more processors 106 coupled to a memory 108.

[0024] In some embodiments, device 104 includes, constitutes, or is included as part of one or more electronic devices used by a technician (e.g., aircraft maintenance technician, vehicle designer) who requires access to three-dimensional data. The electronic devices of device 104 include one or more processors 139, and memory 136 connected to the processors stores one or more user access requests 132. User access requests 132 include information identifying a user and / or device 104, information identifying the three-dimensional data the user wishes to access, information identifying a portion of the three-dimensional data, other suitable information for identifying the user's request for three-dimensional data, or a combination thereof.

[0025] In some implementations, processor 139 includes client application 140. Client application 140 is configured to receive data associated with the rendered three-dimensional model for output to display 142 of device 104. Display 142 can be configured to display all or a portion of the data associated with the rendered three-dimensional model to a user.

[0026] In some implementations, each rendering server 134 includes, comprises, or is included as part of one or more electronic devices having a rendering application 138. The rendering application 138 is configurable to render a three-dimensional model from the three-dimensional data. As described in more detail below, each rendering server 134 is configurable to communicate with computing device 102, one or more devices 104, or a combination thereof.

[0027] In some implementations, authentication server 137 can be configured to authenticate a user's access credentials to one or more portions of system 100. Authentication server 137 can be configured to authenticate a user's access rights, for example, to access system 100, to access particular portions of dataset 118 described below, to access particular rendering servers 134, etc. In some aspects, authentication server 137 can include one or more electronic devices configured as an Active Directory server, a lightweight directory access protocol (LDAP) server, or the like.

[0028] In some implementations, the computing device 102 can be configured to receive, from the device 104, input data 130 associated with a user access request 132 for a dataset 118 associated with the three-dimensional model 116 to be rendered. For example, data sent from the device 104 can include input data 130 associated with a user access request 132 for a three-dimensional model of an aircraft. Identifying features included in the input data 130 for the user access request 132 can include access credentials (e.g., username, password, etc.), the aircraft corresponding to the requested model, specific portion information of the requested model (e.g., wiring diagram, construction diagram, etc.), specific portion of the three-dimensional model (e.g., specific section of the aircraft), etc. The user access request 132 includes data associated with such information and is passed to the computing device 102 as input data 130.

[0029] The processor 106 of the computing device 102 includes a rendering server selector 110 and a request transmitter 114. The rendering server selector 110 can be configured to identify an identifier 112 of a particular rendering server among a plurality of rendering servers 134 based on at least a load balancing score 120 of each rendering server 134. The load balancing score 120 is based on at least a graphics processing parameter 122 of each rendering server 134. The load balancing score 120 and the graphics processing parameter 122 can be stored in the memory 108.

[0030] In some aspects, the request communicator 114 can be configured to communicate the request 144 to the selected rendering server 134. In particular aspects, the request communicator 114 can be configured to communicate the request 144 to the particular rendering server 134 associated with the identifier 112 to initiate rendering of the three-dimensional model 116 on the display 142 via the client application 140.

[0031] In some embodiments, the system 100 can be configured to load balance among multiple graphics processing units (GPUs) based rendering servers 134. The processor 106 can be configured to select a particular rendering server based on at least the image processing parameters 122 of each rendering server 134. In some embodiments, the image processing parameters 122 include data associated with one or more resource parameters related to the image processing capabilities of the rendering server 134. The image processing parameters 122 can include, for example, peak GPU processing capacity, current GPU memory usage, etc.

[0032] In the same or alternative aspects, the load balancing score 120 may be further based on a network latency parameter 124 of a network connecting the rendering servers 134 and the device 104, a general processing memory parameter 128 of each rendering server 134, a graphics processing memory parameter 126 of each rendering server 134, or a combination thereof. The network latency parameter 124 may indicate, for example, a network latency time (e.g., in milliseconds) for a data packet to travel between the computing device 102 and the rendering server 134. The general processing memory parameter 128 may indicate, for example, the total amount of system memory (e.g., RAM) in a particular rendering server 134. The graphics processing memory parameter 126 may indicate, for example, the total amount of graphics memory in a particular rendering server 134. The load balancing score 120 may also be based on a general processing parameter. The general-purpose processing parameters may, for example, indicate the peak general-purpose processing performance rating (as opposed to image processing-specific performance) for a particular rendering server 134 .

[0033] In certain aspects, the load balancing score 120 is based on a capacity parameter of each rendering server 134. The capacity parameter may, for example, indicate the aggregate performance of a particular feature of the rendering server 134. For example, the capacity parameter may be associated with a general-purpose processing parameter, indicating the aggregate performance of a computer resource for general-purpose processing. As another example, the capacity parameter may be associated with a general-purpose processing memory parameter 128, indicating the aggregate memory capacity of each rendering server 134. As yet another example, the capacity parameter may be associated with an image processing memory parameter 126, indicating the aggregate image processing memory capacity of each rendering server 134. As yet another example, the capacity parameter may relate to any combination of the above examples or to capacity parameters of other suitable computing resources.

[0034] In the same or alternative aspects, the load balancing score 120 is based on a current usage parameter of each rendering server 134. The current usage parameter may, for example, indicate the current usage of computational resources associated with one or more components of a particular rendering server 134. The current usage parameter may, for example, be associated with a general-purpose processing parameter and indicate a current processing percentage of general-purpose computer resources. As another example, the current usage parameter may be associated with a general-purpose processing memory parameter 128 and indicate the current usage of memory for each rendering server 134. As yet another example, the current usage parameter may be associated with an image processing memory parameter 126 and indicate the current usage of image processing memory for each rendering server 134. As yet another example, the current usage parameter may be associated with a network delay parameter 124 and indicate a current network throughput value. The current usage parameter may relate to any combination of the above examples or may be any other suitable value indicating the current usage of computational resources.

[0035] During operation, the processor 106 can be configured to receive input data 130 from the device 104 indicating a user access request 132. The user access request 132 can indicate, for example, a user's login credentials and parameters identifying a particular three-dimensional model 116 stored in the memory 108. The processor 106 can be configured to select a particular rendering server 134 from among the plurality of rendering servers for rendering the particular three-dimensional model 116. The particular rendering server is identified by the identifier 112. The rendering server selector 110 can be configured to select the particular rendering server based at least on one or more load balancing scores 120 of each rendering server 134. The load balancing score 120 is based on at least the image processing parameters 122 of each rendering server 134 and may also be based on parameters related to other computer resources of each rendering server 134.

[0036] As an illustrative example, the load balancing score S of a particular rendering server 134 i is expressed by the following formula: where k u is the scaling factor associated with the current usage parameter, and k c is the scale factor associated with the capacity parameter, and U i,j is the current usage value for a particular current usage parameter j on rendering server i, and C i,m is the capacity or performance value for a particular capacity parameter m on rendering server i.

number

[0037] In the above formula, the usage value U i,j , and a capacity or performance value C i,m is expressed in units appropriate for each resource parameter (e.g., megabytes for memory, milliseconds for network latency, etc.). The scale factor ku and k c is an appropriate value selected to reflect system design considerations for a particular system implementation. For example, available image memory may be a better indicator of system performance in some configurations than in others. The scale factor may be determined manually, automatically, or both. Automatic selection may be based, for example, on empirical data collected over a period of time from measurements taken while the system 100 is in use.

[0038] As described above, one technical advantage of the present disclosure is an improved user interface for accessing three-dimensional data. For example, the systems and methods described herein enable multiple users in multiple environments to securely access and collaborate on a three-dimensional dataset. To this end, in some implementations, processor 106 can be configured to receive user authentication information from authentication server 137 prior to receiving input data 130. For example, processor 106 can receive user authentication information from authentication server 137 indicating that a user has the right to access some or all of system 100. In particular aspects, processor 106 can be configured to receive user authentication information prior to receiving input data 130 (e.g., user authorization to access system 100). Upon receiving input data 130, processor 106 communicates data associated with user access request 132 to authentication server 137 to determine whether the user is authorized to access the requested portion of dataset 118.

[0039] In some embodiments, the processor 106 can be further configured to communicate authentication data to the rendering server 134 selected corresponding to the identifier 112. The authentication data is associated with one or more objects in the three-dimensional model, and the one or more objects can be selectively rendered based on the authentication data. For example, a user may be authorized to view some portions of the three-dimensional model but not other portions. The processor 106 communicates authentication data to the rendering server 134 indicating that the user is authorized to view some or all of the three-dimensional model 116. The rendering server 134 can selectively render portions of the three-dimensional model 116 based on the authentication data. In some embodiments, the one or more objects in the three-dimensional model 116 can include, for example, a particular view of the three-dimensional model 116, a portion of the three-dimensional model 116, a particular part, a particular line number, a particular design state, a particular assembly state, etc.

[0040] The authentication data further indicates a user access request 132 describing a request for a rendering of a specific portion of the three-dimensional model 116. For example, a user may be able to view a rendering of the entire three-dimensional model 116 of an aircraft. The user may request to view a specific portion of the three-dimensional model 116 of the aircraft (e.g., view a specific portion of the aircraft). As will be described in more detail below with reference to FIG. 3 , the user interface 300 displays the portion of the three-dimensional model 116 based on the user's request to view that portion of the three-dimensional model 116.

[0041] In a multi-user environment, the processor 106 can be configured to authenticate the user access request 132 on a per-user basis. For example, a first user may have different credentials than a second user. The processor 106 can be configured to authenticate the user access request 132 based on the individual user's credentials.

[0042] In some implementations, computing device 102 is associated with, integrated with, or included in one or more electronic devices, such as a server or a personal computer. System 100 may include additional components not shown in FIG. 1 . For example, computing device 102 may include a receiver configured to receive input data 130 from device 104. The receiver may be configured to receive data, for example, via a computer bus. As a further example, system 100 may further include one or more input / output interfaces, one or more network interfaces, etc. Also, while FIG. 1 illustrates memory 108 of system 100 as storing certain data, it would not depart from the scope of this disclosure if memory 108 stored more, less, or different data than illustrated.

[0043] 1 illustrates certain processes as being performed within computing device 102, it would not depart from the scope of this disclosure if those processes were performed by other components of system 100. For example, one or more components external to computing device 102 could host or otherwise incorporate some, all, or a combination of the rendering server selector 110 and request communicator 114 components. Such components could be located remotely from computing device 102 and accessible via a network connection of computing device 102.

[0044] Additionally, while Figure 1 depicts computing device 102, device 104, and rendering server 134 as separate components, other configurations are possible and do not depart from the scope of this disclosure. For example, computing device 102 and rendering server 134 may be integrated into one or more electronic devices as a single server. This server may be configured, for example, to run multiple virtual rendering servers on a single electronic device. In additional embodiments, one or more components of computing device 102 may be distributed across multiple computing devices (e.g., across a set of processor cores).

[0045] In certain aspects, the exemplary system 100 configures a load balancing server to manage access to the three-dimensional data by one or more users and grant legitimate user access requests 132 to at least some or all of the datasets 118 associated with the three-dimensional model 116. The system 100 selects from among multiple rendering servers 134 to efficiently render the three-dimensional model 116 for display in a client application 140. As will be described in more detail below with reference to FIG. 2, the disclosed systems and methods also disclose a web application server configured to manage access to the three-dimensional data.

[0046] 2 illustrates an exemplary system 200 for managing visualization of three-dimensional data, according to some embodiments of the present disclosure. In some embodiments, the system 200 includes a computing device 202 configured to communicate with one or more devices 104, one or more authentication servers 137, multiple rendering servers 134, or a combination thereof. The computing device 202 includes one or more processors 206 coupled to a memory 208. In some embodiments, the processor 206 includes a data communicator 216, a metadata generator 218, an input data mapper 220, a rendering application monitor 222, a request communicator 114 of FIG. 1, or a combination thereof.

[0047] In some embodiments, device 104 includes, constitutes, or is included as part of one or more electronic devices used by a technician (e.g., aircraft maintenance technician, vehicle designer) who requires access to three-dimensional data. The one or more electronic devices of device 104 include one or more processors 139 coupled to memory 136 that stores one or more user requests 212. User requests 212 may include information identifying a user and / or device 104, information identifying the three-dimensional data the user wishes to access, information identifying a portion of the three-dimensional data, other suitable information for identifying the user's request for three-dimensional data, or a combination thereof.

[0048] In some implementations, the computing device 202 can be configured to receive input data 210 associated with a user request 212 from a user for a dataset 118 associated with the three-dimensional model 116 to be rendered. The request transmitter 114 can be configured to transmit the user request 212 from a plurality of rendering servers 134 to a rendering server selected based on at least a load balancing score 120 of each rendering server 134. The load balancing score 120 can be based on at least an image processing parameter 122 of each rendering server 134. For example, the user request 212 includes data indicative of the user requesting access to a portion of the dataset 118. The processor 106 can be configured to transmit the user request 212 to a particular rendering server 134 selected based on the load balancing process described in detail with reference to FIG. 1 .

[0049] In some implementations, the computing device 202 can be further configured to receive data associated with a rendered version of the three-dimensional model 116 from a particular rendering server 134. For example, the computing device 202 can be configured to receive data enabling the display of a rendered version of the three-dimensional model 116 ("rendered version data 214"). As described above with reference to FIG. 1 , the rendering server 134 can be configured to render some or all of the three-dimensional model 116 based on some or all of the dataset 118. The rendering server 134 communicates the rendered data 214 representing the rendered version of the three-dimensional model 116 to the computing device 202. The data communicator 216 can be configured to communicate the rendered data 214 of the three-dimensional model 116 from the selected rendering server 134.

[0050] In some embodiments, the rendered data 214 can exclude geometry data associated with the three-dimensional model 116. The geometry data can be excluded from the rendered data 214 that the rendering server 134 communicates to the computing device 202, or from the rendered data 214 that the computing device 202 communicates to the device 104, or in some cases, both. One security concern when providing three-dimensional data in a web environment is that portions of the data object may be presented to a user in a manner that compromises the integrity of the data. For example, underlying geometry data associated with the three-dimensional model 116 could be used to reverse engineer one or more components of the three-dimensional model 116. The system 200 enables geometry data associated with the three-dimensional model 116 to be removed from the rendered data 214 before transmission.

[0051] In operation, a user may request a rendering of all or a portion of the aspects of the three-dimensional model 116 to which the user is authorized. The computing device 202 may be configured to authenticate the user's access to the system 200, authenticate the user's access to the particular portion of the requested three-dimensional model 116, request rendering from a particular rendering server 134 selected through a load balancing process, and communicate data associated with the rendered version (e.g., rendered data 214) to the device 104 for display to the user (e.g., via the display 142).

[0052] In some embodiments, input data 210 can include data indicating a user selection for a portion of the rendered version, and input data 210 can be updatable. For example, a user can initially view a rendered version of three-dimensional model 116 and then request a new rendering of a particular portion of three-dimensional model 116. Alternatively, a user can initially request to view a rendering of only a particular portion of three-dimensional model 116.

[0053] In such an aspect, the input data mapping unit 220 can be configured to map the input data 210 to a unique part number. The metadata generator 218 can be configured to generate metadata associated with the unique part number, and the computing device 202 can communicate the metadata to the device 104. For example, if a user selects a particular portion of the three-dimensional model 116, the input data mapping unit 220 can be configured to map the selected portion to a unique part number. The processor 206 can map the unique part number to metadata and communicate the metadata to the device 104. As will be described in more detail below with reference to FIG. 3 , the metadata can include, for example, a part number, a part name, and a service history associated with the unique part number.

[0054] In some embodiments, the rendering application monitor 222 of the processor 206 can be configured to monitor the rendering application 138 of the selected rendering server 134 and, if it detects that the rendering application 138 is not running (e.g., has stopped temporarily or has unexpectedly stopped responding), send a signal to the rendering application 138 to restart the rendering application 138. A rendering application 138 often pauses or stops running due to issues such as an unhandled exception or a processing or network failure. By monitoring the operation of the rendering application 138 (and enabling the rendering application 138 to be restarted), the computing device 202 can facilitate a more stable and efficient rendering process.

[0055] In some aspects, the processor 206 can be configured to receive user authentication information from the authentication server 137 prior to receiving the input data 210. For example, the processor 206 can receive user authentication information from the authentication server 137 indicating that the user has the right to access some or all of the system 200. In particular aspects, the processor 206 can be configured to receive the user authentication information prior to receiving the input data 210. Upon receiving the input data 210, the processor 206 can communicate data associated with the user request 212 to the authentication server 137 to determine whether the user is authorized to access the requested portion of the dataset 118.

[0056] In such an aspect, the processor 206 can be configured to communicate the authentication data to the selected rendering server 134. The authentication data is associated with one or more objects in the three-dimensional model 116, and the one or more objects can be selectively rendered based on the authentication data.

[0057] The processor 206 can also be configured to generate a sharable session that includes data associated with the rendered version (e.g., rendered data 214). For example, a first user authenticated to the system 200 can request a sharable session for the purpose of collaborating with a second user. The processor 206 can generate a sharable session that includes the rendered data 214 that can be communicated to the first and second users. The processor 206 can also generate data associated with an access mechanism for the sharable session. For example, the processor 206 can generate a hyperlink that allows the second user to join the shared session.

[0058] The processor 206 can be further configured to receive, from the user authentication application, a second user authentication associated with a second user request of a second user for the data set 118. For example, clicking on the hyperlink by the second user generates a request to authenticate the second user before transmitting the rendered data 214 to the second user.

[0059] In such aspects, the processor 206 can be configured to receive input data 210 indicating a user selection for a portion of the rendered version. The input data mapping unit 220 can be configured to map the input data 210 to a unique part number. The metadata generator 218 can be configured to generate metadata associated with the unique part number and to generate second metadata associated with the unique part number for a second user. The processor 206 can be configured to communicate the metadata to the device 104 and communicate the second metadata to a second device 104 associated with the second user. The processor 206 can be configured to receive data associated with a second rendered version of the three-dimensional model 116 from the selected rendering server 134 and communicate the second rendered data to a second device 104 associated with the second user. In some configurations, the rendered data 214 differs from the second rendered data. In this manner, multiple users of a sharable session can view different portions of the three-dimensional model 116 as part of the same sharable session, thereby enabling a selected rendering server 134 to load a portion of the dataset 118 associated with the three-dimensional model 116 only once and perform multiple rendering operations, resulting in a more efficient rendering system.

[0060] In some aspects, the processor 206 can be configured to request user input defining the dataset 118 (or a portion of the dataset 118). For example, a user can request that only a specific portion of the 3D model 116 be rendered. For example, if the primary purpose of a shareable session is to discuss solutions to maintenance issues related to an aircraft's electrical system, the user can specify that only the portion of the 3D model 116 associated with the electrical system be rendered. In another example, the dataset 118 includes data associated with multiple versions of the 3D model 116 (e.g., multiple tail numbers for a particular aircraft type). The user can input data indicating a request to view only the portion of the dataset 118 associated with the particular tail number. In some aspects, the processor 206 can be configured to request that the user exclude portions of a larger dataset 118. For example, a user may only have access to a specific portion of the 3D model 116. The processor 206 can request that the user exclude portions of the dataset 118 to which the user does not have access if the rendering process is to continue. 1 above, the load balancing process may indicate limitations on the selected rendering server 134. For example, the available computational resources at the selected rendering server 134 may be insufficient to render the requested portion of the data set 118. The processor 206 may request user input to exclude the requested portion of the data set 118 if the rendering process is to continue. If such user input is not received, the processor 206 may select a second rendering server 134 capable of rendering the requested portion of the data set 118, or, if no other rendering server 134 capable of rendering the requested portion of the data set 118 is found, may display a notice on the display 142 that rendering the requested portion of the data set 118 is currently not possible due to insufficient resources.

[0061] In some implementations, computing device 202 is associated with, integrated with, or included as part of one or more electronic devices, such as a server or a personal computer. System 200 may include additional components not shown in FIG. 2 . For example, computing device 202 may include a receiver configured to receive input data 210 from device 104. The receiver may receive data, for example, via a computer bus. As a further example, system 200 may further include one or more input / output interfaces, one or more network interfaces, etc. Also, while FIG. 2 illustrates memory 208 of system 200 as storing certain data, it would not depart from the scope of this disclosure if memory 208 stored more, less, or different data than illustrated.

[0062] 2 illustrates certain processes as being performed within computing device 202, it would not depart from the scope of this disclosure if those processes were performed by other components of system 200. For example, one or more components external to computing device 202 could host or otherwise incorporate some or all of the request communicator 114, data communicator 216, metadata generator 218, input data mapper 220, rendering application monitor 222, or any combination thereof. Such components may be located remotely from computing device 202 and accessible via a network connection of computing device 202.

[0063] 2 depicts computing device 202, device 104, and rendering server 134 as separate components, other configurations are possible and do not depart from the scope of this disclosure. For example, computing device 202 and rendering server 134 may be integrated into one or more electronic devices as a single server. This server may be configured, for example, to run multiple virtual rendering servers on a single electronic device. In additional embodiments, one or more components of computing device 202 may be distributed across multiple computing devices (e.g., across a set of processor cores).

[0064] Figure 3 illustrates an example user interface 300 displaying a rendered version of the three-dimensional model 116 of Figures 1 and 2, according to some embodiments of the present disclosure. The user interface 300 includes a browser window 302 that includes a navigation region 320, a model display region 316, and a metadata display region 304.

[0065] The navigation area 320 may include tabs, buttons, pages or other indexing features, or other browsing navigation tools, or a combination thereof, that allow a user of the user interface 300 to navigate between different portions of the user interface 300. In the example of FIG. 3, the navigation area 320 includes an existing session tab 306. A user authorized to view the three-dimensional data may navigate between and view various sessions by manipulating the existing session tab 306. The navigation area 320 also includes a first session view tab 308 and a second session view tab 310. Each of the session view tabs 308, 310 corresponds to a particular rendered version of a three-dimensional model (e.g., the three-dimensional model 116 shown in FIGS. 1 and 2). By switching between the session view tabs 308, 310, a user may switch between rendered versions of the three-dimensional model.

[0066] 3 shows a user selecting the first session view tab 308. The first session view tab 308 includes a model view area 316 and a metadata view area 304. The model view area 316 may include a rendered version 314 of a three-dimensional model (e.g., the three-dimensional model 116 shown in FIGS. 1 and 2). The metadata view area 304 may include one or more metadata items associated with some or all of the three-dimensional model in its rendered state. For example, the metadata view area 304 may include a title, part name, part number, as well as a unique identifier for a portion of the rendered version 314.

[0067] As described in detail above with reference to FIG. 2, the system 200 can be configured to receive input data 210 indicating a user-selected portion of the rendered version, associate the input data 210 with a unique part number, generate metadata associated with the part number, and communicate the generated metadata to the device 104. The user interface 300 shows the user interface 300 after a user has selected a portion of the rendered version 314. For example, the user can click on a portion of the rendered version 314. This user input is used (e.g., by the processor 206 of FIG. 2) to associate the selected portion with a unique part number. The metadata associated with the selected portion is communicated to the device 104 and displayed to the user. In the example of FIG. 3, the metadata is displayed in a metadata display area 304 on the device 104.

[0068] FIG. 3 is a diagram illustrating certain aspects of the present disclosure. Other configurations of user interface 300 are possible without departing from the scope of the present disclosure. The user interface may include more, fewer, or different components than those shown in FIG. 3. For example, user interface 300 may not include navigation area 320. In another example, metadata display area 304 may be hidden unless a user enters data requesting viewing of metadata. In yet another example, rendered version 314 may be displayed on a device (e.g., device 104 of FIGS. 1 and 2) by a web application, thin client application, or the like, without departing from the scope of the present disclosure.

[0069] 4 is a flowchart of an example method 400 for managing access to three-dimensional data, according to some embodiments of the present disclosure. Method 400 may be initiated, performed, or controlled by one or more processors executing instructions, such as, for example, processor 106 shown in FIG. 1 executing instructions stored in memory 108.

[0070] In some implementations, method 400 receives input data associated with a user access request for a dataset associated with the three-dimensional model to be rendered at block 402. For example, processor 106 of FIG. 1 receives input data 130 associated with a user access request 132 for a dataset 118 associated with the three-dimensional model 116 to be rendered.

[0071] At block 404, the method 400 includes selecting one rendering server from the plurality of rendering servers based at least on a load balancing score of each rendering server. The load balancing score is based at least on image processing parameters of each rendering server. For example, the processor 106 of FIG. 1 selects one rendering server 134 from the plurality of rendering servers 134 based at least on a load balancing score 120 of each rendering server 134. The load balancing score 120 is based at least on image processing parameters 122 of each rendering server 134.

[0072] Method 400 further includes transmitting a request to the selected rendering server to begin rendering the three-dimensional model for display via the client application at block 406. For example, processor 106 of FIG. 1 transmits a request 144 to selected rendering server 134 to begin rendering 144 of three-dimensional model 116 for display on display 142 of device 104 via client application 140.

[0073] In some implementations, method 400 may include more, fewer, or different steps without departing from the scope of this disclosure. For example, method 400 may include authenticating user access at one or more points in time. In certain configurations, method 400 may include a first user authentication that authenticates the user's access rights to the entire system. Method 400 may further include a second user authentication that authenticates the user's access rights to one or more specific portions of data associated with the rendered model, as described in more detail with reference to FIGS. 1-3.

[0074] 1 to 3, it is possible to achieve one or more of the above-described technical effects. For example, the method 400 can achieve load balancing among multiple rendering servers based on one or more metrics related to image processing.

[0075] 5 is a flowchart of an example method 500 for managing visualization of three-dimensional data, according to some embodiments of the present disclosure. Method 500 may be initiated, performed, or controlled by one or more processors executing instructions, such as, for example, processor 206 shown in FIG. 2 executing instructions stored in memory 208.

[0076] In some implementations, method 500 receives input data associated with a user request from a user for a dataset associated with a three-dimensional model to be rendered at block 502. For example, processor 206 of FIG. 2 receives input data 210 associated with a user request 212 for a dataset 118 associated with a three-dimensional model 116 to be rendered.

[0077] At block 504, the method 500 includes communicating the user request 212 to a particular rendering server 134. The rendering server is selected from the plurality of rendering servers based at least on the load balancing score of each rendering server. The load balancing score is based at least on the image processing parameters of each rendering server. For example, the processor 206 of FIG. 2 communicates the user request 212 to a particular rendering server 134. The particular rendering server 134 is selected from the plurality of rendering servers 134 based at least on the load balancing score 120 of each rendering server 134. The load balancing score 120 is based at least on the image processing parameters 122 of each rendering server 134.

[0078] The method 500 includes receiving data associated with the rendered version of the three-dimensional model from a particular rendering server at block 506. For example, the processor 206 of Figure 2 receives rendered data 214 associated with the rendered version of the three-dimensional model 116 from a particular rendering server 134.

[0079] The method 500 further includes communicating the data to a client for display to a user at block 508. For example, the processor 206 of Figure 2 communicates the rendered data 214 to the client application 140 for display on the display 142 and presentation to the user.

[0080] In some implementations, method 500 may include more, fewer, or different steps without departing from the scope of this disclosure. For example, method 500 may include receiving input data indicating a user selection for a portion of the rendered version, mapping the input data to a unique part number, generating metadata associated with the part number, and communicating the generated metadata to the client. Method 500 may further include monitoring a rendering application on the rendering server and restarting the rendering application upon detecting that the rendering application has stopped responding unexpectedly. For example, method 500 may include authenticating user access at one or more points. In certain configurations, method 500 may include a first user authentication that authenticates a user's access rights to the entire system. Method 500 may further include a second user authentication that authenticates a user's access rights to one or more specific portions of data associated with the rendered model, as described in detail with reference to FIGS. 1-4.

[0081] 1-3 may be implemented to achieve one or more of the above-described technical effects. For example, method 500 enables multiple users in multiple environments to securely access and collaborate on a three-dimensional data set, improving the user experience when accessing the three-dimensional data.

[0082] 6 is a block diagram illustrating a computing environment 600 including a computing device 610 configured to support aspects of computer-implemented methods and computer-executable program instructions (or code) according to some embodiments of the present disclosure. The computing device 610, or portions thereof, are configured to execute instructions to initiate, execute, or control one or more processes, for example, as described in detail above with reference to FIGS. 1-5. In certain aspects, the computing device 610 includes, constitutes, or is included as part of any of the computing device 102, device 104, rendering server 134, and / or client application 140 of FIG. 1, the computing device 202 of FIG. 2, one or more servers, one or more virtual devices, or combinations thereof.

[0083] Computing device 610 includes one or more processors 620. In certain aspects, processor 620 corresponds to processor 106 of FIG. 1. Processor 620 is configured to communicate with a system memory 630, one or more storage devices 650, one or more input / output interfaces 640, one or more communication interfaces 660, or a combination thereof. System memory 630 includes volatile memory devices (e.g., random access memory (RAM) devices), non-volatile memory devices (e.g., read-only memory (ROM) devices, programmable read-only memory, and flash memory), or both. System memory 630 includes operating system 632, which may include, for example, a basic input / output system for booting computing device 610, as well as a full operating system for computing device 610 to interact with a user, other programs, or other devices. The system memory 630 stores system (program) data 638, such as the 3D model 116, the data set 118, the load balancing score 120, or a combination thereof, as shown in FIGS.

[0084] The system memory 630 includes one or more applications 634 (e.g., instructions) executable by the processor 620, such as the rendering server selector 110 and request communicator 114 shown in Figures 1 and 2. For example, the one or more applications 634 include instructions 636 executable by the processor 620 to initiate, control, or perform one or more of the processes described with reference to Figures 1-5. For example, the one or more applications 634 include instructions 636 executable by the processor 620 to initiate, control, or perform one or more of the processes described with reference to the input data 130 of Figure 1 for receiving input data 130, selecting a rendering server 134 based on the load balancing score 120, and communicating a request 144 to the selected rendering server 134 to begin rendering a three-dimensional model 116 for display by a client application 140. As another example, one or more applications 634 may include instructions 636 executable by the processor 620 to initiate, control, or perform one or more processes for receiving input data 210 of FIG. 2, communicating a user request 212 to a selected rendering server 134, receiving rendered data 214 from the rendering server 134, and communicating the rendered data 214 to the client application 140.

[0085] In certain implementations, system memory 630 includes a non-transitory computer-readable medium (e.g., a computer-readable storage device) storing instructions 636 that, when executed by processor 620, cause processor 620 to perform or control a process for managing access to three-dimensional data. The process includes receiving input data associated with a user request for access to a dataset associated with a three-dimensional model to be rendered. The process further includes selecting a rendering server from a plurality of rendering servers based at least on a load balancing score of each rendering server, the load balancing score being based at least on image processing parameters of each of the plurality of rendering servers. The process includes communicating a request to the selected rendering server to begin rendering the three-dimensional model for display on a user device via a client application.

[0086] In the same or alternative embodiment, system memory 630 includes a non-transitory computer-readable medium (e.g., a computer-readable storage device) storing instructions 636 that, when executed by processor 620, cause processor 620 to perform or control a process for managing visualization of three-dimensional data. The process includes receiving input data associated with a user request from a user for a dataset associated with a three-dimensional model to be rendered. The process further includes communicating the user request to a rendering server selected from a plurality of rendering servers based on at least a load balancing score of each rendering server, the load balancing score being based at least on image processing parameters of each of the plurality of rendering servers. The process further includes receiving data associated with a rendered version of the three-dimensional model from the rendering server. The process further includes communicating the data to a client for display to the user.

[0087] The one or more storage devices 650 include non-volatile storage devices such as magnetic disk devices, optical disk devices, or flash memory devices. In certain examples, storage devices 650 include both removable and non-removable memory devices. Storage devices 650 are configured to store an operating system, an operating system image, applications (e.g., one or more applications 634), and program data (e.g., program data 638). In certain aspects, either or both of system memory 630 and storage devices 650 comprise computer-readable media. In certain aspects, one or more of storage devices 650 are external to computing device 610.

[0088] One or more input / output interfaces 640 communicate with computing device 610 and one or more input / output devices 670 to enable user interaction. For example, one or more input / output interfaces 640 may include a display interface and / or an input interface. For example, input / output interface 640 may be configured to receive input from a user and / or from another computing device. In some implementations, input / output interface 640 conforms to one or more standard interface protocols, such as a serial interface (e.g., a Universal Serial Bus (USB) interface or an Institute of Electrical and Electronics Engineers (IEEE) interface standard), a parallel interface, a display adapter, or a custom interface ("IEEE" is a registered trademark of the Institute of Electrical and Electronics Engineers, Piscataway, New Jersey). In some implementations, input / output device 670 includes one or more user interface and display devices, including a combination of buttons, keyboards, pointing devices, displays, speakers, microphones, touchscreens, and other devices.

[0089] The processor 620 is configured to communicate with a device or controller 680 via one or more communication interfaces 660. For example, the one or more communication interfaces 660 may include a network interface. The device or controller 680 may include, for example, the device 104, the rendering server 134, or the client application 140 of FIGS. 1 and 2, or a combination thereof.

[0090] In some embodiments, a non-transitory computer-readable medium (e.g., a computer-readable storage device) stores instructions that, when executed by one or more processors, cause the one or more processors to initiate, perform, or control processes that implement some or all of the functionality described above. For example, execution of these instructions implements one or more of the processes or methods of FIGS. 1-5. In some embodiments, some or all of one or more of the processes or methods of FIGS. 1-5 are implemented by one or more processors (e.g., one or more central processing units (CPUs), one or more graphics processing units (GPUs), one or more digital signal processors (DSPs)) executing instructions, implemented by dedicated hardware circuitry, or any combination thereof.

[0091] The description of the examples herein is intended to facilitate a general understanding of the structures of various embodiments. The written description is not intended to completely describe all elements and features of apparatus and systems that utilize the structures and methods shown herein. Many other aspects will be apparent to those skilled in the art upon review of this disclosure. Other embodiments and embodiments derived from this disclosure are possible by substituting and modifying structure and logic without departing from the scope of the disclosure. For example, a method may include different processes not shown, or one or more processes may be omitted. Therefore, this disclosure and the accompanying drawings should be interpreted as illustrative, not limiting.

[0092] Additionally, while specific examples have been shown and described herein, it will be understood that any subsequently designed arrangements which would achieve the same or similar results may be substituted for the above-described embodiments. The present disclosure is intended to cover all subsequent adaptations or variations of the various embodiments. Combinations of the above-described embodiments, as well as other embodiments not explicitly described herein, will be apparent to those of skill in the art upon review of this disclosure.

[0093] The Abstract is submitted with the understanding that it will not be used to interpret the scope or meaning of the claims. Additionally, in the above detailed description, various features may be grouped together or referred to as a single entity, but this is for the purpose of brevity. The above-described embodiments are illustrative and not limiting of the present disclosure. It will be appreciated that many modifications and variations are possible in accordance with the principles of the present disclosure. As reflected in the appended claims, claimed subject matter may relate to some, but not all, features of any disclosed embodiment. Accordingly, the scope of the present disclosure is defined by the appended claims and their equivalents.

[0094] Furthermore, the present disclosure includes embodiments according to the following examples.

[0095] According to Supplementary Note 1, the method includes receiving input data associated with a user access request for a dataset associated with a three-dimensional model to be rendered; selecting a rendering server from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers, wherein the load balancing score is based at least on image processing parameters of each of the plurality of rendering servers; and communicating a request to the selected rendering server to begin rendering the three-dimensional model for display on a user device via a client application.

[0096] Supplementary Note 2 includes the method of Supplementary Note 1, wherein the load balancing score is based on a network latency parameter of a network connected to the plurality of rendering servers, a general processing parameter of each of the plurality of rendering servers, a general processing memory parameter of each of the plurality of rendering servers, an image processing memory parameter of each of the plurality of rendering servers, or a combination thereof.

[0097] Supplementary Note 3 includes the method of Supplementary Note 2, wherein the load balancing score is based on at least a capacity parameter of each of the plurality of rendering servers associated with the general processing parameter, the general processing memory parameter, the image processing memory parameter, the image processing parameter, or a combination thereof.

[0098] Supplementary Note 4 includes the method of Supplementary Note 2 or 3, wherein the load balancing score is based on current usage parameters of each of the plurality of rendering servers associated with at least the general processing parameters, the general processing memory parameters, the image processing memory parameters, the image processing parameters, the network latency parameters, or combinations thereof.

[0099] Supplementary Note 5 includes the method of any of Supplements 1 to 4, further including, before receiving the input data, receiving user authentication associated with the user access request from a user authentication application connected to the selected rendering server.

[0100] Appendix 6 includes the method of Appendix 5, further including communicating authentication data associated with one or more objects of the three-dimensional model to the selected rendering server, the authentication data enabling the one or more objects to be selectively rendered.

[0101] Supplementary Note 7 includes the method of any of Supplements 1 to 6, in which communicating the request to the selected rendering server includes communicating a request to the selected rendering server to initiate rendering of the three-dimensional model for display in a client application.

[0102] According to Supplementary Note 8, the system includes one or more processors configured to receive input data associated with a user request for access to a dataset associated with a three-dimensional model to be rendered, select a rendering server from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers, wherein the load balancing score is based at least on an image processing parameter of each of the plurality of rendering servers, and communicate a request to the selected rendering server to initiate rendering of the three-dimensional model for display on a user device via a client application.

[0103] Appendix 9 includes the system of Appendix 8, wherein the load balancing score is based on a network latency parameter of a network connected to the plurality of rendering servers, a general processing parameter of each of the plurality of rendering servers, a general processing memory parameter of each of the plurality of rendering servers, an image processing memory parameter of each of the plurality of rendering servers, or a combination thereof.

[0104] Supplementary Note 10 includes the system of Supplementary Note 8, wherein the load balancing score is based on at least a capacity parameter of each of the plurality of rendering servers associated with the general processing parameter, the general processing memory parameter, the image processing memory parameter, the image processing parameter, or a combination thereof.

[0105] Appendix 11 includes the system of Appendix 9 or 10, wherein the load balancing score is based on current usage parameters of each of the plurality of rendering servers associated with at least the general processing parameter, the general processing memory parameter, the image processing memory parameter, the image processing parameter, the network latency parameter, or a combination thereof.

[0106] Supplementary Note 12 includes the system of any of Supplements 8 to 11, wherein the one or more processors are further configured to receive user authentication associated with the user access request from an authentication server connected to the selected rendering server.

[0107] Appendix 13 includes the system of Appendix 12, wherein the one or more processors are further configured to communicate authentication data associated with one or more objects of the three-dimensional model, the authentication data enabling the one or more objects to be selectively rendered, to the selected rendering server.

[0108] Supplementary Note 14 includes the system of any of Supplements 8 to 13, wherein the one or more processors are further configured to, in communicating the request to the selected rendering server, communicate a request to the selected rendering server to initiate rendering of the three-dimensional model for display in a client application.

[0109] According to Supplementary Note 15, a non-transitory computer-readable medium includes instructions that, when executed by one or more processors, cause the one or more processors to receive input data associated with a user request for access to a dataset associated with a three-dimensional model to be rendered; select a rendering server from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers, wherein the load balancing score is based at least on an image processing parameter of each of the plurality of rendering servers; and communicate a request to the selected rendering server to begin rendering the three-dimensional model for display on a user device via a client application.

[0110] Appendix 16 includes the non-transitory computer-readable medium of Appendix 15, wherein the load balancing score is based on a network latency parameter of a network connected to the plurality of rendering servers, a general processing parameter of each of the plurality of rendering servers, a general processing memory parameter of each of the plurality of rendering servers, an image processing memory parameter of each of the plurality of rendering servers, or a combination thereof.

[0111] Appendix 17 includes the non-transitory computer-readable medium of Appendix 16, wherein the load balancing score is based on at least a capacity parameter of each of the plurality of rendering servers associated with the general processing parameter, the general processing memory parameter, the image processing memory parameter, the image processing parameter, or a combination thereof.

[0112] Appendix 18 includes the non-transitory computer-readable medium of Appendix 16 or 17, wherein the load balancing score is based on current usage parameters of each of the plurality of rendering servers associated with at least the general processing parameters, the general processing memory parameters, the image processing memory parameters, the image processing parameters, the network latency parameters, or combinations thereof.

[0113] Addendum 19 includes the non-transitory computer-readable medium of any of Addendums 15 to 18, in which the one or more processors are further configured to receive user authentication associated with the user access request from an authentication server connected to the selected rendering server.

[0114] Appendix 20 includes the non-transitory computer-readable medium of Appendix 19, wherein the one or more processors are further configured to communicate authentication data associated with one or more objects of the three-dimensional model, the authentication data enabling the one or more objects to be selectively rendered, to the selected rendering server.

[0115] According to Supplementary Note 21, the method includes receiving input data associated with a user request from a user for a dataset associated with a three-dimensional model to be rendered; communicating the user request to a selected rendering server from a plurality of rendering servers, the selected rendering server being selected based at least on a load balancing score based on at least image processing parameters of each of the plurality of rendering servers; receiving from the selected rendering server data associated with a rendered version of the three-dimensional model; and communicating the data to a user device for display to the user.

[0116] Appendix 22 includes the method of Appendix 21, further including receiving input data indicating a user selection for a portion of the rendered version, mapping the input data to a unique part number, generating metadata associated with the unique part number, and communicating the metadata to the user device.

[0117] Appendix 23 includes the method of Appendix 21 or 22, further including monitoring a rendering application on the rendering server and, upon detecting that the rendering application has unexpectedly stopped responding, restarting the rendering application.

[0118] Supplementary Note 24 includes the method of any of Supplements 21 to 23, further including receiving user authentication associated with the user request from an authentication server connected to the selected rendering server.

[0119] Appendix 25 includes the method of Appendix 24, further including communicating authentication data associated with one or more objects of the three-dimensional model, the authentication data enabling the one or more objects to be selectively rendered, to the selected rendering server.

[0120] Clause 26 includes the method of clauses 24 or 25, further including generating a shareable session including the data associated with the rendered version.

[0121] Addendum 27 includes the method of Addendum 26, further including receiving, from the user authentication server, a second user authentication associated with a second user request from a second user for the data set.

[0122] Addendum 28 includes the method of Addendum 27, further including receiving input data indicating a user selection for a portion of the rendered version, mapping the input data to a unique part number, generating metadata associated with the unique part number, generating second metadata associated with the unique part number for the second user, communicating the metadata to the user device, and communicating the second metadata to a second user device associated with the second user.

[0123] Addendum 29 includes the method of Addendum 27 or 28, further including receiving, from the selected rendering server, data associated with a second rendered version of the three-dimensional model, and communicating the data to a second user device for display to the second user.

[0124] Appendix 30 includes the method of Appendix 29, wherein the rendered version is different from the second rendered version.

[0125] Appendix 31 includes the method of any of Appendixes 21-30, further including requesting user input defining the data set.

[0126] Appendix 32 includes the method of Appendix 31, wherein requesting user input defining the dataset includes requesting user input to exclude a portion of a larger dataset.

[0127] Supplementary Note 33 includes the method of any of Supplements 21 to 32, wherein the data communicated to the user device does not include shape data associated with the three-dimensional model.

[0128] Appendix 34 includes the method of any of Appendixes 21 to 33, wherein the data associated with the rendered version of the three-dimensional model does not include shape data associated with the three-dimensional model.

[0129] According to Supplementary Note 35, the system includes one or more processors configured to: receive input data associated with a user request from a user for a dataset associated with a three-dimensional model to be rendered; communicate the user request to a selected rendering server from a plurality of rendering servers, the selected rendering server being selected based at least on a load balancing score based on at least image processing parameters of each of the plurality of rendering servers; receive from the selected rendering server data associated with a rendered version of the three-dimensional model; and communicate the data to a user device for display to the user.

[0130] Addendum 36 includes the system of Addendum 35, wherein the one or more processors are further configured to receive input data indicating a user selection for a portion of the rendered version; associate the input data with a unique part number; generate metadata associated with the unique part number; and communicate the metadata to the user device.

[0131] Appendix 37 includes the system of Appendix 35 or 36, wherein the one or more processors are further configured to monitor a rendering application on the rendering server and, upon detecting that the rendering application has unexpectedly stopped responding, restart the rendering application.

[0132] Appendix 38 includes the system of any of Appendixes 35-37, wherein the one or more processors are further configured to request user input defining the data set.

[0133] Addendum 39 includes the system of any of Addendums 35 to 38, wherein the data communicated to the user device or the rendered version of the three-dimensional model does not include shape data associated with the three-dimensional model.

[0134] According to Appendix 40, a non-transitory computer-readable medium includes instructions that, when executed by one or more processors, cause the one or more processors to receive input data associated with a user request from a user for a dataset associated with a three-dimensional model to be rendered; communicate the user request to a selected rendering server from a plurality of rendering servers, the selected rendering server being selected based at least on a load balancing score that is based at least on image processing parameters of each of the plurality of rendering servers; receive data from the selected rendering server associated with a rendered version of the three-dimensional model; and communicate the data to a user device for display to the user.

Claims

1. receiving input data associated with a user access request for a data set associated with the three-dimensional model to be rendered; selecting a rendering server from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers, wherein the load balancing score is based at least on an image processing parameter of each of the plurality of rendering servers; and communicating to the selected rendering server a request to initiate rendering of the three-dimensional model for display on a user device via a client application.

2. 2. The method of claim 1, wherein the load balancing score is based on a network latency parameter of a network connected to the plurality of rendering servers, a general processing parameter of each of the plurality of rendering servers, a general processing memory parameter of each of the plurality of rendering servers, an image processing memory parameter of each of the plurality of rendering servers, or a combination thereof.

3. 3. The method of claim 2, wherein the load balancing score is based on at least a capacity parameter of each of the plurality of rendering servers associated with the general processing parameter, the general processing memory parameter, the image processing memory parameter, the image processing parameter, or a combination thereof.

4. 3. The method of claim 2, wherein the load balancing score is based on current usage parameters of each of the plurality of rendering servers associated with at least the general processing parameters, the general processing memory parameters, the image processing memory parameters, the image processing parameters, the network latency parameters, or combinations thereof.

5. The method of claim 1 , further comprising receiving a user authentication associated with the user access request from an authentication server connected to the selected rendering server, the authentication server comprising a user authentication application.

6. 6. The method of claim 5, further comprising communicating authentication data associated with one or more objects of the three-dimensional model to the selected rendering server, the authentication data enabling the one or more objects to be selectively rendered.

7. 2. The method of claim 1, wherein communicating the request to the selected rendering server comprises communicating a request to the selected rendering server to initiate rendering of the three-dimensional model for display in a client application.

8. 1. A system including one or more processors, the one or more processors comprising: receiving input data associated with a user access request for a data set associated with the three-dimensional model to be rendered; selecting a rendering server from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers, wherein the load balancing score is based at least on an image processing parameter of each of the plurality of rendering servers; The system is configured to communicate a request to the selected rendering server to initiate rendering of the three-dimensional model for display on a user device via a client application.

9. 9. The system of claim 8, wherein the load balancing score is based on a network latency parameter of a network connected to the plurality of rendering servers, a general processing parameter of each of the plurality of rendering servers, a general processing memory parameter of each of the plurality of rendering servers, an image processing memory parameter of each of the plurality of rendering servers, or a combination thereof.

10. 10. The system of claim 9, wherein the load balancing score is based on at least a capacity parameter of each of the plurality of rendering servers associated with the general processing parameter, the general processing memory parameter, the image processing memory parameter, the image processing parameter, or a combination thereof.

11. 10. The system of claim 9, wherein the load balancing score is based on current usage parameters of each of the plurality of rendering servers associated with at least the general processing parameters, the general processing memory parameters, the image processing memory parameters, the image processing parameters, the network delay parameters, or combinations thereof.

12. The system of claim 8 , wherein the one or more processors are further configured to receive user authentication associated with the user access request from an authentication server connected to the selected rendering server.

13. 13. The system of claim 12, wherein the one or more processors are further configured to communicate authentication data associated with one or more objects of the three-dimensional model, the authentication data enabling the one or more objects to be selectively rendered, to the selected rendering server.

14. 9. The system of claim 8, wherein the one or more processors are further configured to, upon communicating the request to the selected rendering server, communicate a request to the selected rendering server to begin rendering the three-dimensional model for display in a client application.

15. When executed by one or more processors, the one or more processors: receiving input data associated with a user access request for a data set associated with the three-dimensional model to be rendered; selecting a rendering server from a plurality of rendering servers based at least on a load balancing score of each of the plurality of rendering servers, wherein the load balancing score is based at least on an image processing parameter of each of the plurality of rendering servers; a request to initiate rendering of the three-dimensional model for display on a user device via a client application to the selected rendering server;

16. 16. The non-transitory computer-readable medium of claim 15, wherein the load balancing score is based on a network latency parameter of a network connected to the plurality of rendering servers, a general processing parameter of each of the plurality of rendering servers, a general processing memory parameter of each of the plurality of rendering servers, an image processing memory parameter of each of the plurality of rendering servers, or a combination thereof.

17. 17. The non-transitory computer-readable medium of claim 16, wherein the load balancing score is based on at least a capacity parameter of each of the plurality of rendering servers associated with the general processing parameter, the general processing memory parameter, the image processing memory parameter, the image processing parameter, or a combination thereof.

18. 17. The non-transitory computer-readable medium of claim 16, wherein the load balancing score is based on current usage parameters of each of the plurality of rendering servers associated with at least the general processing parameters, the general processing memory parameters, the image processing memory parameters, the image processing parameters, the network latency parameters, or combinations thereof.

19. 16. The non-transitory computer-readable medium of claim 15, wherein the one or more processors are further configured to receive user authentication associated with the user access request from an authentication server connected to the selected rendering server.

20. 20. The non-transitory computer-readable medium of claim 19, wherein the one or more processors are further configured to communicate authentication data associated with one or more objects of the three-dimensional model, the authentication data enabling the one or more objects to be selectively rendered, to the selected rendering server.