Implicit Encoding of Mesh Topology

By dividing and encoding mesh patches into vertex chains, the method efficiently compresses complex mesh topologies, maintaining perceptual quality and achieving high compression ratios for dynamic objects.

JP2025520788APending Publication Date: 2025-07-03INTERDIGITALCE PATENT HLDG SAS
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024576434
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-07-07
Filing Date
2023-06-21
Publication Date
2025-07-03

AI Technical Summary

Technical Problem

Existing mesh compression techniques are costly and inefficient for dynamic and expressive objects, as they often result in irreversible degradation of user experience in applications like entertainment.

Method used

Divide a mesh into simpler mesh patches, encode each patch's vertex chain data into a symbol stream, and reconstruct the mesh by decoding the encoded data, using reversible and irreversible compression techniques to maintain perceptual quality.

Benefits of technology

Achieves a high compression ratio while preserving the perceptual quality of the mesh surface, suitable for applications in entertainment without impairing the viewer's experience.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025520788000001_ABST
    Figure 2025520788000001_ABST
Patent Text Reader

Abstract

An apparatus and method for encoding a mesh topology are disclosed. The disclosed technique includes generating a vertex chain data record that includes information representing the topology of mesh patches that make up a partition of a given mesh. The technique further includes encoding the generated vertex chain data record into a vertex chain symbol stream and then encoding the vertex chain symbol stream into an encoded mesh. Additionally, an apparatus and method for reconstructing a mesh topology are disclosed. The disclosed technique includes decoding the encoded mesh into a decoded vertex chain symbol stream and then decoding the decoded vertex chain symbol stream into a decoded vertex chain data record. Based on the decoded vertex chain data record, a given mesh is reconstructed.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Meshes are generally used to represent the surface of an object characterized in a computer-generated video or a video enhanced by augmented reality. Such surface representations must be compressed to enable efficient streaming or storage. The process for compressing a mesh can be costly because the mesh topology of dynamic and expressive objects can be spatially complex. In some application areas such as entertainment, irreversible compression of the mesh topology may not degrade the user experience because a sufficiently high perceptual quality can be maintained. In such areas, efficient techniques for irreversible encoding of complex and dynamic mesh topologies are needed.

Summary of the Invention

[0002] Aspects disclosed herein describe a method for encoding mesh topology. The method includes generating a vertex chain data record that includes information representing the topology of a mesh patch that makes up a partition of the mesh. The generated vertex chain data record is then encoded into a vertex chain symbol stream, and the vertex chain symbol stream is further encoded into an encoded mesh. Aspects disclosed herein also describe a method for reconstructing mesh topology. The method includes decoding the encoded mesh into a decoded vertex chain symbol stream, and further decoding the decoded vertex chain symbol stream into a decoded vertex chain data record that includes information representing the topology of a mesh patch that makes up a partition of the mesh. The mesh is then reconstructed based on the decoded vertex chain data record.

[0003] Aspects disclosed in this disclosure describe an apparatus for encoding a mesh topology. The apparatus includes at least one processor and a memory for storing instructions. When the instructions are executed by the at least one processor, the system is caused to generate a vertex chain data record including information representing the topology of mesh patches that make up a partition of the mesh, encode the generated vertex chain data record into a vertex chain symbol stream, and encode the vertex chain symbol stream into an encoded mesh. Aspects disclosed herein also describe an apparatus for reconstructing a mesh topology. The apparatus includes at least one processor and a memory for storing instructions. When the instructions are executed by the at least one processor, the system is caused to decode the encoded mesh into a decoded vertex chain symbol stream, further decode the decoded vertex chain symbol stream into a decoded vertex chain data record including information representing the topology of mesh patches that make up a partition of the mesh, and reconstruct the mesh based on the decoded vertex chain data record.

[0004] Aspects disclosed in this disclosure describe a non-transitory computer-readable medium including instructions executable by at least one processor to perform a method for encoding a mesh topology. The method includes generating a vertex chain data record including information representing the topology of mesh patches that make up a partition of the mesh. Next, the generated vertex chain data record is encoded into a vertex chain symbol stream, and the vertex chain symbol stream is further encoded into an encoded mesh. Aspects disclosed herein also describe a non-transitory computer-readable medium including instructions executable by at least one processor to perform a method for reconstructing a mesh topology. The method includes decoding the encoded mesh into a decoded vertex chain symbol stream and further decoding the decoded vertex chain symbol stream into a decoded vertex chain data record including information representing the topology of mesh patches that make up a partition of the mesh. Next, the mesh is reconstructed based on the decoded vertex chain data record.

[0005] This summary is provided to introduce a selection of concepts in a simplified form, which will be further described below in the "Detailed Description of the Invention". This summary is not intended to identify the key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to limitations that solve any or all of the disadvantages described in any part of this disclosure.

Brief Description of the Drawings

[0006]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Detailed Description of the Invention

[0007] Apparatuses and methods are disclosed that include techniques for irreversible compression of mesh topologies. According to aspects described herein, a given mesh having a general topology can be divided into mesh patches having a simpler topology, each of which can be encoded separately, in order to reduce complexity and increase compression rates. The encoded mesh patches can then be decoded and combined to reconstruct the complete mesh topology. Thus, the irreversible compression aspects disclosed herein can result in a reconstructed mesh surface that can be perceptually the same as a given mesh surface, providing a good tradeoff between perceptual video quality and compression rate.

[0008] FIG. 1 is a diagram showing an exemplary mesh patch 100 according to one aspect of the present disclosure. A given mesh having a general topology may be divided into mesh patches (e.g., mesh patch 100 of FIG. 1), each of which is in phase with respect to the disk. That is, the entire three-dimensional (3D) shape may be divided into a mesh that can be unfolded onto a single two-dimensional (2D) surface so that the triangles of the mesh do not intersect or overlap each other (see S. Shlafman et al., Metamorphosis of Polyhedral Surfaces using Decomposition, Eurographics, Volume 21 (2002), Number 3, 2002). Mesh patch 100 typically consists of vertices connected by triangles. The triangular surfaces from all mesh patches of the mesh topology approximate the 3D (or 2D) surface. The techniques disclosed herein represent (encode) the mesh patches of a mesh having a general topology. To do so, the topology of each mesh patch can be analyzed to derive a vertex chain, i.e., a chain of vertices extending, for example, from boundary vertices 110.1, 120.1, and 130.1 to boundary vertices 110.2, 120.2, and 130.2, respectively. Then, the vertex chains derived from all mesh patches may be recorded in a vertex chain data record, and the data is encoded into a vertex chain symbol stream. The vertex chain symbol stream may be further encoded using reversible and / or irreversible compression techniques. The encoding and decoding of the mesh topology are further described with reference to FIGS. 2 and 3.

[0009] Figure 2 is a functional block diagram of an exemplary mesh topology encoder 200 according to one aspect of the present disclosure. The mesh topology encoder 200 may include a vertex chain generator 220, a vertex chain encoder 230, and an entropy encoder 240. The components 220, 230, 240 of the mesh topology encoder 200 may be implemented by software, firmware, and / or hardware. Further, these components 220, 230, 240 may be implemented by computing units that are local to each other or by computing units that are remote from each other and communicatively connected by wireless or wired communication technologies. The vertex chain generator 220 may be configured to receive a mesh 210 and generate a vertex chain data record 225 from the received mesh topology. The generated vertex chain data record 225 may then be supplied to the vertex chain encoder 230. The vertex chain encoder 230 may be configured to encode the vertex chain data record into a vertex chain symbol stream 235. The vertex chain symbol stream 235 may then be supplied to an entropy encoder 240 that may encode the received stream into an encoded mesh 250. Thus, a portion of the stream 235 representing structural data can be encoded by a reversible encoder 242, and a portion of the stream representing position data (of the mesh vertices) can be encoded by a non-reversible encoder 244. The mesh topology decoder generally reverses the operation of the mesh topology encoder 200 and decodes the encoded mesh 250 into a reconstructed mesh topology, as further described below.

[0010] Figure 3 is a functional block diagram of an exemplary mesh topology decoder 300 according to one aspect of the present disclosure. The mesh topology decoder 300 can include an entropy decoder 320, a vertex chain decoder 330, and a mesh topology generator 340. The components 320, 330, 340 of the mesh topology decoder 300 can be implemented by software, firmware, and / or hardware. Further, the decoder components 320, 330, 340 (as well as the encoder components 220, 230, 240) can be implemented by computing units that are local to each other or by computing units that are remote from each other and communicatively connected by wireless or wired communication technologies. The entropy decoder 320 can receive the encoded meshes 250, 310 and decode the vertex chain symbol stream 325 decoded therefrom by either a reversible decoder 322 or a non-reversible decoder 324. The vertex chain decoder 330 can receive the decoded vertex chain symbol stream 325 and decode the vertex chain data record therefrom. The decoded vertex chain data record 335 can then be used by the mesh topology generator 340 to reconstruct the mesh 350. Further explanation of the operation of the mesh topology encoder 200 and the mesh topology decoder 300 is provided below.

[0011] In one aspect, the vertex chain generator 220 of the mesh topology encoder 200 can receive a mesh of a general topology 210 and divide a given mesh topology into mesh patches, each of which is in phase with respect to the disk, such as patch 100 shown in FIG. 1. The vertex chain generator 220 can then derive a vertex chain from each of the mesh patches and represent the vertex chains of the patches in the vertex chain data record. The process of deriving a vertex chain from a mesh patch and generating a vertex chain data record is described with reference to FIGS. 4 and 5, respectively.

[0012] FIG. 4 shows an exemplary mesh patch 400 that includes a vertex chain. The vertex chain is defined herein as a path through the vertices of the mesh patch 400 that can extend from one boundary vertex to another boundary vertex. The derivation of the vertex chain executed by the vertex chain generator 220 can be performed in two steps. In the first step, a reference vertex chain can be determined. Next, in the second step, additional vertex chains can be determined with respect to that reference vertex chain. Determining the reference vertex chain can involve searching for the longest direct path that links two vertices on the boundary of the mesh. For example, the reference vertex chain is shown by the path between boundary vertices 110.1 and 110.2 in FIG. 1. Other vertex chains, such as vertex chains that link boundary vertices 120.1 and 130.1 to boundary vertices 120.2 and 130.2 respectively, can be determined with respect to that reference vertex chain.

[0013] To determine the reference vertex chain of the mesh patch 400, in one aspect, the spatial positions of the vertices of the mesh patch 400 are analyzed. Thus, boundary vertices are first determined by passing through the vertices of one patch. For example, boundary vertices 1, 6, 7, 11, 12, 15, 16, and 17 can be determined from all vertices 1-17 of the mesh patch 400 as shown in FIG. 4. Next, for each boundary vertex, the shortest path between the boundary vertex and other boundary vertices is calculated. The calculation of the shortest path between pairs of boundary vertices can be performed, for example, by using the Dijkstra algorithm. The pair of vertices for which the calculated path is the longest can be selected as the reference vertex chain. For example, the path passing through vertices {1,2,3,4,5,6} forms the reference vertex chain 420.1 of the mesh path 400 shown in FIG. 4.

[0014] Once the reference vertex chain 420.1 is determined, the other vertex chains 420.2 to 420.3 of the mesh patch 400 can be derived with respect to the reference vertex chain 420.1. To do so, starting from the reference vertex chain 420.1, vertices separated by the number of mesh edges of N = 1 from each nearest vertex from the reference vertex chain can be found, i.e., vertices 7 to 11 and 16 to 17 in the exemplary mesh patch 400 of FIG. 4. Such vertices can form one or more chains 420.2, referred to herein as chains of level N = 1, with respect to the reference vertex chain 420.1, referred to herein as the chain of level N = 0. As shown in FIG. 4, there are three vertex chains 420.2 at level N = 1, i.e., the chain {7, 8} and the chain {9, 10, 11} located above the reference vertex chain 420.1, and the chain {16, 17} located below the reference vertex chain 420.1. Next, vertices separated by the number of mesh edges of N = 2 from each nearest vertex from the reference vertex chain can be found, i.e., vertices 12 to 15 within the exemplary mesh patch 400 of FIG. 4. Such vertices can form one or more chains 420.3 at level N = 2. As shown in FIG. 4, there are two vertex chains 420.3 at level N = 2, i.e., the chain {12} and the chain {13, 14, 15}, both of which are located above the reference vertex chain 420.1. The information associated with the derived vertex chains can be recorded in vertex chain data records, as will be described next with reference to FIG. 5.

[0015] FIG. 5 shows the construction of an exemplary vertex chain data record 500 according to one aspect of the present disclosure. The vertex chain data record 510 can include information associated with vertex chains derived from mesh patches each constituting a partition of a given mesh 210. The vertex chain data record 510 may be composed of patch records, each of which corresponds to one mesh patch (e.g., the patch record 520 corresponds to the patch 400). The patch record 520 can include data segments 520.1 to 3 that record information associated with respective vertex chains. The segments 520.1 to 3 can be arranged in ascending order according to the level N of the respective vertex chains. Thus, a data segment (e.g., 520.1, 520.2, or 520.3) can record references to the vertices of the vertex chain at a certain level N in a consecutive order. The data segments corresponding to vertex chains other than the reference vertex chain (e.g., 520.2 or 520.3) can also record the relative position of the chain with respect to the reference vertex chain, encoding the chain located above the reference vertex chain (i.e., the upper chain) with "T" and the chain located below the reference vertex chain (i.e., the bottom chain) with "B".

[0016] For example, the information associated with the reference vertex chain 420.1 can be recorded in the data segment 520.1, including an ordered list of vertices within that chain, i.e., {1, 2, 3, 4, 5, 6}. The information associated with the vertex chain 420.2 can be recorded in the segment 520.2, including the information associated with three chains that can be recorded in their respective sub - segments 520.2 A - C. Thus, as shown in FIG. 5, the sub - segment 520.2.A can record the information associated with the chain {7, 8} that includes the relative position indicator "T" (to indicate that the position of the chain is above the reference vertex chain), the sub - segment 520.2.B can record the information associated with the chain {9, 10, 11} that includes the relative position indicator "T" (to indicate that the position of the chain is above the reference vertex chain), and the sub - segment 520.2.C can record the information associated with the chain {16, 17} that includes the relative position indicator "B" (to indicate that the position of the chain is below the reference vertex chain). Similarly, the information associated with the vertex chain 420.3 can be recorded in the segment 520.3, including the information associated with two chains that are recorded in their respective sub - segments 520.3A - B. Thus, as shown in FIG. 5, the sub - segment 520.3.A can record the information associated with the chain {12} that includes the relative position indicator "T" (to indicate that the position of the chain is above the reference vertex chain), and the sub - segment 520.3.B can record the information associated with the chain {13, 14, 15} that includes the relative position indicator "T" (to indicate that the position of the chain is above the reference vertex chain).

[0017] Thus, the vertex chain data record 510 includes both position information (of the vertices included in the vertex chain) and implicit structural information. The structural information represents the topology of the mesh by the order of the vertices within the record 510 according to the chain association. For example, in the case shown in FIG. 5, the order in which data is stored in the patch record 520 of the vertex chain data record 510 is {1, 2, 3, 4, 5, 6}, {7, 8}, T, {9, 10, 11}, T, {16, 17}, B, {12}, T, {13, 14, 15}, T.

[0018] Once constructed by the vertex chain generator 220, the vertex chain data record 510 can be provided to the vertex chain encoder 230. The vertex chain encoder 230 can encode the acquired record 510 into a vertex chain symbol stream. As described above, the vertex chain generator 220 can generate a plurality of patch records 520, each of which is one of the plurality of patches forming the input mesh 210. Thus, the vertex chain symbol stream generated by the vertex chain encoder 230 encodes all of these records.

[0019] Thus, according to an aspect, the vertex chain encoder 230 can be configured to signal the data elements of the vertex chain data record 510 by respective symbols. For example, data elements representing the number of patches, the number of vertex chains within a patch, and the number of vertices within a vertex chain can be represented by respective symbols, in various orders, independently or relative to each other. Similarly, data elements representing level N associated with the vertex chain and the relative position of the chain with respect to the reference vertex chain can be represented by respective symbols, in various orders, independently or relative to each other. Further, data elements representing the position data of the vertices within a vertex chain can be represented by respective symbols, in various orders, independently or relative to each other. In one aspect, the vertex chain encoder 230 can be configured to signal the data elements of the vertex chain data record 510 by respective symbols as shown by Table 1, Table 2, or Table 3.

[0020] Table 1 shows vertex chain symbol stream signaling when the coordinates of the vertices within a vertex chain are encoded by their global space positions.

[0021]

Table 1

[0022] Table 2 shows the signaling of the vertex chain symbol stream when the coordinates of the vertex chain are encoded by their relative spatial positions (delta coordinates). That is, the coordinates of each vertex in the chain are encoded relative to the coordinates of the previous vertex, except for the coordinates of the first vertex in the chain that are encoded by its global spatial position. In this case, for example, in the vertex chain {13, 14, 15} of FIG. 4, the position of vertex 15 is encoded relative to vertex 14 (delta value indicated by d2), the position of vertex 14 is encoded relative to vertex 13 (delta value indicated by d1), and the position of vertex 13 can be encoded by its global coordinates (indicated by P). In this way, a better compression ratio can be achieved.

[0023] [Table 2]

[0024] Table 3 shows a variation of the signaling of the vertex chain symbol stream in which the symbols describing the vertices of the patch, vertex chain, and the entire mesh are arranged in a hierarchical nested descriptor.

[0025] [Table 3]

[0026] The vertex chain symbol stream 235 generated by the vertex chain encoder 230 (e.g., according to any of Table 1, Table 2, or Table 3) may be further encoded by the entropy encoder 240 to generate an encoded mesh 250. The portion of the stream 235 corresponding to the structure data is typically encoded by a reversible encoder 242 (e.g., an encoder based on arithmetic, Huffman, or RLE encoding techniques). For example, the portion of the stream 235 corresponding to the number of patches (Nb_Patches) within a given mesh 210, the number of vertex chains (Nb_chains) within each patch, the length (Nb_vet) of each of those vertex chains, and flags indicating the chain depth (level) change (Depth_change) and the position of the chain relative to each reference vertex chain (Relative_Position) must typically be encoded by the reversible encoder 242. On the other hand, the portion of the stream 235 corresponding to the vertex positions (Vertex_Positions and Vertex_Deltas) may be encoded by the irreversible encoder 244. In one aspect, additional signaling may be added to indicate whether reversible or irreversible encoding has been applied to each portion of the vertex chain symbol stream. Following encoding, the encoded mesh 250 provided by the entropy encoder 240 may be transmitted to the mesh topology decoder 300 to reconstruct the original mesh 210, as further described below.

[0027] As described above with reference to FIG. 3, the entropy decoder 320 receives the encoded mesh 310 from the storage device or directly from the output of the encoder 250 (see FIG. 2) via a communication link. The entropy decoder 320 can restore the vertex chain symbol stream 325. Thus, a part of that stream encoded by the reversible encoder 242 is decoded by the reversible decoder 322, and a part of that stream encoded by the irreversible encoder 244 is decoded by the irreversible decoder 324. The decoded vertex chain symbol stream 325 can then be supplied to a vertex chain decoder 330 that can be configured to reverse the operation of the vertex chain encoder 230 to generate a decoded vertex chain data record 335. Note that if delta coordinates are used to encode a part of the vertex coordinates (e.g., using the Vertex_Deltas signaling of Table 2 or the relative position signaling option of Table 3), the coordinates of those vertices are converted back to global coordinates by vector addition (e.g., the coordinates of vertex 14 are calculated as P + d1). The decoded vertex chain data record 335 can then be supplied to the mesh topology generator 340. The mesh topology generator 340 restores the mesh 210 (generates a reconstructed mesh 350) and can reconstruct the topology of each mesh patch based on its respective patch record in the decoded vertex chain data record 335. The reconstruction of the mesh patch topology can be performed using a nearest point method (as described with reference to FIG. 6) or a triangle strip (TriStrip) method (as described with reference to FIG. 7).

[0028] FIG. 6 shows the reconstruction of an exemplary mesh patch topology using the closest point method 600, according to one aspect of the present disclosure. Examining the vertex chains recorded in the patch record of each patch, the reconstruction of the topology of that patch can include connecting vertices of vertex chains at either a level above (flagged by "T") or below (flagged by "B") the reference vertex chain of the patch. For example, the reconstruction of the topology of a mesh patch can include connecting vertices within a vertex chain at level N610 to vertices within a vertex chain at level N+1620. FIG. 6 shows the process of connecting vertices in two steps. In the first step, for each segment (one of segments S01 to S06) that connects two consecutive vertices within the vertex chain at level N610, a triangle is formed by connecting the vertex that defines the segment to the closest vertex among the vertices within the vertex chain at level N+1620 (each of triangles a to f). For example, for segment S01, triangle a is formed by the closest vertex v (when it is found that the sum of the Euclidean distances d1 and d2 is the smallest). Next, in the second step, the same operation is performed on the segments of the vertex chain at level N+1620 that are connected to the vertices of the chain at level N610 in the first step. For example, triangles g and h, which are respectively associated with segments S11 and S12, are formed in the second step. It should be noted that in both steps, a vertex chain consisting of only one vertex has no segments and thus cannot form a triangle (however, as shown for segment S01 and vertex v that forms triangle a, one vertex can be connected to a segment from another chain).

[0029] FIG. 7 is a diagram showing the reconstruction of an exemplary mesh patch topology using the triangular strip technique 700, according to one aspect of the present disclosure. When the number of vertices within a vertex chain (s) at each level N710 is the same as (or similar to) the number of vertices within a vertex chain (s) at the adjacent level N+1720, an alternative technique (not relying on calculating the closest vertex) for reconstructing the topology of the mesh patch can be used. The steps in this technique are as follows. The process starts with respect to the reference vertex chain at level N=0 and the vertex chain (s) at level N=1, and processes the vertex chain (s) at level N=1 that are either above or below level N=0. Thus, for the first segment S01 in the reference vertex chain, triangle a is formed using the two vertices defining S01 and the first vertex of the first segment S11 at level N=1. Next, the second triangle b is formed between the vertices defining segment S11 at level N=1 and the vertex ending segment S01. Similarly, the third triangle c is formed between the vertices defining segment S02 at level N=0 and the vertex ending segment S11 at level N=1. This process can continue until there are no remaining vertices to process at level N=0 or level N=1 on the processed side (e.g., the top). This process is repeated for the vertex chains at levels N=0 and N=1 on the opposite side (e.g., the bottom). Successive levels of vertex chains (N=1 and N=2, N=2 and N=3, etc.) are processed similarly to reconstruct the entire mesh patch topology.

[0030] Once the mesh patch is reconstructed, as described with respect to FIGS. 6 and 7, the mesh topology generator 340 can reconstruct the complete mesh 350 by combining (i.e., stitching) the reconstructed patches together. In one aspect, combining the reconstructed patches can include spatially filtering the patches to blend their interface boundaries spatially, as well as correcting for overlaps or gaps between adjacent patches.

[0031] The reconstruction of the original mesh topology is, as described herein, an irreversible process, i.e., the reconstructed mesh surface 350 may not be the same as the original mesh surface 210. This is because, even when vertex positions are encoded reversibly, the processes described with respect to FIGS. 6 and 7 may not result in the same connections between the vertices of a patch (or the same triangles) as those within each original patch. However, as described above, the reconstructed mesh surface 350 may be perceptually the same as the original mesh surface 210 and thus, particularly for applications in the entertainment area, does not impair the viewer's experience. At the same time, as described herein, encoding a general mesh topology by dividing it into smaller and spatially simpler patches (mesh patches that are homeomorphic to a disk) results in a higher compression ratio compared to techniques for encoding a complete mesh topology.

[0032] FIG. 8 is a flow diagram of an exemplary method for encoding a mesh topology 800, according to one aspect of the present disclosure. Method 800 may be performed by the mesh topology encoder 200 described with reference to FIG. 2. Method 800 begins, in step 810, by generating a vertex chain data record 225. The vertex chain data record may include information representing the topology of a mesh patch that constitutes a partition of the mesh to be encoded. In step 820, the generated vertex chain data record may be encoded into a vertex chain symbol stream 235. Next, in step 830, the vertex chain symbol stream may be further encoded into an encoded mesh 250. As described with reference to FIGS. 4 and 5, generating the vertex chain data record 225 includes deriving vertex chains, for each mesh patch, by determining a reference vertex chain from the mesh patch and then determining additional vertex chains from the mesh patch relative to the reference vertex chain. Each chain of the additional vertex chains can include vertices separated from their respective nearest vertices from the reference vertex chain by the same number of mesh edges, and the chains are associated with a level value indicating the number of mesh edges. Further, each chain of the additional vertex chains is associated with a relative position indicator indicating whether the chain is positioned above or below the reference vertex chain.

[0033] Based on the signaling examples described with reference to Table 1, Table 2, and Table 3, in step 820, encoding the generated vertex chain data record 225 into the vertex chain symbol stream 235 involves: 1) signaling the number of mesh patches; 2) for each of the mesh patches, signaling the number of derived vertex chains within the mesh patch; and then, for each of the derived vertex chains for each of the mesh patches: 3) signaling the number of vertices within the vertex chain; 4) signaling the depth change; 5) signaling the relative position; 6) signaling the global coordinates of the vertices of the vertex chain (e.g., according to Table 1 and / or using the absolute position signaling option of Table 3), or signaling the global coordinates and delta coordinates of the vertices of the vertex chain (e.g., according to Table 2 and / or using the relative position signaling option of Table 3).

[0034] FIG. 9 is a flowchart of an exemplary method for reconstructing a mesh topology 900 according to one aspect of the present disclosure. Method 900 may be executed by the mesh topology decoder 300 described with reference to FIG. 3. Method 900 begins, in step 910, by decoding the encoded mesh 310 into a decoded vertex chain symbol stream 325. In step 920, the decoded vertex chain symbol stream 325 may be decoded into a decoded vertex chain data record 335. The decoded vertex chain data record 335 may include information representing the topology of the mesh patches that make up a partition 350 of the mesh 210 to be reconstructed. Next, in step 930, based on the decoded vertex chain data record, the mesh may be reconstructed to generate a reconstructed mesh. As described with reference to FIGS. 4 and 5, the decoded vertex chain data record 335 may include, for each mesh patch of the mesh patches, a vertex chain including a reference vertex chain and additional vertex chains arranged relative to the reference vertex chain, each of the vertex chains linking one or more vertices of the mesh patch. Each chain of the additional vertex chains may include vertices separated by the same number of mesh edges from their respective nearest vertices from the reference vertex chain, and the chains are associated with a level value indicating the number of mesh edges. Further, each chain of the other vertex chains is associated with a relative position indicator indicating whether the chain is arranged above or below the reference vertex chain.

[0035] Based on the signaling examples described with reference to Table 1, Table 2, and Table 3, in step 920, decoding of the decoded vertex chain symbol stream 325 may include decoding the number of mesh patches and, for each of the mesh patches, decoding the number of vertex chains within the mesh patch. Next, for each vertex chain of each mesh patch, the number of vertices within the vertex chain and the position information of the vertex chain (e.g., depth change and relative position) are decoded. Following this is the decoding of the vertex positions according to the global coordinates of the vertices within the vertex chain (e.g., according to Table 1), then according to the global coordinates of the first vertex within the vertex chain and then the delta coordinates of the remaining vertices within the vertex chain (e.g., according to Table 2), or according to a more general mix of symbols representing absolute and relative vertex positions (e.g., using the absolute and relative position options of Table 3).

[0036] The illustrations of the aspects described herein are intended to provide a general understanding of the structure, functionality, and operation of the various aspects. The figures are not intended to serve as a complete description of all elements and features of an apparatus and system that utilize the structures or methods described herein. Many other aspects may become apparent to those of ordinary skill in the art upon consideration of this disclosure. Other aspects may be utilized and derived from this disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. Accordingly, this disclosure and the drawings are to be regarded as illustrative rather than restrictive.

[0037] The description of the aspects is provided to enable the creation or use of the aspects. Various modifications to these aspects will be readily apparent, and the general principles defined herein may be applied to other aspects without departing from the scope of this disclosure. Accordingly, this disclosure is not intended to be limited to the aspects shown herein, but rather should be accorded the widest scope consistent with the principles and novel features defined by the following claims.

Claims

1. A method for encoding a mesh topology, comprising: generating a vertex chain data record that includes information representing the topology of a mesh patch that constitutes a partition of the mesh; encoding the generated vertex chain data record into a vertex chain symbol stream; encoding the vertex chain symbol stream into an encoded mesh; A method comprising the steps of:

2. The generating of the vertex chain data record includes: for each mesh patch of the mesh patches, deriving a vertex chain, determining a reference vertex chain from the mesh patch; determining additional vertex chains from the mesh patch with respect to the reference vertex chain, wherein each of the derived vertex chains links one or more vertices of the mesh patch. The method according to claim 1.

3. Each chain of the additional vertex chains includes vertices separated from the respective nearest vertex from the reference vertex chain by the same number of mesh edges, and the chain is associated with a level value indicating the number of the mesh edges. The method according to claim 1 or 2.

4. Each chain of the additional vertex chains is associated with a relative position indicator indicating whether the chain is disposed above or below the reference vertex chain. The method according to any one of claims 1 to 3.

5. The encoding of the generated vertex chain data record into the vertex chain symbol stream includes: signaling the number of mesh patches. The method according to any one of claims 1 to 4.

6. The encoding of the generated vertex chain data record into the vertex chain symbol stream includes: signaling the number of vertex chains within each of the mesh patches for each of the mesh patches. The method according to any one of claims 1 to 5.

7. The encoding of the generated vertex chain data record into the vertex chain symbol stream includes: signaling the number of vertices within each of the vertex chains for each of the vertex chains derived for each of the mesh patches. The method according to any one of claims 1 to 6.

8. The encoding of the generated vertex chain data record into the vertex chain symbol stream includes: The method according to any one of claims 1 to 7, comprising signaling a depth change indicating a change in the level value associated with the vertex chain for each of the vertex chains derived for each of the mesh patches.

9. Encoding the generated vertex chain data record into the vertex chain symbol stream The method according to any one of claims 1 to 8, comprising signaling a relative position indicating the relative position indicator associated with the vertex chain for each of the vertex chains derived for each of the mesh patches.

10. Encoding the generated vertex chain data record into the vertex chain symbol stream The method according to any one of claims 1 to 9, comprising signaling the vertices of the vertex chain, including signaling the global coordinates of the vertices, the delta coordinates of the vertices, or a combination thereof, for each of the vertex chains derived for each of the mesh patches.

11. A method for reconstructing a mesh topology, comprising: decoding an encoded mesh into a decoded vertex chain symbol stream; decoding the decoded vertex chain symbol stream into a decoded vertex chain data record including information representing the topology of mesh patches constituting a partition of the mesh; reconstructing the mesh based on the decoded vertex chain data record; and including.

12. The method according to claim 11, wherein the decoded vertex chain data record includes a vertex chain including a reference vertex chain and additional vertex chains arranged with respect to the reference vertex chain for each mesh patch of the mesh patches, and each of the vertex chains links one or more vertices of the mesh patch.

13. The method according to claim 11 or 12, wherein each chain of the additional vertex chains includes vertices separated from the respective nearest vertex from the reference vertex chain by the same number of mesh edges, and the chain is associated with a level value indicating the number of the mesh edges.

14. The method according to any one of claims 11 to 13, wherein each chain of the additional vertex chains is associated with a relative position indicator indicating whether the chain is arranged above or below the reference vertex chain.

15. Decoding the decoded vertex chain symbol stream includes: The method according to any one of claims 11 to 14, including decoding the number of the mesh patches. **Claim 16** Decoding the decoded vertex chain symbol stream includes: The method according to any one of claims 11 to 15, including, for each of the mesh patches, decoding the number of vertex chains within the mesh patch. **Claim 17** Decoding the decoded vertex chain symbol stream includes: The method according to any one of claims 11 to 16, including, for each vertex chain of each of the mesh patches, decoding the number of vertices within the vertex chain. **Claim 18** Decoding the decoded vertex chain symbol stream includes: The method according to any one of claims 11 to 17, including, for each vertex chain of each of the mesh patches, decoding a depth change indicating a change in the level value associated with the vertex chain. **Claim 19** Decoding the decoded vertex chain symbol stream includes: The method according to any one of claims 11 to 18, including, for each vertex chain of each of the mesh patches, decoding a relative position indicating the relative position indicator associated with the vertex chain. **Claim 20** Decoding the decoded vertex chain symbol stream includes: The method according to any one of claims 11 to 19, including, for each vertex chain of each of the mesh patches, decoding vertices of the vertex chain, including the global coordinates of the vertices, the delta coordinates of the vertices, or a combination thereof. **Claim 21** Reconstructing the mesh includes: For each of the mesh patches, connecting the decoded vertices of the vertex chain to obtain the topology of the mesh patch, wherein the connecting includes forming triangles using respective segments of the vertex chain, and the segments connect two consecutive vertices of the vertex chain. The method according to any one of claims 11 to 20. **Claim 22** The method according to any one of claims 11 to 21, wherein the connecting further includes connecting segments from a vertex chain to the nearest vertex from an adjacent vertex chain to form a triangle. **Claim 23** Said connecting further includes connecting a first segment from a first vertex chain to a second segment from a second vertex chain, forming a first triangle based on a first vertex of the first segment and the second segment, and forming a second triangle based on a second vertex of the second segment and the first segment. The method according to any one of claims 11 to 21.

24. An apparatus for encoding a mesh topology, comprising: at least one processor; a memory, the memory storing instructions which, when executed by the at least one processor, cause the apparatus to: generate a vertex chain data record including information representing the topology of a mesh patch that constitutes a partition of the mesh; encode the generated vertex chain data record into a vertex chain symbol stream; encode the vertex chain symbol stream into an encoded mesh.

25. Said generating the vertex chain data record includes: for each mesh patch of the mesh patches, deriving a vertex chain, including: determining a reference vertex chain from the mesh patch; determining additional vertex chains from the mesh patch with respect to the reference vertex chain. Each of the derived vertex chains links one or more vertices of the mesh patch. The apparatus according to claim 24.

26. Each chain of the additional vertex chains includes vertices separated by the same number of mesh edges from the respective nearest vertex from the reference vertex chain, and the chain is associated with a level value indicating the number of the mesh edges. The apparatus according to claim 24 or 25.

27. Each chain of the additional vertex chains is associated with a relative position indicator indicating whether the chain is disposed above or below the reference vertex chain. The apparatus according to any one of claims 24 to 26.

28. An apparatus for reconstructing a mesh topology, comprising: at least one processor; a memory, the memory storing instructions which, when executed by the at least one processor, cause the apparatus to: decode the encoded mesh into a decoded vertex chain symbol stream. Decoding the decoded vertex chain symbol stream into a decoded vertex chain data record that includes information representing the topology of a mesh patch that constitutes a partition of the mesh. An apparatus for reconstructing the mesh based on the decoded vertex chain data record. **Claim 29** Reconstructing the mesh includes: For each of the mesh patches, connecting the decoded vertices of the vertex chain to obtain the topology of the mesh patch, where connecting includes forming triangles using respective segments of the vertex chain, and a segment connects two consecutive vertices of the vertex chain. The apparatus according to claim 28. **Claim 30** The apparatus according to claim 28 or 29, wherein connecting further includes connecting a segment from a vertex chain to the nearest vertex from an adjacent vertex chain to form a triangle. **Claim 31** The apparatus according to claim 28 or 29, wherein connecting further includes connecting a first segment from a first vertex chain to a second segment from a second vertex chain, forming a first triangle based on the first vertex of the first segment and the second segment, and forming a second triangle based on the second vertex of the second segment and the first segment. **Claim 32** A non-transitory computer-readable medium including instructions executable by at least one processor to perform a method for encoding a mesh topology, the method including: Generating a vertex chain data record including information representing the topology of a mesh patch that constitutes a partition of the mesh; Encoding the generated vertex chain data record into a vertex chain symbol stream; Encoding the vertex chain symbol stream into an encoded mesh; The non-transitory computer-readable medium including the above. **Claim 33** A non-transitory computer-readable medium including instructions executable by at least one processor to perform a method for reconstructing a mesh topology, the method including: Decoding an encoded mesh into a decoded vertex chain symbol stream; Decoding the decoded vertex chain symbol stream into a decoded vertex chain data record that includes information representing the topology of a mesh patch that constitutes a partition of the mesh. Reconstructing the mesh based on the decoded vertex chain data record; A non-transitory computer-readable medium including the above.