DETAILED ACTION
Allowable Subject Matter
Claims 16-17 are objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims.
Claim Rejections - 35 USC § 102
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale or otherwise available to the public before the effective filing date of the claimed invention.
(a)(2) the claimed invention was described in a patent issued under section 151, or in an application for patent published or deemed published under section 122(b), in which the patent or application, as the case may be, names another inventor and was effectively filed before the effective filing date of the claimed invention.
Claims 10-11, 13-15 and 18-19 are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Gueziec (US 6452596 B1).
As per claim 10, Gueziec teaches the claimed:
10. A lossless decoding method, comprising:
performing, by a decoder side, lossless decoding on a target bitstream to obtain a first mesh; and
(Gueziec (col 18, line 49-52): “The decoding of a non-manifold 3D model comprises the following steps. A. At step 5100, decode manifold connected components … B. Decode stitches (step 5200).”
Gueziec (col 5, line 56-59): “clustering, or stitching together during the decompression process, the vertices that were duplicated earlier to faithfully recover the original connectivity.”
Gueziec (col 6, line 17-21): “encoding the stitching information in a bit-stream according to a predetermined bit-stream syntax, the bit-stream syntax being comprised of, for each vertex of the manifold polygonal mesh, one of the stitching commands”
Gueziec teaches the lossless decoding as during the decompression process, the decoding, it stitches and clusters together vertices to recover the original connectivity, indicating there is no loss, since it is the same as the original. Further, Gueziec teaches decoding on the stitches, indicated in step 5200, where the stitches are encoded into the bitstream, thus decoding the stitches follows that it is decoding the bitstream.)
restoring, by the decoder side, duplicate vertices in the first mesh to obtain a target mesh; wherein
(Gueziec (Abstract): “clustering, or stitching together during a decompression process, vertices that were duplicated earlier to faithfully recover the original connectivity.”
Gueziec teaches the clustering or stitching of duplicated vertices during decompression which directly corresponds to the restoring of duplicate vertices.)
the duplicate vertices are vertices with same corresponding geometry coordinates in the target mesh.
(Gueziec (col 6, line5-7): “a vertex clustering array obtained by cutting through singular edges and vertices of the non-manifold polygonal mesh”
Gueziec (col 18, line 12-14): “the clustering map assigns each vertex of the manifold polygonal model to its corresponding vertex in the non-manifold polygonal model”
Gueziec teaches the clustering map that defines correspondences between vertices that were duplicated and must be restored to the original positions.)
As per claim 18, this claim is similar in scope to limitations recited in claim 10, and thus is rejected under the same rationale.
As per claim 11, Gueziec teaches the claimed:
11. The method according to claim 10, wherein the restoring duplicate vertices in the first mesh to obtain a target mesh comprises:
traversing, by the decoder side, the first mesh in a case that attribute information of the first mesh is decoded, and determining geometry vertices corresponding to multiple texture coordinate vertices as target vertices; and
(Gueziec (Abstract): “clustering, or stitching together during a decompression process, vertices that were duplicated earlier”
Gueziec (col 5, line 42-44): “Such mesh properties can generally include color, texture coordinates and normals, and the properties can be expressed and encoded per mesh vertex/face/corner.”
Gueziec (col 18, line 58-61): “This information is used later to keep track of visited vertices when decoding vertex and triangle geometry and properties. D. At step 5400, decode the geometry and properties per vertex/normal/corner.”
Gueziec teaches stitching vertices during decompression based on decoded connectivity and properties including texture coordinates.)
creating, by the decoder side, duplicate vertices with same geometry coordinates as the target vertex, and updating a connectivity corresponding to the first mesh based on a connectivity corresponding to texture coordinates of the duplicate vertices to obtain the target mesh.
(Gueziec (col 8, line 14-15): “Stitches are used to recover the vertex clustering within the current component”
Gueziec (col 14, line 27-28, 41-42): “The decoder uses the v_father array to perform this Operation … updating v_cluster such that each element refers directly to the root”
Gueziec (col 8, line 40-46): “Edges for which incident faces are inconsistently oriented are also considered to be singular for the purpose of this process. For each singular vertex of the polygonal mesh, the number of connected fans of polygons incident to it is determined. For each connected fan of triangles, a copy of the singular vertex is created (thereby duplicating singular vertices).”
Gueziec teaches creating vertex correspondences via stitching and updating the connectivity to restore the original mesh. )
As per claim 19, this claim is similar in scope to limitations recited in claim 11, and thus is rejected under the same rationale.
As per claim 13, Gueziec teaches the claimed:
13. The method according to claim 10, wherein the performing lossless decoding on a target bitstream to obtain a first mesh comprises:
(Gueziec (col 18, line 49-52): “The decoding of a non-manifold 3D model comprises the following steps. A. At step 5100, decode manifold connected components … Decode stitches (step 5200).”
Gueziec (col 5, line 56-59): “clustering, or stitching together during the decompression process, the vertices that were duplicated earlier to faithfully recover the original connectivity.”
Gueziec (col 6, line 17-21): “encoding the stitching information in a bit-stream according to a predetermined bit-stream syntax, the bit-stream syntax being comprised of, for each vertex of the manifold polygonal mesh, one of the stitching commands”
Gueziec teaches decoding the stitches, indicated in step 5200, where the stitches are encoded into the bitstream, thus decoding the stitches follows that it is decoding the bitstream. Gueziec teaches the lossless decoding as during the decompression process, the decoding, it stitches and clusters together vertices to recover the original connectivity, indicating there is no loss, since it is the same as the original.)
demultiplexing, by the decoder side, the target bitstream to obtain a sixth bitstream and a seventh bitstream;
(Gueziec (col 8, line 12-14): “the mesh connectivity is encoded, followed with optional stitches, and mesh geometry and properties.”
Gueziec (col 9, line 45-49): “The vertex graph and triangle tree are first placed into the bit stream. The remaining data, i.e. marching pattern, geometry, and properties, is referred to as triangle data and is next placed into the bit stream.”
Gueziec teaches partitioning the bitstream into separate parts, such as connectivity, tree data, and triangle data.)
decoding, by the decoder side, the sixth bitstream and the seventh bitstream to obtain mesh information corresponding to the sixth bitstream and vertex information of second vertices corresponding to the seventh bitstream, respectively;
(Gueziec (col 18, line 52-61): “At step 5100, decode manifold connected components preferably using the Rossignac et al. method or using other suitable methods. B. Decode stitches (step 5200). C. At step 5300, apply stitches to the v-cluster look-up table describing the relation between simple polygon boundary loop nodes and mesh vertices. This information is used later to keep track of visited vertices when decoding vertex and triangle geometry and properties. D. At step 5400, decode the geometry and properties per vertex/normal/corner.”
Gueziec teaches separately decoding mesh connectivity, which corresponds to the sixth bitstream, and stitching information, which corresponds to the seventh bitstream.)
reconstructing, by the decoder side, a second mesh based on the mesh information; and
(Gueziec (col 18, line 52-55): “At step 5100, decode manifold connected components preferably using the Rossignac et al. method or using other suitable methods. B. Decode stitches (step 5200).” Gueziec teaches the reconstruction of the manifold mesh.)
merging, by the decoder side, second vertices in the second mesh based on vertex information of the second vertices, to obtain a first mesh; wherein
(Gueziec (Abstract): “clustering, or stitching together during a decompression process, vertices that were duplicated earlier to faithfully recover the original connectivity.”
Gueziec (col 18, line 56-58): “At step 5300, apply stitches to the v-cluster look-up table describing the relation between simple polygon boundary loop nodes and mesh vertices.”
Gueziec teaches the merging or stitching to recover the original non-manifold connectivity.)
the first mesh is a three-dimensional mesh comprising a non-manifold structure, the second mesh is a three-dimensional mesh comprising a manifold structure, and the second vertex is obtained by splitting the first mesh into the second mesh.
(Gueziec (Abstract): “converting an original (non-manifold) model to a manifold model, encoding the manifold model using a mesh compression technique, and clustering, or stitching together during a decompression process, vertices that were duplicated earlier to faithfully recover the original connectivity.”
Gueziec teaches to this exact process, to split non-manifold meshes in to a manifold mesh by duplicating vertices.)
As per claim 14, Gueziec teaches the claimed:
14. The method according to claim 13, wherein the seventh bitstream comprises a target identifier and a sixth sub-bitstream; and
(Gueziec (col 12, line 32-34): “To specify whether there are any stitches at all in a given component, a boolean flag has_stitches is used. In addition to the PUSH, GET and POP commands”
Gueziec teaches the has_stitches flag, with the other commands, that is a target identifier indicating whether stitching data is present. These are all encoded in a bitstream with other information that correspond to the sub bitstream.)
the decoding, by the decoder side, the seventh bitstream to obtain vertex information of second vertices corresponding to the seventh bitstream comprises:
decoding, by the decoder side, the sixth sub-bitstream to obtain the vertex information of the second vertices, in a case that the target identifier indicates that the first mesh is a three-dimensional mesh comprising a non-manifold structure.
(Gueziec (col 13):
PNG
media_image1.png
484
460
media_image1.png
Greyscale
Gueziec shows the pseudo code that explicitly conditions the decoding of stitching commands on has_stitches being true for each vertex, thus obtaining the vertex information. Additionally, the has_stitches with the other stitch commands (PUSH, POP, GET) will determine whether or not the mesh comprises a manifold structure.)
As per claim 15, Gueziec teaches the claimed:
15. The method according to claim 13, wherein the merging second vertices in the second mesh based on vertex information of the second vertices, to obtain a first mesh comprises:
parsing, by the decoder side, the vertex information of the second vertices and determining the second vertices in the second mesh:
(Gueziec (col 13):
PNG
media_image1.png
484
460
media_image1.png
Greyscale
Gueziec teaches the iteration through vertices and decodes stitching commands to identify verticies that require merging.)
querying, by the decoder side, geometry coordinates of the second vertex in a mapping table to obtain a target vertex; wherein the mapping table is obtained by decoding the sixth bitstream and the seventh bitstream, the mapping table stores a mapping relationship between geometry coordinates corresponding to each vertex and an index corresponding to each vertex, and geometry coordinates corresponding to the target vertex are the same as geometry coordinates corresponding to the second vertex;
(Gueziec (col 18, line 29-38): “Run an algorithm to discover stitches (step 4300), i.e., to represent the information contained in the v_cluster array as a set of stitching commands of the type NONE, PUSH, GET or POP with associated data as explained above (see also the stitching command data structure shown in FIG. 21.). The v_traversal array represents a permutation of the vertices, which is used to convert encoder vertex indices to decoder vertex indices. D. Apply stitches to a look-up table describing the relation between simple polygon boundary loop nodes”
Gueziec (col 18, line 56-62): “apply stitches to the v-cluster look-up table describing the relation between simple polygon boundary loop nodes and mesh vertices. This information is used later to keep track of visited vertices when decoding vertex and triangle geometry and properties. D. At step 5400, decode the geometry and properties per vertex/normal/corner.”)
updating, by the decoder side, an index corresponding to the second vertex to an index corresponding to the target vertex; and
(Gueziec (col 14, line 12-19, 41-43): “Using the stack_index, an anchor is retrieved from the anchor_stack. This is the anchor that the current vertex i will be stitched to. If the pop boolean variable is true, then the anchor is removed form the anchor_stack. Then, an integer differential_length is decoded as an unsigned integer. If it is different from zero, its sign (boolean differential_length_sign) is decoded, and is used to update the sign of differential_length. … updating v_cluster such that each element refers directly to the root of the forest tree it belongs to.”)
updating, by the decoder side, a connectivity corresponding to the second mesh based on the index corresponding to each vertex in the second mesh to obtain the first mesh.
(Gueziec (col 14, line 25-28): “Next the v-cluster array is updated by stitching the current vertex i to the stitching anchor with a length equal to total_length, potentially using a reverse stitch. The decoder uses the v_father array to perform this Operation.”
Gueziec teaches that the next step after determining and updating the index of the target vertex is to update the connectivity by changing the stitching of vertex.)
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102 of this title, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim 12 is rejected under 35 U.S.C. 103 as being unpatentable over Gueziec (US 6452596 B1) in view of Robinson (US 20140133683 A1).
As per claim 12, Gueziec alone does not explicitly teach the remaining claim limitations.
However, Gueziec in combination with Robinson teaches the claimed:
12. The method according to claim 10, wherein the target bitstream comprises an identifier bitstream,
(Robinson [0085]: “bitstream including data encoded in accordance with the first encoding protocol configured and transmitted with a unique bitstream identifier (which a decoder supporting a first encoding protocol associated with the unique bitstream identifier will decode”)
and the restoring duplicate vertices in the first mesh to obtain a target mesh comprises:
decoding, by the decoder side, the identifier bitstream to obtain a first identifier corresponding to each vertex in the first mesh; wherein the first identifier indicates the number of duplicates of a corresponding vertex; and
(Gueziec (col 6, line 20-22): “for each vertex of the manifold polygonal mesh, one of the stitching commands having the type NONE, PUSH, GET or POP”
Gueziec (col 17, line 34-36): “If the vertex index has no corresponding stitching command, the corresponding vertex_stitch_type value is NONE.”
Gueziec teaches the vertex stitch tyupe field per vertex indicates if the vertex is part of a duplicate set (PUSH/POP/GET) or not NONE.)
creating, by the decoder side, duplicate vertices based on the first identifier corresponding to each vertex, to obtain the target mesh.
(Gueziec (col 8, line 44-46): “For each connected fan of triangles, a copy of the singular vertex is created (thereby duplicating singular vertices).”
Gueziec (col 14, line 1): “stitch i to anchor for length of total_length” (pseudo code)
Gueziec teaches the decoder that creates vertex copies based on stitching commands associated with each vertex.)
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to use the bitstream identifier as taught by Robinson with the system of Gueziec in order to ensure global uniqueness and to provide a reliable and fast way to identify data across networks to ensure consistency.
Claims 1, 4, 6-9, and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Gueziec (US 6452596 B1) in view of Mammou (US 20230290009 A1).
As per claim 1, Gueziec teaches the claimed:
1. A lossless encoding method, comprising:
traversing, by an encoder side, a target mesh and obtaining geometry coordinates of each vertex in the target mesh;
(Gueziec (col 8, line 11-14, 38-39, 42-44): “For each manifold connected component, the mesh connectivity is encoded, followed with optional stitches, and mesh geometry and properties. … for each edge of the polygonal mesh, it is determined whether the edge is singular … For each singular vertex of the polygonal mesh, the number of connected fans of polygons incident to it is determined.”
Gueziec teaches traversing the mesh to analyze vertices and their geometry and connectivity.)
determining, by the encoder side, vertices with same geometry coordinates as duplicate vertices;
(Gueziec (col 8, line 44-46): “For each connected fan of triangles, a copy of the singular vertex is created (thereby duplicating singular vertices).”
Gueziec (col 18, line 9-10): “a vertex clustering map obtained by cutting through singular edges and vertices.”
Gueziec teaches singular vertices where copies and duplicates exist and tracks them through a clustering array.)
Gueziec alone does not explicitly teach the remaining claim limitations.
However, Gueziec in combination with Mammou teaches the claimed:
merging, by the encoder side, the duplicate vertices in the target mesh to obtain a first mesh; and
(Mammou [0004]: “a Duplicated Vertex Removal module that includes processing hardware that removes duplicated vertices from the input mesh M(i) to produce a mesh with unified vertices”
Mammou [0178]: “The Duplicated Vertex Removal block 2001 aims to merge duplicated vertices”.)
performing, by the encoder side, lossless encoding on the first mesh to generate a target bitstream.
(Mammou [0134-135]: “the base mesh could be encoded together with a set of displacements to make it possible for the decoder to retrieve a higher quality version, up to and including exactly the original mesh information. … Lossless attribute map coding could be supported by configuring the video encoder to compress attribute maps in a lossless manner e.g., using lossless transforms, PCM mode)”
Mammou [0139]: “In the arrangement described above, the texture coordinates for the base mesh are explicitly specified and encoded in the bitstream by the mesh encoder.”
Mammou teaches the lossless encoding the mesh as it states it gives the decoder a bitstream that can be exactly like the original mesh information, which is lossless as it is an exact replica.)
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to use the duplicated vertex removal as taught by Mammou with the system of Gueziec in order to remove duplicated vertices from to produce a mesh with unified vertices, and to process more efficiently since the same vertices won’t be processed multiple times.
As per claim 4, Gueziec teaches the claimed:
4. The method according to claim 1, wherein the performing lossless encoding on the first mesh to generate the target bitstream comprises:
splitting, by the encoder side, the first mesh into a second mesh in a case that the first mesh is a three-dimensional mesh comprising a non-manifold structure; wherein the second mesh is a three-dimensional mesh comprising a manifold structure;
(Gueziec (Abstract): “A method for encoding a non-manifold polygonal mesh operates by converting an original (non-manifold) model to a manifold model”.
Gueziec (col 6, line 25-26): “This method has steps of (a) converting the non-manifold mesh to a manifold mesh”.
Gueziec (col 6, line 4-7): “representing the non-manifold polygonal mesh as a plurality of manifold polygonal meshes and a vertex clustering array obtained by cutting through singular edges and vertices of the non-manifold polygonal mesh”.)
Gueziec teaches the splitting of the non-manifold mesh into manifold mesh by cutting through edges and vertices.)
encoding, by the encoder side, mesh information corresponding to the second mesh and vertex information of a first vertex separately to obtain a first bitstream corresponding to the mesh information and a second bitstream corresponding to the vertex information of the first vertex, wherein the first vertex is a newly added vertex of the second mesh relative to the first mesh; and
(Gueziec (col 8, line 6-7, 11-14, 47-51): “to encode both the manifold meshes and vertex clustering as a substitute for the non-manifold mesh. … For each manifold connected component, the connectivity is encoded, followed with optional stitches, and geometry and properties. … The correspondences between the new set of vertices comprising the new vertex copies and the old set of vertices comprising the new vertex copies and the old set of vertices comprising the singular vertices is recorded in vertex clustering array.”
Gueziec teaches separate encoding of mesh data and stitching information, and the correspondences between the old and new set of vertex, where the new vertex is comprised of the old, which indicates the new mesh vertices are relative to the old mesh vertices.)
generating, by the encoder side, a target bitstream based on the first bitstream and the second bitstream.
(Gueziec (col 6, line 16-23): “This method further includes a step of encoding the stitching information in a bit-stream according to a predetermined bit-stream syntax, the bit-stream syntax being comprised of, for each vertex of the manifold polygonal mesh, one of the stitching commands having the type NONE, PUSH, GET or POP; a stitch length; a stack index; a differential length; a push bit; and a reverse bit.”
Gueziec (col 5, line 36-40): “By separating the mesh connectivity from mesh geometry and properties, the method avoids encoding vertices (and the properties bound to vertices) multiple times. This provides a reduction in the size of the bit-stream”.)
As per claim 6, Gueziec teaches the claimed:
6. The method according to claim 4, wherein the encoding vertex information of a first vertex to obtain a second bitstream corresponding to the vertex information of the first vertex comprises:
generating, by the encoder side, a target identifier based on the non-manifold structure comprised in the first mesh;
(Gueziec (col 12, line 32-36): “To specify whether there are any stitches at all in a given component, a boolean flag has_stitches is used. In addition to the PUSH, GET and POP commands, a vertex may be associated with a NONE command, in case it is sole representative of its cluster”
Gueziec teaches the stitching commands and the Boolean flag, has_stitches, to indicate whether non-manifold structures exist in the component, making this a target identifier.)
performing, by the encoder side, entropy encoding on an index corresponding to the first vertex to obtain a first sub-bitstream; and
(Gueziec (col 9, line 37-39, 42-43): “Coding efficiency is further improved by the use of an efficient adaptive arithmetic coder… Arithmetic coding is applied to all data, namely mesh connectivity, geometry and properties.”
Gueziec (col 11, line 4-5, 7-12): “the ultimate goal is to minimize the total encoding size for stitches … the longer the stitches, the fewer the commands, and the smaller the bit-stream size. … The method first computes for each vertex that clusters to a singular vertex the longest possible forward stitch starting at that vertex; a length and one or several candidate vertices to be stitched with are then determined.”
Gueziec (col 12, line 45-47): “A stitch_length unsigned integer is associated with a PUSH command. A stack_index unsigned integer is associated with GET and POP commands.”
Gueziec teaches coding efficiency to improve arithmetic coders, such as stitch length integers and stack index integers, as stated in (32). Thus, since entropy encoding is simply an attempt to represent data in the most efficient way possible and minimizing bits to encode the information, Gueziec teaches this process of coding efficiently, and trying to minimize the encoding size, teaching the entropy encoding process on the stitch commands which incorportate the index of a vertex.)
generating, by the encoder side, the second bitstream based on the target identifier and the first sub-bitstream.
(Gueziec (col 6, line 16-23): “This method further includes a step of encoding the stitching information in a bit-stream according to a predetermined bit-stream syntax, the bit-stream syntax being comprised of, for each vertex of the manifold polygonal mesh, one of the stitching commands having the type NONE, PUSH, GET or POP; a stitch length; a stack index; a differential length; a push bit; and a reverse bit.”
Gueziec (col 18, line 44): “At step 4400, encode the discovered stitches in the bit-stream”
Gueziec teaches the bit stream generated by combining the stitch commands and associated data, such as geometry data, property data, and the Boolean flag has_stitches.)
As per claim 7, Gueziec teaches the claimed:
7. The method according to claim 4, wherein the encoding vertex information of a first vertex to obtain a second bitstream corresponding to the vertex information of the first vertex comprises:
generating, by the encoder side, a target identifier based on the non-manifold structure comprised in the first mesh;
(Gueziec (col 12, line 32-26): “To specify whether there are any stitches at all in a given component, a boolean flag has_stitches is used. In addition to the PUSH, GET and POP commands, a vertex may be associated with a NONE command, in case it is sole representative of its cluster”
Similar to claim 6, Gueziec teaches the stitching commands and the Boolean flag, has_stitches, to indicate whether non-manifold structures exist in the component, making this a target identifier.)
performing, by the encoder side, entropy encoding on a flag bit corresponding to each vertex in the second mesh to obtain a second sub-bitstream; wherein the flag bit is used to indicate whether a corresponding vertex is the first vertex; and
(Gueziec (col 9, line 37-39, 42-43): “Coding efficiency is further improved by the use of an efficient adaptive arithmetic coder… Arithmetic coding is applied to all data, namely mesh connectivity, geometry and properties.”
Gueziec (col 11, line 4-5, 7-12): “the ultimate goal is to minimize the total encoding size for stitches … the longer the stitches, the fewer the commands, and the smaller the bit-stream size. … The method first computes for each vertex that clusters to a singular vertex the longest possible forward stitch starting at that vertex; a length and one or several candidate vertices to be stitched with are then determined.”
Gueziec (col 17, line 34-36): “If the vertex index has no corresponding stitching command, the corresponding vertex_stitch_type value is NONE.”
Gueziec (col 13, line 12-15): “For the first vertex, the command is a PUSH. Subsequent vertices are associated with a GET or POP depending on remaining stitch_to relationships”
Gueziec teaches coding efficiency to improve arithmetic coders, such as the has_stitches Boolean flag, as stated in (31). Thus, since entropy encoding is simply an attempt to represent data in the most efficient way possible and minimizing bits to encode the information, Gueziec teaches this process of coding efficiently, and trying to minimize the encoding size, teaching the entropy encoding process.)
generating, by the encoder side, the second bitstream based on the target identifier and the second sub-bitstream.
(Gueziec (col 6, line 16-24): “This method further includes a step of encoding the stitching information in a bit-stream according to a predetermined bit-stream syntax, the bit-stream syntax being comprised of, for each vertex of the manifold polygonal mesh, one of the stitching commands having the type NONE, PUSH, GET or POP; a stitch length; a stack index; a differential length; a push bit; and a reverse bit.”
Gueziec (col 18, line 44): “At step 4400, encode the discovered stitches in the bit-stream”
Similar to claim 6, Gueziec teaches the bit stream generated by combining the stitch commands and associated data, such as geometry data, property data, and the Boolean flag has_stitches.)
As per claim 8, Gueziec teaches the claimed:
8. The method according to claim 4, wherein the first bitstream comprises a third sub-bitstream, a fourth sub-bitstream, and a fifth sub-bitstream, and the mesh information comprises a connectivity, geometry information, and attribute information; and
(Gueziec (col 8, line 10-14): “The mesh is compressed as indicated in FIG. 1D. For each manifold connected component, the mesh connectivity is encoded, followed with optional stitches, and mesh geometry and properties.”
Gueziec (col 9, line 45-50): “The vertex graph and triangle tree are first placed into the bit stream. The remaining data, i.e. marching pattern, geometry, and properties, is referred to as triangle data and is next placed into the bit stream.”
Gueziec (col 5, line 36-39): “By separating the mesh connectivity from mesh geometry and properties, the method avoids encoding vertices (and the properties bound to vertices) multiple times.”
Gueziec teaches the mesh that is separated into connectivity, geometry, and property parts. Additionally, Gueziec teaches the data ordering of the bit stream, which indicates multiple sub bit streams, such as the vertex graph, triangle tree, and the remaining data.)
the encoding mesh information corresponding to the second mesh to obtain a first bitstream corresponding to the mesh information comprises:
encoding, by the encoder side, a connectivity corresponding to the second mesh to generate the third sub-bitstream;
(Gueziec (col 8, line 11-14): “For each manifold connected component, the mesh connectivity is encoded, followed with optional stitches, and mesh geometry and properties.”
Gueziec (col 9, line 11-13): “The connectivity is then encoded as a vertex tree, a simple polygon and jump edges.”)
encoding, by the encoder side, geometry information corresponding to the second mesh to generate the fourth sub-bitstream; and
(Gueziec (col 9, line 23-25): “the geometry and properties are coded differentially with respect to a prediction.”
Gueziec (col 9, line 45-49): “The vertex graph and triangle tree are first placed into the bit stream. The remaining data, i.e. marching pattern, geometry, and properties, is referred to as triangle data and is next placed into the bit stream.”)
encoding, by the encoder side, attribute information corresponding to the second mesh to generate the fifth sub-bitstream.
(Gueziec (col 9, line 45-49): “The vertex graph and triangle tree are first placed into the bit stream. The remaining data, i.e. marching pattern, geometry, and properties, is referred to as triangle data and is next placed into the bit stream.”)
Gueziec (col 5, line 42-44): “Such mesh properties can generally include color, texture coordinates and normals, and the properties can be expressed and encoded per mesh vertex/face/corner.”)
As per claim 9, Gueziec teaches the claimed:
9. The method according to claim 1, wherein the performing lossless encoding on the first mesh to generate the target bitstream comprises:
in a case that the first mesh is a three-dimensional mesh comprising a manifold structure, encoding, by the encoder side, a connectivity corresponding to the first mesh to generate a third bitstream;
(Gueziec (col 5, line 30-33): “encoding the manifold model using a mesh compression technique, and clustering, or stitching together during a decompression process”
Gueziec (col 6, line 7-10): “representing each connected component of the manifold polygonal meshes with a vertex graph, a triangle tree, and a triangle data record”
Gueziec teaches the compression technique of non-manifold meshes, with the step of converting it into a manifold mesh model. However with this technique, the mesh can simply start with the manifold mesh without having to convert a non-manifold mesh into a manifold mesh, and from there encode the connectivity corresponding to the mesh to generate the bit stream.)
encoding, by the encoder side, geometry information corresponding to the first mesh to generate a fourth bitstream;
encoding, by the encoder side, attribute information corresponding to the first mesh to generate a fifth bitstream; and
((Gueziec (col 8, line 11-14): “For each manifold connected component, the mesh connectivity is encoded, followed with optional stitches, and mesh geometry and properties.”
Gueziec (col 9, line 23-24): “the geometry and properties are coded differentially”.
Gueziec teaches that the geometry and properties, or attributes, of the mesh are coded differently, indicating different bit streams for each component.)
generating, by the encoder side, the target bitstream based on the third bitstream, the fourth bitstream, and the fifth bitstream.
(Gueziec (col 9, line 45-49): “The vertex graph and triangle tree are first placed into the bit stream. The remaining data, i.e. marching pattern, geometry, and properties, is referred to as triangle data and is next placed into the bit stream.”
Gueziec teaches the generation of the full bit stream by combining all the different aspects of the manifold mesh data, such as the connectivity, geometry and properties.)
As per claim 20, Gueziec teaches the claimed:
20. A terminal, comprising a processor and a memory, wherein the memory stores a program or instructions capable of running on the processor, and when the program or the instructions are executed by the processor, the steps of the lossless decoding method according to claim 1 are implemented.
(Gueziec (col 20, line 5-13): “a novel computer program that is embodied on a computer-readable medium for providing a program that is capable of executing a method for compressing a non-manifold mesh. In this case the computer program, which may be read and executed by the system 1000 of FIG. 10, includes a code segment for converting the non-manifold mesh to a manifold mesh, including the storage of information on how to cluster vertices; a code segment for compressing the manifold mesh; and a code segment for compressing the information on how to cluster the vertices.”)
Claims 2 and 3 are rejected under 35 U.S.C. 103 as being unpatentable over Gueziec view of Mammou and in further view of Laroche (US 20180253867 A1).
As per claim 2, Gueziec and Mammou alone do not explicitly teach the remaining claim limitations.
However, Gueziec and Mammou in combination with Larouche teaches the claimed:
2. The method according to claim 1, wherein the merging the duplicate vertices in the target mesh to obtain a first mesh comprises:
in a case that geometry coordinates of each vertex in the target mesh are in one-to-one correspondence to texture coordinates, merging, by the encoder side, the duplicate vertices with the same geometry coordinates in the target mesh into one vertex without changing the texture coordinates of the duplicate vertices to obtain the first mesh.
(Laroche [0035]: “In other embodiments in which deleting entry duplicate or duplicates includes: successively considering each vertex of the textured 3D mesh model, determining a plurality of polygons, preferably all the polygons, that share the vertex currently considered as a polygon vertex using the obtained connectivity data, and determining one or more entry duplicates within only the set of entries associated, in the texture coordinates table, with the vertex currently considered in the determined polygons, determining entry duplicates from amongst the set of entries may include comparing the entries of the set of entries to at least one reference entry.”
Laroche [0075]: “The geometry data are usually provided as a list of vertex positions, that correspond respectively to the vertices listed in the connectivity order”. Laroche indicates that geometry data is connectivity data.
Mammou [0178]: “The Duplicated Vertex Removal block 2001 aims to merge duplicated vertices (i.e., vertices with the same position) … By removing duplicated vertices, appearance of cracks during subsequent processing stages (including the mesh decimation stage) may be avoided.”
Laroche teaches the geometry data and texture data that are associated with each other, which are then merged, by removing or deleting the duplicated vertices, and since only the connectivity and geometry of the vertices are changed, the texture components stay the same. Additionally, Mammou teaches the duplicated Vertex Removal block, that can incorporate Laroche’s method of removing duplicated vertices, and then Mammou states that cracks can be avoided in the mesh decimation state, which indicates a mesh is generated after this removal.)
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to use the merging of vertices as taught by Laroche with the system of Gueziec as modified by Mammou in order to simplify geometry and improve performance while continuing to preserve the texture of the mesh.
As per claim 3, Gueziec and Mammou alone do not explicitly teach the remaining claim limitations.
However, Gueziec and Mammou in combination with Larouche teaches the claimed:
3. The method according to claim 1, wherein the merging the duplicate vertices in the target mesh to obtain a first mesh comprises:
merging, by the encoder side, the duplicate vertices with the same geometry coordinates in the target mesh into one vertex to obtain the first mesh; and
(Mammou [0178]: “The Duplicated Vertex Removal block 2001 aims to merge duplicated vertices (i.e., vertices with the same position) … By removing duplicated vertices, appearance of cracks during subsequent processing stages (including the mesh decimation stage) may be avoided.”
Mammou teaches the duplicated Vertex Removal block and then states that cracks can be avoided in the mesh decimation state, which indicates a mesh is generated after this removal.)
encoding, by the encoder side, a first identifier corresponding to each vertex in the first mesh to generate an identifier bitstream, wherein the first identifier indicates the number of duplicates of the corresponding vertex.
(Laroche [0158]: “All the encoded data are included in a bitstream 714 (with the encoded texture image and any other property data).”
Laroche [0209]: “The texture coordinates indexes table and the texture coordinates table so generated can then be encoded using steps 710 and 712 (using table 711) and 713 described above.”
Laroche [0215]: “once entry duplicates are identified, they are removed from table 51 and the corresponding texture coordinates indexes table 51 is updated.”)
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to use the merging of vertices as taught by Laroche with the system of Gueziec as modified by Mammou in order to simplify geometry and improve performance while continuing to preserve the texture of the mesh.
Claim 5 is rejected under 35 U.S.C. 103 as being unpatentable over Gueziec view of Mammou and in further view of Gupta (US 20230104782 A1).
As per claim 5, Gueziec and Mammou alone do not explicitly teach the remaining claim limitations.
However, Gueziec and Mammou in combination with Gupta teaches the claimed:
5. The method according to claim 4, wherein the splitting the first mesh into a second mesh comprises:
splitting, by the encoder side, a non-manifold structure indicated by a second identifier in the first mesh to obtain the second mesh; wherein
(Gueziec (col 18, line 8-10): “Represent the non-manifold polygonal mesh as a manifold polygonal mesh and a vertex clustering map obtained by cutting through singular edges and vertices.”
Gupta [0028]: “the non-manifold topology detection unit 135 analyzes different portions of the non-manifold voxel mesh in parallel to identify multiple locations of non-manifold geometry.”
Gupta teaches the non-manifold topology detection unit that determines portions of the mesh that contain non-manifold geometry, and using this as the identifier, as stated in the specification that the second identifier indicates non-manifold vertex or edges, it can split the non-manifold mesh into a manifold mesh by cutting through those vertices and edges.)
the second identifier is used to indicate whether a non-manifold structure is generated by merging the duplicate vertices in the first mesh.
(Mammou [0004]: “a Duplicated Vertex Removal module that includes processing hardware that removes duplicated vertices from the input mesh M(i) to produce a mesh with unified vertices”
Mammou [0178]: “The Duplicated Vertex Removal block 2001 aims to merge duplicated vertices (i.e., vertices with the same position)”.
Gupta [0028]: “the non-manifold topology detection unit 135 analyzes different portions of the non-manifold voxel mesh in parallel to identify multiple locations of non-manifold geometry.”
Gupta teaches the non-manifold detection unit, and in combination with the information of the duplicated vertex removal from Mammou, the detection unit can be used to indicate whether the non-manifold geometry was generated by merging duplicate vertices.)
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to use the non-manifold detection unit as taught by Gupta with the system of Gueziec as modified by Mammou in order to be able to determine which specific locations and parts of a mesh are non-manifold.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JOSHUA SUO whose telephone number is (571) 272-8387. The examiner can normally be reached Mon-Fri 8am-5pm.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Daniel Hajnik can be reached on (571) 272-7642. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/JOSHUA SUO/Examiner, Art Unit 2616
/DANIEL F HAJNIK/Supervisory Patent Examiner, Art Unit 2616