3D model processing system and method, and storage circuit

The 3D model processing system addresses latency and inefficiencies in XR content delivery by partitioning models, applying texture baking, and flattening, resulting in efficient and low-latency content delivery.

JP7780580B2Active Publication Date: 2025-12-04VIVERSE LTD
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2024106544
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2023-07-03
Filing Date
2024-07-02
Publication Date
2025-12-04
Estimated Expiration
2044-07-02

AI Technical Summary

Technical Problem

Existing methods for providing cross-reality (XR) content, such as 3D models, suffer from high latency and inefficient data transmission, leading to prolonged loading times and interruptions in user experience.

Method used

A 3D model processing system and method that involves partitioning 3D models based on material or position, generating multiple levels of detail, and applying texture baking and flattening techniques to reduce data size and improve loading efficiency.

Benefits of technology

The system enables low-latency and efficient delivery of XR content by reducing data size and optimizing loading times, enhancing user experience through adaptive rendering based on device capabilities and user interaction.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007780580000003
    Figure 0007780580000003
  • Figure 0007780580000004
    Figure 0007780580000004
  • Figure 0007780580000005
    Figure 0007780580000005
Patent Text Reader

Abstract

To provide a 3D model processing system, a 3D model processing method, and a storage circuit for efficiently providing a 3D model with low latency to a user.SOLUTION: A 3D model processing system includes a storage circuit and a processor. The storage circuit stores a program code and is combined with the processor. The program code causes a processor to perform steps of: acquiring a first original space value and a second original space value for the 3D model; acquiring a differential value between the first original space value and the second original space value; and generating a compression space value corresponding to the second original space value on the basis of the differential value.SELECTED DRAWING: Figure 9
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] The present invention relates to a 3D (3-dimensional) model processing system, and more particularly, to a 3D model processing system, a 3D model processing method, and a storage circuit.

[0002] To provide users with an immersive experience, technologies related to cross-reality (XR), such as augmented reality (AR), virtual reality (VR), and mixed reality (MR), are constantly being developed. AR technology allows users to bring virtual elements into the real world. VR technology allows users to enter a completely new virtual world to experience a different life. MR technology merges the real world with the virtual world. Furthermore, visual, audio, or other sensory content can be provided to users via the web to provide a fully immersive experience. Summary of the Invention [Problem to be solved by the invention]

[0003] The present invention relates to a 3D model processing system, a 3D model processing method, and a storage circuit that provide an efficient and low-latency method for providing XR content to users. [Means for solving the problem]

[0004] The present invention provides a 3D model processing system, which includes a memory circuit and a processor. The memory circuit is configured to store program code. The processor is coupled to the memory circuit and configured to access the program code to obtain first and second original spatial values ​​of the 3D model, obtain difference values ​​between the first and second original spatial values, and generate compressed spatial values ​​corresponding to the second original spatial values ​​based on the difference values.

[0005] The present invention provides a 3D model processing method, which includes: obtaining a first original spatial value and a second original spatial value; obtaining a difference value between the first original spatial value and the second original spatial value; and generating a compressed spatial value corresponding to the second original spatial value based on the difference value.

[0006] The present invention provides a memory circuit configured to store program code that causes a processor to obtain first and second original spatial values ​​of a 3D model, obtain difference values ​​between the first and second original spatial values, and generate compressed spatial values ​​corresponding to the second original spatial values ​​based on the difference values. [Effects of the Invention]

[0007] Based on the above, the 3D model processing system, the 3D model processing method, and the storage circuit can provide 3D models to users efficiently and with low delay.

[0008] To make the above content easier to understand, several embodiments will be described in detail below with reference to the drawings. [Brief explanation of the drawings]

[0009] The accompanying drawings, which are included to provide a further understanding of the invention and are incorporated in and constitute a part of this specification, illustrate exemplary embodiments of the invention and, together with the description, serve to explain the principles of the invention.

[0010] [Figure 1] FIG. 1 is a schematic diagram of a 3D model processing system according to one embodiment of the present invention. [Figure 2] FIG. 1 is a flow diagram of a 3D model processing method according to one embodiment of the present invention. [Figure 3A] FIG. 1 is a schematic diagram of a segmentation scenario for a 3D model according to one embodiment of the present invention. [Figure 3B] FIG. 1 is a schematic diagram of a segmentation scenario for a 3D model according to one embodiment of the present invention. [Figure 3C] FIG. 1 is a schematic diagram of a segmentation scenario for a 3D model according to one embodiment of the present invention. [Figure 3D] FIG. 1 is a schematic diagram of a segmentation scenario for a 3D model according to one embodiment of the present invention. [Figure 4] FIG. 1 is a schematic diagram of a baking scenario for a 3D model according to one embodiment of the present invention. [Figure 5] FIG. 1 is a schematic illustration of a 3D model flattening scenario according to one embodiment of the present invention. [Figure 6] FIG. 1 is a schematic diagram of a file format of a 3D model processing system according to one embodiment of the present invention. [Figure 7] FIG. 1 is a flow diagram of a 3D model processing method according to one embodiment of the present invention. [Figure 8] FIG. 1 is a schematic diagram of a viewing scenario for a 3D model according to one embodiment of the present invention. [Figure 9] FIG. 1 is a flow diagram of a 3D model processing method according to one embodiment of the present invention. [Figure 10] FIG. 1 is a schematic diagram of a compression scenario for a 3D model according to one embodiment of the present invention. [Figure 11] FIG. 1 is a schematic diagram of a compression scenario for a 3D model according to one embodiment of the present invention. DETAILED DESCRIPTION OF THE INVENTION

[0011] Reference will now be made in detail to the exemplary embodiments of the invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers are used in the drawings and the description to refer to the same or like parts.

[0012] Throughout the specification and the appended claims, certain terms are used to refer to particular components. Those skilled in the art will understand that electronics manufacturers may refer to the same component by different names. No distinction is intended herein between components with the same function but different names. In the following description and claims, terms such as "consisting of" and "including" are open-ended terms and should be interpreted as "including, but not limited to."

[0013] The term "coupled" (or "connected") as used throughout this specification (including the appended claims) may refer to any direct or indirect connection means. For example, when a first device is described as being coupled (or connected) to a second device, it should be interpreted as meaning that the first device is directly connected to the second device, or that the first device is indirectly connected via another device, or that a specific connection means is connected to the second device. The terms "first," "second," and similar terms used throughout this specification (including the appended claims) are used merely to designate individual elements or to distinguish between different embodiments or ranges. As such, these terms should not be construed as limiting the upper or lower limits of the quantity of elements, nor should they be used to limit the order in which elements are arranged. In addition, wherever possible, elements / components / steps using the same reference numerals in the drawings and embodiments represent the same or similar parts. Related descriptions of elements / components / steps may be mutually referenced using the same reference numerals or terms in different embodiments.

[0014] It should be noted that in the following embodiments, the technical features of several different embodiments can be replaced, rearranged, and mixed to complete other embodiments without departing from the spirit of the present invention, and the features of each embodiment can be used in any combination as long as they do not go against the spirit of the present invention or contradict each other.

[0015] Technologies related to cross-reality (XR), such as augmented reality (AR), virtual reality (VR), and mixed reality (MR), are constantly being developed to provide users with immersive experiences. AR technology allows users to bring virtual elements into the real world. VR technology allows users to enter entirely new virtual worlds to experience different lives. MR technology merges the real world with the virtual world. Furthermore, visual, audio, or other sensory content can be provided to users via the web to provide a fully immersive experience.

[0016] When XR content (e.g., 3D geometry data) is streamed to users over the internet, it is important that users do not have to wait long periods of time before being placed in virtual reality. For this reason, the size and composition of XR content is important during the creation stage.

[0017] Furthermore, when transmitting XR content (e.g., 3D geometry data) over the web, it is important that the mesh, which consists of a set of triangles in the XR content, be stored in as few bytes as possible to make data transmission faster. At the same time, when the system fetches the data, decoding the data must be performant enough that it does not cause noticeable delays to the user.

[0018] Furthermore, while a user is viewing XR content on a user device (e.g., a computer, a smartphone, etc.), conventional methods of loading a virtual world over a network by the user device often load all data at startup (which requires a long loading time) or only load data when the user's representative object (e.g., an avatar) approaches the object (an object that appears and disappears in the scene). This can interrupt the user experience due to loading wait times or loading delays. In light of the above, those skilled in the art have sought to provide an efficient and low-latency method for providing XR content to users.

[0019] In order to provide XR content such as 3D models to users in an efficient and low-latency manner, three aspects of 3D models are described below with some embodiments: first, how 3D models are prepared, created, and partitioned; second, how 3D models are compressed; and third, how 3D models are loaded from a user end (e.g., a user device). These three aspects may be used individually or together to provide XR content to users, and the present invention is not limited thereto.

[0020] Figure 1 is a schematic diagram of a 3D model processing system according to one embodiment of the present invention. Referring to Figure 1, a 3D model processing system 100 is shown. In different embodiments, the 3D model processing system 100 may be implemented as, but is not limited to, various smart devices and / or computing devices.

[0021] 1, the 3D model processing system 100 includes a (non-transitory) storage circuit 102 and a processor 104. The storage circuit 102 may be, for example, any type of fixed or removable random access memory (RAM), read-only memory (ROM), flash memory, a hard disk, other similar device, or a combination of these devices, and may be used to store multiple program codes or modules.

[0022] The processor 104 is coupled to the memory circuitry 102 and may be a general-purpose processor, a special-purpose processor, a conventional processor, a digital signal processor, multiple microprocessors, one or more microprocessors combined with a digital signal processor, a controller, a microcontroller, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), other types of integrated circuits, a state machine, an Advanced RISC Machine (ARM) based processor, or the like.

[0023] In one embodiment of the present invention, the processor 104 may access modules and program code stored in the memory circuitry 102 to implement the 3D model processing proposed by the present invention, which is described in more detail below.

[0024] Figure 2 is a flow diagram of a 3D model processing method according to one embodiment of the present invention. With reference to Figures 1 and 2, a 3D model processing method 200 of this embodiment may be performed by the 3D model processing system 100 in Figure 1, and the details of each step in Figure 2 will be described below together with the components shown in Figure 1.

[0025] First, in step S210, a plurality of nodes of a 3D model may be obtained. In one embodiment, a node is a basic component of a 3D model. That is, a plurality of nodes may form a geometry (e.g., a triangle), and a plurality of geometries may form a 3D model. Next, in step S220, the 3D model may be divided into a first original partition and a second original partition based on a position or a material. Furthermore, the first original partition may include a first node group, and the second original partition may include a second node group. That is, the 3D model may include a plurality of positions and a plurality of materials, and the 3D model may be divided into a plurality of blocks (e.g., a first original partition, a second original partition, etc.) based on the position or the material of each region of the 3D model. Thereafter, in step S230, the plurality of nodes may be divided into a first node group and a second node group based on the first original partition and the second original partition. It should be noted that steps S220 and S230 may be performed simultaneously, where step S220 may define the shape of the piece of the 3D model, and step S230 may define which nodes belong to the piece of the 3D model. However, the present invention is not limited thereto. Furthermore, in step S240, multiple first-graded partitions with different levels of detail for the first original partition may be generated based on the first node group. Furthermore, in step S250, multiple second-graded partitions with different levels of detail for the second original partition may be generated based on the second node group.

[0026] For convenience of explanation, the 3D model is described as including a first original partition and a second original partition, but the 3D model may include multiple original partitions. Furthermore, multiple stage partitions correspond to multiple original partitions. However, the present invention is not limited thereto.

[0027] Based on the above, by dividing the 3D model based on material or position, the size of each partition of the 3D model can be reduced, so that, based on a request from a user device at a user end, instead of loading the entire original model at once, only a part of the original model can be loaded on demand, thereby reducing waiting time and improving user experience.

[0028] Additionally, for details of the implementation of the 3D model processing system 100 and the 3D model processing method 200, reference may be made to the following description of Figures 3A-6 for sufficient teachings, suggestions, and embodiments. In some embodiments, the functions of the 3D model processing system 100 and the 3D model processing method 200 may be performed by the processor 104, although the invention is not limited thereto.

[0029] Figure 3A is a schematic diagram of a partitioning scenario of a 3D model according to one embodiment of the present invention. Figure 3B is another schematic diagram of a partitioning scenario of a 3D model according to one embodiment of the present invention. Referring to Figures 3A and 3B, partitioning scenario 300A includes an original model 310 and multiple original partitions 320, and partitioning scenario 300B includes the original model 310 and multiple original partitions 330.

[0030] In the preparation stage of a 3D model, how to divide the 3D model into pieces affects not only the efficiency of streaming the 3D model over the Internet, but also the speed of loading the 3D model at the user's end. That is, how to divide the 3D model into pieces is important to improve the speed and performance of loading and rendering the 3D model. In one embodiment, the smaller pieces of the 3D model may be called partitions.

[0031] Referring to FIG. 3A , in one embodiment, a 3D model may be divided into smaller pieces (i.e., partitions) based on the material or location of each piece or region of the 3D model. For example, an original robot model 310 may include different parts, such as a head, body, arms, and wheels. These parts may be designed to be made of different materials, such as metal, plastic, and rubber. The original robot model 310 may be classified into different materials and divided into pieces based on the material (e.g., the material index of each piece), as shown in FIG. 3A . In one embodiment, the material index of each piece may be predefined according to design requirements. For example, a piece of a material with a material index of 1 may be metal. The material index of all pieces may be associated with a UV map corresponding to the 3D model. However, the present invention is not limited thereto. That is, partitions of the same material may be grouped together. In other words, a first original partition may belong to a first material, and a second original partition may belong to a second material. The mode of processing that divides the original model 310 into pieces based on the material of each piece may be referred to as the "material mode," and these divided pieces may be referred to as multiple original partitions 320.

[0032] Referring to FIG. 3B , in one embodiment, the 3D model may be partitioned into smaller pieces based on the location of each piece of the 3D model. For example, the original robot model 310 may include a top portion, a bottom portion, a left portion, a right portion, a front portion, a rear portion, etc. The original robot model 310 may be divided into different locations or quadrants in space and partitioned into pieces based on location, as shown in FIG. 3B . That is, partitions that are close to each other may be grouped together. In other words, a first original partition may belong to a first location, and a second original partition may belong to a second location. The mode of processing that partitions the original model 310 into pieces based on location may be referred to as a “spatial mode,” and these partitioned pieces may be referred to as multiple original partitions 330.

[0033] 3C is a schematic diagram of a segmentation scenario for a 3D model according to one embodiment of the present invention. Referring to FIG. 3C, segmentation scenario 300C includes segmentation scenario 301C and segmentation scenario 302C. Splitting scenario 301C illustrates an original model 310 segmented in material mode, and splitting scenario 302C illustrates an original model 310 segmented in spatial mode.

[0034] In one embodiment, the original model 310 may be divided into pieces using either a material mode to create multiple original partitions 320 or a spatial mode to create multiple original partitions 330, although the invention is not limited thereto. That is, the mode of division may be determined in advance. Then, based on the mode of division, the original model 310 may be divided into multiple partitions. In one embodiment, bounding boxes may represent the partitions of the original model 310, although this is not limited thereto. For example, as shown in FIG. 3C , each of division scenario 301C and division scenario 302C may include multiple bounding boxes, and the multiple bounding boxes may represent multiple original partitions 320 or multiple original partitions 330, respectively.

[0035] Note that larger partitions may be divided into smaller partitions; that is, original model 310 may be divided into smaller partitions, and parts of original model 310 may vary in visual quality independently of each other. The dividing process may be a recursive algorithm; that is, the dividing process may be performed repeatedly until a specific condition is met. Thus, original model 310 may be stored as individual triangles, allowing analysis of original model 310 triangle-by-triangle without having to have the entire original model 310 in memory at once. In one embodiment, the triangles may be stored as, or referred to as, a soup file, which may be a file of a collection of individual triangles.

[0036] For example, after the splitting mode is determined and the splitting is performed, the bounding box of each partition may be split into multiple parts, and then a new soup file of triangles contained in the new bounding box may be created. This splitting process may be performed recursively. For example, in the first iteration of the splitting process, all triangles in the original partitions 320 or the original partitions 330 may be split into two or more groups (also known as children). The splitting process may then be performed again to create two or more children of each group. This splitting process may be repeated until a specific condition is met, such as all children each falling below a triangle threshold. The triangle threshold may be adjusted according to design requirements. In one embodiment, the triangle threshold may be determined based on the maximum computing power or connection speed of the user device. That is, after the final iteration of the splitting process, the number of triangles in each group of triangles is less than the triangle threshold. After the splitting process, the partitions created together may form a tree or hierarchy of the original model 310. That is, instead of loading the 3D model all at once, the 3D model may be loaded in partitions. In this manner, by dividing the 3D model based on material or position, the size of each partition of the 3D model can be reduced. Therefore, based on a request from a user device, instead of loading the entire original model 310 all at once, only a portion of the original model 310 can be loaded as needed, thereby reducing waiting time and improving the user experience.

[0037] 3D is a schematic diagram of a partitioning scenario for a 3D model according to one embodiment of the present invention. Referring to FIG. 3D, partitioning scenario 300D includes tiered partitions 340.

[0038] In one embodiment, after dividing the original model 310, the original model 310 may be divided into pieces, such as original partition 320 or original partition 330. That is, when the original model 310 is loaded by the user device, the original model 310 is loaded partition by partition, and the size of each partition may be determined based on the computer capabilities of the user device. However, in certain situations, it is necessary to load the entire 3D model at once rather than loading the 3D model partition by partition. That is, the total number of triangles in the original model 310 needs to be less than a triangle threshold so that the user device can process all the triangles at once. For example, the triangle threshold may be determined based on the maximum computing capabilities of the user device. In one embodiment, a decimation algorithm (selected from existing techniques according to design requirements) may be used to remove triangles until the total number of triangles is less than the triangle threshold.

[0039] At the same time, when a user views a portion of the 3D model rather than the entire 3D model, the portion of the 3D model should provide the user with an optimal visual experience. That is, when a user views a portion (e.g., a partition) of the original model 310 rather than the entire original model 310, the number of triangles in the portion should also meet the triangle threshold. In other words, some triangles containing important features (e.g., visually salient features) may be returned to the portion to increase the number of triangles in the portion to provide an optimal visual experience.

[0040] On the other hand, when a user views a portion of the portion of the 3D model, the portion of the portion should also provide the user with an optimal visual experience. That is, when a user views a portion of the portion of the original model 310 (e.g., a portion of a partition), the number of triangles in the portion should also meet the triangle threshold. Similarly, some triangles containing important features may be returned to the portion to increase the number of triangles in the portion to provide an optimal visual experience. In one embodiment, the partition or portion of the partition may be defined by a segmentation process of the original model 310 in material mode or spatial mode. However, the present invention is not limited thereto.

[0041] In summary, original model 310 may include multiple partitions (e.g., original partition 320 or original partition 330), and to provide an optimal visual experience, each partition may be processed to include a different amount of triangles for different display situations. That is, each partition may be processed to generate multiple tiered partitions to be displayed separately. Each tiered partition may belong to one level of division. That is, each partition of original model 310 may belong to a different level of division of the tiered partitions.

[0042] In one embodiment, each partition may include three levels of division, such as level 0, level 1, and level 2. The level of division may define how many parts or groups the 3D model or partition of the 3D model is divided into, with higher levels of division representing more groups. That is, the higher the level of division, the more groups of triangles are included in the partition of the original model 310. For example, as shown in FIG. 3D , in level 0 division, triangles in a partition (e.g., the monkey's head) of the original model 310 or triangles in the original model 310 belong to the same group. More specifically, one group of triangles may include 50,000 triangles, and the total number of triangles in the partition of the level 0 division or the original model 310 may be 50,000. Furthermore, in level 1 division, triangles in the partition or triangles in the original model 310 may belong to two groups to be displayed separately. More specifically, each group of triangles may include 50,000 triangles, and the total number of triangles in the partition of the level 1 division or the original model 310 is 100,000. Furthermore, in a level 2 division, the triangles of the partition or the triangles of the original model 310 may belong to four groups to be displayed individually. More specifically, each group of triangles may contain 50,000 triangles, and the total number of triangles of the partition or the original model 310 in a level 2 division may be 200,000. However, the present invention is not limited thereto.

[0043] Referring back to FIG. 3D , in one embodiment, a different level of detail (LoD) may be created for each level of division. That is, each original partition 320 or each original partition 330 may include a different LoD. The purpose of this is to ensure that the triangles in each tiered partition are smaller than a different triangle threshold. For example, in different types of user devices at the user end, the computing capabilities of each user device may be different. Therefore, different triangle thresholds are applied to different user devices. To generate different levels of detail for each tiered partition, a decimation algorithm (selected from existing techniques according to design requirements) may be used to remove triangles until the number of triangles is below a certain limit. This limit may be determined based on the computing capabilities of the user device. In one embodiment, each level of division may include three levels of detail (LoD), such as LoD0, LoD1, and LoD2. That is, the tiered partitions may include at least a partition with a level of detail 0, a partition with a level of detail 1, and a partition with a level of detail 2. The LoD defines how many triangles each triangle group should contain, with a lower LoD representing more triangles, i.e., the lower the level of detail, the more triangles may be included in each triangle group. In other words, the higher the level of detail, the higher the compression ratio.

[0044] For example, the triangle limit at LoD0 may be 50,000, i.e., one triangle group may contain 50,000 triangles. The triangle limit at LoD1 may be 12,500, i.e., one triangle group may contain 12,500 triangles. The triangle limit at LoD2 may be 4,000, i.e., one triangle group may contain 4,000 triangles. The triangle limit may be determined according to design requirements or based on the computing capabilities of the user device. However, the present invention is not limited thereto. It should be noted that the groups (i.e., partitions) at each level of division may together form the original model 310 or a partition of the original model 310. That is, the original model 310 or a partition of the original model 310 with level 0 division may contain 50,000 triangles at LoD0, the original model 310 or a partition of the original model 310 with level 1 division may contain 100,000 triangles at LoD0, and the original model 310 or a partition of the original model 310 with level 2 division may contain 200,000 triangles at LoD0.

[0045] It should be noted that one purpose of the different levels of detail is to provide the user with options while viewing the model, allowing the user to achieve an ideal visual result without completely rendering some unimportant details. That is, each partition of the original model 310 may be rendered at higher or lower quality as needed. For example, only the portions of the original model 310 closer to the viewer may be rendered with higher detail, while other portions of the original model 310 further from the viewer may be rendered with lower detail. These different levels of detail for each partition help improve rendering performance while allowing the original model 310 to provide an ideal visual result for the user, since not all details of the 3D model need to be rendered at once. In this way, the 3D model processing system 100 or the 3D model processing method 200 can provide a powerful method for improving the speed and performance of loading and rendering 3D models.

[0046] Figure 4 is a schematic diagram of a baking scenario for a 3D model according to one embodiment of the present invention. Referring to Figure 4, baking scenario 400 illustrates how textures are applied to meshes (e.g., triangles) of a 3D model using baking.

[0047] In one embodiment, if a partition of a 3D model includes a large texture, not only may the mesh (e.g., triangles) include several levels of detail, but multiple levels of detail may be generated for the texture. For example, if a partition has a texture of 2048x2048 pixels, the partition may be partitioned into more pieces, e.g., four pieces. That is, four partitions, each having 1024x1024 pixels, may be created. In this way, rather than loading the entire texture of the partition at once, only a portion of the texture may be loaded from the user device on demand, thereby reducing latency and improving the user experience.

[0048] In one embodiment, baking is the process of transferring detailed information from a high-resolution 3D model to a low-resolution 3D model. This is typically done to improve performance or reduce file size. Baking involves creating texture maps that capture details of the high-resolution model, such as lighting, shadows, and surface imperfections. These texture maps are then applied to the low-resolution model, giving it the appearance of the high-resolution model without the computational cost of rendering every polygon.

[0049] It should be noted that if the texture coordinates of a texture map for a 3D model take up too much space in the texture image, the texture coordinates may be recalculated, and the texture may be baked again, as shown in FIG. 4. For example, the texture of an original model 410 may be obtained and stored as multiple texture maps 420 in a UV coordinate system. For example, as shown in FIG. 4, the original model 410 corresponds to four texture maps 420. The texture maps 420 may be compressed to generate multiple compressed texture maps 422. For example, as shown in FIG. 4, the four texture maps 420 may be compressed to one-quarter of their original size to form the four compressed texture maps 422. Next, a baking process may be performed on each compressed texture map to generate multiple baked texture maps 424. Thereafter, each of the multiple baked texture maps 424 may be applied to a corresponding mesh of the original model 410 to form a baked partition 430. That is, the 3D model may be unwrapped onto a 2D surface (e.g., the texture maps 420). Furthermore, a baked texture may be created (baked) by converting a high-resolution model of the 3D model's texture into a low-resolution model. In other words, the baked texture may include key features (e.g., visually significant features) of the high-resolution model of the texture. The baked texture may then be applied to the mesh of the 3D model. In this way, baking can be more efficient for storing and rendering the original model 410.

[0050] In one embodiment, if the mesh can be stored more efficiently by baking the texture, baking may be performed to recalculate the texture coordinates and bake the texture again. If the texture coordinates take up too much space, the total area of ​​the texture coordinates may be divided by the total area of ​​the texture. If the result of the division is lower than a certain threshold, the texture coordinates may be recalculated and the texture may be rebaked. The threshold may be a value set by the user. The lower the threshold, the more likely the texture coordinates will be recalculated.

[0051] 5 is a schematic diagram of a flattening scenario for a 3D model according to one embodiment of the present invention. Referring to FIG. 5, flattening scenario 500 may include a non-flattened model layer 510 and a flattened model layer 520.

[0052] In one embodiment, a 3D model may be composed of many different parts, called layers. These layers may be nested, with one part containing another. Note that when a 3D model is flattened, all layers are removed and the 3D model is converted into a single, flat array of triangles. For example, by performing a flattening process, non-flattened model layer 510 may be reduced to flattened model layer 520 by removing all layers in the 3D model's structure, ensuring that only the flat array of triangles remains. This does not change the appearance of the 3D model, but makes it easier to process. That is, there is no visual difference between the non-flattened model corresponding to non-flattened model layer 510 and the flattened model corresponding to flattened model layer 520. These files that store the flat array of triangles may be called, or stored as, soup files, which are files of a collection of independent triangles.

[0053] In one embodiment, each triangle in the flat array may store three pieces of information: the positions of the vertices that make up the triangle, the texture coordinates of the triangle, and the material index of the triangle. The texture coordinates may tell the renderer of the 3D model where to find the texture image that should be used to render the triangle. The material index may tell the renderer which material to use to render the triangle. It is worth noting that storing all data for a 3D model in a flat array of triangles can be more manageable, especially for large 3D models, because the renderer can quickly access the data it needs without having to traverse the hierarchy. In this way, it is possible to process 3D models that are larger than the amount of memory available on the computer.

[0054] 6 is a schematic diagram of a file format for a 3D model processing system in accordance with one embodiment of the present invention. With reference to FIG. 6, file format 600 illustrates an exemplary content of a 3D model, although the present invention is not limited thereto.

[0055] In one embodiment, when all of the meshes and textures for all levels of detail have been generated, the meshes and textures may be stored in a file format such as that shown in Figure 6. File format 600 may be the Extended Reality Geometry (XRG) format or the Extended Reality Geometry Compressed (XRGC) file format. An XRG or XRGC file may be a data container used to store other files, along with common files such as JPG (Joint Photographic Experts Group) and PNG (Portable Network Graphics), although the invention is not limited thereto.

[0056] In one embodiment, the file format 600 may include a header file, a JavaScript Object Notation (JSON) file, a mesh (e.g., triangles) of the 3D model, textures of the 3D model, etc. The header file may be configured to hold general information of the files within the container file. For example, the header file may describe some general information and where the JSON file is located. Furthermore, the JSON file may be configured to describe some general information, such as the complete layout and hierarchy of the 3D model, and where the JSON file is located. This JSON file may be used by a client application to read the model description and execute optimized queries for the required geometry. The queries may be optimized based on different factors, such as the position of the user's user representative object in 3D space (e.g., an XR virtual world) and the distance between the user representative object and the 3D model. It should be noted that the user representative object may be, for example, a user's avatar, a virtual object representing the user, a virtual object representing a head-mounted display (HMD) device worn by the user, or other similar objects. However, the present invention is not limited thereto. In this way, based on the file format 600, the data of the 3D model can be stored or compressed in an efficient manner, which allows the data of the 3D model to be streamed in real time as needed, which is important for XR applications, thereby improving the user experience.

[0057] Fig. 7 is a flow diagram of a 3D model processing method according to one embodiment of the present invention. With reference to Fig. 1 and Fig. 7, the 3D model processing method 700 of this embodiment may be performed by the 3D model processing system 100 in Fig. 1, and the details of each step in Fig. 7 will be described below together with the components shown in Fig. 1.

[0058] First, in step S710, a request to view a 3D model from a user device may be determined. For example, the user may want to display a 3D model in a virtual world while the user's user representative object is located at a certain distance from the 3D object in the virtual world. Furthermore, the 3D model may be partitioned into two parts, with the first part being close to the user representative object and the second part being significantly far from the avatar. Furthermore, the first part may belong to a first original partition, and the second part may belong to a second original partition. Also, as shown in FIG. 3D , multiple first-stage partitions with different LoDs may be generated for the first original partition, and multiple second-stage partitions with different LoDs may be generated for the second original partition. Next, in step S720, a first level of detail for the multiple first-stage partitions may be determined based on the state of the user's user device. For example, because the first part is close to the user representative object (compared to the second part), the first LoD may be determined to be LoD0 to provide more detail to the user device. Then, in step S730, a second level of detail for the plurality of second tiered partitions may be determined based on the state of the user device. For example, because the second portion is farther from the user representative object (compared to the first portion), the second LoD may be determined to be LoD2 to provide less detail to the user device. Further, in step S740, one of the plurality of first tiered partitions may be provided to the user device based on the first level of detail. For example, when the computer power of the user device is high, a tiered partition of a level 2 division of the plurality of first tiered partitions may be provided to the user device. On the other hand, when the computer power of the user device is low, a tiered partition of a level 0 division of the plurality of first tiered partitions may be provided to the user device. Also, in step S750, one of the plurality of second tiered partitions may be provided based on the second level of detail.For example, when the computer power of the user device is high, a plurality of level 2 division tiered partitions of the second stage partitions may be provided to the user device, whereas when the computer power is low, a plurality of level 0 division tiered partitions of the second stage partitions may be provided to the user device, although the present invention is not limited thereto.

[0059] Based on the above, an appropriate level of detail can be determined based on the state of the user device, and the corresponding content of the 3D model can be provided to the user device with low latency.

[0060] Additionally, for details of the implementation of the 3D model processing system 100 and the 3D model processing method 700, reference may be made to the following description of Figure 8 to obtain full teachings, suggestions, and embodiments. In some embodiments, the functions of the 3D model processing system 100 and the 3D model processing method 700 may be performed by the processor 104, although the invention is not limited thereto.

[0061] 8 is a schematic diagram of a viewing scenario for a 3D model according to one embodiment of the present invention. Referring to FIG. 8, viewing scenario 800 illustrates how a 3D model is loaded depending on the state of the user device.

[0062] In one embodiment, during the model creation stage, the 3D model may be divided into partitions, and the partitions may be stored at different levels of detail. Then, while the user is viewing the 3D model, the 3D model may be rendered based on the user device's conditions, such as the distance between the user's representative object and the 3D model, the user's eyesight, the user's line of sight, the user's device's (Internet) connection speed, and the user's device's computing power. For example, parts of the 3D model closer to the user's representative object may be rendered with higher detail, while parts farther from the user's representative object may be rendered with lower detail. These different levels of detail for each partition help improve rendering performance while still providing the user with an ideal visual result, since not all details of the 3D model need to be rendered at once. That is, similar to how the user perceives the real world, those closer to the user are clearer and those farther from the user are blurrier. This saves computing power for rendering additional parts of the 3D model, thereby improving the performance of rendering the 3D model.

[0063] In summary, the client-side logic algorithm may be considered based on the position of the user representative object in the virtual world. More specifically, the client-side logic algorithm may be configured to determine which partitions at which levels of detail to provide to the user device to provide the best visual result. The client-side logic algorithm may be continuously updated in real time as the user representative object walks around the virtual world and as the user's view (i.e., field of view or line of sight) changes accordingly. Furthermore, the user's field of view may be represented as the field of view (FOV) of a camera or viewer in the virtual world. Furthermore, in some embodiments, a portion of the 3D model in or near the FOV may be defined as a visible partition of the 3D model, and other portions of the 3D model may be defined as invisible partitions of the 3D model. Only when a partition of the 3D model becomes a visible partition, may that partition be provided to the user device. However, the present invention is not limited in this respect.

[0064] Specifically, when a user device wants to begin presenting (i.e., showing) a 3D model, the user device may first download metadata about the 3D model. This metadata may include the layout of the virtual world and the hierarchy of the 3D model. The structure of the 3D model may then be replicated in memory as a tree of nodes. Each node in the tree may include one or more levels of detail. Based on the tree of nodes and the state of the user device, a client-side logic algorithm is used to find the optimal tree of nodes to make visible. The algorithm may consider the position and view of the user's representative object to determine which nodes should be made visible to provide the best visual result.

[0065] Note that, in the previous method, a 3D model may exist at multiple levels of detail. However, each time a different level of detail is rendered, meshes from the entire 3D model are always loaded, but fewer triangles are used for rendering. In this embodiment, the 3D model is divided into layers, and elements in the layers may be switched between levels of detail independently of each other. That is, each time a different level of detail is rendered, meshes from a portion of the entire 3D model, rather than the entire 3D model, may be loaded. For example, as described in the 3D model processing method 200 of FIG. 2, the 3D model may include a first original partition and a second original partition, and multiple first-stage partitions and multiple second-stage partitions may be generated based on the first original partition and the second original partition. Furthermore, as described in the 3D model processing method 700 of FIG. 7, the state of the user device may be used to determine the level of detail of the first-stage partition and the level of detail of the multiple second-stage partitions. That is, instead of loading the entire 3D model at once, only a portion of the 3D model may be loaded by the user device, thereby reducing waiting time and improving the user experience.

[0066] In addition, there are several strategies that can be used by the algorithm to find the optimal tree of nodes to display the 3D model. One strategy is to determine the level of detail of each partition, or node, based on a threshold distance from the user representative object to the partition. Another strategy is to start with the root node with the lowest level of detail to make the node visible, and gradually improve the tree of nodes.

[0067] In one embodiment, the distance strategy threshold may calculate the size of the partition in the user device's view and attempt to provide the partition with the highest detail to the user device. If the partition size is larger than a certain threshold, the 3D model processing system 100 may simplify the level of detail to reduce the partition size. If the partition size is smaller than a certain threshold, the system may refine the level of detail to increase the partition size. That is, the 3D model processing system 100 may attempt to provide as detailed (large) a 3D model as possible, as long as the computing power of the user device is sufficient. Furthermore, the user device's view may include the distance between the user representative object and the 3D model or the angle at which the user views the 3D model, but the present invention is not limited thereto. As shown in FIG. 8 , if a partition is close to the user representative object, the 3D model processing system 100 may render the partition with higher detail (e.g., LoD0 in FIG. 3D ), and partitions farther from the user representative object may be rendered with lower detail (e.g., LoD2 in FIG. 3D ). In other words, in the 3D model processing system 700, as the distance between the user representative object and the 3D model decreases, the first level of detail or the second level of detail may be upgraded to provide more detail of the 3D model (e.g., from LoD2 to LoD0 in FIG. 3D ), whereas as the distance between the user representative object and the 3D model increases, the first level of detail or the second level of detail may be downgraded to provide less detail of the 3D model (e.g., from LoD0 to LoD2 in FIG. 3D ).

[0068] In one embodiment, the root node strategy may start with the lowest level of detail (e.g., LoD2 in FIG. 3D ) for providing visual results to the user device. Note that the closer a partition of the 3D model is to the root node, the more visually distinctive (e.g., important feature) the partition is for the 3D model. The system then replaces nodes for their children and gradually improves the tree by gradually increasing the level of detail of the nodes. This strategy allows the system to comply with the limit on the amount of triangles loaded at one time. That is, compared to the 3D model processing system 700, instead of determining the level of detail of the partition to provide to the user device based on the state of the user device, the level of detail of the partition to provide to the user device may start from the lowest level of detail. In other words, in response to determining a request from the user device to view the 3D model, the lowest level of detail (e.g., LoD2 in FIG. 3D ) may be determined as the first level of detail of the first-stage partition and / or the second level of detail of the second-stage partition. A lowest level of detail of the first tier partition and / or a lowest level of detail of the second tier partition may then be provided to the user device based on the first level of detail and / or the second level of detail.

[0069] In one embodiment, the connection speed of the user device or the computing power of the user device may be used to determine the level of detail of the partition to provide to the user device. That is, in response to the connection speed of the user device being higher than a speed threshold or the computing power of the user device being higher than a computing threshold, the first level of detail or the second level of detail may be upgraded to more detail of the 3D model. Conversely, in response to the connection speed of the user device being lower than the speed threshold or the computing power of the user device being lower than the computing threshold, the first level of detail or the second level of detail may be downgraded to less detail of the 3D model.

[0070] Based on the above, at least one of these strategies may be used to determine when to refine or simplify the level of detail of a 3D model. Note that the best strategy to use depends on the specific application or design requirements, and the present invention is not limited thereto. Thus, by utilizing at least one of these strategies, viewer logic (e.g., a user's distance, field of view, or line of sight) may be taken into account when displaying the 3D model to provide a more pleasing visual result with lower latency on the user device.

[0071] Fig. 9 is a flow diagram of a 3D model processing method according to one embodiment of the present invention. With reference to Fig. 1 and Fig. 9, the 3D model processing method 900 of this embodiment may be performed by the 3D model processing system 100 in Fig. 1, and the details of each step in Fig. 9 will be described below together with the components shown in Fig. 1.

[0072] First, in step S910, first and second original spatial values ​​of the 3D model are obtained. Next, in step S920, a difference value between the first and second original spatial values ​​is obtained. After that, in step S930, a compressed spatial value corresponding to the second original spatial value based on the difference value is generated.

[0073] Based on the above, 3D model data can be compressed in an efficient manner, enabling real-time streaming of 3D model data, which is important for XR applications, thereby improving the user experience.

[0074] Additionally, for details of the implementation of the 3D model processing system 100 and the 3D model processing method 900, reference may be made to the following description of Figures 10-11 for sufficient teachings, suggestions, and embodiments. In some embodiments, the functions of the 3D model processing system 100 and the 3D model processing method 900 may be performed by the processor 104, although the invention is not limited thereto.

[0075] 10 is a schematic diagram of a compression scenario for a 3D model according to one embodiment of the present invention. Referring to FIG. 10, compression scenario 1000 includes a compression algorithm 1010.

[0076] In some embodiments, after the 3D model partitions are generated, each partition may be compressed to reduce the size of the data, thereby increasing transmission and loading speeds. The compression is specifically designed for fast decompression, allowing the system to quickly load the required 3D model partition. For example, the XRGC format is a compressed data format designed for streaming 3D models, which can provide a good balance between decoding speed and file size. Rapid decoding of XRGC data is important to render the 3D model as quickly as possible. This is especially important for real-time applications such as games and virtual reality.

[0077] 10, a compression algorithm 1010 may be adapted to reduce the size of the data. That is, by performing the compression algorithm 1010 on the original data, compressed data may be generated, and the size of the compressed data may be smaller than the original data. The compression algorithm may include, for example, smart grouping of triangles, baking textures, flattening hierarchy, compressing position data (e.g., coordinates), compressing triangle data (e.g., vertex indices), compressing vectors, etc.

[0078] In one embodiment, a 3D model may include multiple spatial values ​​such as coordinates, vertex indices, etc. It is worth noting that the spatial values ​​are points such as mesh coordinates, but instead of storing multiple coordinates (e.g., data points) individually, the difference between consecutive coordinates may be stored. For example, a sequence of 2, 5, 4, 6, 8 may be stored by converting it into a sequence of 2, 3, -1, 2, 2. That is, the relative values ​​(i.e., differences / distances) between each coordinate may be stored instead of the absolute values ​​of each coordinate. Using this method can significantly improve the compression ratio. Furthermore, this method can be applied to the 3D model processing method 900, where the first original spatial value may be a first coordinate of the 3D model, and the second original spatial value may be a second coordinate of the 3D model. The first coordinate and the second coordinate may belong to the same mesh, but the present invention is not limited thereto. That is, a compressed spatial value for the second original spatial value may be generated by replacing the second original spatial value with the difference between the first original spatial value and the second original spatial value.

[0079] In another embodiment, when the spatial values ​​are vertex indices of a triangle, instead of storing multiple vertex indices individually, if the multiple vertex indices belong to a consecutive sequence, no value needs to be stored or a specific value (e.g., 0) may be stored. On the other hand, the next vertex index needs to be stored only if the next vertex index is not consecutive with the current vertex index. For example, the sequence of vertex indices V1, V2, V3, V4, V6 may be converted and stored as the sequence 0, 0, 0, 0, V6. By using this approach, the compression ratio can be significantly improved. Furthermore, this approach can be applied to the 3D model processing method 900, in which the first original spatial value may be the first vertex index of a triangle of the 3D model, and the second original spatial value may be the second vertex index of the triangle of the 3D model. That is, depending on whether the second vertex index is consecutive with the first vertex index, a compressed spatial value for the second original spatial value can be generated by replacing the second original spatial value with a specific value (e.g., 0).

[0080] Based on the above, whether the spatial values ​​are mesh coordinates or triangle vertex indices, the spatial values ​​can be compressed to reduce file size, although the compression algorithm 1010 may include these strategies as well as other strategies described below.

[0081] In one embodiment, position data (e.g., coordinates) may typically be stored as Cartesian coordinates. For example, a list of three values ​​for each point X, Y, and Z may be stored. The data is arranged in an array such as [{x,y,z},{x,y,z},{x,y,z}]. In one embodiment, each channel (e.g., X, Y, or Z) may be processed separately. In other words, there is a separate list for each channel. However, the resulting compressed streams may still be interleaved with each other.

[0082] In one embodiment, the position data may include vertex indices of texture coordinates. The vertex positions are the coordinates of the vertices in the 3D model. The texture coordinates are the coordinates of the texture pixels that map to each vertex. The triangle indices may be stored separately and are identification numbers that identify each triangle. Compressing the position data involves two steps: (1) storing the numerical values ​​as integers with N-bit precision, and (2) compressing the sequence of integers.

[0083] To store numbers as integers with N-bit precision, in one embodiment, consider a sequence of numbers with a minimum value MIN and a maximum value MAX. The range of values ​​for the numbers between MIN and MAX is 2. NThe sequence may be divided into 2048 points, where N is an integer indicating the number of bits of precision used. For each number in the sequence, the number may be stored as the index of the nearest discrete point. For example, when N is 11, the range of values ​​between the minimum (MIN) and maximum (MAX) values ​​of the sequence of numbers may be divided into 2048 points. That is, MIN may be stored as 0 and MAX may be stored as 2047, as shown in the table below. However, the present invention is not limited thereto.

[0084] [Table 1]

[0085] Note that storing numbers in this manner can result in some loss of precision. For example, if the original range of numbers is 0 to 8000, a range containing 8001 numbers can be represented using only 2048 discrete points (numbers). Therefore, a number in a sequence of 4001 may be stored as the index of the 1024th discrete point, even though it is actually closer to the 1023rd discrete point. The amount of precision lost depends on the value of N. The higher the value of N, the more precision is maintained. However, the higher the value of N, the more space is required to store the data. Therefore, it is important to select the value of N based on quality requirements. If quality requirements are high, a higher value of N can be used. Conversely, if quality requirements are not as high, a lower value of N can be used to save space.

[0086] To compress a sequence of integers, there may be three steps: (1) storing the decompressed numbers with full precision, (2) calculating the offset (difference value) to the next number, and (3) checking the range of the offset. For example, if the sequence of numbers is 2, 5, 4, 6, 8, these numbers may be stored directly in memory. Further, by calculating the offset between each number, the sequence of numbers may be converted to the sequence 2, 3, -1, 2, 2. If there are more numbers in the sequence, step (2) may be performed again. Further, after the offset or all offsets have been calculated, the value / range of the offset may be checked to see if it is within a predetermined range. For example, if the offset is between -127 and 127, 127 may be added to the offset and the result may be stored as an unsigned byte (i.e., the sign bit is removed). The purpose is to remove the negative sign. That is, in the 3D model processing method 900, if the difference value between the first spatial value and the second spatial value is negative, a compensation value may be added to ensure that the difference value between the first spatial value and the second spatial value is positive. Therefore, the sequence of values ​​may be represented as an unsigned byte, which allows for a one-bit reduction (i.e., sign) when sorting the data. Conversely, if the offset is outside a predetermined range (i.e., -127 to 127), a binary value of 255 may be stored to indicate that the value will then be stored with full precision. However, the present invention is not limited thereto.

[0087] Note that the position data strategy takes advantage of the fact that geometry data is often stored in a very localized manner: vertex positions are usually close to their neighboring vertices, and in most cases only the offsets need to be stored. If the data is constantly jumping from MIN to MAX, the compression will be worse than storing the uncompressed numbers. However, in most cases the compression ratio is expected to be good, thereby reducing the file size of the 3D model.

[0088] In one embodiment, the vertex indices of triangles in a 3D model are often stored sequentially. For example, a first triangle may have vertex indices V1, V2, and V3, a second triangle may have vertex indices V4, V5, V6, and so on. To take advantage of this, the system may store only a single bit to indicate that the index of the next vertex is also the next consecutive index. Specifically, as shown in Table 2 below, if triangle T1 is stored with vertices V1, V2, and V3, the index of the current vertex is V3 (i.e., the most recently stored vertex), and the index of the next vertex of the next triangle T2 is V4, the single bit of the index of the next vertex (i.e., V4) may be stored as 0 to indicate that the next index is the next consecutive index (i.e., 4, immediately following 3). This saves space because only a single bit is required to store the next index of the next vertex, rather than storing the entire data for the next vertex.

[0089] [Table 2]

[0090] On the other hand, if the next vertex index is not the next consecutive index but is one of the three previously used indices, the system may store a 1 as the first bit of the next vertex index. The next two bits of the vertex's next index may be used to store the three previously used indices. That is, three bits may be used to represent a vertex index instead of a single bit. For example, if the current index of a vertex is V4 and the next vertex index is V1 (i.e., the first of the previously used indices), the next vertex index may be stored as 100. Similarly, if the next vertex index is V2 (i.e., the second of the previously used indices), the next vertex index may be stored as 101 or 110. However, the present invention is not limited thereto. Additionally, if the next vertex index is not one of the three previously used indices, the next vertex index may be stored as 111 and the actual index may be stored as the subsequent bit of the next vertex index. For example, the third vertex of triangle T2 may be stored as 111 and V6.

[0091] This allows triangle data to be stored efficiently, as only a single bit is stored to indicate when the next index is the next consecutive index. Furthermore, when the next index is not the next consecutive index but is one of the three previously used indexes, only three bits are stored. In this way, the next index can be stored in a relatively small amount of space, thereby reducing the loading time of the 3D model.

[0092] In one embodiment, in addition to the position data and triangle data, normals may be vectors that describe the angle and curvature of the mesh at each vertex position. To improve compression, the normals may be encoded or compressed using similar algorithms, the details of which are described in child This will not be explained again here.

[0093] Based on the above, the compression algorithm 1010 may include different strategies for different components in the 3D model. Thus, by performing the compression algorithm 1010 on the original data of the 3D model, compressed data of the 3D model can be generated, and the size of the compressed data can be smaller than the original data, thereby reducing the loading time of the 3D model.

[0094] Figure 11 is a schematic diagram of a compression scenario for a 3D model according to one embodiment of the present invention. Referring to Figure 11, compression scenario 1100 illustrates how triangles of a 3D model can be grouped to reduce the size of the 3D model.

[0095] In one embodiment, to improve the predictability of mesh data (i.e., increase compression), the mesh of the 3D model may be subdivided into groups of triangles. That is, in the 3D model processing method 900, before step S910, meshes of nearby 3D models may be grouped into multiple triangle groups. Note that when forming groups, triangles may be selected based on their proximity to each other and sharing as many vertices and edges as possible. For example, as shown in FIG. 11, to reduce the amount of data, nearby triangles (e.g., triangles that share an edge or adjacent triangles) are grouped together. This helps improve compression because the data in each group is more similar than the data for the entire mesh.

[0096] Furthermore, once the triangle groups are formed, a compression algorithm 1010 may be applied to the 3D model to further compress the data for each triangle group individually. For example, position data, triangle indices, triangle vertex indices, or normals may be compressed to reduce the file size of the 3D model, thereby reducing the loading time of the 3D model and achieving streaming of the 3D model in real time.

[0097] In summary, according to the 3D model processing system 100, the 3D model processing method 200, the 3D model processing method 700, and the 3D model processing method 900, the 3D model is formed, compressed, or loaded while taking into account the loading time from the user end, so that the 3D model can be streamed to the user device in real time, thereby improving the user experience.

[0098] It will be apparent to those skilled in the art that various modifications and variations can be made to the disclosed embodiments without departing from the scope or spirit of the invention. In view of the foregoing, it is intended that the present invention cover modifications and variations provided they come within the scope of the following claims and their equivalents. [Industrial Applicability]

[0099] The 3D model processing system, 3D model processing method, and storage circuit of the present invention can be used in applications that require high speed and low latency in 3D model rendering. [Explanation of symbols]

[0100] 100: 3D model processing system 102:Memory circuit 104: Processor 200, 700, 900: 3D model processing method S210, S220, S230, S240, S250, S260, S710, S720, S730, S740, S750, S910, S920, S930: Step 300A, 300B, 300C, 300D, 301C, 302C: Split scenario 310, 410: Original model 320, 330: Original partition 340: Step partition 400: Bake scenario 420: Texture map 422: Compression map 424: Baked Texture Map 430: Baked partition 500: The Flattening Scenario 510: Unflattened Model Hierarchy 520: Flattened Model Hierarchy 600: File format 800: View Scenario 1000, 1100: Compression scenario 1010: Compression algorithm

Claims

1. a memory circuit for storing program code; coupled to the memory circuit, obtaining a first original spatial value and a second original spatial value of a 3D model, the first original spatial value being a first vertex index of a triangle of the 3D model, and the second original spatial value being a second vertex index of the triangle of the 3D model; obtaining a difference value between the first original spatial value and the second original spatial value; generating a compressed spatial value corresponding to the second original spatial value based on the difference value; generating the compressed spatial value by replacing the second original spatial value with a single binary bit in response to the second vertex index being contiguous with the first vertex index, the single binary bit being configured to indicate whether the second vertex index is contiguous with the first vertex index; a processor that accesses said program code to Including, 3D model processing system.

2. The processor further comprises: generating the compressed spatial value by replacing the second original spatial value with three binary bits in response to the second vertex index being non-contiguous with the first vertex index and being one of three previously used indices, a first bit of the three binary bits being configured to indicate that the second vertex index is non-contiguous with the first vertex index, and a second bit and a third bit of the three binary bits being configured to indicate the one of the three previously used indices; The 3D model processing system according to claim 1 .

3. The processor further comprises: generating the compressed spatial value by storing three binary bits and an actual index of the second original spatial value in response to the second vertex index being non-contiguous with the first vertex index and not being one of three previously used indices, a first bit of the three binary bits configured to indicate that the second vertex index is non-contiguous with the first vertex index, and a second bit and a third bit of the three binary bits configured to indicate that the second vertex index is not one of the three previously used indices. The 3D model processing system according to claim 1 .

4. The processor further comprises: responsive to the difference value being negative, adding a compensation value to ensure that the difference value is positive; The 3D model processing system according to claim 1 .

5. obtaining a first original spatial value and a second original spatial value of a 3D model, wherein the first original spatial value is a first vertex index of a triangle of the 3D model and the second original spatial value is a second vertex index of the triangle of the 3D model; obtaining a difference value between the first original spatial value and the second original spatial value; generating a compressed spatial value corresponding to the second original spatial value based on the difference value; Including, a first vertex index being contiguous with the first vertex index, and a second original spatial value being replaced with a single binary bit indicating whether the second vertex index is contiguous with the first vertex index;

6. generating the compressed spatial value by replacing the second original spatial value with three binary bits in response to the second vertex index being non-contiguous with the first vertex index and being one of three previously used indexes, wherein a first bit of the three binary bits is configured to indicate that the second vertex index is non-contiguous with the first vertex index, and a second bit and a third bit of the three binary bits are configured to indicate the one of the three previously used indexes. Further comprising: The 3D model processing method according to claim 5 .

7. generating the compressed spatial value by storing three binary bits and an actual index of the second original spatial value in response to the second vertex index being non-contiguous with the first vertex index and not being one of three previously used indices, wherein a first bit of the three binary bits is configured to indicate that the second vertex index is non-contiguous with the first vertex index, and a second bit and a third bit of the three binary bits are configured to indicate that the second vertex index is not one of the three previously used indices. Further comprising: The 3D model processing method according to claim 5 .

8. responsive to the difference value being negative, adding a compensation value to ensure that the difference value is positive; Further comprising: The 3D model processing method according to claim 5 .

9. The processor obtaining a first original spatial value and a second original spatial value of a 3D model, the first original spatial value being a first vertex index of a triangle of the 3D model, and the second original spatial value being a second vertex index of the triangle of the 3D model; obtaining a difference value between the first original spatial value and the second original spatial value; generating a compressed spatial value corresponding to the second original spatial value based on the difference value; storing a program code configured to generating the compressed spatial value by replacing the second original spatial value with a single binary bit in response to the second vertex index being contiguous with the first vertex index, the single binary bit being configured to indicate whether the second vertex index is contiguous with the first vertex index. Non-transient memory circuits.

Citation Information

Patent Citations

  • Data processing method, recording medium and data processing device

    JP2002008060A

  • Compression system, compression program, decompression system, and decompression program for polygon data

    JP2009193095A

  • Imaging apparatus, imaging method, and image processing apparatus

    JP2019149674A

  • Information processing device, information processing method, and program

    JP2020160737A

  • Compression of a tessellated primitive index list in a tile rendering system

    US20120229464A1