`DRW_drawdata_get` reuses the same `DrawData` for all duplis, so they all end up using the same `ObjectHandle` and `ObjectKey`, which breaks motion vectors. * Don't use `DRW_drawdata_get`. * Simplify `ObjectKey`. This also solves the issue of objects created "on the fly" always having the `ID_RECALC_ALL` flag. Pull Request: https://projects.blender.org/blender/blender/pulls/112544