Three-dimensional model optimization
By analyzing viewer interaction data, identifying focus and non-focus areas, generating and storing optimized 3D models, the problems of 3D model rendering quality and loading speed in existing technologies are solved, and more efficient storage and transmission optimization is achieved.
Patent Information
- Application Number
- CN202511101662.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2019-08-28
- Filing Date
- 2019-09-20
- Publication Date
- 2025-11-21
AI Technical Summary
Existing technologies cannot effectively optimize the rendering quality and loading speed of 3D models, resulting in poor device performance under low network quality and high storage and transmission requirements.
By analyzing the interaction data between the viewer and the 3D model through the modeling system, the focus and non-focus areas are identified, optimized 3D models are generated and stored, the resolution of non-focus areas is reduced, and high-resolution data is loaded when necessary to optimize the model presentation.
It reduces the storage requirements and network usage of 3D models, improves loading speed and model quality, and improves device loading time and bandwidth utilization, especially under low network quality conditions.
Smart Images

Figure CN120997447A_ABST
Abstract
Description
[0001] This application is a divisional application of Chinese patent application No. 201980095759.3, entitled "Optimization of Three-Dimensional Model" (filed on September 20, 2019).
[0002] Cross-reference to related applications
[0003] This application claims priority to U.S. Patent Application No. 16 / 553,925, filed August 28, 2019, entitled “THREE-DIMENSIONAL MODELOPTIMIZATION,” which claims the benefit of U.S. Patent Application No. 16 / 395,722, filed April 26, 2019, entitled “THREE-DIMENSIONAL MODEL OPTIMIZATION.” The disclosure of the above applications is incorporated herein by reference in its entirety for all purposes. Background Technology
[0004] The system can use a three-dimensional (“3D”) model to represent objects. For example, augmented reality (“AR”) systems, virtual reality (“VR”) systems, or web browsers can use 3D models to represent objects in a corresponding environment. The model may be outside the field of view and affect how objects (e.g., a ball bouncing on a chair) are presented within the field of view. Summary of the Invention
[0005] This specification describes the techniques, methods, systems, and other approaches used to optimize the creation, rendering, or both of 3D models. For example, a 3D model can be a model of a product displayed through an application such as a web browser or a dedicated application. Computing devices such as mobile devices, AR devices, VR devices, or other types of computers can display 3D models on screens such as mobile device screens, computer screens, AR goggles, or VR goggles. The modeling system can collect viewing data of 3D model images, analyze the collected data, and optimize the 3D model based on the analysis of the collected data.
[0006] When viewing 3D models, viewers have the ability to observe various aspects of the model. Viewers can adjust the model's appearance by interacting with its various aspects, for example, using a computer mouse, finger, or stylus, or by using another input mode to adjust the model's presentation. Viewers can click and drag the model or press the keyboard arrow keys to rotate it. When using AR or VR devices, viewers can adjust the model's appearance by, for example, turning their head to observe its various aspects.
[0007] For example, initially, a side view of the backpack can be presented to a viewer viewing a 3D model of the backpack. The viewer can click on the backpack and drag an input device (such as a computer mouse) in a vertical direction to view the bottom of the backpack. The viewer can click and drag left or right to view the sides of the backpack. The viewer can click and drag in another vertical direction to view the top of the backpack.
[0008] When viewing a 3D model, the viewer has the ability to zoom in or out. The viewer can zoom in on the model, for example, by clicking or double-clicking various aspects of the model using a computer mouse, or by using any other suitable method. The viewer may be able to scroll the mouse wheel or click on an icon such as a magnifying glass to zoom in or out. For example, a viewer viewing a 3D model of a backpack can zoom in on the backpack's texture or view features such as closures like zippers or buttons.
[0009] Different viewers can have different viewing modes when viewing a 3D model. For example, one viewer might rotate the 3D backpack model to a left-hand view and then zoom in on the left-hand view. Another viewer might rotate the 3D backpack model to a top-hand view and, for example, zoom in on the top-hand view before performing other interactions with the 3D backpack model.
[0010] For example, when a viewer chooses to provide this data to the modeling system, the modeling system can receive data about the viewer's interaction with the 3D model. For instance, the modeling system can receive data about the viewer's interaction with the 3D model. The data can represent the viewer's perspective of the 3D model, the parts of the model presented to the viewer on the display, the order in which the parts of the model are presented on the display, or a combination of two or more of these.
[0011] After receiving the data, such as when a session in which a viewer interacts with the 3D model ends, the modeling system can analyze the viewing data. For example, the data could indicate that the viewer spent 10 seconds looking at the front view of the backpack, then 20 seconds looking at the left side view of the backpack, zoomed in on the left side view including the water bottle pocket for 10 seconds, and then spent 30 seconds looking at the rear view including the backpack's straps.
[0012] A modeling system can receive data for each viewer of a 3D model, a subset of viewers of a 3D model, aggregated data, or both. The modeling system can use this data to optimize the 3D model. For example, a modeling system can use aggregated data to identify regions of a 3D model that viewers pay more attention to than other regions of the 3D model. Some examples of regions include the 3D model's mesh, texture, quadrants, other components, or combinations of two or more of these.
[0013] A region can be, for example, a perspective view of a 3D model, such as a left-hand view or a right-hand view. For instance, when a perspective view is a region, it can include the textures, meshes, or both of a 3D model shown in a particular perspective view, which the viewer may focus on more than other textures, meshes, or both of the 3D model. Each region can be included in one or more perspective views. Each perspective view can include one or more regions, such as those regions, which can be included in other perspective views.
[0014] For an example 3D model of a backpack, such as an image of the 3D model presented to the viewer, a left-side view including the water bottle bag might be depicted. The image might also depict the texture and mesh of the zipper pull and straps. The image may not depict any texture and mesh of the umbrella bag on the right side of the 3D model, the logo on the left side of the backpack, or both. This is because, for example, the logo is located behind the water bottle bag, and the actual texture and mesh of the logo may or may not be loaded into the 3D model, or both, so the logo may not be presented in the left-side view. In this example, the perspective (e.g., as an area) may include at least a portion of the water bottle bag, at least a portion of the straps, and at least a portion of the zipper pull, and may not include the umbrella bag, the logo, or both.
[0015] In some examples, when the perspective is a region, it can include discontinuous portions of the 3D model. For instance, a perspective can include a water bottle bag and a zippered sleeve, even if the water bottle bag and zippered sleeve are separated by other regions of the 3D model, such as those not shown in the perspective view.
[0016] To identify areas in a 3D model that viewers pay more attention to compared to other areas, a modeling system can perform cluster analysis on data from viewer interactions. Cluster analysis can target aggregated data, generate aggregated data, or both. For example, a modeling system can perform cluster analysis by creating heatmaps of the 3D model. Heatmaps can use various patterns, shadows, colors, or all of these to represent regions of the 3D model to distinguish areas that viewers pay more attention to compared to other areas.
[0017] Modeling systems can use heatmaps to optimize 3D models. For example, a modeling system (such as a model optimization device) can optimize one or more regions of a 3D model based on identified areas that viewers pay more attention to compared to other regions of the 3D model. For regions of the 3D model that viewers pay less attention to compared to other regions, the modeling system can generate a lower-resolution image from a higher-resolution image.
[0018] In some implementations, the modeling system can generate two or more versions of a 3D model. Each version of the 3D model can have a different data size, for example, in megabytes, resolution, or both. The smaller-sized model can include, for example, regions of the 3D model that viewers find more interesting compared to other regions of the 3D model, as determined by a heatmap. The smaller-sized model can also include, at a lower resolution, regions of the 3D model that viewers find less interesting compared to other regions of the 3D model. The larger-sized model can include high-resolution data of both regions of the 3D model that viewers find less interesting compared to other regions and regions of the 3D model that viewers find more interesting compared to other regions of the 3D model (e.g., all regions of the 3D model).
[0019] By optimizing 3D models, modeling systems can improve the rendering of 3D models. For example, when a viewer is more focused on the left side of a water bottle rack compared to other areas of a backpack's 3D model, the modeling system can optimize the 3D model so that the left side view has a higher resolution than other areas of the 3D model, loads first during 3D model rendering, or both. This optimization of the 3D model allows devices rendering the 3D model (e.g., on a monitor) to render the optimized 3D model faster than unoptimized models. The modeling system can also program high-resolution images of areas of the 3D model that viewers focus less on compared to other areas to load after the initial version.
[0020] In some implementations, the system can render different quality regions of a 3D model based on its initial orientation. For example, the system can load a first higher quality (e.g., fidelity) region based on the initial orientation of the 3D model, referencing the content that will initially be displayed on the screen. Alternatively, based on the initial orientation, the system can load a second lower quality region that would not initially be displayed. For instance, for a webpage that initially depicts the front region of a camera's 3D model upon page load, the system (e.g., a rendering system) can determine to load the front region of the 3D model at a higher resolution while loading the unseen rear region at a lower resolution.
[0021] In some implementations, the modeling system can optimize the 3D model by category, such as product category. For example, viewing data can indicate a threshold amount for viewers of a particular hiking boot model, suggesting that the sole is an area of the 3D model that viewers pay more attention to compared to other areas of the model. The modeling system can use this data to optimize the 3D model for a product category. For instance, the modeling system can use data from a particular hiking boot model to optimize the 3D model for a product category, such as all hiking boots, all hiking boots, and / or all shoes from a specific manufacturer. The modeling system can optimize the 3D model of shoes such that the sole has a higher resolution than the rest of the 3D model, loads first during the rendering of the 3D model, or both.
[0022] In some examples, the data can instruct at least a threshold number of viewers of collared shirts to zoom in on the collar. Modeling systems can use the data to optimize 3D models of product categories, such as for multi-collar shirts (e.g., full-collar shirts) or possibly all tops.
[0023] In some implementations, the modeling system can optimize the 3D model based on the viewer's category. The viewer's category can include a single user (e.g., John) or multiple viewers. For example, viewing data for a pillow's 3D model can indicate that, for a threshold number of viewers with specific demographic characteristics (e.g., physical geographic location), the back of the pillow is an area of the 3D model that viewers pay more attention to compared to other areas of the 3D model. The modeling system can use this data to optimize the 3D model for viewer categories, for example, when viewers choose to share category information such as physical geographic location. For instance, the modeling system can use data from the pillow model to optimize the 3D model for viewer categories such as all viewers with a specific physical geographic location. The modeling system can optimize the pillow's 3D model such that the back of the pillow has a higher resolution than the rest of the 3D model, loads first during the rendering of the 3D model, or both.
[0024] The modeling system can generate different 3D models of the pillow for different viewer categories (e.g., physical geographic locations) and provide one of the different 3D models to the device using data about the viewer category. For example, when the modeling system receives a request for a 3D model of the pillow from a first physical location, it can provide a first 3D model. When the modeling system receives a request for a 3D model of the pillow from a second, different physical location, it can provide a second, different 3D model.
[0025] Typically, an innovative aspect of the subject matter described in this specification can be embodied in a method comprising the following actions: for a 3D model of an object to be optimized, determining a plurality of points on the object, each point having at least a threshold probability of being a focus, the 3D model having two or more regions, each region comprising one or more textures, one or more meshes, or both; identifying one or more non-focus regions from the two or more regions, wherein i) each non-focus region does not include any of the plurality of points, and ii) is an appropriate subset of the two or more regions; generating an optimized 3D model for an object having a smaller size than the larger size of the 3D model using the one or more non-focus regions; and storing the optimized 3D model in non-volatile memory. Other embodiments of this aspect include corresponding computer systems, apparatus, computer program products, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the method. A system of one or more computers may be configured to perform a particular operation or action by means of installing software, firmware, hardware, or a combination thereof on the system, which, in operation, causes or causes the system to perform an action. One or more computer programs can be configured to perform specific operations or actions by means of instructions that, when executed by a data processing device, cause the device to perform the actions.
[0026] Typically, an innovative aspect of the subject matter described in this specification can be embodied in a method comprising the following actions: for a 3D model of an object to be optimized, determining a plurality of points on the 3D model, each point having at least a threshold probability of being a focus, the 3D model having two or more regions, each region comprising one or more textures, one or more meshes, or both; identifying one or more focus regions from the two or more regions, wherein i) each includes at least one of the plurality of points, and ii) is an appropriate subset of the two or more regions; generating an optimized 3D model for an object having a smaller size than the larger size of the 3D model using the one or more focus regions; and storing the optimized 3D model in non-volatile memory. Other embodiments of this aspect include corresponding computer systems, apparatus, computer program products, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the method. A system of one or more computers may be configured to perform a particular operation or action by means of installing software, firmware, hardware, or a combination thereof on the system, which, in operation, causes or causes the system to perform an action. One or more computer programs can be configured to perform specific operations or actions by means of instructions that, when executed by a data processing device, cause the device to perform the actions.
[0027] The foregoing and other embodiments may each optionally include one or more of the following features, individually or in combination. The method may include receiving a request for an object model across a network; and in response to receiving the request for the object model, transmitting an optimized 3D model of the object to a device and using the network. The method may include, after sending an optimized 3D model of a smaller size to the device, determining to send a 3D model of a larger size to the device; and in response to determining to send a 3D model of a larger size to the device, sending the 3D model to the device.
[0028] In some implementations, determining to send a 3D model of a larger size to the device may include determining that the usage across the network and the network connection between the system and the device is less than a threshold. Sending the 3D model to the device may be in response to determining that the usage across the network and the network connection between the system and the device is less than a threshold. Determining to send a 3D model of a larger size to the device may include receiving a request for a 3D model of a larger size. Sending the 3D model to the device may be in response to receiving a request for a 3D model of a larger size.
[0029] In some implementations, generating an optimized 3D model may include, for each of one or more non-focal regions, reducing the quality of one or more textures, one or more meshes, or both included in the corresponding non-focal region from the quality of one or more textures, one or more meshes, or both included in the corresponding non-focal region in the 3D model. Reducing the quality of one or more textures, one or more meshes, or both included in the corresponding non-focal region from the higher resolution of one or more textures, one or more meshes, or both included in the corresponding non-focal region in the 3D model may include: for each of one or more non-focal regions, reducing the resolution of one or more textures, one or more meshes, or both included in the corresponding non-focal region from the higher resolution of the one or more textures, one or more meshes, or both included in the corresponding non-focal region.
[0030] In some implementations, identifying one or more non-focal regions from two or more regions may include identifying one or more textures, one or more meshes, or one or more quadrants as one or more non-focal regions; and generating an optimized 3D model may include using the identified one or more textures, or the identified one or more meshes, or the identified one or more quadrants to generate an optimized 3D model for objects of smaller size than the larger size of the 3D model.
[0031] In some implementations, determining that each point on an object has at least a threshold probability of being a focus may include: retrieving data of multiple images of the object from memory, each image depicting at least a portion of a view of the object generated on a display for presentation to a viewer; determining one or more potential focuses for each of the multiple images; and selecting each potential focus having at least a threshold probability of being a focus from the one or more potential focuses for the multiple images and treating it as a plurality of points.
[0032] In some implementations, selecting potential focal points, each having at least a threshold probability of being a focal point, may include: i) selecting a first subset of potential focal points from a plurality of potential focal points depicted in a first image of a plurality of images; ii) each potential focal point in the first subset having at least the threshold probability of being a focal point; and a) determining a second subset of potential focal points to skip from the plurality of potential focal points depicted in the first image of a plurality of images; b) each potential focal point in the second subset not having at least the threshold probability of being a focal point.
[0033] In some implementations, each of the potential focal points may include an estimated point from a corresponding image among multiple images, on which a viewer viewing the presentation of an object on a display may focus. Selecting each potential focal point having at least a threshold probability of being a focal point from one or more potential focal points among multiple images may include weighting at least one of the one or more potential focal points using the distance of the potential focal point from the center of the corresponding image. A first potential focal point that is closer to the center of the corresponding image has a higher weight than a second potential focal point that is farther from the center of the corresponding image.
[0034] In some implementations, the method may include: receiving data for one or more images from a device that renders a model of an object on a display and across a network; and storing data for one or more images from the plurality of images in memory.
[0035] In some implementations, determining one or more potential focal points for each of multiple images may include: for each of the multiple images, projecting one or more rays onto the object from a direction represented by the camera that will generate the corresponding image; and for each of the one or more rays, selecting the point where the ray intersects the object as the corresponding focal point. Projecting one or more rays onto the object for each of the multiple images and from a direction represented by the camera that will generate the corresponding image may include: for each of the multiple images: determining one or more regions within which rays are generated; and for each of the one or more regions, randomly generating a ray projected onto the object.
[0036] In some implementations, for each of multiple images, determining one or more regions within which rays are generated may include determining an angular deviation range for a reference point within each of the one or more regions. For each of the one or more regions, randomly generating rays projected onto an object may include: for each of the one or more regions, randomly selecting an angular deviation within the angular deviation range; and generating the ray with the randomly selected angular deviation. The reference point may include the position of the camera from which the corresponding image will be generated. Determining an angular deviation range for each of the one or more regions may include: for each of the one or more regions, using the distance of the region from the center of the corresponding image to determine the magnitude of the angular deviation range.
[0037] In some implementations, selecting each potential focus having at least a threshold probability of being a focus from one or more potential focuses of multiple images may include: for one or more points on an object, determining the number of times a point is a potential focus for the corresponding image; and selecting potential focuses whose corresponding quantities satisfy a threshold quantity as multiple points. Selecting potential focuses whose corresponding quantities satisfy a threshold quantity as multiple points may include: for one or more points on an object, using the highest number of times a point on the object is a potential focus to determine a normalization quantity; and selecting potential focuses whose corresponding normalization quantities satisfy a threshold as multiple points. Determining each of the multiple points on an object having at least a threshold probability of being a focus may include determining each of the multiple points on the object with a weight that satisfies a threshold weight.
[0038] In some implementations, the first region and the second region may each have a first texture; a third region from two or more regions may have a second texture different from the first texture; and identifying one or more focal regions from two or more regions may include identifying the first region as a focal region comprising points among a plurality of points that have at least a threshold probability of being a focal point. The second region may exclude any point from the plurality of points that each has at least a threshold probability of being a focal point. An optimized 3D model of an object generated using one or more focal regions may include an optimized 3D model of an object generated using one or more focal regions, wherein the first region has higher quality and the second region has higher quality than the lower quality of the third region.
[0039] In some implementations, the method may include determining that the second region does not include any point from a plurality of points that has at least a threshold probability of being a focal point. Identifying one or more focal regions from two or more regions may include identifying one or more textures, one or more meshes, or one or more quadrants as one or more focal regions; and generating an optimized 3D model may include using the identified one or more textures, or the identified one or more meshes, or the identified one or more quadrants to generate an optimized 3D model for objects having a smaller size than a larger size than the 3D model.
[0040] The subject matter described in this specification can be implemented in various embodiments and can produce one or more of the following advantages. In some implementations, generating a smaller, optimized 3D model can enable the modeling system to reduce the storage requirements of the 3D model, reduce network usage (e.g., when transferring the 3D model to another device or system), or both. By optimizing the 3D model, the time it takes to load the 3D model onto the device screen can be reduced. The device can initially load a smaller, optimized 3D model containing higher-resolution data only for the non-optimized areas and lower-resolution data for the optimized areas. The device can then optionally load higher-resolution data for the 3D model, for example, when the device later receives a higher-quality 3D model from the modeling system. This can improve loading time, improve 3D model quality, for example, by maintaining certain areas with high focus at higher resolution instead of using a 3D model that includes only lower-resolution content, and reduce the bandwidth required to transfer 3D model data, for example, from the modeling system to the device (or a combination of two or more of these). In some implementations, the modeling system can determine to use a smaller 3D model when low network quality is detected on the device accessing the 3D model. For example, a modeling system can determine that a device accessing a webpage on a 3G network should receive a lower-quality 3D model compared to a device accessing a webpage on a Wi-Fi connection.
[0041] In some implementations, the modeling system can determine the combination of lower-quality and higher-quality 3D data to use. For example, based on prior data collection, the modeling system can selectively load this combination of lower-quality and higher-quality 3D data before the start of a viewing session. Similarly, based on viewer interaction, the modeling system can selectively load and / or update this combination of lower-quality and higher-quality 3D data during the viewing session. This technique can improve device loading times, for example, when accessing web pages on a lower-quality network.
[0042] Details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the following description. Other features, aspects, and advantages of this subject matter will become apparent from the description, drawings, and claims. Attached Figure Description
[0043] Figure 1 This is an example of an environment used to generate optimized 3D models.
[0044] Figure 2 This is a flowchart of the process used to generate an optimized 3D model.
[0045] Figure 3 It is a diagram of an example environment that includes a 3D model with two rays projected from the image.
[0046] Figure 4 This is an example graph depicting a heatmap of aggregated viewing data from a processed 3D model.
[0047] Figure 5 This is an example image of an optimized 3D model with both high and low resolution areas.
[0048] Figure 6 It is a block diagram of a computing system that can be used in conjunction with the computer-implemented methods described in this document.
[0049] The same reference numerals and names in each figure indicate the same elements. Detailed Implementation
[0050] Figure 1 This is an example of an environment 100 used to generate optimized 3D models. A 3D model is a three-dimensional representation of an object in 3D space. Environment 100 has two components: a modeling system 105 and a device 115. The modeling system 105 can generate 3D models, optimize 3D models, or both. The device 115 can display 3D models, optimized 3D models, or a combination of both on a display 120 at different times. Environment 100 may include a network 110 that can transfer 3D models between the modeling system 105 and the device 115.
[0051] exist Figure 1 In this example, modeling system 105 can receive model request 125 from device 115 via network 110. Model request 125 is a request from modeling system 105 to device 115 to send a 3D model 130 so that device 115 can display the 3D model 130 on display 120. In this example, modeling system 105 receives model request 125 to send a 3D model 130 of a camera to device 115.
[0052] The modeling system 105 can store 3D models in a database, such as any suitable type of database. The 3D model can be 3D model 135, such as a non-optimized 3D model, an optimized 3D model 140, or both. An example of an optimized 3D model 140 is a 3D model 130 of a camera. 3D model 135, optimized 3D model 140, or both can include regions.
[0053] To give just a few examples, a region of a 3D model can be one or more textures, one or more meshes, quadrants, or other components of the 3D model. A region can be, for example, a perspective view of the 3D model, such as a left-side view or a right-side view. For instance, when a perspective view is a region, it can include the textures and meshes of the 3D model shown in a specific perspective view that a viewer might focus more on than other textures and meshes of the 3D model. For a 3D model 130 of a camera, a region can be, for example, a front view, a right-side view, a left-side view, a top view, a bottom view, and a rear view of the camera.
[0054] In some examples, a perspective view may include one or more regions. Each region may be included in one or more perspective views. Each perspective view may include, for example, one or more regions that may be included in other perspective views.
[0055] For an example 3D model of a camera, such as an image of the 3D model presented to a viewer, it could depict a left-hand view including the shutter release button. The image might also include the texture of the lens. The image might not include any texture of the zoom operator on the right side of the 3D model, for example, if those textures are located behind other areas of the 3D model, such as the lens. In this example, the perspective view (e.g., as an area) could include the shutter release button and the lens, but not the zoom operator, because the zoom operator is not depicted in the image.
[0056] Each region of a 3D model may include one or more textures. 3D models 130 and 135 may include any appropriate number of textures, for example, determined during the generation of 3D models 130 and 135. Textures may be image files containing visual details applied to polygons within 3D model 135. For example, the texture on the front region of the camera's 3D model 130 may be an image of the camera lens. The texture on the top region of the camera's 3D model 130 may be an image of the camera's flash mount.
[0057] Each region of 3D models 130 and 135 can include one or more meshes. A mesh can be a polygon, such as a triangle, defined by a set of points in 3D space defined by 3D axes. One or more textures can be applied to each mesh, i.e., wrapped around each mesh. A larger number of meshes can improve image resolution.
[0058] Modeling system 105 may include a focusing device 145. Focusing device 145 can determine the focus of 3D model 135, as discussed in more detail below. The focus can be an estimated point on the 3D model, for example, based on an image displayed to a viewer, on which one or more viewers viewing the 3D model may focus. For example, when a viewer of a 3D model 130 of a camera is shown the top area of the camera, including the viewfinder, and separately the bottom area of the camera, including the battery compartment, the modeling system 105 can determine, for example, that the 3D model has two focuses for that viewer. The first focus may be on the viewfinder, and the second focus may be on the battery compartment. Modeling system 105 can determine the focus using, for example, the center point of an image presented on a display. In some implementations, there may be no eye tracking of the viewer.
[0059] Modeling system 105 (e.g., focus device 145) may store identified focal points in focus database 150. Each focal point corresponds to (e.g., included in) a region of 3D model 135. Focus database 150 may include a map indicating the region of 3D model 135 corresponding to each identified focal point. Focus database 150 may include data on each potential focal point of 3D model 135 or an appropriate subset of potential focal points of 3D model 135, for example, when modeling system 105 determines that only a few potential focal points are possible for the viewer.
[0060] The modeling system 105 can classify regions of the 3D model 135 based on the focal points corresponding to those regions. For example, it can store data in a focal point database 150 indicating whether a region is a focal region 155 or a non-focal region 160. The database 150 may include data for only the focal region 155, only the non-focal region 160, or both.
[0061] Modeling system 105 can use any suitable method to determine the focal region 155, the non-focal region 160, or both. In some implementations, modeling system 105 can determine the weight of each focal point and classify the region using the weights of the focal points in that region, as discussed in more detail below. In some examples, modeling system 105 (e.g., focal device 145 or model optimization device 165) can classify a region of 3D model 135 containing more than a threshold number of focal points as the focal region 155. Modeling system 105 (e.g., focal device 145 or model optimization device 165) can classify a region of 3D model 135 containing fewer than a threshold number of focal points as the non-focal region 160. For example, the focal region 155 of the 3D model 130 of a camera might be the front of the camera, which may include the focal points of the lens and zoom ring. Each of the lens and zoom ring may have multiple possible focal points, for example, based on the size of the lens and zoom ring, the amount of texture, or both. If the bottom of the camera contains fewer than a threshold number of focal points, then the non-focal area 160 of the camera's 3D model 130 can be the bottom of the camera.
[0062] The threshold number of focal points can be any suitable threshold. For example, modeling system 105 can determine the threshold number of focal points using the size of the 3D model (e.g., in bytes or dimensions, the number of textures in the 3D model, the number of meshes, or both, or a combination of two or more of these). The threshold number of focal points can be determined as a function of the total number of focal points in the 3D model. For example, a 3D model with more focal points will have a higher threshold number of focal points compared to a 3D model with fewer focal points. This function can be linear or non-linear. Additional details regarding focal point analysis are described below.
[0063] In some implementations, modeling system 105 can identify potential focal points. As described in more detail below, modeling system 105 can use potential focal points to determine whether a region should be classified as a focal region 155 or a non-focal region 160. For example, non-focal region 160 may have a threshold value less than or greater than a potential focal point minimum. Focal region 155 may have a threshold value not less than or greater than a potential focal point minimum.
[0064] The model optimization device 165 uses focal points within the focal database 150, the regions corresponding to those focal points, or both, to generate an optimized 3D model 140 that is smaller in size compared to the 3D model 135. When measured in data size (e.g., in megabytes, resolution, or both), the optimized 3D model 140 can be smaller than the 3D model 135.
[0065] To generate an optimized 3D model 140, the model optimization device 165 can reduce the texture quality within the non-focal region 160. To reduce the texture quality within the non-focal region 160, the model optimization device 165 reduces the resolution of each texture in the non-focal region 160 from the higher resolution of the corresponding texture in the 3D model 135. The model optimization device 165 can use any appropriate method to reduce the texture resolution. By reducing the texture quality in the non-focal region 160, the model optimization device 165 produces an optimized region 170.
[0066] The model optimization device 165 can process data in the focal region 155 or determine to skip processing data in the focal region 155 of the 3D model 135. For example, the model optimization device 165 may not degrade the quality of the texture within the focal region 155; for instance, the model optimization device 165 may determine not to process the texture in the focal region 155. In some examples, the model optimization device 165 may reduce the texture quality of the focal region 155 by less than the amount by which the model optimization device 165 reduces the texture quality of the non-focal region 160. This ensures that the texture in the focal region 155 may have a higher quality than the texture in the non-focal region 160. The focal region 155 becomes the non-optimized region 175 within the optimized 3D model 140.
[0067] The optimized 3D model 140 includes optimized region 170 and non-optimized region 175. The model optimization device 165 stores the optimized 3D model 140 in non-volatile memory within the modeling system 105. Because the texture within the optimized region 170 has reduced quality, such as resolution, the optimized 3D model 140 is smaller than the 3D model 135.
[0068] The modeling system 105 can generate an optimized 3D model 140 from the 3D model 135 at any appropriate time. For example, the modeling system 105 can generate the optimized 3D model 140 upon receiving viewer data, such as data used to determine focus. In some examples, the modeling system 105 can generate the optimized 3D model 140 upon receiving a model request 125.
[0069] In response to receiving a model request 125, the modeling system 105 can use network 110 to send an optimized 3D model 140 (e.g., as 3D model 130) to device 115. Device 115 can then display the 3D model 130 on display 120. The rendering of the 3D model 130 on display 120 shows a 3D model 130 of a camera with higher resolution texture in the non-optimized region 175 and lower resolution texture in the optimized region 170. For example, the front view of the camera may correspond to the non-optimized region 175 and have a higher resolution, while the bottom view of the camera may correspond to the optimized region 170 and have a lower resolution.
[0070] In some implementations, the non-optimized region 175 may be loaded before the optimized region 170 during rendering on the display 120. For example, the 3D model 130 (as an optimized 3D model 140) may include loading data indicating the order in which the rendering device should load the regions of the 3D model 130 for rendering. The loading data may instruct the rendering device (e.g., device 115) to load the non-optimized region 175 first, such as the front of the camera, and then load the optimized region 170, such as the bottom of the camera.
[0071] After sending the optimized 3D model 140 to device 115, modeling system 105 can determine whether to send a higher-quality 3D model 135 to device 115. The determination to send the 3D model 135 to device 115 can be based on the size of the 3D model 135, the usage of network 110 between modeling system 105 and device 115 (e.g., network 110 bandwidth), or both. If network 110 has usage below a threshold and has available bandwidth, modeling system 105 can send a larger 3D model 135 to device 115.
[0072] By optimizing the 3D model, the time required to load the 3D model onto the display 120 of device 115 can be reduced. Device 115 can initially load a smaller, optimized 3D model 140, which contains high-resolution data only of the non-optimized region 175 and low-resolution data of the optimized region 170. Then, for example, when device 115 later receives a higher-quality 3D model 135 from modeling system 105, device 115 can optionally load the high-resolution data of 3D model 135. This can improve loading time, improve 3D model quality, for example, by maintaining certain areas with higher focus at higher resolution instead of using a 3D model that only includes lower-resolution content, and reduce the bandwidth required for transmitting 3D model data (e.g., from modeling system 105 to device 115, or a combination of two or more of these).
[0073] In some implementations, the regions of the 3D model 130 may include a combination of high-resolution and low-resolution data. For example, the 3D model 130 may include a combination of high-resolution and low-resolution data for some regions. In some examples, the 3D model 130 may include a combination of high-resolution and low-resolution data for each region within a region.
[0074] High-resolution data may include more and / or smaller grids for a region, while low-resolution data may include fewer and / or larger grids for a region. Based on viewer interaction, available network bandwidth, and available processing resources, or a combination of two or more of these, the system (e.g., the rendering system on device 115) can select and use high-resolution or low-resolution data for individual regions of the 3D model 130. The system can dynamically change the quality of a region before or during a viewing session, for example, based on whether high-resolution or low-resolution data is used.
[0075] In some implementations, the modeling system 105 can simultaneously send low-resolution and high-resolution data for some regions, send low-resolution and high-resolution data for some regions as needed, send some low-resolution data for some regions and then send some high-resolution data, or a combination of two or more of these. The subsequent high-resolution data can be sent all at once or in a separate message. For example, the 3D model 130 may initially load a region at low resolution. When the device 115 renders the 3D model 130, the device 115 can replace the low-resolution data with high-resolution data, for example, to improve the quality of the content rendered on the display 120. In this way, the device 115 can dynamically update the 3D model 130 during rendering.
[0076] In some implementations, the modeling system 105 may determine focus weights, for example, using viewer data, session browsing behavior, or both, for a viewer session. Determining viewer session-specific focus weights allows the modeling system 105 to dynamically configure regions of the 3D model 130 specific to that viewer session, such as the capabilities of device 115, network connectivity to requesting device 115, specific content presented by requesting device 115, or a combination of two or more of these. For example, for some regions, the modeling system may dynamically determine low-resolution data, medium-resolution data, high-resolution data, or a combination of two or more of these based on focus weights. In some implementations, the modeling system may generate and cache pre-built versions of the 3D model 130 based on focus weights and select one of these pre-built versions of the 3D model 130 for an individual viewer and / or an individual viewing session.
[0077] For example, if device 115 presents multiple different 3D models within a category, such as shirts, during a browsing session, modeling system 105 can dynamically configure regions of the shirt's 3D model 130 based on the content presented during the browsing session, such as a specific viewpoint of the multiple different 3D models presented during the browsing session. Modeling system 105 can send low-resolution data of the shirt region, including low-weight focus areas, for the session. Modeling system 105 can also send high-resolution data of the shirt region, including high-weight focus areas, for the session.
[0078] In some implementations, the 3D model 130 may include multiple regions having the same texture or multiple textures. For example, when the 3D model 130 of a camera includes a lens, the 3D model 130 may include a first region with a specific texture located at the top of the lens and a second region with a specific texture located at the bottom of the lens. The modeling system 105 may determine to optimize a repeating texture (e.g., a specific texture) in a specific individual region (e.g., the bottom of the lens) or in all regions including the repeating texture. In some examples, the modeling system 105 may optimize a repeating texture only if the repeating texture is not included in the focal region 155. In some implementations, if a specific texture is located in one or more focal regions 155 (e.g., the top of the lens), the modeling system 105 may determine not to optimize the repeating texture, such as the specific texture.
[0079] Modeling system 105 is an example of a system implemented as a computer program on one or more computers at one or more locations, wherein the systems, components and technologies described in this document are implemented. Device 115 may include a personal computer, a mobile communication device, augmented reality (“AR”) goggles, virtual reality (“VR”) goggles, and other devices that can send and receive data via network 110. Network 110 (such as a local area network (LAN), wide area network (WAN), Internet, or a combination thereof) connects device 115 and modeling system 105.
[0080] Modeling system 105 can use a single server computer or multiple server computers operating in conjunction with each other, including, for example, a group of remote computers deployed for cloud computing services. Modeling system 105 may include several different functional components, including a focus device 145 and a model optimization device 165. The various functional components of modeling system 105 may be installed on one or more computers as separate functional components or as different modules of the same functional component. For example, the focus device 145 and model optimization device 165 of modeling system 105 may be implemented as computer programs installed on one or more computers coupled to each other via a network in one or more locations. For example, in a cloud-based system, these components may be implemented by individual computing nodes of a distributed computing system.
[0081] Figure 2 This is a flowchart of process 200 for generating an optimized 3D model. For example, process 200 can be used by modeling system 105 from environment 100. In some examples, some steps of process 200 may be performed in modeling system 105 by focus device 145, model optimization device 165, or both.
[0082] The modeling system retrieves image data of objects from memory, each image depicting at least a portion of a view of the object generated on a display for presentation to a viewer (202). For example, the image data may be the position, orientation, focal length, or a combination of two or more of these of a virtual camera. In some examples, the image data may be, for example, the position and orientation of the object relative to a virtual camera.
[0083] An object may have two or more regions, each of which may include one or more textures. An image of the object may depict portions of a view of the object shown to a viewer, portions of a view of the object shown to multiple viewers, or both. For example, a modeling system or another system may provide a 3D model of the object to the device. The device may use the 3D model to render one or more views of the object. The device may acquire data representing these views, for example, as images.
[0084] For a 3D model of a camera, the regions can be, for example, the front region, right region, left region, top region, bottom region, and rear region of the camera. An example texture for the top region of the camera's 3D model could be an image of the camera flash mount, while an example texture for the bottom region of the camera's 3D model could be an image of the battery compartment.
[0085] During the example viewer interaction, the first viewer can view a top area including the flash mount texture and a bottom area including the battery compartment texture. Compared to the first viewer, the second viewer can view only the top area, including the flash mount texture, from a different angle. The modeling system can obtain first data for the top and bottom views from the first viewer interaction, and second data for the top view from the second viewer interaction.
[0086] In some examples, the images can come from multiple viewer sessions. For instance, a first viewer may view the 3D model of the camera during a first session. A second viewer, or the first viewer, may view the 3D model of the camera during a second session, different from the first session.
[0087] In some implementations, the image data can come from viewer sessions within a studio, such as a physical VR studio. For example, a viewer could participate in a VR experience where they can view and interact with a 3D model of a product, such as in a retail store.
[0088] In some implementations, the system can randomly generate various combinations of meshes and textures, such as potentially optimized meshes, textures, or both. The system can display these combinations to a viewer and receive feedback data. In some examples, the system can collect load time data for several combinations of meshes and textures. The modeling system can use this data to determine the mesh and texture combinations to optimize.
[0089] For each image, the modeling system determines one or more potential focal points (204). Each potential focal point can be an estimated point in a corresponding image from an image on which a viewer viewing an object presented on a display might focus. The estimated point can be a point in the image, a point on the 3D model, or both. The modeling system can identify potential focal points using, for example, a focusing device 145 from environment 100.
[0090] To identify potential focal points, a modeling system can project one or more rays from an image of a 3D model of an object onto the 3D model. The modeling system can project rays using the position, orientation, focal length, or a combination of two or more of these of a virtual camera. The modeling system can determine potential focal points using the position, orientation, and / or focal length of the virtual camera; the position and / or orientation of the 3D model; or both. An image of the 3D model of the object can depict the field of view of the 3D model, such as a portion of the 3D model. For example, in a virtual world that includes a 3D model, the modeling system projects rays from an image from a direction represented by a virtual camera, which will generate a corresponding image for the viewer (e.g., for the field of view of the corresponding image).
[0091] Figure 3 This is a diagram of an example environment 300 including a 3D model 302 with two rays 304 projected from image 305. The modeling system can use the environment 300 of one or more images in image 305 to determine potential focal points.
[0092] For example, for each image, the modeling system can determine one or more regions 306, 308, within which one or more rays 304 are generated. To determine the regions 306, 308 within which rays 304 are generated, the modeling system can identify one or more reference points, distances to reference points, or both, to define the corresponding regions. The modeling system can use the center of image 305 as a reference point. In some examples, the modeling system can use a point in the left third of image 305 as a reference point, such as a point centered on the left third of the image. In some examples, the modeling system can use the position of a virtual camera, which can be used to create image 305 to determine reference points. For example, the modeling system can use the position of a virtual camera relative to image 305, 3D model 302, or both to determine reference points.
[0093] The modeling system can define any appropriate number of regions. For example, the first region 306 can be circular and centered in image 305. The second region 308 can be circular and centered in image 305, for example, having the same center 310 as the first region 306. The second region 308 can be non-overlapping with the first region 306; for example, the second region 308 can be an annular shape with a hole defined by the first region 306.
[0094] The modeling system can project rays from image 305 toward model 302 in front of the camera at any suitable angle. For example, the modeling system can determine the angular deviation range within which ray 304 is generated based on the regions 306, 308 from which it is projected. The modeling system can use the distance of the region from the center 310 of image 305 to determine the size of the angular deviation range. In some examples, regions closer to the center 310 may have a smaller angular deviation range than regions farther from the center 310. The modeling system can randomly select an angular deviation 312 within the angular deviation range and generate ray 304 with the randomly selected angular deviation 312. The modeling system can select the point where the ray intersects with the 3D model 302 for each ray 304 as the corresponding potential focal point 314.
[0095] The potential focus 314 can be any suitable size. The modeling system can select the size of the potential focus based on the resolution of the 3D model 302, the size of the 3D model, or any other suitable data. For example, the potential focus can be smaller or larger than... Figure 3 The potential focus depicted in the text is 314.
[0096] Return to reference Figure 2 For each potential focus, the modeling system determines whether it has at least a threshold probability of being a focus (206). The modeling system can classify potential focuses that have at least a threshold probability of being a focus as focuses. For example, the modeling system can store the data in a memory that classifies potential focuses as focuses, such as a database implemented on the memory.
[0097] To select a potential focus 314 that has at least a threshold probability of being a focus, the modeling system can weight the potential focus 314 using either the distance 316 from the ray projected from the center 310 of the image 305 (e.g., where the ray has no angular deviation) or the distance 316 from the ray 304 used to determine the distance of the potential focus 314 from the center 310 of the image 305. For example, a potential focus 314 that is closer to the center 310 of the corresponding image can have a higher weight than a potential focus 314 that is farther away from the center 310 of the image 305.
[0098] For example, when a viewer interacts with the camera's 3D model, the system can predict that the viewer will focus on the center 310 of the image 305 displayed on the screen. The system can also predict that the viewer will focus on a point displayed towards the edge of the screen. Compared to a second point farther from the image's center 310, the system can determine that a first point closer to the corresponding image's center 310 is more likely to be the point the viewer focuses on. Therefore, the system can assign a higher weight to the first point than to the second point.
[0099] The probability that a point is a focal point can be based on the number of images in which the point is a potential focal point 314 during viewer interaction, the distance 316 between the potential focal point 314 and the center 310 of the image during viewer interaction, the weight of the potential focal point 314, or a combination of two or more of these.
[0100] For example, the first point might be displayed in the center 310 of ten images during viewer interaction. A second point located at a distance 316 from the center 310 of the ten images might have a lower probability of being the focal point compared to the first point. Similarly, a third point, located in the center 310 of only five images, might have a lower probability of being the focal point compared to the first point. Alternatively, a fourth point located in the center 310 of twenty images might have a higher probability of being the focal point compared to the first point.
[0101] In some implementations, the modeling system can generate weights for potential foci. For example, the modeling system can generate a weighted focus chart, a weighted region chart, or both. The modeling system can generate weights, as described above, and create a chart that includes the weights. The chart can represent the 3D model and include the weight of each potential focus in the 3D model. For example, the chart can include weights for meshes, vertices, edges, or a combination of two or more of these.
[0102] A modeling system can use weight thresholds to determine the probability that a potential focus, a region containing a potential focus, or both are a focus or a focus region. When the modeling system uses weights between 0 and 1 (inclusive), the weight threshold can be 0.25. A weight satisfies the threshold weight when it is greater than or equal to the threshold weight, or when the weight is greater than the threshold weight. In some examples, a weight satisfies the threshold weight when it is less than or equal to the threshold weight, or when the weight is less than the threshold weight, for example, when a lower value indicates a higher probability of being a focus.
[0103] For example, when the weights of potential foci meet a weight threshold, the modeling system can determine that a potential foci is a foci. When the weights of potential foci included in a region meet a weight threshold, the modeling system can determine that the region is a focal region. In some examples, when a region includes multiple potential foci, the modeling system can compare the combination of the weights of the multiple potential foci to a weight threshold. For example, the modeling system can compare the average weight or the sum of the weights to a weight threshold. The modeling system can use multiple weight thresholds when applying different levels of optimization to each weight threshold.
[0104] In some implementations, the modeling system can cluster the average weights to determine focal points. For example, the modeling system can determine a set of weights, each satisfying a weight threshold and being within a threshold distance from each other or from other points in the group. The modeling system can determine the center of the weight cluster, such as the point closest to the center, and classify the center as a focal point. The modeling system can use the focal point as a focal region, classify a larger region surrounding the focal point as a focal region, or both.
[0105] In some implementations, the modeling system can use network bandwidth, device-specific capabilities, or both to generate weights, determine weight thresholds, or both. For example, when the available network bandwidth for a device requesting a 3D model is lower than that available network bandwidth, the modeling system can choose a higher weight threshold to determine the focus and focus area. Similarly, the modeling system can choose a higher weight threshold for a device with less processing power than for a device with more processing power. This will result in fewer focuses and a more optimized area.
[0106] In some implementations, the modeling system can cluster potential focal points to determine whether a point meets a threshold for being a focal point. For example, the modeling system can use potential focal points to generate aggregated viewing data. The modeling system can use the aggregated viewing data to determine whether a potential focal point has at least the threshold probability of being a focal point. For example, the modeling system can perform clustering analysis by creating heatmaps of the 3D model. The heatmap can use various patterns, shadows, colors, or all of these to represent regions of the 3D model to distinguish areas that viewers pay more attention to compared to other areas.
[0107] In some implementations, the modeling system can perform clustering of 3D coordinate paths on or around a 3D model. A 3D coordinate path is a path between one or more points in 3D space defined by 3D axes (e.g., x, y, and z axes). The modeling system can determine one or more coordinate paths based on an image presented on a display. For example, image data can instruct the device to present an image centered at coordinate points p1 = (x1, y1, z1), p2 = (x2, y2, z2), and then p3 = (x3, y3, z3). Using this data, the modeling system can determine coordinate paths that include points p1, p2, and then p3. The modeling system can determine multiple coordinate paths for different viewer sessions.
[0108] Modeling systems can classify regions of a 3D model using coordinate paths. For example, a modeling system can identify regions of a 3D model with clusters containing fewer coordinate paths as non-focal regions, and regions of a 3D model with clusters containing more coordinate paths as focal regions.
[0109] The modeling system can aggregate multiple coordinate paths, such as those from multiple viewers or multiple viewing sessions, to create a path for a 3D focal density cone. The 3D focal density cone can represent the optimal viewpoint for presenting an image of a 3D model. A path can include multiple 3D focal density cones, each representing the optimal viewpoint for a different part of the 3D model. The modeling system can determine the regions included in the 3D focal density cone. The modeling system can classify the regions included in the 3D focal density cone as focal regions, determine optimizations to skip these focal regions, or both. The modeling system can classify the regions not included in the 3D focal density cone as non-focal regions, optimize these non-focal regions, or both.
[0110] Figure 4 This is an example diagram of a heatmap 400 depicting aggregated viewing data of a processed 3D model. Heatmap 400 may represent the number of times each point in the 3D model is a potential focal point, the weight of a potential focal point, or both. For example, each point in the darkest shadow region 402 of the 3D model may satisfy at least a first threshold probability of being a potential focal point. The threshold probability may be a quantity (e.g., a large number of images consider this point a potential focal point) or a percentage (e.g., 10.25% of images consider this point a potential focal point), to name just a few examples. Each point in the 3D model in the medium shadow region 404 does not satisfy the first threshold probability but satisfies a second threshold probability of being a potential focal point. For example, each point in the medium shadow region 404 may have a percentage greater than the lower threshold but less than the higher threshold, such as being a potential focal point in more than 15% but less than 25% of images. Each point in the lightest shadow region 406 of the 3D model does not satisfy either the second threshold probability or the first threshold probability. In some examples, heatmap 400 may include only one threshold probability or more than two threshold probabilities.
[0111] Because the points in the lightest shaded region 406 do not satisfy the second threshold probability of potential focus, the modeling system can classify the lightest shaded region 406 as a non-focal region. Because regions 402 and 404 satisfy one or both of the first and second threshold probabilities, the modeling system can classify the darkest shaded region 402 and the medium shaded region 404 as focal regions.
[0112] When a modeling system has multiple threshold possibilities, it can include multiple "focal region" classifications. For example, the modeling system can use a medium focal region classification for the medium shadow darkness region 404 and a high focal region classification for the darkest shadow region 402.
[0113] The modeling system can classify regions, points, or both. For example, the modeling system can classify points in the lightest shaded region 406 as non-focal, either together with or apart from classifying the lightest shaded region 406 as a non-focal region. The modeling system can classify points in the darkest shaded region 402 as focal, either together with or apart from classifying the darkest shaded region 402 as a focal region.
[0114] The modeling system can normalize the value of each point in a 3D model. For example, the modeling system can determine the highest value of a point in a 3D image, such as the highest number of times a point is a potential focal point. The modeling system can use the highest number of times to normalize the value of each point in the 3D model. For example, when the first point in the 3D model is a potential focal point in one hundred images, and the second point in the 3D model is a potential focal point in 63 images, the modeling system can assign the first point a normalized value of 1.0 and the second point a normalized value of 0.63. The modeling system can use the normalized values to generate heatmaps.
[0115] In some examples, from a plurality of potential foci, the modeling system may select or determine to skip the selection of a first subset of potential foci, each potential foci having at least a normalized threshold probability of being a focus. The first subset of potential foci may include points in the darkest shaded region 402. The modeling system may select or determine to skip the selection of a second subset of potential foci 314 that do not have at least a threshold probability of being a focus. The second subset of potential foci may include points in the lightest shaded region 406. The modeling system may store the selected foci in, for example, a focus database 150 of environment 100.
[0116] return Figure 2 In response to determining that a potential focus does not have at least a threshold probability of being a focus, the modeling system classifies a potential focus as not a focus (208). For example, refer to Figure 4 The modeling system determines that each point in the lightest shaded region 406 is not a focal point. To classify potential focal points as non-focal, the modeling system can choose to skip the selection of potential focal points. When selecting potential focal points, the modeling system can select a set of potential points, each of which is not a focal point.
[0117] The modeling system determines to optimize non-focal regions (210) by reducing the resolution of textures included in the non-focal regions. The modeling system can optimize the non-focal regions using, for example, a model optimization device 165 of environment 100. The modeling system can determine the optimization of non-focal regions by reducing the resolution of textures included in the non-focal regions. For example, in... Figure 4In this modeling system, region 406 can be optimized by reducing the resolution of the textures included in region 406. By reducing the resolution of the textures included in region 406, the modeling system can reduce the required storage space, the bandwidth required to transmit data, or both, for points in region 406.
[0118] In response to determining that a potential focus has at least a threshold probability of being a focus, the modeling system classifies the potential focus as a focus (212). For example, refer to Figure 4 The modeling system determines that one or more points in the darkest shadow region 402 are focal points. To classify potential focal points as focal points, the modeling system can either select potential focal points as focal points or decide to skip the selection of potential focal points, for example, selecting only points that are not focal points. When selecting potential focal points, the modeling system can choose a set of potential focal points, where each is a focal point.
[0119] The modeling system determines optimizations that skip focal regions including points that are focal points (214). For example, in Figure 4 In this modeling system, it can determine to skip the optimization of regions 402 and 404 because regions 402 and 404 are focal regions including the points that are focal points. By skipping the optimization of regions 402 and 404, the modeling system maintains the high resolution of the texture in regions 402 and 404. Maintaining the high resolution of the content in regions 402, 404, or both can improve the visual rendering of the content in regions 402, 404, or both.
[0120] In some implementations, the modeling system can use a hierarchical approach to optimize regions of the 3D model. For example, region 404 has fewer focal points than region 402, but does include at least one focal point. The modeling system can reduce the resolution of the texture in region 404 to a resolution lower than the resolution of the texture in region 402 but higher than the resolution of the texture in region 406.
[0121] In some implementations, the modeling system can reduce the resolution of textures in all regions to varying degrees. For example, if available storage space, network bandwidth, or both are limited, the modeling system can determine to optimize or partially optimize both the focal and non-focal regions. For instance, the resolution of the texture in region 406 can be reduced to a resolution lower than the original 3D model resolution but higher than the optimized resolution of regions 404 and 406.
[0122] For any of the branches determined above at step 206, the modeling system can generate an optimized 3D model (216) using the focal and non-focal regions. For example, the modeling system can generate a 3D model with a higher resolution texture for the focal regions and a lower resolution texture (e.g., a reduced-resolution texture) for the non-focal regions. The modeling system can use data from the focal regions, data from the non-focal regions, or both to generate the 3D model. The combined focal and non-focal regions form an optimized 3D model with a smaller size than the original 3D model. In some examples, instead of generating an optimized 3D model or in addition to generating an optimized 3D model, the modeling system can store the data of the focal and non-focal regions in memory.
[0123] Figure 5 This is an example diagram of an optimized 3D model 500 with higher and lower resolution regions. Region 502 is a higher resolution region, such as corresponding to the focal region. In some examples, the modeling system does not optimize region 502 or has optimized region 502 to a smaller size than the lower resolution region. Therefore, region 502 can be the region with the highest resolution texture, or it may be one of several regions with the highest resolution texture. Due to partial optimization of the content depicted in region 504, region 504 is a region with a lower texture resolution than region 502. Region 504 may correspond to a focal region without the same resolution as region 502. Region 506 is, for example, the lowest resolution region corresponding to a non-focal region. The modeling system has optimized region 506 to give the 3D model 500 the lowest texture resolution. In the region with reduced resolution, the quality of one or more textures or other content is reduced compared to the quality of the corresponding texture or other content in the original 3D model. The resulting optimized 3D model 500 has a smaller size than the original 3D model.
[0124] A 3D model can have one or more regions of each type. For example, a 3D model can have two focal regions and three non-focal regions. The two focal regions can be discontinuous, for example, separated by one or more non-focal regions. Some or all of the three non-focal regions can be discontinuous, for example, separated by one or more of the two focal regions.
[0125] The modeling system stores the optimized 3D model in non-volatile memory (218). Generating a lower-quality optimized 3D model can enable the modeling system to reduce the storage requirements of the 3D model, reduce network usage (e.g., when transferring the 3D model to another device or system), or both.
[0126] The order of steps in process 200 above is illustrative only, and 3D model optimization can be performed in a different order. For example, when the modeling system stores the optimized 3D model in non-volatile memory (218), the modeling system may determine, for example, that the size of the optimized 3D model is still too large for transmission to the device, based on the available network bandwidth of the device requesting the 3D model. The modeling system can then determine additional regions of the optimized 3D model (210) by reducing the resolution of the textures included in the regions. The modeling system can then regenerate the optimized 3D model, including both focal and non-focal regions (216). In this example, the modeling system may choose the number of thresholds, the degree of optimization, or both based on the maximum size of the optimized 3D model.
[0127] In some implementations, process 200 may include additional steps, fewer steps, or may divide some steps into multiple steps. For example, the modeling system may perform steps 204, 208, 212, 216, and 218 without performing the other steps in process 200. In some examples, the modeling system may perform steps 204, 208, and 216 without performing the other steps in process 200.
[0128] In some implementations, the modeling system may acquire an image of an object depicting at least one view of the object generated on a display, to be presented to a viewer after one, several, or many viewer interactions (202). In some implementations, the modeling system may acquire an image of the object at specified time intervals. In some implementations, the modeling system may acquire an image of the object when triggered by an event. For example, the modeling system may acquire an image of the object upon receiving a model request (e.g., model request 125 from environment 100).
[0129] In some implementations, skipping the determination of the focus region (214) may include determining one or more focus regions to be optimized to different degrees. For example, the modeling system may determine focus regions that are partially optimized and include a small number of focal points. The modeling system may reduce the resolution of the texture of the focus region to a resolution lower than the texture resolution of a focus region with more focal points but higher than the texture resolution of the non-focus regions.
[0130] A modeling system can use any appropriate data indicating a portion of a view of an object generated on a display to present to a viewer, for example, instead of an image or as a supplement to an image. In some implementations, the device can acquire the coordinates of the 3D model, indicating the view of the model presented to the viewer. The modeling system can receive coordinate data from the device, such as xyz coordinate data. The modeling system can use the coordinate data for process 200.
[0131] In some implementations, the modeling system may use weight thresholds in conjunction with weighted focus charts, weighted region charts, or both, to determine what needs to be optimized. For example, the modeling system may overlay focus weights, regions, or both onto a 3D model to determine the hierarchy of meshes, textures, or both within regions of the 3D model. The modeling system can use the hierarchy of meshes, textures, or both to determine the meshes and textures of regions of the 3D model to optimize. For example, when the overlay indication region on the 3D model does not include any focus weights that satisfy the threshold weights, the modeling system may classify the region as, for example, a non-focus region related to steps 208 and 210. When the region includes focus weights that satisfy the threshold weights, the modeling system may classify the region as, for example, a focus region related to steps 212 and 214.
[0132] When overlaying regions onto a 3D model, the modeling system can first determine whether a region is a focal region or a non-focal region. The modeling system can then select a mesh, texture, or both from the overlaid 3D model included in, for example, the non-focal regions associated with steps 208 and 210 for optimization. The modeling system can determine whether to skip the selection or perform another appropriate process for the mesh, texture, or both included in the overlaid 3D model in, for example, the focal regions associated with steps 212 and 214.
[0133] In some implementations, the modeling system can be part of the device that renders the 3D model. For example, an application on the device (such as the modeling system) can dynamically render optimized or unoptimized areas of the 3D model. The application can include both a modeling system and a rendering system. In some examples, when the application is a web browser, the application can use JavaScript. The modeling system can intelligently pre-cachate data for 3D model areas using weighted focus (such as a weighted focus chart), render data for 3D model areas, or both.
[0134] For example, a modeling system can retrieve a 3D model from a server. The 3D model may include higher-quality data for the focal areas that will initially be rendered on the display. The 3D model may also include lower-quality data for non-focal areas that are not initially rendered on the display. The model may include high-quality data for the non-focal areas. In some examples, the modeling system may receive high-quality data for the non-focal areas, either upon request or separately from the model after receiving it.
[0135] When a device first renders a 3D model, it can use an optimized 3D model with higher-quality data for generating the image for the display and lower-quality data for generating parts of the 3D model that are not initially rendered. The lower-quality data might only include a mesh without any texture. When the device receives user input, it can dynamically determine which areas have a threshold probability of being displayed and render higher-quality data for those areas. The device can retrieve the higher-quality data for these areas from a cache, dynamically request higher-quality data from a server, or both.
[0136] Embodiments of the subject matter and functional operation described in this specification may be implemented in digital electronic circuits, in tangibly embodied computer software or firmware, in computer hardware (including the structures disclosed in this specification and their structural equivalents), or one or more combinations thereof. Embodiments of the subject matter described in this specification may be implemented as one or more computer programs, i.e., one or more computer program instruction modules encoded on a tangible, non-transitory program carrier, for execution by or control of the operation of a data processing device. Alternatively or additionally, program instructions may be encoded on artificially generated propagation signals, such as machine-generated electrical, optical, or electromagnetic signals, which are generated to encode information for transmission to a suitable receiver device for execution by the data processing device. The computer storage medium may be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or one or more combinations thereof.
[0137] The term "data processing apparatus" refers to data processing hardware and includes all kinds of devices, apparatuses, and machines for processing data, such as programmable processors, computers, or multiple processors or computers. The apparatus may also be or further include special-purpose logic circuitry, such as FPGAs (Field-Programmable Gate Arrays) or ASICs (Application-Specific Integrated Circuits). In addition to hardware, the apparatus may optionally include code that creates an execution environment for computer programs, such as code constituting processor firmware, protocol stacks, database management systems, operating systems, or combinations thereof.
[0138] A computer program (also referred to or described as a program, software, software application, module, software module, script, or code) can be written in any programming language, including compiled or interpreted languages, or declarative or procedural languages, and can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program may, but does not need to, correspond to a file in a file system. A program can be stored as a portion of a file containing other programs or data, for example, as one or more scripts stored in a markup language document, in a single file dedicated to the program in question, or in multiple harmonized files, for example, as a file storing one or more modules, subroutines, or portions of code. A computer program can be deployed to execute on a single computer or on multiple computers located at a single site or distributed across multiple sites and interconnected by a communication network.
[0139] The processes and logic flows described in this specification can be executed by one or more programmable computers that execute one or more computer programs to perform functions by manipulating input data and generating output. The processes and logic flows can also be executed by dedicated logic circuitry, and the devices can also be implemented as dedicated logic circuitry, such as FPGAs (Field-Programmable Gate Arrays) or ASICs (Application-Specific Integrated Circuits).
[0140] Computers suitable for executing computer programs include, for example, general-purpose or special-purpose microprocessors or both, or any other type of central processing unit. Typically, the central processing unit receives instructions and data from read-only memory or random access memory or both. The basic elements of a computer are the central processing unit for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include, or be operatively coupled to, receiving data from or transferring data to one or more mass storage devices (e.g., disks, magneto-optical disks, or optical disks) for storing data. However, computers do not require such devices. Furthermore, a computer can be embedded in another device, such as a mobile phone, smartphone, personal digital assistant (PDA), mobile audio or video player, game console, GPS receiver, or portable storage device, such as a Universal Serial Bus (USB) flash drive, to name a few.
[0141] Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, such as semiconductor memory devices like EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. Processors and memory may be supplemented by or incorporated into dedicated logic circuitry.
[0142] To provide interaction with the user, embodiments of the subject matter described in this specification can be implemented on a computer having a display device (e.g., LCD (liquid crystal display), OLED (organic light-emitting diode), or other monitor) for displaying information to the user, and a keyboard and pointing device (e.g., mouse or trackball) through which the user can provide input to the computer. Other types of devices can also be used to provide interaction with the user; for example, feedback provided to the user can be any form of sensory feedback, such as visual, auditory, or tactile feedback; and input from the user can be received in any form, including acoustic, voice, or tactile input. Furthermore, the computer can interact with the user by sending and receiving files to and from the device used by the user, for example, by sending web pages to a web browser on the user's device in response to a request received from a web browser.
[0143] Embodiments of the subject matter described in this specification can be implemented in a computing system that includes back-end components (e.g., as a data server), or middleware components (e.g., an application server), or front-end components (e.g., a client computer having a graphical user interface or web browser through which a user can interact with an implementation of the subject matter described in this specification), or any combination of one or more such back-end, middleware, or front-end components. Components of the system can be interconnected via digital data communication (e.g., a communication network) of any form or medium. Examples of communication networks include local area networks (LANs) and wide area networks (WANs), such as the Internet.
[0144] A computing system may include clients and servers. Clients and servers are typically geographically separated and usually interact via a communication network. The client-server relationship is established by means of computer programs running on respective computers and having a client-server relationship with each other. In some embodiments, the server transmits data (e.g., Hypertext Markup Language (HTML) pages) to a user device, which acts as a client, for example, for the purpose of displaying data to a user interacting with the user and receiving user input from the user device. For example, as a result of user interaction, data generated at the user device can be received at the server from the user device.
[0145] Figure 6This is a block diagram of computing devices 600, 650, which can be used to implement the systems and methods described in this document as clients, servers, or multiple servers. Computing device 600 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. Computing device 650 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular phones, smartphones, smartwatches, head-mounted devices, and other similar computing devices. The components shown herein, their connections and relationships, and their functionality are merely exemplary and are not intended to limit the implementations described and / or claimed in this document.
[0146] Computing device 600 includes a processor 602, a memory 604, a storage device 606, a high-speed interface 608 connected to the memory 604 and a high-speed expansion port 610, and a low-speed interface 612 connected to a low-speed bus 614 and the storage device 606. Each of components 602, 604, 606, 608, 610, and 612 is interconnected using various buses and may be mounted on a common motherboard or otherwise. Processor 602 can process instructions for execution within computing device 600, including instructions stored in memory 604 or storage device 606 to display graphical information of a GUI on an external input / output device, such as a display 616 coupled to high-speed interface 608. In other implementations, multiple processors and / or multiple buses, as well as multiple memories and memory types, may be used as appropriate. Furthermore, multiple computing devices 600 may be connected, each providing a portion of the necessary operation (e.g., as a server group, a set of blade servers, or a multiprocessor system).
[0147] Memory 604 stores information within computing device 600. In one implementation, memory 604 is a computer-readable medium. In another implementation, memory 604 is one or more volatile memory cells. In yet another implementation, memory 604 is one or more non-volatile memory cells.
[0148] Storage device 606 provides large-capacity storage for computing device 600. In one implementation, storage device 606 is a computer-readable medium. In various implementations, storage device 606 may be a floppy disk device; a hard disk device; an optical disk device; or a magnetic tape device; flash memory or other similar solid-state storage device; or a device array, including a storage area network or other configured device. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods (such as those described above). The information carrier is a computer or machine-readable medium, such as memory 604, storage device 606, or memory on processor 602.
[0149] High-speed controller 608 manages bandwidth-intensive operations of computing device 600, while low-speed controller 612 manages lower bandwidth-intensive operations. This assignment of responsibilities is merely exemplary. In one implementation, high-speed controller 608 is coupled to memory 604, display 616 (e.g., via a graphics processor or accelerator), and high-speed expansion port 610, which can accept various expansion cards (not shown). In another implementation, low-speed controller 612 is coupled to storage device 606 and low-speed expansion port 614. The low-speed expansion port (which may include various communication ports (e.g., USB, Bluetooth, Ethernet, Wireless Ethernet)) can be coupled to one or more input / output devices, such as keyboards, pointing devices, scanners, or network devices, such as switches or routers, for example, via a network adapter.
[0150] As shown in the figure, computing device 600 can be implemented in a variety of different forms. For example, computing device 600 can be implemented as a standard server 620, or multiple times in a group of such servers. Computing device 600 can also be implemented as part of a rack server system 624. Furthermore, computing device 600 can be implemented in a personal computer (such as laptop computer 622). Alternatively, components from computing device 600 can be combined with other components in mobile devices (not shown) (such as device 650). Each of such devices can contain one or more of computing devices 600, 650, and the entire system can consist of multiple computing devices 600, 650 communicating with each other.
[0151] Computing device 650 includes a processor 652, memory 664, input / output devices such as a display 654, a communication interface 666 and a transceiver 668, and other components. Device 650 may also be provided with storage devices, such as microdrives or other devices, to provide additional storage. Each of components 650, 652, 664, 654, 666, and 668 is interconnected using various buses, and several of the components may be mounted on a common motherboard or otherwise, depending on the circumstances.
[0152] Processor 652 can process instructions for execution within computing device 650, including instructions stored in memory 664. The processor may also include separate analog and digital processors. For example, the processor can provide coordination for other components of device 650, such as control of the user interface, application operation of device 650, and wireless communication of device 650.
[0153] Processor 652 can communicate with the user via display interface 656 and control interface 658 connected to display 654. Display 654 can be, for example, a TFT LCD display or an OLED display, or other suitable display technology. Display interface 656 may include appropriate circuitry for driving display 654 to present graphics and other information to the user. Control interface 658 can receive instructions from the user and translate instructions for submission to processor 652. Additionally, an external interface 662 can be provided to communicate with processor 652 to enable near-field communication between device 650 and other devices. External interface 662 can provide, for example, wired communication (e.g., via a docking program) or wireless communication (e.g., via Bluetooth or other such technologies).
[0154] Memory 664 stores information within computing device 650. In one implementation, memory 664 is a computer-readable medium. In another implementation, memory 664 is a volatile memory cell or multiple volatile memory cells. In yet another implementation, memory 664 is a non-volatile memory cell or multiple non-volatile memory cells. An expansion memory 674 may also be provided and connected to device 650 via an expansion interface 672, which may include, for example, a SIMM card interface. The expansion memory 674 may provide additional storage space for device 650, or it may store applications or other information for device 650. Specifically, the expansion memory 674 may include instructions for performing or supplementing the above-described processes, and may also include security information. Thus, for example, the expansion memory 674 may be provided as a security module of device 650 and may be programmed with instructions that allow secure use of device 650. Furthermore, secure applications and additional information, such as placing identification information on the SIMM card in an unbreakable manner, may be provided via a SIMM card.
[0155] As described below, the memory may include, for example, flash memory and / or MRAM memory. In one implementation, the computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods (such as those described above). The information carrier is a computer or machine-readable medium, such as memory 664, extended memory 674, or memory on processor 652.
[0156] Device 650 can communicate wirelessly via communication interface 666, which may include digital signal processing circuitry if necessary. Communication interface 666 can provide communication under various modes or protocols, such as GSM voice calls, SMS, EMS or MMS message sending and receiving, CDMA, TDMA, PDC, WGDMA, CDMA2000, or GPRS. This communication can occur, for example, via radio frequency transceiver 668. Furthermore, short-range communication can occur, such as using Bluetooth, WiFi, or other such transceivers (not shown). Additionally, GPS receiver module 670 can provide additional wireless data to device 650, which can be used by applications running on device 650 as appropriate.
[0157] Device 650 can also communicate audibly using audio codec 660, which can receive spoken information from a user and convert it into usable digital information. Audio codec 660 can similarly generate audible sounds for the user, such as through a speaker, for example, in the handset of a telephone on device 650. This sound can include sounds from voice telephone calls, recorded sounds (e.g., voice messages, music files, etc.), and sounds generated by applications running on device 650.
[0158] As shown in the figure, the computing device 650 can be implemented in a variety of different forms. For example, the computing device 650 can be implemented as a cellular phone 680. The computing device 650 can also be implemented as part of a smartphone 682, a personal digital assistant, or other similar mobile device.
[0159] The various implementations of the systems and techniques described herein can be implemented in digital electronic circuits, integrated circuits, specially designed ASICs (Application-Specific Integrated Circuits), computer hardware, firmware, software, and / or combinations thereof. These various implementations can include implementations in one or more computer programs that are executable and / or interpretable on a programmable system including at least one programmable processor, which can be specialized or general-purpose, coupled to receive data and instructions from a storage system, at least one input device, and at least one output device, and to transfer data and instructions to the storage system, at least one input device, and at least one output device.
[0160] These computer programs (also referred to as programs, software, software applications, or code) include machine instructions for a programmable processor and may be implemented in high-level procedural and / or object-oriented programming languages and / or in assembly / machine language. As used herein, the terms "machine-readable medium" and "computer-readable medium" mean any computer program product, apparatus, and / or device (e.g., disk, optical disk, memory, programmable logic device (PLD)) used to provide machine instructions and / or data to a programmable processor, including machine-readable media that receive machine instructions as machine-readable signals. The term "machine-readable signal" means any signal used to provide machine instructions and / or data to a programmable processor.
[0161] While this specification contains numerous specific implementation details, these should not be construed as limiting the scope of possible claims, but rather as descriptions of features that may be specific to particular embodiments. Certain features described in the context of individual embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented individually or in any suitable sub-combination in multiple embodiments. Furthermore, although the foregoing features may be described as acting on certain combinations, and even initially claimed, in some cases, one or more features from a claimed combination may be removed from the combination, and the claimed combination may involve sub-combinations or variations thereof.
[0162] Similarly, although the operations in the accompanying drawings are depicted in a specific order, this should not be construed as requiring the operations to be performed in the specific order or sequence shown, or to perform all the illustrated operations to achieve the desired result. In some cases, multitasking and parallel processing may be advantageous. Furthermore, the separation of the various system modules and components in the above embodiments should not be construed as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated into a single software product or packaged into multiple software products.
[0163] Specific embodiments of this subject matter have been described. Other embodiments are also within the scope of the appended claims. For example, the actions recited in the claims can be performed in a different order and still achieve the desired result. As an example, the processes described in the drawings do not necessarily require the specific order or sequential order shown to achieve the desired result. In some cases, multitasking and parallel processing may be advantageous.
Claims
1. A system comprising one or more computers and one or more storage devices, wherein instructions are stored on the storage devices, the instructions being operable, when executed by the one or more computers, to cause the one or more computers to perform operations including: For a 3D model of an object to be optimized for storage in a database, historical data of the object is used to determine multiple points on the object, each point having at least a threshold probability of being a focus, the 3D model having two or more regions, each region including data for one or more textures, one or more meshes, or both; For each of the two or more regions of the object, determine whether the corresponding region is i) a non-focus region that does not include any of the multiple points and has a low probability of becoming the focus of the viewer, or ii) a focus region that includes at least one of the multiple points, wherein the two or more regions include one or more non-focus regions and one or more focus regions; In response to determining that a corresponding region is a non-focal region, for each of the one or more non-focal regions, optimized data for the non-focal region is generated using data representing the non-focal region, the optimized data having a smaller size than the larger size of the data representing the non-focal region; as well as After determining whether each region in the two or more regions of the object is i) a non-focal region or ii) a focal region, and generating the optimized data for each non-focal region in the one or more non-focal regions: An optimized 3D model is stored in the database. The optimized 3D model includes optimized data for each of the one or more non-focal regions and optimized data for each of the one or more focal regions. The optimized 3D model has a smaller size than the larger size of the 3D model.
2. The system according to claim 1, wherein, The operation includes: Receive a request for a model of the object via a network; and in response to receiving the request for the model of the object: Retrieve from the database the optimized 3D model that was stored in the database prior to receiving the request for the model; and The network is used to send the optimized 3D model of the object to the device.
3. The system according to claim 2, wherein, The operation includes: After sending the optimized 3D model with the smaller size to the device, it is determined that the 3D model with the larger size will be sent to the device; and In response to determining that the 3D model having the larger size should be sent to the device, the 3D model is sent to the device.
4. The system according to claim 3, wherein: Determining to send the 3D model of the larger size to the device includes: determining that the usage of network connections spanning the network and between the system and the device is less than a threshold; and Sending the 3D model to the device includes: in response to determining that the usage of the network connection across the network and between the system and the device is less than the threshold, sending the 3D model to the device.
5. The system according to claim 3, wherein: Determining to send the 3D model with the larger size to the device includes: receiving a request for the 3D model with the larger size; and Sending the 3D model to the device is in response to receiving a request for the 3D model having the larger size.
6. The system according to claim 1, wherein, For each of the one or more non-focal regions, in response to determining that the corresponding region is a non-focal region, generating the optimized data for the non-focal region includes: for each of the one or more non-focal regions, reducing the quality of the one or more textures, one or more meshes, or both included in the corresponding non-focal region from the quality of the one or more textures, one or more meshes, or both in the 3D model.
7. The system according to claim 6, wherein, For each of the one or more non-focal regions, the reduction in quality of the one or more textures, one or more meshes, or both included in the corresponding non-focal region from the corresponding one or more textures, one or more meshes, or both in the 3D model includes: For each of the one or more nonfocal regions, the resolution of each of the one or more textures, one or more meshes, or both included in the corresponding nonfocal region is reduced from the higher resolution of the one or more textures, one or more meshes, or both in the 3D model.
8. The system according to claim 1, wherein: For each of the two or more regions of the object, determining whether the corresponding region is i) a non-focal region or ii) a focal region includes: identifying one or more textures, one or more meshes, or one or more quadrants as the one or more non-focal regions; and Generating the optimized data for each of the one or more non-focal regions includes: using one or more identified textures, one or more identified meshes, or one or more identified quadrants to generate the optimized data having a smaller size than the larger size of the data representing the non-focal region.
9. A computer-implemented method, comprising: For a 3D model of an object to be optimized for storage in a database, historical data of the object is used to determine multiple points on the object, each point having at least a threshold probability of being a focus, the 3D model having two or more regions, each region including data for one or more textures, one or more meshes, or both; For each of the two or more regions of the object, determine whether the corresponding region is i) a non-focus region that does not include any of the multiple points and has a low probability of becoming the focus of the viewer, or ii) a focus region that includes at least one of the multiple points, wherein the two or more regions include one or more non-focus regions and one or more focus regions; In response to determining that a corresponding region is a non-focal region, for each of the one or more non-focal regions, optimized data is generated for the non-focal region using data representing the non-focal region, the optimized data having a smaller size than the larger size of the data representing the non-focal region; as well as After determining whether each of the two or more regions of the object is i) a non-focal region or ii) a focal region, and generating the optimized data for each of the one or more non-focal regions: An optimized 3D model is stored in the database. The optimized 3D model includes optimized data for each of the one or more non-focal regions and optimized data for each of the one or more focal regions. The optimized 3D model has a smaller size than the larger size of the 3D model.
10. A non-transitory computer storage medium encoded with instructions that, when executed by one or more computers, cause the one or more computers to perform operations including: For a 3D model of an object to be optimized for storage in a database, historical data of the object is used to determine multiple points on the object, each point having at least a threshold probability of being a focus, the 3D model having two or more regions, each region including data of one or more textures, one or more meshes, or both; For each of the two or more regions of the object, determine whether the corresponding region is i) a non-focus region that does not include any of the multiple points and has a low probability of becoming the focus of the viewer, or ii) a focus region that includes at least one of the multiple points, wherein the two or more regions include one or more non-focus regions and one or more focus regions; In response to determining that a corresponding region is a non-focal region, for each of the one or more non-focal regions, optimized data is generated for the non-focal region using data representing the non-focal region, the optimized data having a smaller size than the larger size of the data representing the non-focal region; as well as After determining whether each of the two or more regions of the object is i) a non-focal region or ii) a focal region, and generating the optimized data for each of the one or more non-focal regions: An optimized 3D model is stored in the database. The optimized 3D model includes optimized data for each of the one or more non-focal regions and optimized data for each of the one or more focal regions. The optimized 3D model has a smaller size than the larger size of the 3D model.