ImageEngine/gaffer — pull request #946 by johnhaddon (2014-07-31 15:20:18+00:00)
Title: Coordinate systems

This adds a CoordinateSystem node to GafferScene, and adds support for it in the viewer and the ExecutableRender and InteractiveRender nodes.

I've implemented things in such a way that it should also be possible to subclass `IECore::CoordinateSystem` and use those for coordinate systems, provided they're also placed in the global __coordinateSystems set. This may have applications in Caribou...

So far I've only been able to get IPR working if I change the call in `IECoreRI::Renderer::coordinateSystem()` to be `RiCoordinateSystem` rather than `RiScopedCoordinateSystem`, but there may be some way of invoking things that will work without that change - I just haven't found it yet. We originally used global coordinate systems in Cortex, but switched to using scoped ones because when using multiple procedurals in a single scene, we would get name clashes because each procedural thought it was in its own little world, and couldn't do anything to prevent clashes with other procedurals. Now we have a single means of specifying the whole scene and coordinate systems are named via their full path, this isn't really a problem, so we may want to revisit that decision.

In the meantime, it'd be great to get this merged so that David can see if it's useful for a particular feature in Caribou...