3D model processing system and method and storage circuit

By segmenting the 3D model into multiple partitions and processing it according to the node location and material, the problem of high loading latency of XR content is solved, and efficient and low-latency 3D model loading and rendering is achieved, improving the user experience.

CN119251436APending Publication Date: 2025-01-03VIVERSE LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202410879338.2
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-07-03
Filing Date
2024-07-02
Publication Date
2025-01-03

AI Technical Summary

Technical Problem

The prior art is difficult to efficiently provide extended reality (XR) content with low latency, especially during the loading and rendering of 3D models, resulting in user experience being affected.

Method used

By splitting the 3D model into multiple original partitions and hierarchical partitions, partitioning based on node locations and materials, the partition is processed and stored using the processor, and partition loading at different levels of detail is achieved, reducing latency and improving rendering performance.

Benefits of technology

It realizes efficient loading and rendering of 3D models under low latency, improves user experience, and reduces the number of bytes and loading time of data transmission.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119251436A_ABST
    Figure CN119251436A_ABST
Patent Text Reader

Abstract

The invention provides a three-dimensional model processing system and method and a storage circuit. The three-dimensional model processing system comprises a storage circuit and a processor. The storage circuit is configured to store program code. The processor is coupled to the storage circuit and configured to access the program code to perform the following operations: obtaining a plurality of nodes of the three-dimensional model; segmenting the three-dimensional model into a first original partition and a second original partition based on location or material, the first original partition including a first set of nodes and the second original partition including a second set of nodes; generating a plurality of first hierarchical partitions of different levels of detail for the first original partition based on the first set of nodes; and generating a plurality of second hierarchical partitions of different levels of detail for the second original partition based on the second set of nodes.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to a three-dimensional (3D) model processing system; specifically, the present disclosure relates to a 3D model processing system, a 3D model processing method and a storage circuit. Background Art

[0002] In order to bring an immersive experience to users, technologies related to extended reality (XR), such as augmented reality (AR), virtual reality (VR) and mixed reality (MR), are being developed. AR technology enables users to bring virtual elements into the real world. VR technology enables users to enter a new virtual world to experience a different life. MR technology merges the real world with the virtual world. In addition, in order to bring a complete immersive experience to users, visual content, audio content or other sensory content can be provided to users through the network. Summary of the invention

[0003] The present disclosure relates to a 3D model processing system, a 3D model processing method and a storage circuit, so as to provide XR content to users in an efficient and low-latency manner.

[0004] In the present disclosure, a 3D model processing system is provided. The 3D model processing system includes a storage circuit and a processor. The storage circuit is configured to store program code. The processor is coupled to the storage circuit and is configured to access the program code to perform the following operations: obtain multiple nodes of a 3D model; based on position or material, divide the 3D model into a first original partition and a second original partition, wherein the first original partition includes a first group of nodes and the second original partition includes a second group of nodes; based on the first group of nodes, generate multiple first hierarchical partitions of different levels of detail (LoD) for the first original partition; and based on the second group of nodes, generate multiple second hierarchical partitions of different levels of detail for the second original partition.

[0005] In the present disclosure, a 3D model processing method is provided. The 3D model processing method comprises: obtaining a plurality of nodes of a 3D model; dividing the 3D model into a first original partition and a second original partition based on position or material, wherein the first original partition includes a first group of nodes and the second original partition includes a second group of nodes; generating a plurality of first hierarchical partitions of different detail levels for the first original partition based on the first group of nodes; and generating a plurality of second hierarchical partitions of different detail levels for the second original partition based on the second group of nodes.

[0006] In the present disclosure, a storage circuit is provided. The storage circuit is configured to store a program code, and the program code is configured to cause a processor to perform the following operations: obtain a plurality of nodes of a 3D model; divide the 3D model into a first original partition and a second original partition based on position or material, wherein the first original partition includes a first group of nodes and the second original partition includes a second group of nodes; based on the first group of nodes, generate a plurality of first hierarchical partitions of different detail levels for the first original partition; and based on the second group of nodes, generate a plurality of second hierarchical partitions of different detail levels for the second original partition.

[0007] Based on the above content, according to the 3D model processing system, the 3D model processing method and the storage circuit, a 3D model can be provided to the user in an efficient and low-latency manner.

[0008] In order to make the above contents easier to understand, several embodiments attached with the drawings will be described in detail below. BRIEF DESCRIPTION OF THE DRAWINGS

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

[0010] Figure 1 is a schematic diagram of a 3D model processing system according to an embodiment of the present disclosure.

[0011] Figure 2 is a schematic flowchart of a 3D model processing method according to an embodiment of the present disclosure.

[0012] Figure 3A is a schematic diagram of a partition scene of a 3D model according to an embodiment of the present disclosure.

[0013] Figure 3B is a schematic diagram of a partition scene of a 3D model according to an embodiment of the present disclosure.

[0014] Figure 3C is a schematic diagram of a partition scene of a 3D model according to an embodiment of the present disclosure.

[0015] Figure 3Dis a schematic diagram of a partition scene of a 3D model according to an embodiment of the present disclosure.

[0016] Figure 4 is a schematic diagram of a baking scene of a 3D model according to an embodiment of the present disclosure.

[0017] Figure 5 is a schematic diagram of a flattened scene of a 3D model according to an embodiment of the present disclosure.

[0018] Figure 6 It is a schematic diagram of the file format of the 3D model processing system according to an embodiment of the present disclosure.

[0019] Figure 7 is a schematic flowchart of a 3D model processing method according to an embodiment of the present disclosure.

[0020] Figure 8 is a schematic diagram of a viewing scene of a 3D model according to an embodiment of the present disclosure.

[0021] Fig. 9 is a schematic flowchart of a 3D model processing method according to an embodiment of the present disclosure.

[0022] Fig.10 is a schematic diagram of a compressed scene of a 3D model according to an embodiment of the present disclosure.

[0023] Fig.11 is a schematic diagram of a compressed scene of a 3D model according to an embodiment of the present disclosure.

[0024] [Explanation of Symbols]

[0025] 100: 3D model processing system

[0026] 102: Storage Circuit

[0027] 104: Processor

[0028] 200, 700, 900: 3D model processing method

[0029] 300A, 300B, 300C, 300D, 301C, 302C: Partitioning scenarios

[0030] 310, 410: Original model

[0031] 320, 330: original partition

[0032] 340: Hierarchical Partitioning

[0033] 400: Baking scene

[0034] 420: Texture map

[0035] 422: Compressed Image / Compressed Texture

[0036] 424: Baking Texture Maps

[0037] 430: Baking Partitions

[0038] 500: Flatten the scene

[0039] 510, 520: Model level

[0040] 600: File format

[0041] 800: Watch the scene

[0042] 1000, 1100: Compression scene

[0043] 1010: Compression algorithm

[0044] S210, S220, S230, S240, S250, S710, S720, S730, S740, S750, S910, S920, S930: Steps DETAILED DESCRIPTION

[0045] Reference will now be made in detail to exemplary embodiments of the present disclosure, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numerals are used in the drawings and the description to refer to the same or like components.

[0046] Certain terms are used throughout the specification and claims of this disclosure to refer to specific components. It should be understood by those skilled in the art that electronic device manufacturers may refer to the same components by different names. It is not intended herein to distinguish between components that have the same function but different names. In the following description and claims, words such as "comprise" and "include" are open-ended terms and should be interpreted as "including but not limited to...".

[0047] The term "coupling (coupling) (or connection (connection))" used throughout the entire specification of this application (including the attached claims) may refer to any direct or indirect connection mode. For example, if the first device is described herein as being coupled (or connected) to the second device, it should be interpreted as the first device being directly connected to the second device, or the first device being indirectly connected to the second device through other devices to be connected or some connection modes. The terms "first (first)", "second (second)" and similar terms mentioned throughout the entire specification of this application (including the attached claims) are only used to name discrete elements or to distinguish different embodiments or scopes. Therefore, the terms should not be regarded as limiting the upper or lower limits of the number of elements and should not be used to limit the order of arrangement of elements. In addition, the elements / components / steps using the same reference numbers in the drawings and embodiments are used as much as possible to represent the same or similar parts. In different embodiments, the same reference numbers or the same terms can be used to refer to the relevant descriptions of the elements / components / steps.

[0048] It should be noted that in the following embodiments, the technical features of several different embodiments may be replaced, recombined and mixed without departing from the spirit of the present disclosure to complete other embodiments. As long as the features of each embodiment do not violate the spirit of the present disclosure or conflict with each other, the embodiments may be mixed and used together at will.

[0049] In order to bring an immersive experience to users, technologies related to extended reality (XR), such as augmented reality (AR), virtual reality (VR) and mixed reality (MR), are being developed. AR technology enables users to bring virtual elements into the real world. VR technology enables users to enter a new virtual world to experience a different life. MR technology merges the real world with the virtual world. In addition, in order to bring a complete immersive experience to users, visual content, audio content or other sensory content can be provided to users through the network.

[0050] When streaming XR content (e.g., 3D geometry data) to users over the Internet, it is important that the user does not have to wait a long time before entering the virtual world. Therefore, at the stage of creating XR content, the size and composition of the XR content are important.

[0051] Furthermore, when sending XR content (e.g., 3D geometry data) over a network, it is important to store the mesh (comprising a set of triangles) of the XR content in as few bytes as possible so that the data can be transferred faster. At the same time, it is important that the performance of decoding the data is high enough so that there is no noticeable delay to the user while the system extracts the data.

[0052] In addition, when a user views XR content through a user device (e.g., a computer, a smartphone, etc.), the traditional method of loading the virtual world through the network by the user device often loads all data at once at startup (which results in a long loading time), or loads data when the user's user representative object (e.g., an avatar) walks near a virtual object (the virtual object appears and disappears in the scene). Therefore, the user experience may be interrupted by the waiting time for loading or the delay in loading. In view of the above, technicians in the field strive to provide an efficient and low-latency way to provide XR content to users.

[0053] In order to provide XR content (e.g., 3D models) to users in an efficient and low-latency manner, three aspects related to 3D models will be described below in conjunction with several embodiments. First, how to prepare, create, or partition a 3D model. Second, how to compress a 3D model. Third, how to load a 3D model from a user end (e.g., a user's user device). The three aspects can be used individually or together to provide XR content to users, and the present disclosure is not limited thereto.

[0054] Figure 1 is a schematic diagram of a 3D model processing system according to an embodiment of the present disclosure. Figure 1 , depicting a 3D model processing system 100. In different embodiments, the 3D model processing system 100 may be implemented as various intelligent devices and / or computer devices, but is not limited thereto.

[0055] exist Figure 1 In the embodiment, the 3D model processing system 100 includes a (non-temporary) storage circuit 102 and a processor 104. The storage circuit 102 is, for example, any type of fixed or removable random access memory (RAM), read-only memory (ROM), flash memory, hard disk, other similar devices or a combination of these devices, and can be used to record multiple program codes or modules.

[0056] The processor 104 is coupled to the memory circuit 102 and may be a general purpose processor, a special purpose processor, a conventional processor, a digital signal processor, a plurality of microprocessors, one or more microprocessors combined with a digital signal processor core, a controller, a microcontroller, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), any other kind of integrated circuit, a state machine, an advanced reduced instruction set computer (RISC) machine (ARM) based processor, and the like.

[0057] In an embodiment of the present invention, the processor 104 may access the modules and program codes recorded in the storage circuit 102 to implement the 3D model processing proposed in the present disclosure, and the details thereof will be described below.

[0058] Figure 2 is a schematic flow chart of a 3D model processing method according to an embodiment of the present disclosure. Figure 1 and Figure 2 The 3D model processing method 200 of this embodiment can be performed by Figure 1 The 3D model processing system 100 is executed, and the following will be combined with Figure 1 The components shown are used to illustrate Figure 2 Details of each step in the.

[0059] First, in step S210, a plurality of nodes of a 3D model may be obtained. In one embodiment, a node is a fundamental building block of a 3D model. That is, a plurality of nodes may form a geometric shape (e.g., a triangle), and a plurality of geometric shapes may form a 3D model. Next, in step S220, the 3D model may be split into a first primitive partition and a second primitive partition based on position or material. In addition, the first primitive partition may include a first group of nodes, and the second primitive partition may include a second group of nodes. 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 primitive partition, a second primitive partition, etc.) based on the position or material of each area of ​​the 3D model. Thereafter, in step S230, the plurality of nodes may be divided into a first group of nodes and a second group of nodes based on the first primitive partition and the second primitive partition. It is worth mentioning that step S220 and step S230 can be performed simultaneously, and step S220 can define the shape of a piece of the 3D model, and step S230 can define which nodes belong to the piece of the 3D model. However, the present disclosure is not limited to this. In addition, in step S240, a plurality of first graded partitions of different detail levels can be generated for the first original partition based on the first group of nodes. In addition, in step S250, a plurality of second graded partitions of different detail levels can be generated for the second original partition based on the second group of nodes.

[0060] It should be noted that, although for the sake of convenience of explanation, the 3D model is described as including the first original partition and the second original partition, the 3D model may include multiple original partitions. In addition, multiple hierarchical partitions may correspond to the multiple original partitions. However, the present disclosure is not limited thereto.

[0061] Based on the above, by partitioning the 3D model based on material or location, the size of each partition of the 3D model can be reduced. Therefore, based on the request from the user device at the user end, only a part of the original model can be loaded as needed, rather than loading the entire original model at once, thereby reducing waiting time and improving user experience.

[0062] In addition, the implementation details of the 3D model processing system 100 and the 3D model processing method 200 can be referred to in the following Figures 3A to 6 In some embodiments, the functions of the 3D model processing system 100 and the 3D model processing method 200 may be executed by the processor 104, but the present disclosure is not limited thereto.

[0063] Figure 3A is a schematic diagram of a partition scene of a 3D model according to an embodiment of the present disclosure. Figure 3B FIG. 4 is another schematic diagram of a partition scene of a 3D model according to an embodiment of the present disclosure. Figure 3A and Figure 3B , the partition scene 300A includes an original model 310 and a plurality of original partitions 320 , and the partition scene 300B includes an original model 310 and a plurality of original partitions 330 .

[0064] In the stage of preparing a 3D model, how to cut the 3D model into multiple blocks will not only affect the efficiency of streaming the 3D model over the Internet, but also affect the speed of loading the 3D model at the user end. In other words, in order to improve the speed and performance of loading and rendering the 3D model, how to cut the 3D model into multiple blocks is important. In one embodiment, the smaller blocks of the 3D model can be called partitions.

[0065] First reference Figure 3A In one embodiment, the 3D model may be divided into smaller blocks (i.e., partitions) based on the material of each block or region of the 3D model. For example, the original model 310 of the robot may include different parts, such as a head, a body, an arm, a wheel, etc. These parts may be designed to be made of different materials (e.g., metal, plastic, rubber, etc.). Figure 3A As shown, the original model 310 of the robot can be categorized into different materials and divided into multiple blocks based on the material (e.g., the material index of each block). In one embodiment, the material index of each block can be pre-defined according to design needs. For example, a block of material with a material index of 1 can be metal. The material index numbers of all blocks can be associated with a UV map corresponding to the 3D model. However, the present disclosure is not limited to this. That is, partitions with the same material can be grouped together. In other words, the first original partition can belong to the first material, and the second original partition can belong to the second material. Based on the material of each block, the pattern of the process of dividing the original model 310 into multiple blocks can be referred to as a "material pattern", and these divided blocks can be referred to as multiple original partitions 320.

[0066] Reference now Figure 3B In one embodiment, the 3D model may be divided into smaller pieces based on the position of each piece of the 3D model. For example, the original model 310 of the robot may include an upper portion, a lower portion, a left portion, a right portion, a front portion, a rear portion, etc. The original model 310 of the robot may be classified into different positions or quadrants in space, and based on the positions of the robot, the robot may be divided into smaller pieces based on the positions of the robot, such as the positions of the robot and the rear portion. Figure 3BThe positions shown are divided into a plurality of blocks. That is, partitions that are close to each other may be grouped together. In other words, the first original partition may belong to the first position, and the second original partition may belong to the second position. Based on the position of each block, the pattern of the process of segmenting the original model 310 into a plurality of blocks may be referred to as a "spatial pattern", and these divided blocks may be referred to as a plurality of original partitions 330.

[0067] Figure 3C FIG. 1 is a schematic diagram of a partition scene of a 3D model according to an embodiment of the present disclosure. Figure 3C , the partition scene 300C includes a partition scene 301C and a partition scene 302C. The partition scene 301C shows the original model 310 partitioned by material mode, and the partition scene 302C shows the original model 310 partitioned by space mode.

[0068] In one embodiment, the original model 310 may be divided into a plurality of blocks by using a material mode to create the plurality of original partitions 320, or by using a space model to create the plurality of original partitions 330, but the present disclosure is not limited thereto. That is, a partitioning mode may be determined first. Then, based on the partitioning mode, the original model 310 may be divided into a plurality of partitions. In one embodiment, a bounding box may represent the partitions of the original model 310, but is not limited thereto. For example, Figure 3C As shown, each of the partition scene 301C and the partition scene 302C may include a plurality of bounding boxes, and the plurality of bounding boxes may represent the plurality of original partitions 320 or the plurality of original partitions 330 , respectively.

[0069] It should be noted that larger partitions can be divided into smaller partitions. That is, the original model 310 can be divided into smaller partitions so that the parts of the original model 310 can change the visual quality independently of each other. The segmentation process can be completed using a recursive algorithm. That is, the segmentation process can be repeated until a specific condition is met. Therefore, the original model 310 can be stored as independent triangles, and the original model 310 can be parsed triangle by triangle without storing the entire original model 310 in the memory at one time. In one embodiment, the triangles can be referred to as or stored as soup files, and the soup files can be files of collection of independent triangles.

[0070] For example, after the partitioning mode has been determined and the partitioning has been implemented, the bounding box of each partition can be divided into multiple parts, and then a new SUP file is created for the triangles falling into the new bounding box. This segmentation process can be implemented in a recursive manner. For example, in the first iteration of the segmentation process, all triangles of the multiple original partitions 320 or the multiple original partitions 330 can be divided into two or more groups (groups) (also referred to as children). Then, the segmentation process can be implemented again for these groups to create two or more subgroups for each group. This segmentation process can be repeated until a specific condition is met. For example, each subgroup of all subgroups is lower than the triangle threshold. The triangle threshold can be adjusted according to design needs. In one embodiment, the triangle threshold can be determined based on the maximum value of the computing power or connection speed of the user device. That is, after the last iteration of the segmentation process, the number of triangles in each group of triangles is less than the triangle threshold. After the segmentation process, the partitions that have been created together can form a tree or hierarchy of the original model 310. That is, the 3D model may be loaded partition by partition instead of loading all the 3D models at once. Thus, by partitioning the 3D model based on material or location, the size of each partition of the 3D model may be reduced. Therefore, based on a request from a user device, only a portion of the original model 310 may be loaded as needed instead of loading the entire original model 310 at once, thereby reducing waiting time and improving user experience.

[0071] Figure 3D FIG. 1 is a schematic diagram of a partition scene of a 3D model according to an embodiment of the present disclosure. Figure 3D , the partition scene 300D includes a hierarchical partition 340 .

[0072] In one embodiment, after the original model 310 is partitioned, the original model 310 may be divided into a plurality of blocks, such as the original partition 320 or the original partition 330. That is, when the user device loads the original model 310, the original model 310 may be loaded partition by partition, and the size of each partition may be determined based on the computer capability of the user end. However, in some cases, it may be necessary to load all 3D models at once rather than loading the 3D models partition by partition. That is, the total number of triangles of the original model 310 needs to be less than the triangle threshold for the user device to process all triangles at once. For example, the triangle threshold may be determined based on the maximum value of the computing capability of the user device. In one embodiment, a decimation algorithm (selected from the prior art according to design requirements) may be used to remove triangles until the total number of triangles is less than the triangle threshold.

[0073] At the same time, when the user is viewing 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 the user is viewing a portion (e.g., a partition) of the original model 310 rather than the entire model, the number of triangles in the portion should also meet the triangle threshold. In other words, some triangles containing key features (e.g., visually distinguishing features) can be put back into the portion to increase the number of triangles in the portion, thereby providing an optimal visual experience.

[0074] At the same time, when the user is viewing a portion of the part of the 3D model, the portion of the part should also provide the user with the best visual experience. That is, when the user is viewing a portion of the part 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 key features can be put back to the portion to increase the number of triangles in the portion, thereby providing the best visual experience. In one embodiment, the partition or the portion of the partition can be defined by the partitioning process of the original model 310 in material mode or spatial mode. However, the present disclosure is not limited to this.

[0075] In summary, the original model 310 may include multiple partitions (e.g., the original partition 320 or the original partition 330), and each partition may be processed to include different amounts of triangles for different display scenarios to provide an optimal visual experience. That is, each partition may be processed to generate multiple hierarchical partitions for display separately. Each of the hierarchical partitions may belong to a level of partitioning. That is, each partition of the original model 310 may belong to a different level of partitioning of the hierarchical partitioning.

[0076] In one embodiment, each partition may include three partition levels, such as level 0, level 1, and level 2. The partition level may define how many parts or groups a 3D model or a partition of the 3D model can be divided into, and a higher partition level represents more groups. That is, when the partition level is higher, the partition of the original model 310 may include more groups of triangles. For example, Figure 3DAs shown, for level 0 partition, triangles of a partition (e.g., a monkey head) of the original model 310 or triangles of the original model 310 may belong to the same group. More specifically, a group of triangles may include 50,000 triangles, and the total number of triangles of the partition of the level 0 partition or the original model 310 may be 50,000. In addition, for level 1 partition, triangles of the partition or triangles of the original model 310 may belong to two groups for display separately. More specifically, each group of triangles may include 50,000 triangles, and the total number of triangles of the partition of the level 1 partition or the original model 310 may be 100,000. In addition, for level 2 partition, triangles of the partition or triangles of the original model 310 may belong to four groups for display separately. More specifically, each group of triangles may include 50,000 triangles, and the total number of triangles of the partition of the level 2 partition or the original model 310 may be 200,000. However, the present disclosure is not limited thereto.

[0077] Now return to reference again Figure 3D In one embodiment, different levels of detail (LoD) may be created for each partition level. That is, each of the original partitions 320 or each of the original partitions 330 may include a different LOD. The purpose is to ensure that the triangles of each of the hierarchical partitions are less than different triangle thresholds. For example, for different types of user devices at the user end, the computing power of each of the user devices may be different. Therefore, different triangle thresholds may be applied to different user devices. In order to generate different levels of detail for each of the hierarchical partitions, an extraction algorithm (selected from the prior art according to design needs) may be used to remove triangles until the triangle count is below a certain limit. This limit may be determined based on the computing power of the user device. In one embodiment, each partition level may include 3 levels of detail (LoD), such as LoD 0, LoD 1, and LoD 2. That is, the hierarchical partitions may include at least a partition of detail level 0, a partition of detail level 1, and a partition of detail level 2. The LoD may define how many triangles each group of triangles should include, and a lower LoD represents more triangles. That is, when the level of detail is lower, more triangles may be included in each group of triangles. In other words, the higher the level of detail, the higher the compression ratio.

[0078] For example, for LoD 0, the triangle count limit may be 50,000. That is, a group of triangles may include 50,000 triangles. For LoD 1, the triangle count limit may be 12,500. That is, a group of triangles may include 12,500 triangles. For LoD 2, the triangle count limit may be 4,000. That is, a group of triangles may include 4,000 triangles. The triangle count limit may be determined according to design needs or based on the computing power of the user device. However, the present disclosure is not limited thereto. It is worth mentioning that the groups (i.e., partitions) of each partition level may together form the original model 310 or a partition of the original model 310. That is, the original model 310 of the level 0 partition or a partition of the original model 310 of the level 0 partition may include 50,000 triangles of LoD 0, the original model 310 of the level 1 partition or a partition of the original model 310 of the level 1 partition may include 100,000 triangles of LoD 0, and the original model 310 of the level 2 partition or a partition of the original model 310 of the level 2 partition may include 200,000 triangles of LoD 0.

[0079] It should be noted that one purpose of the different levels of detail is to provide the user with options when viewing the model so that when some unimportant details are not fully rendered, the user is still provided with an ideal visual result. That is, each partition of the original model 310 can be rendered with a higher or lower quality when necessary. For example, only the portion of the original model 310 that is close to the viewer can be rendered with higher details, while other portions of the original model 310 that are farther away can be rendered with lower details. These different levels of detail for each partition help improve the performance of rendering, while the original model 310 can still provide the user with an ideal visual result because it does not have to render all the details in all 3D models at once. In this way, the 3D model processing system 100 or the 3D model processing method 200 can provide an effective (powerful) way to improve the speed and performance of loading and rendering 3D models.

[0080] Figure 4 3D model according to an embodiment of the present disclosure. Figure 4 , the baking scene 400 illustrates how a baking process is utilized to apply a texture to a mesh (eg, triangle) of a 3D model.

[0081] In one embodiment, if a partition of a 3D model includes a large texture, not only may the mesh (e.g., triangle) include several levels of detail, but multiple levels of detail may also be generated for the texture. For example, if a partition has a texture with 2048×2048 pixels, the partition may be divided into more blocks, such as four blocks. That is, four partitions each having 1024×1024 pixels may be created. In this way, based on a request from a user device, only a portion of the texture is loaded, rather than loading all the textures of the partition at once, thereby reducing waiting time and increasing user experience.

[0082] In one embodiment, the baking process is the process of transferring detailed information from a high-resolution 3D model to a low-resolution 3D model. This is usually done to improve performance or reduce file size. The baking process involves creating texture maps to 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 the low-resolution model the appearance of the high-resolution model without the computational cost of rendering all polygons.

[0083] It is worth mentioning that if the texture coordinates of the texture map of the 3D model take up too much space in the texture image, the texture coordinates can be recalculated and the texture can be re-baked, such as Figure 4 For example, the texture of the original model 410 can be captured and stored as a plurality of texture maps 420 in the UV coordinate system. Figure 4 As shown, the original model 410 may correspond to four texture maps 420. The texture maps 420 may be compressed to generate a plurality of compressed texture maps 422. For example, Figure 4As shown, the four texture maps 420 may be compressed to a quarter of their original size to form four compressed maps 422. Next, a baking process may be performed on each of the compressed texture maps to generate a plurality of baked texture maps 424. Thereafter, each of the plurality of baked texture maps 424 may be applied to a corresponding mesh of the original model 410 to form (bake out) a baked partition 430. That is, the 3D model may be unwrapped into a two-dimensional (2D) plane (e.g., texture map 420). In addition, a baked texture may be created (baked out) by transferring a high-resolution model of the texture of the 3D model to a low-resolution model. In other words, the baked texture may contain key features (e.g., visually distinguishing features) of the high-resolution model of the texture. In addition, the baked texture may be applied to the mesh of the 3D model. In this way, the baking process may enable more efficient storage and rendering of the original model 410.

[0084] In one embodiment, if the mesh can be stored more efficiently by baking the texture, a baking process can be performed to recalculate the texture coordinates and re-bake the texture. To determine if the texture coordinates take up too much space, the total area of ​​the texture coordinates can be divided by the total area of ​​the texture. If the result of the division is not below a certain threshold, the texture coordinates can be recalculated and the texture can be re-baked. The threshold can be a value set by the user. The lower the threshold, the more likely it is that the texture coordinates will be recalculated.

[0085] Figure 5 is a schematic diagram of a flattening scene of a 3D model according to an embodiment of the present disclosure. Figure 5 , the flattened scene 500 may include an unflattened model level 510 and a flattened model level 520 .

[0086] In one embodiment, the 3D model may be composed of many different parts called levels. These levels may be nested so that one part may contain other parts. It should be noted that when the 3D model is flattened, all levels are removed and the 3D model is converted into a flat array of single triangles. For example, by implementing the flattening process, the unflattened model level 510 may be turned into a flattened model level 520 by removing all levels in the structure of the 3D model and ensuring that only a flat array of triangles is retained. This does not change the appearance of the 3D model, but does make it easier to handle. That is, there is no visual change between the unflattened model corresponding to the unflattened model level 510 and the flattened model corresponding to the flattened model level 520. These files storing the flat array of triangles may be referred to as or stored as SUP files, and SUP files may be collection files of independent triangles.

[0087] In one embodiment, each triangle in the flat array can store three pieces of information: the locations of the vertices that make up the triangle, the texture coordinates of the triangle, and the material index of the triangle. The texture coordinates tell the renderer of the 3D model where to find the texture image used to render the triangle. The material index tells the renderer which material to use to render the triangle. It is worth mentioning that storing all the data of the 3D model in a flat array of triangles can make it easier to process, especially for large 3D models. This is because the renderer can quickly access the required data without traversing each level. In this way, 3D models that are larger than the computer's available memory can be processed.

[0088] Figure 6 Schematic diagram of the file format of the 3D model processing system according to an embodiment of the present disclosure. Figure 6 , the file format 600 illustrates exemplary content of a 3D model, but the present disclosure is not limited thereto.

[0089] In one embodiment, when all meshes and textures for all levels of detail have been generated, the meshes and textures may be generated as follows: Figure 6 The file format 600 is stored in the file format shown. The file format 600 may be an Extended Reality Geometry (XRG) file format or an Extended Reality Geometry Compressed (XRGC) file format. An XRG file or an XRGC file may be a data container for storing other files of common file types (e.g., JPG and PNG). However, the present disclosure is not limited thereto.

[0090] In one embodiment, the file format 600 may include a header file, a JavaScript Object Notation (JSON) file, a mesh of a 3D model (e.g., a triangle), a texture of a 3D model, etc. The header file may be configured to save general information of the file in the container file. For example, the header file may describe some basic information and the location of the JSON file. In addition, the JSON file may be configured to describe some basic information (e.g., the complete layout and hierarchy of the 3D model) and the location of the JSON file. The client application may use the JSON file to read the model description and perform optimized queries on the required geometry. The query may be optimized based on different factors (e.g., the position of the user representative object of the user in the 3D space (e.g., the virtual world of XR) and the distance between the user representative object and the 3D model). It is worth mentioning that the user representative object may be, for example, an avatar of the user, 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 disclosure is not limited thereto. In this way, based on file format 600, the data of the 3D model can be stored or compressed in an efficient manner, allowing the data of the 3D model to be streamed in real time as needed, which is crucial for XR applications, thereby increasing the user experience.

[0091] Figure 7 is a schematic flow chart of a 3D model processing method according to an embodiment of the present disclosure. Figure 1 and Figure 7 The 3D model processing method 700 of this embodiment can be performed by Figure 1 The 3D model processing system 100 is executed, and the following will be combined with Figure 1 The components shown are used to illustrate Figure 7 Details of each step in the.

[0092] First, in step S710, a request from a user device to view a 3D model may be determined. For example, the user may want to view the 3D model in a virtual world, and the user's user representation object is a certain distance away from the 3D model in the virtual world. In addition, the 3D model may be divided into two parts, the first part is close to the user representation object, and the second part is relatively far away from the avatar. In addition, the first part may belong to a first original partition, and the second part may belong to a second original partition. In addition, if Figure 3DAs shown, a plurality of first hierarchical partitions of different LoDs may be generated for the first original partition, and a plurality of second hierarchical partitions of different LoDs may be generated for the second original partition. Next, in step S720, a first level of detail of the plurality of first hierarchical partitions may be determined based on the state of the user's user device. For example, since the first portion is closer to the user representative object (compared with the second portion), the first LoD may be determined as LoD 0 to provide more details to the user device. Thereafter, in step S730, a second level of detail of the plurality of second hierarchical partitions may be determined based on the state of the user device. For example, since the second portion is farther from the user representative object (compared with the first portion), the second LoD may be determined as LoD 2 to provide less details to the user device. In addition, in step S740, one of the plurality of first hierarchical partitions may be provided to the user device based on the first level of detail. For example, when the computer capability of the user device is high, a hierarchical partition of a level 2 partition of the plurality of first hierarchical partitions may be provided to the user device. On the contrary, when the computer capability is low, the hierarchical partition of the level 0 partition of the plurality of first hierarchical partitions may be provided to the user device. In addition, in step S750, one of the plurality of second hierarchical partitions may be provided to the user device based on the second level of detail. For example, when the computer capability of the user device is high, the hierarchical partition of the level 2 partition of the plurality of second hierarchical partitions may be provided to the user device. On the contrary, when the computer capability is low, the hierarchical partition of the level 0 partition of the plurality of second hierarchical partitions may be provided to the user device. However, the present disclosure is not limited thereto.

[0093] Based on the above, the appropriate level of detail is determined based on the state of the user device, and the corresponding content of the 3D model is provided to the user device in a low-latency manner.

[0094] In addition, the implementation details of the 3D model processing system 100 and the 3D model processing method 700 can be referred to the following Figure 8 In some embodiments, the functions of the 3D model processing system 100 and the 3D model processing method 700 may be executed by the processor 104, but the present disclosure is not limited thereto.

[0095] Figure 8 is a schematic diagram of a viewing scene of a 3D model according to an embodiment of the present disclosure. Figure 8 , viewing scene 800 illustrates how to load a 3D model based on the state of a user device.

[0096] In one embodiment, during the stage of creating the model, the 3D model is divided into multiple partitions, and these partitions can be stored at different levels of detail. Thereafter, when the user is viewing the 3D model, the 3D model can be rendered based on the state of the user's device. The state of the user's device is, for example, the distance between the user's representative object and the 3D model, the user's eye sight, the user's line of sight, the (internet) connection speed of the user's device, the computing power of the user's device, etc. For example, the part of the 3D model close to the user's representative object can be rendered with higher details, while the part far from the user's representative object can be rendered with lower details. These different levels of detail of each partition help to improve the performance of rendering, while the 3D model can still provide the user with an ideal visual result, because it does not have to render all the details in all 3D models at once. That is, similar to the user's feeling in the real world, the closer the object is to the user, the clearer it may be, while the other object that is not so close to the user may be more blurred. Therefore, the computing power used to render the farther part of the 3D model can be saved, thereby improving the performance of rendering the 3D model.

[0097] In summary, the user-side logic algorithm can be considered based on the position of the user representative object in the virtual world. More specifically, the user-side logic algorithm can be configured to determine which partitions will be provided to the user device at what level of detail to give the best visual results. When the user representative object moves around the virtual world and the user's position or field of view (i.e., eye field of view or line of sight) changes accordingly, the user-side logic algorithm can be continuously updated in real time. In addition, the user's eye field of view can be represented as the field of view (FOV) of the camera or viewer in the virtual world. In addition, in some embodiments, a portion of the 3D model in or near the FOV can be defined as a visible partition of the 3D model, and another portion of the 3D model can be defined as an invisible partition of the 3D model. Only when the partition of the 3D model becomes a visible partition can the partition of the 3D model be provided to the user device. However, the present disclosure is not limited to this.

[0098] Specifically, when a user device wants to start displaying (i.e., viewing) 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 nodes in 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 node tree and the state of the user device, a user-side logic algorithm is then used to find the optimal node tree so that the optimal node tree is visible. The algorithm may take into account the position and field of view of the user-represented object to determine which nodes need to be visible to provide the best visual experience.

[0099] It should be noted that in the prior art, there may be multiple levels of detail in the 3D model. However, each time a different level of detail is presented, the mesh is always loaded from the entire 3D model, and only a smaller number of triangles are used to represent the mesh. In the present disclosure, the 3D model is divided into levels, so that the elements in the levels can switch between levels of detail independently of each other. That is, each time a different level of detail is presented, the mesh can be loaded from a portion of the entire 3D model instead of the entire 3D model. For example, Figure 2 As described in the 3D model processing method 200 shown in FIG. 1 , the 3D model may include a first original partition and a second original partition, and a plurality of first hierarchical partitions and a plurality of second hierarchical partitions may be generated based on the first original partition and the second original partition. Figure 7 As described in the 3D model processing method 700, the state of the user device can be used to determine the detail level of the first hierarchical partition and the detail level of the second hierarchical partition. In other words, the user device can only load a portion of the 3D model instead of loading the entire 3D model at once, thereby reducing waiting time and improving user experience.

[0100] In addition, the algorithm can use multiple strategies to find the optimal node tree for displaying the 3D model. One strategy is to determine the level of detail of each partition or make nodes visible based on a threshold of the distance from the user representative object to the partition. Another strategy is to start from the root node of the lowest level of detail to make nodes visible and gradually improve the node tree.

[0101] In one embodiment, the distance threshold strategy may calculate the size of the partition in the view of the user device and attempt to provide the partition to the user device with the highest detail. If the size of the partition is greater than a certain threshold, the 3D model processing system 100 may simplify the level of detail to make the size of the partition smaller. If the size of the partition is less than a certain threshold, the system may refine the level of detail to make the size of the partition larger. That is, as long as the computing power of the user device is sufficient, the 3D model processing system 100 may attempt to provide a 3D model that is as detailed (large) as possible. In addition, the view of the user device may include the distance between the user-represented object and the 3D model or the angle from which the user views the 3D model, but the present disclosure is not limited to this. Figure 8 As shown, if the partition is close to the user representative object, the 3D model processing system 100 may use higher details (e.g., Figure 3D The partitions are rendered at LoD 0 (shown), while the partitions farther away from the user representative object may be rendered at lower details (e.g., Figure 3D In other words, in the 3D model processing method 700, in response to the distance between the user-represented object and the 3D model becoming smaller, the first detail level or the second detail level may be upgraded (for example, from Figure 3D In contrast, in response to a distance between the user-represented object and the 3D model becoming larger, the first level of detail or the second level of detail may be downgraded (e.g., from LoD 2 to LoD 0). Figure 3D LoD 0 to LoD 2) are shown to provide less detail of the 3D model.

[0102] In one embodiment, the root node policy can be derived from the lowest level of detail (e.g., Figure 3D The system then gradually improves the tree by replacing nodes of its subgroups and gradually increasing the level of detail of the nodes. This strategy allows the system to comply with the limit on the number of triangles loaded at one point in time. That is, compared to the 3D model processing method 700, the level of detail of the partition provided to the user device can start from the lowest level of detail, rather than determining the level of detail of the partition provided to the user device based on the state of the user device. In other words, in response to a request from a user device to view the 3D model being determined, the lowest level of detail (for example, Figure 3DThe LoD 2) is determined as the first detail level of the first hierarchical partition and / or the second detail level of the second hierarchical partition. Next, based on the first detail level and / or the second detail level, the lowest detail level of the first hierarchical partition and / or the lowest detail level of the second hierarchical partition may be provided to the user device.

[0103] 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 provided to the user device. That is, in response to the connection speed of the user device being greater than a speed threshold or the computing power of the user device being greater than a computing threshold, the first level of detail or the second level of detail may be upgraded to provide more details of the 3D model. Conversely, in response to the connection speed of the user device being less than the speed threshold or the computing power of the user device being less than the computing threshold, the first level of detail or the second level of detail may be downgraded to provide less details of the 3D model.

[0104] Based on the above, at least one of these strategies can be used to determine when to refine or simplify the level of detail of the 3D model. It should be noted that the best strategy used may depend on the specific application or according to design needs, and the present disclosure is not limited to this. Therefore, by utilizing at least one of these strategies, the viewer logic (e.g., the user's distance, eye field or line of sight) can be considered during the stage of viewing the 3D model to provide better visual results to the user device in a low-latency manner.

[0105] Fig. 9 is a schematic flow chart of a 3D model processing method according to an embodiment of the present disclosure. Figure 1 and Fig. 9 The 3D model processing method 900 of this embodiment can be performed by Figure 1 The 3D model processing system 100 is executed, and the following will be combined with Figure 1 The components shown are used to illustrate Fig. 9 Details of each step in the.

[0106] First, in step S910, a first original spatial value and a second original spatial value of the 3D model may be obtained. Next, in step S920, a difference between the first original spatial value and the second original spatial value may be obtained. Thereafter, in step S930, a compressed spatial value corresponding to the second original spatial value may be generated based on the difference.

[0107] Based on the above, the data of the 3D model can be compressed in an efficient manner so that the data of the 3D model can be streamed in real time, which is essential for XR applications, thereby increasing the user experience.

[0108] In addition, the implementation details of the 3D model processing system 100 and the 3D model processing method 900 can be referred to the following Figure 10 to Figure 11 In some embodiments, the functions of the 3D model processing system 100 and the 3D model processing method 900 may be executed by the processor 104, but the present disclosure is not limited thereto.

[0109] Fig.10 is a schematic diagram of a compression scene of a 3D model according to an embodiment of the present disclosure. Fig.10 , the compression scenario 1000 includes a compression algorithm 1010 .

[0110] In one embodiment, after the partitions of the 3D model are generated, each partition may be compressed to reduce the size of the data, thereby increasing the speed of transmission and loading. The compression may be specifically designed to decompress quickly so that the system can quickly load the required partitions of the 3D model. For example, the XRGC format is a compressed data format designed for streaming 3D models that enables a good balance between decoding speed and file size. It is important to be able to decode the XRGC data quickly so that the 3D model can be rendered as quickly as possible. This is especially important for real-time applications such as games and virtual reality.

[0111] Reference now Fig.10 A compression algorithm 1010 may be used to reduce the size of the data. That is, by applying the compression algorithm 1010 to 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, grouping triangles in an intelligent manner, baking textures, flattening hierarchies, compressing position data (e.g., coordinates), compressing triangle data (e.g., vertex indices), compressing vectors, etc.

[0112] In one embodiment, the 3D model may include multiple spatial values, such as coordinates, vertex indices, etc. It is worth mentioning that when the spatial value is a point (such as a coordinate of a grid), the difference between consecutive coordinates can be stored instead of storing the multiple coordinates (such as data points) separately. For example, the sequence 2, 5, 4, 6, 8 can be stored by converting into the sequence 2, 3, -1, 2, 2. That is, the relative value (i.e., difference / distance) between each coordinate can be stored instead of the absolute value of each coordinate. By using this strategy, the compression ratio can be greatly improved. In addition, the strategy can be applied to the 3D model processing method 900, and the first original spatial value can be the first coordinate of the 3D model, and the second original spatial value can be the second coordinate of the 3D model. The first coordinate and the second coordinate may belong to the same grid, but the present disclosure is not limited to this. That is, the compressed spatial value of the second original spatial value can be generated by replacing the second original spatial value with the difference between the first original spatial value and the second original spatial value.

[0113] In another embodiment, when the spatial value is a vertex index of a triangle, and when the plurality of vertex indices belong to a continuous sequence, no value may need to be stored or only a specific value (e.g., 0) may need to be stored, instead of storing the plurality of vertex indices individually. On the other hand, the value of the next vertex index may need to be stored only when the next vertex index is discontinuous with the current vertex index. For example, the vertex index sequence V1, V2, V3, V4, V6 may be stored by converting it into the sequence 0, 0, 0, 0, V6. By utilizing this strategy, the compression ratio may be greatly improved. In addition, the strategy may be applied to the 3D model processing method 900, and 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 a triangle of the 3D model. That is, in response to the second vertex index being continuous with the first vertex index, a compressed spatial value of the second original spatial value may be generated by replacing the second original spatial value with a specific value (e.g., 0).

[0114] Based on the above, no matter the spatial value is the coordinate of a mesh or the vertex index of a triangle, the spatial value can be compressed and the file size can be reduced. However, the compression algorithm 1010 may include not only these strategies, but also some other strategies to be described below.

[0115] In one embodiment, the position data (e.g., coordinates) may be stored typically as Cartesian coordinates. For example, a list of three values ​​(X, Y, and Z) for each point may be stored. The data would be placed 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.

[0116] In one embodiment, the position data may include vertex positions and texture coordinates. The vertex position is the coordinate of the vertex in the 3D model. The texture coordinate is the coordinate of the texture pixel mapped to each vertex. It should be noted that the triangle index can be stored separately, and the triangle index is an identification number used to identify each triangle. For the compression of the position data, there may be two steps: (1) storing the number as an integer with N bits precision, and (2) compressing the integer sequence.

[0117] In order to store numbers as integers with N digits of precision, in one embodiment, a sequence of numbers may be assumed with a minimum value of MIN and a maximum value of MAX. The range of values ​​between MIN and MAX may be divided into 2N points, where N is an integer indicating the number of digits of precision utilized. For each number in the sequence, the number may be stored as the index of the nearest discretization point. For example, when N is 11, the range of values ​​between the minimum value (MIN) and the maximum value (MAX) of the sequence of numbers may be divided into 2048 points. That is, as shown in the following table, MIN may be stored as 0 and MAX may be stored as 2047. However, the present disclosure is not limited thereto.

[0118]

[0119] Table 1

[0120] It should be noted that storing numbers in this way means that some precision may be lost. For example, if the range of the original number is from 0 to 8000, the range including 8001 numbers can be represented by only 2048 discrete points (numbers). Therefore, if the number in the sequence is 4001, it can be stored as the index of the 1024th discrete point, even though it may actually be 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 retained. However, the higher the value of N, the larger the space required for storing data. Therefore, it is important to select the value of N depending on the quality requirements. If the quality requirements are high, a higher value of N can be used. On the contrary, if the quality requirements are not so high, a lower value of N can be used to save space.

[0121] To compress a sequence of integers, three steps may be required: (1) store the uncompressed numbers with full precision, (2) calculate the offset (difference) of the next number, and (3) check the range of the offset. For example, if the sequence of numbers is 2, 5, 4, 6, 8, these numbers can be stored directly in memory. In addition, by calculating the offset between each number, the sequence of numbers can be converted to the sequence 2, 3, -1, 2, 2. If there is still a next number in the sequence, step (2) can be performed again. In addition, after calculating an offset or all offsets, the value / range of the offset can be checked to determine whether the offset is within a predetermined range. For example, if the offset is within -127 to 127, 127 can be added to the offset to store the result as an unsigned byte (i.e., remove the sign bit). The purpose is to remove the negative sign. That is, in the 3D model processing method 900, in response to the difference between the first spatial value and the second spatial value being negative, a compensation value may be added to ensure that the difference between the first spatial value and the second spatial value is positive. Therefore, the digital sequence may be represented as an unsigned byte, thereby reducing one bit (i.e., used to represent the sign) when storing data. Conversely, if the offset is outside a predetermined range (e.g., -127 to 127), a binary value of 255 may be stored to indicate that the number will be stored with full precision next. However, the present disclosure is not limited thereto.

[0122] It should be noted that the strategy for position data takes advantage of the fact that geometry data is often stored very locally. Vertex positions are usually close to their neighbors, so most of the time only the offsets need to be stored. If the data provided would constantly jump from MIN to MAX, compression would be worse than storing uncompressed numbers. However, in most cases, the compression ratio is expected to be good, reducing the file size of the 3D model.

[0123] In one embodiment, the vertex indices of the triangles of the 3D model may often be stored in order. For example, the first triangle may have vertex indices V1, V2, V3, the 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 index of the next consecutive index. Specifically, as shown in Table 2 below, if a triangle T1 with vertices V1, V2, and V3 has been stored, the index of the current vertex may be V3 (i.e., the most recently stored vertex), and the index of the next vertex of the next triangle T2 may be V4. Then, a 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). Therefore, compared to storing all the data for the next vertex, this can save space because it only requires a single bit to store the next index of the next vertex.

[0124]

[0125] Table 2

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

[0127] Therefore, since only a single bit is stored to indicate whether the next index is the next consecutive index, the triangle data can be stored in an efficient manner. In addition, when the next index is not the next consecutive index, but it is one of the three previously used indexes, only three bits are stored. In this way, a relatively small amount of space can be used to store the next index, thereby reducing the loading time of the 3D model.

[0128] In one embodiment, in addition to the position data and triangle data, the normal may be a vector describing the angle and curvature of the mesh at each vertex position. To improve the compression ratio, the normal may be encoded or compressed using a similar algorithm, and the details are not repeated here.

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

[0130] Fig.11 is a schematic diagram of a compression scene of a 3D model according to an embodiment of the present disclosure. Fig.11 , the compression scene 1100 illustrates how triangles of a 3D model are grouped together to reduce the size of the 3D model.

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

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

[0133] 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, when creating, compressing or loading a 3D model, the loading time from the user end is also considered, so the 3D model can be streamed to the user device in real time, thereby improving the user experience.

[0134] It is obvious 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 present disclosure. In summary, the present disclosure is intended to cover modifications and variations within the scope of the following claims and their equivalents.

Claims

1. A three-dimensional model processing system, comprising: A storage circuit for storing program codes; as well as A processor is coupled to the storage circuit and accesses the program code to perform the following operations: Obtaining a first original space value and a second original space value of the three-dimensional model; Obtaining a difference between the first original spatial value and the second original spatial value; as well as Based on the difference value, a compressed spatial value corresponding to the second original spatial value is generated. 2 . The three-dimensional model processing system according to claim 1 , wherein the first original space value is a first coordinate of the three-dimensional model, and the second original space value is a second coordinate of the three-dimensional model. 3 . The three-dimensional model processing system according to claim 1 , wherein the first primitive space value is a first vertex index of a triangle of the three-dimensional model, and the second primitive space value is a second vertex index of the triangle of the three-dimensional model.

4. The three-dimensional model processing system according to claim 2, wherein the processor further performs the following operations: The compressed spatial value is generated by replacing the second original spatial value with the difference value.

5. The three-dimensional model processing system according to claim 3, wherein the processor further performs the following operations: In response to the second vertex index being continuous with the first vertex index, the compressed spatial value is generated by replacing the second original spatial value with a specific value.

6. The three-dimensional model processing system according to claim 3, wherein the processor further performs the following operations: In response to the second vertex index being discontinuous with the first vertex index and the second vertex index being one of the previous three used indices, the compressed spatial value is generated by replacing the second original spatial value with a specific value.

7. The three-dimensional model processing system according to claim 3, wherein the processor further performs the following operations: In response to the second vertex index being discontinuous with the first vertex index and the second vertex index not being one of the three previous used indices, the compressed spatial value is generated by storing an actual index of the second original spatial value.

8. The three-dimensional model processing system according to claim 1, wherein the processor further performs the following operations: In response to the difference being negative, a compensation value is added to ensure that the difference is positive.

9. The three-dimensional model processing system according to claim 1, wherein the processor further performs the following operations: The nearby meshes of the three-dimensional model are grouped into a plurality of triangle groups.

10. A three-dimensional model processing method, comprising: Obtaining a first original space value and a second original space value of the three-dimensional model; Obtaining a difference between the first original spatial value and the second original spatial value; as well as Based on the difference value, a compressed spatial value corresponding to the second original spatial value is generated. 11 . The three-dimensional model processing method according to claim 10 , wherein the first original space value is a first coordinate of the three-dimensional model, and the second original space value is a second coordinate of the three-dimensional model. 12 . The 3D model processing method according to claim 10 , wherein the first original space value is a first vertex index of a triangle of the 3D model, and the second original space value is a second vertex index of the triangle of the 3D model.

13. The three-dimensional model processing method according to claim 11, further comprising: The compressed spatial value is generated by replacing the second original spatial value with the difference value.

14. The three-dimensional model processing method according to claim 12, further comprising: In response to the second vertex index being continuous with the first vertex index, the compressed spatial value is generated by replacing the second original spatial value with a specific value.

15. The three-dimensional model processing method according to claim 12, further comprising: In response to the second vertex index being discontinuous with the first vertex index and the second vertex index being one of the previous three used indices, the compressed spatial value is generated by replacing the second original spatial value with a specific value.

16. The three-dimensional model processing method according to claim 12, further comprising: In response to the second vertex index being discontinuous with the first vertex index and the second vertex index not being one of the three previous used indices, the compressed spatial value is generated by storing an actual index of the second original spatial value.

17. The three-dimensional model processing method according to claim 10, further comprising: In response to the difference being negative, a compensation value is added to ensure that the difference is positive.

18. The three-dimensional model processing method according to claim 10, further comprising: The nearby meshes of the three-dimensional model are grouped into a plurality of triangle groups.

19. The three-dimensional model processing method according to claim 10, wherein the first original space value is a minimum value of a digital sequence, and the second original space value is a maximum value of the digital sequence, and the three-dimensional model processing method further comprises: Based on the difference, the number of bits of precision is determined.

20. A non-transitory storage circuit for storing program code, wherein the program code is configured to cause a processor to perform the following operations: Obtaining a first original space value and a second original space value of the three-dimensional model; Obtaining a difference between the first original spatial value and the second original spatial value; and Based on the difference value, a compressed spatial value corresponding to the second original spatial value is generated.