Implicit coding of mesh topology
By partitioning the mesh topology into a mesh patch of a simple topology and encoding independently, the problem of complex and dynamic mesh topology compression is solved, and efficient lossy compression and good perceived video quality is achieved.
Patent Information
- Application Number
- CN202380061068.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-07-07
- Filing Date
- 2023-06-21
- Publication Date
- 2025-03-28
AI Technical Summary
The prior art is inefficient when compressing complex and dynamic grid topology, and lossy compression may affect user experience.
Lossive compression is achieved by partitioning the mesh topology into mesh patches with a simple topology, each patch is independently encoded and encoded and decoded by vertex chain data records and symbol streams.
Improves the balance between compression rate and perceived video quality, ensuring efficient lossy compression that does not harm the user experience in areas such as entertainment.
Smart Images

Figure CN119732060A_ABST
Abstract
Description
Background Art
[0001] Meshes are often used to represent the surfaces of objects featured in computer-generated videos or videos enhanced by augmented reality. Such surface representations must be compressed to allow efficient streaming or storage. The process for compressing meshes can be expensive because the mesh topology of dynamic and expressive objects can be spatially complex. In some application areas (such as entertainment), lossy compression of mesh topology may not harm the user experience because sufficiently high perceptual quality can be maintained. In such areas, efficient techniques for lossy encoding of complex and dynamic mesh topologies are needed. Summary of the invention
[0002] Various aspects disclosed in the present disclosure describe a method for encoding a mesh topology. The method includes generating a vertex chain data record, the vertex chain data record containing information representing the topology of mesh patches that constitute a partition of the mesh. Then, 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 and decoded mesh. Various aspects disclosed herein also describe a method for reconstructing a mesh topology. The method includes decoding the encoded and decoded mesh into a decoded vertex chain symbol stream, and further decoding the decoded vertex chain symbol stream into a decoded vertex chain data record, the decoded vertex chain data record containing information representing the topology of mesh patches that constitute a partition of the mesh. Then, the mesh is reconstructed based on the decoded vertex chain data record.
[0003] Various aspects disclosed in the present disclosure describe an apparatus for encoding mesh topology. The apparatus includes at least one processor and a memory storing instructions. The instructions, when executed by the at least one processor, cause the system to: generate a vertex chain data record, the vertex chain data record containing information representing the topology of mesh patches constituting 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 a coded mesh. Various aspects disclosed herein also describe an apparatus for memorizing and reconstructing mesh topology. The apparatus includes at least one processor and a memory storing instructions. The instructions, when executed by the at least one processor, cause the system to: decode the coded mesh into a decoded vertex chain symbol stream; decode the decoded vertex chain symbol stream into a decoded vertex chain data record, the decoded vertex chain data record containing information representing the topology of mesh patches constituting a partition of the mesh; and reconstruct the mesh based on the decoded vertex chain data record.
[0004] Various aspects disclosed in the present disclosure describe a non-transitory computer-readable medium, which includes instructions that can be executed by at least one processor to perform a method for encoding mesh topology. The method includes generating a vertex chain data record, the vertex chain data record containing information representing the topology of mesh patches that constitute a partition of the mesh. Then, the generated vertex chain data record is encoded into a vertex chain symbol stream, and the vertex chain symbol stream is further encoded into a coded and decoded mesh. Various aspects disclosed herein also describe a non-transitory computer-readable medium, which includes instructions that can be executed by at least one processor to perform a method for reconstructing mesh topology. The method includes decoding the coded and decoded mesh into a decoded vertex chain symbol stream, and further decoding the decoded vertex chain symbol stream into a decoded vertex chain data record, the decoded vertex chain data record containing information representing the topology of mesh patches that constitute a partition of the mesh. Then, the mesh is reconstructed based on the decoded vertex chain data record.
[0005] This summary is provided to introduce some concepts in a simplified form, which will be further described in the detailed description below. This summary is not intended to identify 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 address any or all disadvantages noted in any part of this disclosure. BRIEF DESCRIPTION OF THE DRAWINGS
[0006] Figure 1 An example mesh patch is shown in accordance with an aspect of the present disclosure.
[0007] Figure 2 is a functional block diagram of an example mesh topology encoder according to an aspect of the present disclosure.
[0008] Figure 3 is a functional block diagram of an example mesh topology decoder according to an aspect of the present disclosure.
[0009] Figure 4 An example mesh patch including a chain of vertices is shown in accordance with an aspect of the present disclosure.
[0010] Figure 5 The construction of an example vertex chain data record according to an aspect of the present disclosure is shown.
[0011] Figure 6 Reconstruction of an example mesh patch topology using a closest point method according to an aspect of the present disclosure is shown.
[0012] Figure 7 Reconstruction of an example mesh patch topology using a triangle strip method according to an aspect of the present disclosure is shown.
[0013] Figure 8 is a flow chart of an example method for encoding a mesh topology according to an aspect of the present disclosure.
[0014] Fig. 9 is a flow chart of an example method for reconstructing a mesh topology according to an aspect of the present disclosure. DETAILED DESCRIPTION
[0015] Apparatus and methods are disclosed, including techniques for lossy compression of mesh topology. According to aspects described herein, in order to reduce complexity and increase compression rate, a given mesh with a general topology is partitioned into mesh patches with simpler topology, each of which can be encoded separately. The encoded mesh patches can then be decoded and combined to reconstruct the full mesh topology. Thus, aspects of lossy compression disclosed herein can produce a reconstructed mesh surface that can be perceptually identical to a given mesh surface, thereby providing a good trade-off between perceived video quality and compression rate.
[0016] Figure 1 An example mesh patch 100 is shown according to an aspect of the present disclosure. A given mesh with a general topology may be partitioned into mesh patches (e.g., Figure 1 Mesh patches 100 are each homeomorphic to the disk, i.e., their entire three-dimensional (3D) shape can be unfolded into a mesh of a single two-dimensional (2D) surface such 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, Vol. 21 (2002), No. 3, 2002). Mesh patches 100 are typically composed of vertices connected by triangles. The surface of triangles of all mesh patches from the mesh topology approximates the 3D (or 2D) surface. The techniques disclosed herein represent (encode) mesh patches of a mesh having a general topology. To this end, the topology of each mesh patch can be analyzed to derive vertex chains, i.e., chains 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. The vertex chains derived from all mesh patches can then be recorded in a vertex chain data record, the data of which is encoded in a vertex chain symbol stream. The vertex chain symbol stream can be further encoded using lossless and / or lossy compression techniques. Figure 2 and Figure 3 The encoding and decoding of mesh topology is further described.
[0017] Figure 22 is a functional block diagram of an example mesh topology encoder 200 according to an 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 via wireless or wired communication techniques. 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 fed into 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 fed into the entropy encoder 240, which may encode the received stream into a coded mesh 250. Thus, the portion of stream 235 representing structure data may be encoded by lossless encoder 242, while the portion of the stream representing position data (of mesh vertices) may be encoded by lossy encoder 244. In general, the mesh topology decoder reverses the operation of mesh topology encoder 200, decoding the encoded mesh 250 into a reconstructed mesh topology, as further described below.
[0018] Figure 3 3 is a functional block diagram of an example mesh topology decoder 300 according to an aspect of the present disclosure. The mesh topology decoder 300 may 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 may be implemented by software, firmware, and / or hardware. In addition, the components 320, 330, 340 of the decoder (and the components 220, 230, 240 of the encoder) 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 technology. The entropy decoder 320 may receive the encoded and decoded mesh 250, 310 and may decode a decoded vertex chain symbol stream 325 from the encoded and decoded mesh 250, 310 by a lossless decoder 322 or a lossy decoder 324. The vertex chain decoder 330 may receive the decoded vertex chain symbol stream 325 and may decode vertex chain data records therefrom. Mesh topology generator 340 may then use decoded vertex chain data records 335 to reconstruct mesh 350.
[0046] A further description of the operation of mesh topology encoder 200 and mesh topology decoder 300 is provided below.
[0019] In one aspect, the vertex chain generator 220 of the mesh topology encoder 200 may receive a mesh 210 of a general topology and may partition the given mesh topology into mesh patches that are each homeomorphic to the disk, e.g. Figure 1 The vertex chain generator 220 can then derive a vertex chain from each of the mesh patches and can represent the vertex chain of the patch in a vertex chain data record. Figure 4 and Figure 5 Describes the process of deriving vertex chains from a mesh patch and generating vertex chain data records.
[0020] Figure 4 An example mesh patch 400 including a vertex chain is shown according to an aspect of the present disclosure. A 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 derived vertex chain performed by the vertex chain generator 220 can be performed in two steps. In a first step, a reference vertex chain can be determined. Then, in a second step, an additional vertex chain can be determined relative to the reference vertex chain. Determining the reference vertex chain can involve searching for the longest direct path linking two vertices on the boundary of the mesh. For example, the reference vertex chain consists of Figure 1 The path between the boundary vertices 110.1 and 110.2 of FIG. 1 is shown. Other vertex chains may be determined relative to this reference vertex chain, such as a vertex chain linking boundary vertices 120.1 and 130.1 to boundary vertices 120.2 and 130.2, respectively.
[0021] In order 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. Therefore, the boundary vertices are first determined by the vertices of a patch. For example, the boundary vertices 1, 6, 7, 11, 12, 15, 16 and 17 can be determined from all the vertices 1-17 of the mesh patch 400, such as Figure 4 As shown. Then, for each boundary vertex, the shortest path between the boundary vertex and other boundary vertices is calculated. Calculating the shortest path between boundary vertex pairs can be done, for example, by using Dijkstra's algorithm. The vertex pair with the longest calculated path can be selected as the reference vertex chain. For example, the path through vertices {1, 2, 3, 4, 5, 6} forms Figure 4 A reference vertex chain 420 . 1 of the mesh path 400 is shown.
[0022] Once the reference vertex chain 420.1 is determined, the other vertex chains 420.2-420.3 of the mesh patch 400 can be derived relative to the reference vertex chain 420.1. To this end, starting from the reference vertex chain 420.1, the vertices that are separated from the corresponding nearest vertex from the reference vertex chain by N=1 mesh edges can be found, i.e., Figure 47-11 and 16-17 in the example mesh patch 400 of FIG. Such vertices may form one or more chains 420.2, referred to herein as chains of level N=1, i.e., relative to the reference vertex chain 420.1, referred to herein as a chain of level N=0. Figure 4 As shown, there are three vertex chains 420.2 of level N=1: chain {7, 8} and chain {9, 10, 11} located above the reference vertex chain 420.1, and chain {16, 17} located below the reference vertex chain 420.1. Next, vertices that are separated from the corresponding nearest vertex from the reference vertex chain by N=2 mesh edges can be found, that is, Figure 4 Vertices 12-15 in the example mesh patch 400. Such vertices may form one or more chains 420.3 of level N=2. Figure 4 As shown, there are two vertex chains 420.3 at level N=2: chains {12} and {13, 14, 15}, both of which are located above the reference vertex chain 420.1. Information associated with the derived vertex chains may be recorded in a vertex chain data record, as described below with reference to Figure 5 described.
[0023] Figure 5 The construction of an example vertex chain data record 500 according to an aspect of the present disclosure is shown. The vertex chain data record 510 can contain information associated with a vertex chain derived from a mesh patch, each of which constitutes a partition of a given mesh 210. The vertex chain data record 510 can be composed of patch records, each patch record corresponding to a mesh patch (e.g., patch record 520 corresponds to patch 400). The patch record 520 can contain data segments 520.1-3 that record information associated with the corresponding vertex chain. The segments 520.1-3 can be arranged in increasing order according to the level N of the corresponding vertex chain. Therefore, the data segments (e.g., 520.1, 520.2, or 520.3) can record references to vertices of a vertex chain of 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) may also record the relative position of the chain relative to the reference vertex chain—encoding a chain located above the reference vertex chain by "T" (i.e., top chain) and encoding a chain located below the reference vertex chain by "B" (i.e., bottom chain).
[0024] For example, information associated with reference vertex chain 420.1 may be recorded in data segment 520.1, including an ordered list of vertices in the chain, i.e., {1, 2, 3, 4, 5, 6}. Information associated with vertex chain 420.2 may be recorded in segment 520.2, including information associated with the three chains that may be recorded in corresponding subsegments 520.2 AC. Thus, Figure 5As shown, subsegment 520.2.A may record information associated with chain {7, 8}, including a relative position indicator “T” (to indicate that the position of the chain is above the reference vertex chain), subsegment 520.2.B may record information associated with chain {9, 10, 11}, including a relative position indicator “T” (to indicate that the position of the chain is above the reference vertex chain), and subsegment 520.2.C may record information associated with chain {16, 17}, including a relative position indicator “B” (to indicate that the position of the chain is below the reference vertex chain). Similarly, information associated with vertex chain 420.3 is recorded in segment 520.3, including information associated with the two chains recorded in corresponding subsegments 520.3 AB. Therefore, as Figure 5 As shown, sub-segment 520.3.A can record information associated with chain {12}, including a relative position indicator "T" (to indicate that the chain's position is above the reference vertex chain), and sub-segment 520.3.B can record information associated with chain {13, 14, 15}, including a relative position indicator "T" (to indicate that the chain's position is above the reference vertex chain).
[0025] Thus, the vertex chain data record 510 contains position information (of the vertices contained in the vertex chain) and implicit structural information. The structural information represents the topology of the mesh by means of the ordering of the vertices in the record 510 according to their chain associations. For example, in Figure 5 In the illustrated case, the order in which the 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.
[0026] 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 obtained record 510 into a vertex chain symbol stream. As described above, the vertex chain generator 220 can generate a plurality of patch records 520 corresponding to a plurality of patches forming the input mesh 210, and thus, the vertex chain symbol stream generated by the vertex chain encoder 230 encodes all of these records.
[0027] Therefore, according to various aspects, the vertex chain encoder 230 can be configured to signal the data elements of the vertex chain data record 510 by corresponding symbols. For example, data elements representing the number of patches, the number of vertex chains in the patches, and the number of vertices in the vertex chains can be represented by corresponding symbols in various orders independently or relative to each other. Similarly, data elements representing the level N associated with the vertex chain and the relative position of the chain to the reference vertex chain can be represented by corresponding symbols in various orders independently or relative to each other. In addition, data elements representing the position data of the vertices in the vertex chain can be represented by corresponding 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 corresponding symbols as shown in Table 1, Table 2, or Table 3.
[0028] Table 1 shows the vertex chain symbol stream signaling in the case where the coordinates of the vertices in the vertex chain are encoded and decoded by their global space positions.
[0029] Table 1: Vertex chain symbol flow signaling using global coordinates
[0030] Table 2 shows the signaling of a vertex chain symbol stream in the case where 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 that the coordinates of the first vertex in the chain are encoded by its global spatial position. In this case, for example, Figure 4 In the vertex chain {13, 14, 15}, the position of vertex 15 can be encoded relative to vertex 14 (the delta value is represented by d2), and the position of vertex 14 can be encoded relative to vertex 13 (the delta value is represented by d1), while the position of vertex 13 can be encoded by its global coordinates (represented by P). In this way, better compression rate can be achieved.
[0031] Table 2: Vertex chain symbol stream signaling using delta coordinates.
[0032]
[0033] Table 3 shows a variation of the signaling of the vertex chain symbol stream, where the symbols describing the vertices, vertex chains and patches of the entire mesh are arranged into hierarchical nested descriptors.
[0034] Table 3: Vertex chain symbol stream, arranged as hierarchical nested descriptors
[0035] The vertex chain symbol stream 235 generated by the vertex chain encoder 230 (e.g., according to any of Tables 1, 2, or 3) can be further encoded by the entropy encoder 240 to generate the encoded mesh 250. The portion of the stream 235 corresponding to the structure data is usually encoded by a lossless encoder 242 (e.g., an encoder based on arithmetic, Huffman, or RLE encoding and decoding techniques). For example, the portion of the stream 235 corresponding to the number of patches (Nb_Patches) in a given mesh 210, the number of vertex chains in each patch (Nb_chains), the length of each of these vertex chains (Nb_vet), and the flag indicating the depth (level) change of the chain (Depth_change) and the position of the chain relative to the corresponding reference vertex chain (Relative_Position) must usually be encoded by the lossless encoder 242. The portion of the stream 235 corresponding to the position of the vertex (Vertex_Positions and Vertex_Deltas) can be encoded by the lossy encoder 244. In one aspect, additional signaling may be added to indicate whether lossless or lossy encoding has been applied to the corresponding portion of the vertex chain symbol stream. After encoding, the coded and decoded mesh 250 provided by the entropy encoder 240 may be sent to the mesh topology decoder 300 so that the latter reconstructs the original mesh 210, as further described below.
[0036] As referenced above Figure 3 As described above, the entropy decoder 320 receives the encoded and decoded grid 310 from a storage device, or directly from the output of the encoder 250 via a communication link (see Figure 2 ) receives the encoded and decoded mesh 310. The entropy decoder 320 can recover the vertex chain symbol stream 325. Therefore, a portion of the stream encoded by the lossless encoder 242 is decoded by the lossless decoder 322, and a portion of the stream encoded by the lossy encoder 244 is decoded by the lossy decoder 324. The decoded vertex chain symbol stream 325 can then be fed into the vertex chain decoder 330, which can be configured to reverse the operation of the vertex chain encoder 230, thereby producing a decoded vertex chain data record 335. Note that in the case where differential coordinates are used to encode and decode some of the coordinates of the vertices (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 transformed 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 fed into the mesh topology generator 340. The mesh topology generator 340 can restore the mesh 210 (generating a reconstructed mesh 350) by reconstructing the topology of each mesh patch based on the corresponding patch record of each mesh patch in the decoded vertex chain data record 335. The nearest point method (such as reference Figure 6) or the TriStrip method (as described in Figure 7 as described) to perform reconstruction of the mesh patch topology.
[0037] Figure 6 Reconstruction of an example mesh patch topology using a closest point method 600 according to an aspect of the present disclosure is shown. Examining the vertex chains recorded in the patch record for the corresponding patch, reconstruction of the topology of the patch may include connecting vertices of vertex chains at levels above (marked by a "T") or below (marked by a "B") the reference vertex chain of the patch. For example, reconstruction of the topology of the mesh patch may involve connecting vertices in a vertex chain at level N 610 with vertices in a vertex chain at level N+1 620. Figure 6 The process of connecting vertices in two steps is shown. In the first step, for each segment (one of the segments S01-S06) connecting two consecutive vertices in the vertex chain at level N 610, a triangle (the corresponding triangle af) is formed by connecting the vertex describing the segment to the nearest vertex among the vertices in the vertex chain at level N+1 620. For example, with respect to segment S01, triangle a is formed by the nearest vertex v (when the sum of the Euclidean distances d1 and d2 is found to be the smallest). Then, in the second step, the same operation is performed on the segments of the vertex chain at level N+1 620 that were connected to the vertices of the chain at level N 610 in the first step. For example, triangles g and h associated with segments S11 and S12, respectively, are formed in the second step. Note that in both steps, a vertex chain consisting of only one vertex has no segments, and therefore, no triangles can be formed with respect to such a chain (however, a vertex can be connected to a segment from another chain, as shown with respect to vertex v forming triangle a with segment S01).
[0038] Figure 71 . Reconstruction of an example mesh patch topology using a triangle strip method 700 according to an aspect of the present disclosure is shown. When the number of vertices in the vertex chain at each level N 710 is the same (or similar) as the number of vertices in the vertex chain at the adjacent level N+1 720, an alternative method for reconstructing the topology of the mesh patch (which does not rely on calculating the nearest vertex) can be used. The steps in the method are as follows. The process begins with respect to the reference vertex chain at level N=0 and the vertex chain at level N=1, processing the vertex chain at level N=1 that is located at the top or bottom of level N=0. Therefore, for the first segment S01 in the reference vertex chain, triangle a is formed using the two vertices that depict S01 and the first vertex of the first segment S11 at level N=1. Next, a second triangle b is formed between the vertices that depict segment S11 at level N=1 and the vertex that ends segment S01. Similarly, a third triangle c is formed between the vertices that depict segment S02 at level N=0 and the vertex that ends segment S11 at level N=1. This process may continue until there are no more vertices to process at level N=0 or level N=1 on the processed side (e.g., top). The process is repeated for the vertex chains of levels N=0 and N=1 on the opposite side (e.g., bottom). Vertex chains of successive levels (N=1 and N=2, N=2 and N=3, etc.) are similarly processed to rebuild the entire mesh patch topology.
[0039] Once the mesh patch is reconstructed, as described in Figure 6 and Figure 7 As described, mesh topology generator 340 can reconstruct full mesh 350 by combining (ie, stitching) reconstructed patches together. In one aspect, combining the reconstructed patches can include spatially filtering the patches to spatially blend their abutting boundaries and correcting for overlaps or gaps between adjacent patches.
[0040] As described herein, reconstruction of the original mesh topology is a lossy process, i.e., the reconstructed mesh surface 350 may differ from the original mesh surface 210. This may be the case even if the vertex positions are encoded in a lossless manner, since the Figure 6 and Figure 7 The described process may not result in connections that are identical to those between vertices of the patch (or identical triangles) in the corresponding original patch. However, as described above, the reconstructed mesh surface 350 may be perceptually identical to the original mesh surface 210, and thus may not impair the viewer's experience, particularly for applications in the entertainment field. At the same time, as described herein, encoding a general mesh topology by partitioning it into smaller and spatially simpler patches (mesh patches that are homeomorphic to the disc) results in higher compression rates than methods that encode and decode the full mesh topology.
[0041] Figure 8is a flowchart of an example method for encoding a mesh topology 800 according to an aspect of the present disclosure. The method 800 may be referred to as Figure 2 The method 800 may be performed by the mesh topology encoder 200 described above. The method 800 may begin in step 810 by generating a vertex chain data record 225. The vertex chain data record may contain information representing the topology of the mesh patches that constitute the 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. Then, in step 830, the vertex chain symbol stream may be further encoded into a decoded mesh 250. As described in reference Figure 4 and Figure 5 The generating of the vertex chain data record 225 includes, for each mesh patch, deriving a vertex chain, including: determining a reference vertex chain from the mesh patch, and then determining an additional vertex chain from the mesh patch relative to the reference vertex chain. Each chain in the additional vertex chain may include a vertex that is spaced the same number of mesh edges from a corresponding nearest vertex from the reference vertex chain, wherein each chain is associated with a level value indicating the number of mesh edges. In addition, each chain in the additional vertex chain is associated with a relative position indicator, which indicates whether each chain is located above or below the reference vertex chain.
[0042] Based on the signaling examples described in reference Tables 1, 2, and 3, in step 820, the generated vertex chain data record 225 is encoded into a vertex chain symbol stream 235 including: 1) signaling the number of grid patches; 2) for each grid patch in the grid patch, signaling the number of derived vertex chains in the grid patch; then, for each vertex chain in the vertex chain derived for each grid patch in the grid patch, 3) signaling the number of vertices in the vertex chain; 4) signaling depth changes; 5) signaling relative positions; and 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 and differential 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).
[0043] Fig. 9 is a flowchart of an example method for reconstructing a mesh topology 900 according to an aspect of the present disclosure. The method 900 may be referred to as Figure 3The mesh topology decoder 300 described above is executed. In step 910, the method 900 begins by decoding the encoded mesh 310 into a decoded vertex chain symbol stream 325. In step 920, the decoded vertex chain symbol stream 325 can be decoded into a decoded vertex chain data record 335. The decoded vertex chain data record 335 can contain information representing the topology of the mesh patches that constitute the partition of the mesh 210 to be reconstructed 350. Then, in step 930, based on the decoded vertex chain data record, the mesh can be reconstructed to generate a reconstructed mesh. As shown in reference Figure 4 and Figure 5 The decoded vertex chain data record 335 may include: a vertex chain for each mesh patch in the mesh patch, the vertex chain including a reference vertex chain and additional vertex chains positioned relative to the reference vertex chain, wherein each vertex chain in the vertex chain links one or more vertices of the mesh patch. Each chain in the additional vertex chains may include vertices that may be spaced the same number of mesh edges from the corresponding nearest vertex from the reference vertex chain, wherein each chain is associated with a level value indicating the number of mesh edges. In addition, each chain of the additional vertex chains is associated with a relative position indicator indicating whether each chain is located above or below the reference vertex chain.
[0044] Based on the signaling examples described with reference to Tables 1, 2, and 3, in step 920, the decoding of the decoded vertex chain symbol stream 325 may include decoding the number of mesh patches and, for each mesh patch in the mesh patches, decoding the number of vertex chains in the mesh patch. Next, for each vertex chain in the vertex chain of each mesh patch in the mesh patch, the number of vertices in the vertex chain, the position information of the vertex chain (e.g., depth change and relative position) is decoded. This is followed by the decoding of the vertex positions, whether based on the global coordinates of the vertices in the vertex chain (e.g., based on Table 1), based on the global coordinates of the first vertex in the vertex chain and then based on the differential coordinates of the remaining vertices in the vertex chain (e.g., based on Table 2), or based on a more general mixture of symbols representing absolute and relative vertex positions (e.g., using the absolute and relative position options of Table 3).
[0045] The illustrations of the various aspects described herein are intended to provide a general understanding of the structure, function and operation of various aspects. Illustrations are not intended to be used as a complete description of all elements and features of the device and system utilizing the structure or method described herein. After reading this disclosure, many other aspects may be apparent to those skilled in the art. Other aspects can be utilized and derived from this disclosure so that structural and logical replacements and changes can be made without departing from the scope of this disclosure. Therefore, this disclosure and the accompanying drawings are considered to be illustrative rather than restrictive.
[0046] Descriptions of various aspects are provided to enable making or using of various aspects. Various modifications to these aspects will be apparent, and the general principles defined herein may be applied to other aspects without departing from the scope of the present disclosure. Therefore, the present disclosure is not intended to be limited to the aspects shown herein, but to conform to the widest possible scope consistent with the principles and novel features defined by the appended claims.
Claims
1. A method for encoding a mesh topology, comprising: generating a vertex chain data record containing information representing a topology of mesh patches constituting a partition of the mesh; encoding the generated vertex chain data records into a vertex chain symbol stream; and The vertex chain symbol stream is encoded into a codec mesh.
2. The method according to claim 1, wherein: The generating of vertex chain data records comprises: For each mesh patch in the mesh patches, derive a vertex chain, wherein the derived vertex chain comprises: determining a reference vertex chain from the mesh patch; and determining from the mesh patch an additional vertex chain relative to the reference vertex chain, Each vertex chain in the derived vertex chains links one or more vertices of the mesh patch.
3. The method according to claim 1 or 2, wherein: Each of the additional vertex chains includes vertices that are separated by the same number of mesh edges as a corresponding nearest vertex from the reference vertex chain, and wherein each of the chains is associated with a level value indicating the number of mesh edges.
4. The method according to any one of claims 1 to 3, wherein: Each of the additional vertex chains is associated with a relative position indicator indicating whether the each chain is located above or below the reference vertex chain.
5. The method according to any one of claims 1 to 4, wherein: Encoding the generated vertex chain data record into the vertex chain symbol stream comprises: The number of mesh patches is signaled.
6. The method according to any one of claims 1 to 5, wherein: Encoding the generated vertex chain data record into the vertex chain symbol stream comprises: For each of the mesh patches, a number of vertex chains in the mesh patch is signaled.
7. The method according to any one of claims 1 to 6, wherein: Encoding the generated vertex chain data record into the vertex chain symbol stream comprises: For each of the vertex chains derived for each of the mesh patches, a number of vertices in the vertex chain is signaled.
8. The method according to any one of claims 1 to 7, wherein: Encoding the generated vertex chain data record into the vertex chain symbol stream comprises: For each of the vertex chains derived for each of the mesh patches, a depth change is signaled, the depth change indicating a change in a level value associated with the vertex chain.
9. The method according to any one of claims 1 to 8, wherein: Encoding the generated vertex chain data record into the vertex chain symbol stream comprises: For each of the vertex chains derived for each of the mesh patches, a relative position is signaled, the relative position being indicative of a relative position indicator associated with the vertex chain.
10. The method according to any one of claims 1 to 9, wherein: Encoding the generated vertex chain data record into the vertex chain symbol stream comprises: For each vertex chain derived for each of the mesh patches, vertices of the vertex chain are signaled, wherein signaling the vertices of the vertex chain comprises signaling global coordinates of the vertex, delta coordinates of the vertex, or a combination thereof.
11. A method for reconstructing a grid topology, comprising: Decode the encoded mesh into a decoded vertex chain symbol stream; decoding the decoded vertex chain symbol stream into decoded vertex chain data records, the decoded vertex chain data records containing information representing the topology of mesh patches constituting a partition of the mesh; and The mesh is reconstructed based on the decoded vertex chain data records.
12. The method according to claim 11, wherein: The decoded vertex chain data record includes: a vertex chain for each mesh patch in the mesh patch, the vertex chain including a reference vertex chain and an additional vertex chain positioned relative to the reference vertex chain, wherein each vertex chain in the vertex chain links one or more vertices of the mesh patch.
13. The method according to claim 11 or 12, wherein: Each of the additional vertex chains includes a vertex that is separated from a corresponding nearest vertex from the reference vertex chain by the same number of mesh edges, and wherein each of the chains is associated with a level value indicating the number of mesh edges.
14. The method according to any one of claims 11 to 13, wherein: Each of the additional vertex chains is associated with a relative position indicator indicating whether the each chain is located above or below the reference vertex chain.
15. The method according to any one of claims 11 to 14, wherein: The decoding of the decoded vertex chain symbol stream comprises: The number of the grid patches is decoded.
16. The method according to any one of claims 11 to 15, wherein: The decoding of the decoded vertex chain symbol stream comprises: For each of the mesh patches, the number of vertex chains in the mesh patch is decoded.
17. The method according to any one of claims 11 to 16, wherein: The decoding of the decoded vertex chain symbol stream comprises: For each of the vertex chains of each of the mesh patches, the number of vertices in the vertex chain is decoded.
18. The method according to any one of claims 11 to 17, wherein: The decoding of the decoded vertex chain symbol stream comprises: For each of the vertex chains of each of the mesh patches, a depth change is decoded, the depth change indicating a change in a level value associated with the vertex chain.
19. The method according to any one of claims 11 to 18, wherein: The decoding of the decoded vertex chain symbol stream comprises: For each of the vertex chains of each of the mesh patches, a relative position is decoded, the relative position indicating a relative position indicator associated with the vertex chain.
20. The method according to any one of claims 11 to 19, wherein: The decoding of the decoded vertex chain symbol stream comprises: For each vertex chain in the vertex chains of each mesh patch in the mesh patches, vertices of the vertex chain are decoded, the vertices of the vertex chain including global coordinates of the vertex, delta coordinates of the vertex, or a combination thereof.
21. The method according to any one of claims 11 to 20, wherein: The reconstruction of the grid comprises: For each of the mesh patches, decoded vertices of a vertex chain are connected to obtain a topology of the mesh patch, the connection forming a triangle using corresponding segments of the vertex chain, wherein a segment connects two consecutive vertices of the vertex chain.
22. The method according to any one of claims 11 to 21, wherein: The connecting also includes connecting segments from a vertex chain to a nearest vertex from an adjacent vertex chain to form a triangle.
23. The method according to any one of claims 11 to 21, wherein: The connecting further includes connecting a first segment from a first vertex chain with a second segment from a second vertex chain, forming a first triangle based on first vertices of the first segment and the second segment, and forming a second triangle based on the second segment and a second vertex of the first segment.
24. An apparatus for encoding a mesh topology, comprising: at least one processor; as well as a memory storing instructions that, when executed by the at least one processor, cause the apparatus to: generating a vertex chain data record containing information representing a topology of mesh patches constituting a partition of the mesh; encoding the generated vertex chain data records into a vertex chain symbol stream; and The vertex chain symbol stream is encoded into a codec mesh.
25. The device according to claim 24, wherein: The generating of vertex chain data records comprises: For each mesh patch in the mesh patches, derive a vertex chain, wherein the derived vertex chain comprises: determining a reference vertex chain from the mesh patch; and determining from the mesh patch an additional vertex chain relative to the reference vertex chain, Each vertex chain in the derived vertex chains links one or more vertices of the mesh patch.
26. The device according to claim 24 or 25, wherein: Each of the additional vertex chains includes vertices that are separated by the same number of mesh edges from a corresponding nearest vertex from the reference vertex chain, and wherein each of the chains is associated with a level value indicating the number of mesh edges.
27. The device according to any one of claims 24 to 26, wherein: Each of the additional vertex chains is associated with a relative position indicator indicating whether the each chain is located above or below the reference vertex chain.
28. An apparatus for reconstructing a grid topology, comprising: at least one processor; as well as a memory storing instructions that, 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 decoded vertex chain data records, the decoded vertex chain data records containing information representing the topology of mesh patches constituting a partition of the mesh; and The mesh is reconstructed based on the decoded vertex chain data records.
29. The device according to claim 28, wherein The reconstruction of the grid comprises: For each of the mesh patches, decoded vertices of a vertex chain are connected to obtain a topology of the mesh patch, the connection forming a triangle using corresponding segments of the vertex chain, wherein a segment connects two consecutive vertices of the vertex chain.
30. The device according to claim 28 or 29, wherein: The connecting also includes connecting segments from a vertex chain to a nearest vertex from an adjacent vertex chain to form a triangle.
31. The device according to any one of claims 28 to 29, wherein: The connecting further includes connecting a first segment from a first vertex chain with a second segment from a second vertex chain, forming a first triangle based on first vertices of the first segment and the second segment, and forming a second triangle based on the second segment and a second vertex of the first segment.
32. A non-transitory computer readable medium comprising instructions executable by at least one processor to perform a method for encoding a mesh topology, the method comprising: generating a vertex chain data record containing information representing a topology of mesh patches constituting a partition of the mesh; encoding the generated vertex chain data records into a vertex chain symbol stream; and The vertex chain symbol stream is encoded into a codec mesh.
33. A non-transitory computer readable medium comprising instructions executable by at least one processor to perform a method for reconstructing a mesh topology, the method comprising: Decode the encoded mesh into a decoded vertex chain symbol stream; decoding the decoded vertex chain symbol stream into decoded vertex chain data records, the decoded vertex chain data records containing information representing the topology of mesh patches constituting a partition of the mesh; and The mesh is reconstructed based on the decoded vertex chain data records.