US-20260127774-A1 - Non-zero Vertex Normals for 3D Mesh
Abstract
A decoder generates a subdivided mesh from a base mesh for a 3D mesh and generates vertex normals of vertices of the subdivided mesh. A vertex normal of a vertex of the vertices is generated based on: obtaining a first and second vertex, of the vertices, associated with generating the vertex, and determining, based on a first vertex normal of the first vertex and a second vertex normal of the second vertex being antiparallel vectors, a vertex normal of the vertex that is perpendicular to the first vertex normal and the second vertex normal. The decoder decodes, from a bitstream, displacement information associated with displacements of the vertices. The displacements are reconstructed by the decoder for the vertices based on the displacement information and the vertex normals.
Inventors
- Chao Cao
Assignees
- OFINNO, LLC
Dates
- Publication Date
- 20260507
- Application Date
- 20251030
Claims (20)
- 1 . A method comprising: generating a subdivided mesh from a base mesh for a 3D mesh; generating vertex normals of vertices of the subdivided mesh, wherein a vertex normal of a vertex of the vertices is generated based on: obtaining a first and second vertex, of the vertices, associated with generating the vertex; and determining, based on a first vertex normal of the first vertex and a second vertex normal of the second vertex being antiparallel vectors, a vertex normal of the vertex that is perpendicular to the first vertex normal and the second vertex normal; decoding, from a bitstream, displacement information associated with displacements of the vertices; and reconstructing the displacements for the vertices based on the displacement information and the vertex normals.
- 2 . The method of claim 1 , wherein the first and second vertex normals are unit normal vectors.
- 3 . The method of claim 1 , wherein the first and second vertex normals are determined as being antiparallel vectors based on: determining a combination of the first and second vertex normals to be a null vector; or determining a dot product of the first and second vertex normals to be equal to negative one.
- 4 . The method of claim 1 , wherein the determining the vertex normal of the vertex comprises: determining a reference vector as one of the standard unit vectors in 3D space; and determining the vertex normal based on a cross product of the first vertex normal and the reference vector.
- 5 . The method of claim 4 , wherein the reference vector is determined to be one of the standard unit vectors that is not collinear with the first vertex normal and the second vertex normal.
- 6 . The method of claim 1 , wherein the determining the vertex normal of the vertex comprises: determining a reference vector based on the first vertex and the second vertex; and determining the vertex normal based on a cross product of the first vertex normal and the reference vector.
- 7 . The method of claim 1 , wherein the displacement information comprises scalar values, and wherein the displacements of the respective vertices are reconstructed based on products between the scalar values and respective vertex normals of the vertices.
- 8 . A decoder comprising: one or more processors; and memory storing instructions that, when executed by the one or more processors, cause the decoder to: generate a subdivided mesh from a base mesh for a 3D mesh; generate vertex normals of vertices of the subdivided mesh, wherein a vertex normal of a vertex of the vertices is generated based on: obtaining a first and second vertex, of the vertices, associated with generating the vertex; and determining, based on a first vertex normal of the first vertex and a second vertex normal of the second vertex being antiparallel vectors, a vertex normal of the vertex that is perpendicular to the first vertex normal and the second vertex normal; decode, from a bitstream, displacement information associated with displacements of the vertices; and reconstruct the displacements for the vertices based on the displacement information and the vertex normals.
- 9 . The decoder of claim 8 , wherein the first and second vertex normals are unit normal vectors.
- 10 . The decoder of claim 8 , wherein the first and second vertex normals are determined as being antiparallel vectors based on: determining a combination of the first and second vertex normals to be a null vector; or determining a dot product of the first and second vertex normals to be equal to negative one.
- 11 . The decoder of claim 8 , wherein to determine the vertex normal of the vertex, the instructions further cause to decoder to: determine a reference vector as one of the standard unit vectors in 3D space; and determine the vertex normal based on a cross product of the first vertex normal and the reference vector.
- 12 . The decoder of claim 11 , wherein the reference vector is determined to be one of the standard unit vectors that is not collinear with the first vertex normal and the second vertex normal.
- 13 . The decoder of claim 8 , wherein to determine the vertex normal of the vertex, the instructions further cause to decoder to: determine a reference vector based on the first vertex and the second vertex; and determine the vertex normal based on a cross product of the first vertex normal and the reference vector.
- 14 . The decoder of claim 8 , wherein the displacement information comprises scalar values, and wherein the displacements of the respective vertices are reconstructed based on products between the scalar values and respective vertex normals of the vertices.
- 15 . A non-transitory computer-readable medium comprising instructions that, when executed by one or more processors of a decoder, cause the decoder to: generate a subdivided mesh from a base mesh for a 3D mesh; generate vertex normals of vertices of the subdivided mesh, wherein a vertex normal of a vertex of the vertices is generated based on: obtaining a first and second vertex, of the vertices, associated with generating the vertex; and determining, based on a first vertex normal of the first vertex and a second vertex normal of the second vertex being antiparallel vectors, a vertex normal of the vertex that is perpendicular to the first vertex normal and the second vertex normal; decode, from a bitstream, displacement information associated with displacements of the vertices; and reconstruct the displacements for the vertices based on the displacement information and the vertex normals.
- 16 . The non-transitory computer-readable medium of claim 15 , wherein the first and second vertex normals are unit normal vectors.
- 17 . The non-transitory computer-readable medium of claim 15 , wherein the first and second vertex normals are determined as being antiparallel vectors based on: determining a combination of the first and second vertex normals to be a null vector; or determining a dot product of the first and second vertex normals to be equal to negative one.
- 18 . The non-transitory computer-readable medium of claim 15 , wherein to determine the vertex normal of the vertex, the instructions further cause to decoder to: determine a reference vector as one of the standard unit vectors in 3D space that is not collinear with the first and second vertex normals; and determine the vertex normal based on a cross product of the first vertex normal and the reference vector.
- 19 . The non-transitory computer-readable medium of claim 15 , wherein to determine the vertex normal of the vertex, the instructions further cause to decoder to: determine a reference vector based on the first vertex and the second vertex; and determine the vertex normal based on a cross product of the first vertex normal and the reference vector.
- 20 . The non-transitory computer-readable medium of claim 15 , wherein the displacement information comprises scalar values, and wherein the displacements of the respective vertices are reconstructed based on products between the scalar values and respective vertex normals of the vertices.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of U.S. Provisional Application No. 63/715,468, filed Nov. 1, 2024, which is hereby incorporated by reference in its entirety. BRIEF DESCRIPTION OF THE DRAWINGS Examples of several of the various embodiments of the present disclosure are described herein with reference to the drawings. FIG. 1 illustrates an exemplary mesh coding/decoding system in which embodiments of the present disclosure may be implemented. FIG. 2A illustrates a block diagram of an example encoder for intra encoding a 3D mesh, according to some embodiments. FIG. 2B illustrates a block diagram of an example encoder for inter encoding a 3D mesh, according to some embodiments. FIG. 3 illustrates a diagram showing an example decoder. FIG. 4 is a diagram showing an example process for generating displacements of an input mesh (e.g., an input 3D mesh frame) to be encoded, according to some embodiments. FIG. 5A illustrates an example process for approximating and encoding a geometry of a 3D mesh, according to some embodiments. FIG. 5B illustrates an example of signaling a displacement of a vertex of a 3D mesh using a vertex normal, according to some embodiments. FIG. 6 illustrates an example of vertices of a subdivided mesh (e.g., a subdivided base mesh) corresponding to multiple levels of detail (LODs), according to some embodiments. FIG. 7A illustrates an example of an image packed with displacements (e.g., displacement fields or vectors) using a packing method, according to some embodiments. FIG. 7B illustrates an example of the displacement image with labeled LODs, according to some embodiments. FIG. 8 illustrates an example of a lifting scheme for representing displacement information of a 3D mesh as wavelet coefficients, according to some embodiments. FIG. 9A illustrates an example of midpoint subdivision, according to some embodiments. FIG. 9B illustrates an example of loop subdivision, according to some embodiments. FIG. 10 shows an example diagram of normal interpolation to derive a vertex normal of a vertex from neighboring vertices of the vertex, according to some embodiments. FIG. 11 shows an example diagram of normal interpolation with adaptive interpolation weights to derive a vertex normal of a vertex from neighboring vertices of the vertex, according to some embodiments. FIG. 12 is a diagram showing an example of normal interpolation in which a vertex normal for vertex is determined to be zero, according to some embodiments. FIG. 13 is a diagram showing an example of normal interpolation in which a vertex normal for vertex is determined to be non-zero, according to some embodiments. FIG. 14 illustrates a flowchart of a method for deriving non-zero vertex normals of vertices of a subdivided mesh, according to some embodiments. FIG. 15 illustrates a flowchart of a method for deriving non-zero vertex normals of vertices of a subdivided mesh, according to some embodiments. FIG. 16 illustrates a flowchart of a method for encoding displacements of vertices of a 3D mesh, according to some embodiments. FIG. 17 illustrates a flowchart of a method for decoding displacements of vertices of a 3D mesh, according to some embodiments. FIG. 18 illustrates a block diagram of an exemplary computer system in which embodiments of the present disclosure may be implemented. DETAILED DESCRIPTION In the following description, numerous specific details are set forth in order to provide a thorough understanding of the disclosure. However, it will be apparent to those skilled in the art that the disclosure, including structures, systems, and methods, may be practiced without these specific details. The description and representation herein are the common means used by those experienced or skilled in the art to most effectively convey the substance of their work to others skilled in the art. In other instances, well-known methods, procedures, components, and circuitry have not been described in detail to avoid unnecessarily obscuring aspects of the disclosure. References in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described. Also, it is noted that individual embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a