The flexible mocap pipeline entails two main steps: "Extraction" and "Goals". "Extraction" takes as an input a set of optical markers and extracts from these (optical markers) a set of "Goals". These goals which can be interpreted as controlling the character's rig are then used to solve to the final skeleton and get the actual character animated. These two steps give open access to input, intermediate and output data, which allows a great deal of flexibility. There are multiple ways user can inject custom logic in the pipeline.
Flexible mocap pipeline
The simplest way to influence the motion capture pipeline is to modify the input markers. This allows "low-level" corrections targeted at the motion capture data. For instance, markers can be constrained in different ways to enforce a given configuration or to correct artifacts such as marker sliding. More complex operations can also be done on markers, such as combining several markers into new ones. This can allow average or filtering schemes to be applied in real-time instead of offline by motion capture hardware manufacturer's clean-up software.
Custom logic can be injected on extracted goals. These goals can be thought of as temporary (IK) goals that the next solving step uses as an input. Those extracted goals are a nice higher-level, more intelligible place to apply correction then lower-level input markers or output bones. They also take into account the whole character structure to perform corrections which is more easily done on high-level goals than on low-level markers. Relation constraints can also be used to add custom logic to the extraction. For instance, goals can be constrained not to allow knee snapping. In addition, the Story tool can be used to add animation on top of extracted goals which can be very useful, for instance, to fix mesh penetration issues. It's also possible to use custom constraints on goals to achieve pretty much any type of correction, such as custom control over the way rotation is spread on each part of the spine for example. The constraints can either take extracted goals as an input and modify them or simply override the value that came out of extraction step.
Finally, solving from goals to bones can also be customized. While this solving is usually performed by HIK solver or the MotionBuilder solver, you can use a custom solver. Parts of solve output, for instance only an arm in a complex rig situation, can also be modified or overridden as a post-processing step.
Three extraction types are available to use on a given set of markers to get the rotation and the translation of a given goal: Position and rotate joint in marker(s), Rotate joint in marker(s), and Aim joint at marker(s).
Before the solving step, goals must be converted to an IK/FK state so they can be used by the solver to output a skeleton state.
Except where otherwise noted, this work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License