Multiple spatial transforms applied to the same volume appear as nested MRML entries, which could be collapsed. Important to apply before a volume resampling is executed to avoid accumulation of interpolation effects. Affine is simple matrix multiplication, Bspline would have to send the gridpoints through all Xforms and reparameterize.
Affine is just matrix multiplication. Non-rigid is trickier, BSpline would have to send the grid-points thru and reparameterize. But in any event to limit interpolation effects something of this nature would be key. It also moves toward what in digital photography circles is known as "non-destructive image processing", a powerful concept esp. for slicer as a single-case experimental platform, and at least in principle well positioned with the MRML tree data structure.
Jim Miller: Luca had worked on methods to flatten the transformations, so from any node you can get the transformation to the world. Not sure how he handled bsplines in this case. Your example can be handled currently with the BSpline representation (which allows a bulk transform, usually affine, to be concatenated with the bspline) modulo the fact that the bsplines are resampling transforms not modeling transforms (so they are the inverse of what one may want). -- Jim