Context matters: Add Point is always per-object

Unlike Clone Point, the output context of Add Point is always per-object, no matter what you plug into its input ports. So, for example, you cannot plug Add Point into an Execute on Emit port (which is a per-point port). Making Add Point per-object makes sense to me, because typically you want to add N points to a point cloud, not add N points for every point that is already in the target point cloud (that already sounds confusing).

One consequence of Add Point being per object is that you cannot use an If node to copy over some subset of points to the target point cloud. For example, if your If node is already plugged into something that makes it per-point then you’ll get a context error:

If your If node wasn’t plugged in yet, you’d get some red nodes like this:

The solution is to use a Filter on the other side [upstream] of the Add Point:

hat tips to Gray and Julian

Instance master models and point clouds

Point clouds are just another type of 3D object, so you should be able to safely put them in an instance master, and have them show up in the instances.

This ICE tree adds a point for each person in the instance master. Here I added some spheres, but I could just of easily instanced some geometry and put a halo over everyone’s head.

If the instance master model is not at (0 0 0), then when I parent the point cloud to the model, the point cloud gets a local pos offset. So, I can either manually reset the local pt cloud pos to 0 0 0, or handle it in the ICE tree (by undoing the local pos offset by multiplying by the inverse transfo matrix).