How do Alembic point caches (OPoints/IPoints) differ from PC2/MDD in identity, topology change and time sampling, and what does a mismatch look like?
Alembic point samples carry positions with optional uint64 ids, velocities and widths; the API comments describe ids on the first sample and re-stated ids/topology to mark a topology change, and time is per-property TimeSampling (Uniform, Cyclic or Acyclic). The writer enforces positions on sample 0 but substitutes an empty ids array, so readers cannot assume ids exist. PC2/MDD carry neither ids nor topology.
Alembic point samples carry positions with optional uint64 ids, velocities and widths; the API comments describe ids on the first sample and re-stated ids/topology to mark a topology change, and time is per-property TimeSampling (Uniform, Cyclic or Acyclic). The writer enforces positions on sample 0 but substitutes an empty ids array, so readers cannot assume ids exist. PC2/MDD carry neither ids nor topology.
Curator qualifications: Code and manual read 2026-10-22; no cache file written or loaded; no Blender run. Importer behaviour (Blender, Unreal, Houdini) for Alembic ids not covered (producer limitation kept).
Limitations: Code and manual read 2026-10-22; no cache file written or loaded; no Blender run.
Evidence status: statements located in the cited sources by a correlated desk review (Claude); not executed; not independently reviewed.
Structured fields
{
"citations": [
{
"url": "https://docs.blender.org/manual/en/latest/modeling/modifiers/modify/mesh_cache.html",
"note": "alembic OPoints.h at 6f59e4d0 (raw), Sample constructors; alembic OPoints.cpp at 6f59e4d0 (raw), OPointsSchema::set; alembic TimeSampling.h at 6f59e4d0 (raw); alembic OPolyMesh.h at 6f59e4d0 (raw), Sample comments"
},
{
"url": "https://github.com/blender/blender/blob/d13f752e3b9c4f8c261cda552b1021f8bcc0382c/source/blender/modifiers/intern/MOD_meshcache_pc2.cc",
"note": "alembic OPoints.h at 6f59e4d0 (raw), Sample constructors; alembic OPoints.cpp at 6f59e4d0 (raw), OPointsSchema::set; alembic TimeSampling.h at 6f59e4d0 (raw); alembic OPolyMesh.h at 6f59e4d0 (raw), Sample comments"
},
{
"url": "https://github.com/alembic/alembic/blob/6f59e4d0c9012c67e242da510b31d96504db8e01/lib/Alembic/AbcGeom/OPoints.h",
"note": "alembic OPoints.h at 6f59e4d0 (raw), Sample constructors; alembic OPoints.cpp at 6f59e4d0 (raw), OPointsSchema::set; alembic TimeSampling.h at 6f59e4d0 (raw); alembic OPolyMesh.h at 6f59e4d0 (raw), Sample comments"
},
{
"url": "https://github.com/alembic/alembic/blob/6f59e4d0c9012c67e242da510b31d96504db8e01/lib/Alembic/AbcGeom/OPoints.cpp",
"note": "alembic OPoints.h at 6f59e4d0 (raw), Sample constructors; alembic OPoints.cpp at 6f59e4d0 (raw), OPointsSchema::set; alembic TimeSampling.h at 6f59e4d0 (raw); alembic OPolyMesh.h at 6f59e4d0 (raw), Sample comments"
},
{
"url": "https://github.com/alembic/alembic/blob/6f59e4d0c9012c67e242da510b31d96504db8e01/lib/Alembic/AbcCoreAbstract/TimeSampling.h",
"note": "alembic OPoints.h at 6f59e4d0 (raw), Sample constructors; alembic OPoints.cpp at 6f59e4d0 (raw), OPointsSchema::set; alembic TimeSampling.h at 6f59e4d0 (raw); alembic OPolyMesh.h at 6f59e4d0 (raw), Sample comments"
},
{
"url": "https://github.com/alembic/alembic/blob/6f59e4d0c9012c67e242da510b31d96504db8e01/lib/Alembic/AbcGeom/OPolyMesh.h",
"note": "alembic OPoints.h at 6f59e4d0 (raw), Sample constructors; alembic OPoints.cpp at 6f59e4d0 (raw), OPointsSchema::set; alembic TimeSampling.h at 6f59e4d0 (raw); alembic OPolyMesh.h at 6f59e4d0 (raw), Sample comments"
}
]
}Evidence claims
- [sourced_fact] Alembic point samples carry positions with optional uint64 ids, velocities and widths; the API comments describe ids on the first sample and re-stated ids/topology to mark a topology change, and time is per-property TimeSampling (Uniform, Cyclic or Acyclic). The writer enforces positions on sample 0 but substitutes an empty ids array, so readers cannot assume ids exist. PC2/MDD carry neither ids nor topology. · locator: alembic OPoints.h at 6f59e4d0 (raw), Sample constructors; alembic OPoints.cpp at 6f59e4d0 (raw), OPointsSchema::set; alembic TimeSampling.h at 6f59e4d0 (raw); alembic OPolyMesh.h at 6f59e4d0 (raw), Sample comments source
Rights
| component | license | hosting | redistribution | modification | training | Evidence and notes |
|---|---|---|---|---|---|---|
| documentation | unknown | permitted | permitted | unknown | unknown | Applies to this original summary only, not to the cited sources. |
Linked records
- cites → https://docs.blender.org/manual/en/latest/modeling/modifiers/modify/mesh_cache.html
- cites → https://github.com/alembic/alembic/blob/6f59e4d0c9012c67e242da510b31d96504db8e01/lib/Alembic/AbcCoreAbstract/TimeSampling.h
- cites → https://github.com/alembic/alembic/blob/6f59e4d0c9012c67e242da510b31d96504db8e01/lib/Alembic/AbcGeom/OPoints.cpp
- cites → https://github.com/alembic/alembic/blob/6f59e4d0c9012c67e242da510b31d96504db8e01/lib/Alembic/AbcGeom/OPoints.h
- cites → https://github.com/alembic/alembic/blob/6f59e4d0c9012c67e242da510b31d96504db8e01/lib/Alembic/AbcGeom/OPolyMesh.h
- cites → https://github.com/blender/blender/blob/d13f752e3b9c4f8c261cda552b1021f8bcc0382c/source/blender/modifiers/intern/MOD_meshcache_pc2.cc