Skip to content

Add polygon face support to MeshT#1066

Open
cdtwigg wants to merge 1 commit intomainfrom
export-D94577296
Open

Add polygon face support to MeshT#1066
cdtwigg wants to merge 1 commit intomainfrom
export-D94577296

Conversation

@cdtwigg
Copy link
Contributor

@cdtwigg cdtwigg commented Feb 27, 2026

Summary:
MeshT currently only stores triangle faces (std::vectorEigen::Vector3i faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:

  • polyFaces: packed polygon vertex indices (all polygons concatenated)
  • polyFaceSizes: number of vertices per polygon face
  • polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Differential Revision: D94577296

@meta-cla meta-cla bot added the CLA Signed This label is managed by the Meta Open Source bot. label Feb 27, 2026
@meta-codesync
Copy link
Contributor

meta-codesync bot commented Feb 27, 2026

@cdtwigg has exported this pull request. If you are a Meta employee, you can view the originating Diff in D94577296.

@meta-codesync meta-codesync bot force-pushed the export-D94577296 branch from b8049ba to 19c320c Compare March 3, 2026 23:43
meta-codesync bot pushed a commit that referenced this pull request Mar 3, 2026
Summary:

MeshT currently only stores triangle faces (std::vector<Eigen::Vector3i> faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:
- polyFaces: packed polygon vertex indices (all polygons concatenated)
- polyFaceSizes: number of vertices per polygon face
- polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Reviewed By: nickyhe-gemini

Differential Revision: D94577296
meta-codesync bot pushed a commit that referenced this pull request Mar 3, 2026
Summary:

MeshT currently only stores triangle faces (std::vector<Eigen::Vector3i> faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:
- polyFaces: packed polygon vertex indices (all polygons concatenated)
- polyFaceSizes: number of vertices per polygon face
- polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Reviewed By: nickyhe-gemini

Differential Revision: D94577296
@meta-codesync meta-codesync bot force-pushed the export-D94577296 branch 2 times, most recently from f09e9e4 to bbd0ba7 Compare March 4, 2026 06:11
meta-codesync bot pushed a commit that referenced this pull request Mar 4, 2026
Summary:

MeshT currently only stores triangle faces (std::vector<Eigen::Vector3i> faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:
- polyFaces: packed polygon vertex indices (all polygons concatenated)
- polyFaceSizes: number of vertices per polygon face
- polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Reviewed By: nickyhe-gemini

Differential Revision: D94577296
@meta-codesync meta-codesync bot force-pushed the export-D94577296 branch from bbd0ba7 to 712fdd2 Compare March 4, 2026 19:18
meta-codesync bot pushed a commit that referenced this pull request Mar 4, 2026
Summary:

MeshT currently only stores triangle faces (std::vector<Eigen::Vector3i> faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:
- polyFaces: packed polygon vertex indices (all polygons concatenated)
- polyFaceSizes: number of vertices per polygon face
- polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Reviewed By: nickyhe-gemini

Differential Revision: D94577296
cdtwigg added a commit that referenced this pull request Mar 4, 2026
Summary:
Pull Request resolved: #1066

MeshT currently only stores triangle faces (std::vector<Eigen::Vector3i> faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:
- polyFaces: packed polygon vertex indices (all polygons concatenated)
- polyFaceSizes: number of vertices per polygon face
- polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Reviewed By: nickyhe-gemini

Differential Revision: D94577296
@cdtwigg cdtwigg force-pushed the export-D94577296 branch from 712fdd2 to b348846 Compare March 4, 2026 19:21
meta-codesync bot pushed a commit that referenced this pull request Mar 4, 2026
Summary:

MeshT currently only stores triangle faces (std::vector<Eigen::Vector3i> faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:
- polyFaces: packed polygon vertex indices (all polygons concatenated)
- polyFaceSizes: number of vertices per polygon face
- polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Reviewed By: nickyhe-gemini

Differential Revision: D94577296
@meta-codesync meta-codesync bot force-pushed the export-D94577296 branch from b348846 to 746fa4c Compare March 4, 2026 19:24
cdtwigg added a commit that referenced this pull request Mar 4, 2026
Summary:
Pull Request resolved: #1066

MeshT currently only stores triangle faces (std::vector<Eigen::Vector3i> faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:
- polyFaces: packed polygon vertex indices (all polygons concatenated)
- polyFaceSizes: number of vertices per polygon face
- polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Reviewed By: nickyhe-gemini

Differential Revision: D94577296
@cdtwigg cdtwigg force-pushed the export-D94577296 branch from 746fa4c to 0375fd7 Compare March 4, 2026 19:30
meta-codesync bot pushed a commit that referenced this pull request Mar 4, 2026
Summary:

MeshT currently only stores triangle faces (std::vector<Eigen::Vector3i> faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:
- polyFaces: packed polygon vertex indices (all polygons concatenated)
- polyFaceSizes: number of vertices per polygon face
- polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Reviewed By: nickyhe-gemini

Differential Revision: D94577296
@meta-codesync meta-codesync bot force-pushed the export-D94577296 branch from 0375fd7 to 1ece3d0 Compare March 4, 2026 19:37
meta-codesync bot pushed a commit that referenced this pull request Mar 4, 2026
Summary:

MeshT currently only stores triangle faces (std::vector<Eigen::Vector3i> faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:
- polyFaces: packed polygon vertex indices (all polygons concatenated)
- polyFaceSizes: number of vertices per polygon face
- polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Reviewed By: nickyhe-gemini

Differential Revision: D94577296
@meta-codesync meta-codesync bot force-pushed the export-D94577296 branch from 1ece3d0 to 1e3c053 Compare March 4, 2026 19:37
cdtwigg added a commit that referenced this pull request Mar 4, 2026
Summary:
Pull Request resolved: #1066

MeshT currently only stores triangle faces (std::vector<Eigen::Vector3i> faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:
- polyFaces: packed polygon vertex indices (all polygons concatenated)
- polyFaceSizes: number of vertices per polygon face
- polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Reviewed By: nickyhe-gemini

Differential Revision: D94577296
@cdtwigg cdtwigg force-pushed the export-D94577296 branch from 1e3c053 to e60aec9 Compare March 4, 2026 19:40
meta-codesync bot pushed a commit that referenced this pull request Mar 4, 2026
Summary:

MeshT currently only stores triangle faces (std::vector<Eigen::Vector3i> faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:
- polyFaces: packed polygon vertex indices (all polygons concatenated)
- polyFaceSizes: number of vertices per polygon face
- polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Reviewed By: nickyhe-gemini

Differential Revision: D94577296
@meta-codesync meta-codesync bot force-pushed the export-D94577296 branch from e60aec9 to 5d6079f Compare March 4, 2026 19:57
meta-codesync bot pushed a commit that referenced this pull request Mar 4, 2026
Summary:

MeshT currently only stores triangle faces (std::vector<Eigen::Vector3i> faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:
- polyFaces: packed polygon vertex indices (all polygons concatenated)
- polyFaceSizes: number of vertices per polygon face
- polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Reviewed By: nickyhe-gemini

Differential Revision: D94577296
Summary:

MeshT currently only stores triangle faces (std::vector<Eigen::Vector3i> faces).
Characters can have arbitrary polygon topology (quads, n-gons) which is lost
during FBX loading when polygons are fan-triangulated. This adds a redundant
polygon representation alongside the existing triangle faces so that polygon
topology can be preserved. The existing faces field stays unchanged and all
downstream code continues to work.

Three new fields are added to MeshT:
- polyFaces: packed polygon vertex indices (all polygons concatenated)
- polyFaceSizes: number of vertices per polygon face
- polyTexcoordFaces: packed polygon texcoord indices (shares polyFaceSizes)

Also updates cast()/reset(), adds tests, updates compareMeshes(), adds Python
bindings with validation, and regenerates .pyi stubs.

Reviewed By: nickyhe-gemini

Differential Revision: D94577296
@meta-codesync meta-codesync bot force-pushed the export-D94577296 branch from 5d6079f to 7bf0ca4 Compare March 4, 2026 22:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Meta Open Source bot. fb-exported meta-exported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant