> [!abstract] Summary
> **Writing USD with a changing point count** — the standard USD point-attribute system assumes a fixed point count over time. For sims (POP / FLIP / Particles / FX) that **birth and die** points, the standard export breaks. Workarounds: use **point instancers**, write **time-varying topology**, or use **velocity-based motion blur** on a fixed-topology cache.
---
# The Problem
USD's standard point-position attribute is **time-sampled with a fixed array size**. If your simulation adds or removes points frame by frame (sparks, debris, FLIP particles, dying foliage), a naive USD export either:
- Errors out / clamps to the first frame's count.
- Produces a broken cache where points teleport, disappear, or duplicate.
# Standard Solutions
### 1. UsdGeomPointInstancer
Instead of a Points / Mesh prim, write a **PointInstancer** — this schema explicitly supports per-frame variation of `invisibleIds` and `protoIndices`, letting you birth and kill instances over time.
### 2. Per-Frame USD Layers
Write **one USD per frame** as a sequence, then load them via a stitching node. Heavier on disk, but flexible.
### 3. Fixed-Topology Cache + Velocity
If the sim has a stable "max" point count, pre-allocate that count and write velocities + lifespans, then handle culling at render time via shaders / visibility.
### 4. Custom Schema
For advanced cases, author a custom USD schema with per-time topology — this is what production pipelines like Rodeo / Animal Logic do.
---
# Resources
> [!example] ARTFX example scenes & references
> [Open in Google Drive](https://drive.google.com/drive/folders/1gUvg2wEwCrA91FsGeS5Q1PF95F2EWKJM?usp=drive_link)
---
# 🔗 Related
- [[Write USD with moving point number - Pop - FX|Write USD with moving point number — POP / FX]] — companion note.
- [[../SOLARIS MOC|SOLARIS MOC]].
- [[../../../../PROTOCOL/USD/Notes/USD KNOWLEDGE/6.30 USD Theory|USD Theory]] — point primvars and attribute time samples.
- [[../../../../PROTOCOL/USD/Notes/USD KNOWLEDGE/USD terms and definitions|USD Terms & Definitions]] — Point Instancer schema.