> [!abstract] Summary
> **USD writing when the point count varies frame-to-frame** — typical FX context (POP, FLIP, particles, sims that birth/kill points). Embeds the full solution write-up. Use **PointInstancer** with `invisibleIds` and `protoIndices` for the cleanest USD-native solution.
---
# Context
This is the **practical / FX-side** of the same problem covered in [[Advanced USD Writing different point number|Advanced USD Writing — different point counts]]. Use when:
- A **POP solver** births / kills particles over the sim's lifetime.
- A **FLIP** sim's surface mesh changes topology per frame.
- A **scatter / instance** result varies in count over time.
---
# Embedded Reference
![[Advanced USD Writing different point number]]
---
# Quick Cheat-Sheet
| Source | USD-friendly approach |
|---|---|
| **POP particles** | `UsdGeomPointInstancer` with per-frame `invisibleIds` and `protoIndices`. |
| **FLIP surface** | Per-frame USD layers stitched, or fixed-topology cache + velocity. |
| **Scatter (time-varying)** | Same as POP — go through PointInstancer. |
| **Cloth / static sim** | Fixed-topology + per-frame point positions — works with the default USD export. |
---
# 🔗 Related
- [[Advanced USD Writing different point number|Advanced USD Writing — different point counts]] — full explanation.
- [[../SOLARIS MOC|SOLARIS MOC]].
- [[../../../../ARTFX OSMIUM/PIPELINE/Notes/DETAILS/PIPELINE CFX and ANIM|OSMIUM PIPELINE CFX and ANIM]] — sim/CFX in pipeline context.