Modeling Workstreams With Layer Stacks#
Products developed by organizations rarely consist of a single file. Instead, work is organized into logical, maintainable units. Similarly, assets should model workstreams into layers.
User Workstreams#
Simple assets can be represented by a single layer, and it may make sense to start there for the sake of simplicity.
However, when different tools, users, and departments are responsible for contributing different prims to the final composed asset scene graph (such as geometry and materials), it can be beneficial to split the workstreams into multiple layers.
Splitting workflows into parallel streams can offer performance benefits. For example, one content creator can work on the geometry layer while another iterates on the material layer, reducing storage needs and publishing time.
Even if a single user is working on both geometry and materials, it can be helpful to separate the contributions from each application into different layers if they are using different tools for each workstream. This allows each workstream to be tracked as a separate product. Ideally, each workstream should only author its unique contributions sparsely, rather than needlessly overwriting work done by another workstream.
Computational Workstreams#
Assets can also be divided into computational workstreams. For instance, a synthetic data simulation might be partitioned across multiple processes or machines. A layer stack can then be used to stitch the results back together.
Computational workstreams can be dynamic and may not remain consistent from one evaluation to the next. Consider a layer stack where workloads have been dynamically partitioned across multiple processes.
Some workstreams are hybrids, combining both computational and user-driven elements. For example, a layer might contribute synthesized motion on top of a hand-authored initial state created by a user.
It’s important to keep layer stacks simple and manageable. They are not a replacement for asset versioning systems. Avoid modeling workstreams in layer stacks that might grow procedurally over time, as there is a cost associated with resolving and opening each layer.