A per object attribute lets you set the attribute value for all particles of the object collectively with a single value. For instance, the per object opacity attribute lets you set a single opacity value for all the particles in the object.
A per particle attribute lets you set the value of the attribute individually for each particle of the object. For example, the per particle opacityPP attribute lets you set a unique opacity value for each particle. Though there is only one opacityPP attribute in a particle object, the attribute holds the value for each particle’s opacity value. The attribute holds the values in an array. In simple terms, an array is a list.
You can keyframe per object attributes, which means they work well for creating complex effects. Many other types of attributes cannot be keyframed.
After you add a per object attribute to a particle shape node, the attribute appears in the particleShape tab of the Attribute Editor, for example, in the Render Attributes section. You typically set per object attribute values in the Attribute Editor or Channel Box. See Add dynamic attributes to nParticles for information about adding attributes to a particle object to enhance your control of the behavior and appearance.
After you add a per particle attribute to an nParticleShape node, the attribute name appears in the Per Particle (Array) Attributes section of the nParticleShape tab of the Attribute Editor. For details on setting values, see Work with per-particle attributes.
Note that a static, dynamic or custom attribute can be a per particle or per object attribute, not both. Also be aware that dynamically added per particle attributes often have a name that ends in PP. PP stands for per particle.