The plugin is intended for easier control of the char body parts position and rotation. Moreover it gives the possibility to calculate the part positions through the anchor point and the vector angles. For example, you can adjust the elbow angle value to rotate the hand controller over current elbow position. Since version 4 enables morphs adjusting.
Features:
Usage. The plugin should be added to the person atom you want to pose. The UI consists of5 6 tabs: 4 limbs and torso and the morph tab if morph system is enabled (see the update post to disable it). All tabs have sliders to adjust some parameters. The values types are marked with different colors (slider captions). The black colored values are the position values equivalent to the in-game controller values and referred as direct position values. They are local (relative to the person atom) x, y, and z values in standard controller UI. The dark blue values are the direct angle values for hand/foot rotation. Both types are driven values in terms of parametric control i.e. they are calculated through the other angle values. The green and light blue colored values are the parametric angles values which are used to manipulate driven point position in spherical coordinate system. Once you alter such value the corresponding driven values will be recalculated. The green ones are for the limbs and the upper body and used to control driven point position. This driving force anchor points referred as root points: ThighControl (legs), ArmControl (arms) and hipControl (upper body). The blue ones are used to produce the torso controllers rotation. For example, head rotation is sum of torso rotation (green) and head rotation (light blue) values. The torso rotation affects the arms base rotation too.
Version 3 update. The hipControl is a root point for for both arms and legs root points. The chestControl has additional driving force for the arms root points but the real anchor point is positioned higher.
Green coloring for the buttons down there is also a hint for working with parametric values.
Version 4 update. Now you can edit morph values directly from the plugin. The plugin does not bring new morphs, it just displays the existing morphs according to the editable list (see update hints with the video illustration). The design is that the user selects the desired morphs and organize them into specific morph banks. A use case example is an adjusting the face morphs (expressions) as long with the fingers state (gestures) because they complement the pose.I plan to add a feature for saving/loading morph values and for selection of a morph list file in the future.
Version 5 update. Now you can load a list of morphs organized in few banks from a file (.json). A separate plugin module MorphLister is used to create such a file, please see the update post. In addition, the ability to save/load morph values to/from a file and the ability to copy morph values from one bank to another have been added. In the latter case, it is assumed that both banks have a "mirrored" list of morphs, i.e. their volume is the same and morphs for the right/left side of the body are in the same position of the bank list (an example of creating exactly such banks is given in the video of the update post). This way you can quickly copy, for example, the left hand fingers state to the right hand. Three types of saving and loading morph values to/from a file are implemented:
1) .val-file - morph values of all banks with a binding to the morph name and the bank name (only morph values that differ from the default values are sent to the file);
2) the same, but only for the currently selected bank tab (when loading a file, if a bank name identical to the current one is not created in the file, the values of the current bank will be set to the default!);
3) .ord - the values of the current bank (ordered) are saved/loaded without a binding to the morph name, but only to the ordinal number in the list.
Use the list slider to browse these modes. This list also contains the names of banks - this is done for the previously described ability to copy values. For this select a bank and click open/save values to copy the values from/to the selected bank and not load/save from/to a file. Such a confusing interface is to save space UI space, sorry for that.
Buttons Functions.
Undo/redo – altering value have undo/redo operation.
Setup controllers – enable all needed controllers for proper functioning. Thigh and shoulder controllers must be at “on” state. Note that the VaM person “default pose” has these controllers disabled.
Read from… - the plugin does not read the person controllers position constantly. Use these buttons to force data update after some external changes. Both buttons read the direct values and calculate parametric angles for the current tab – solve reverse task. The reverse task is not accurate and often produces strange yaw values for limbs (actually, they are mathematically correct but not you are expecting for). The difference is the source where the data is being read. A force receiver has position values much closer to the real position rather than the controller’s value (controller position can be meters away from the actual position). Reading a force receiver makes its position data to be transferred to the corresponding controller.
Write … - these buttons update the person controllers values with the tab content (virtually pressed every time you change some value).
Mirror vertical does mirror copying current limb tab content including direct and parametric values to another tab but updates direct values only (the black and the dark blue ones). The mirror plane is defined by hip rotation sliders: the green ones for the arms and the dark blue ones - for the legs. Calculation and applying of angles values should be done manually on the destination tab (Write Parametric Values button's use case).
Features:
- Control over all char’s controllers position/rotation in single UI view.
- Parametric control over limbs and upper body through vector angles considering anatomical limitations.
- Morphs adjusting.
- Undo/redo feature.
Usage. The plugin should be added to the person atom you want to pose. The UI consists of
Version 3 update. The hipControl is a root point for for both arms and legs root points. The chestControl has additional driving force for the arms root points but the real anchor point is positioned higher.
Green coloring for the buttons down there is also a hint for working with parametric values.
Version 4 update. Now you can edit morph values directly from the plugin. The plugin does not bring new morphs, it just displays the existing morphs according to the editable list (see update hints with the video illustration). The design is that the user selects the desired morphs and organize them into specific morph banks. A use case example is an adjusting the face morphs (expressions) as long with the fingers state (gestures) because they complement the pose.
Version 5 update. Now you can load a list of morphs organized in few banks from a file (.json). A separate plugin module MorphLister is used to create such a file, please see the update post. In addition, the ability to save/load morph values to/from a file and the ability to copy morph values from one bank to another have been added. In the latter case, it is assumed that both banks have a "mirrored" list of morphs, i.e. their volume is the same and morphs for the right/left side of the body are in the same position of the bank list (an example of creating exactly such banks is given in the video of the update post). This way you can quickly copy, for example, the left hand fingers state to the right hand. Three types of saving and loading morph values to/from a file are implemented:
1) .val-file - morph values of all banks with a binding to the morph name and the bank name (only morph values that differ from the default values are sent to the file);
2) the same, but only for the currently selected bank tab (when loading a file, if a bank name identical to the current one is not created in the file, the values of the current bank will be set to the default!);
3) .ord - the values of the current bank (ordered) are saved/loaded without a binding to the morph name, but only to the ordinal number in the list.
Use the list slider to browse these modes. This list also contains the names of banks - this is done for the previously described ability to copy values. For this select a bank and click open/save values to copy the values from/to the selected bank and not load/save from/to a file. Such a confusing interface is to save space UI space, sorry for that.
Buttons Functions.
Undo/redo – altering value have undo/redo operation.
Setup controllers – enable all needed controllers for proper functioning. Thigh and shoulder controllers must be at “on” state. Note that the VaM person “default pose” has these controllers disabled.
Read from… - the plugin does not read the person controllers position constantly. Use these buttons to force data update after some external changes. Both buttons read the direct values and calculate parametric angles for the current tab – solve reverse task. The reverse task is not accurate and often produces strange yaw values for limbs (actually, they are mathematically correct but not you are expecting for). The difference is the source where the data is being read. A force receiver has position values much closer to the real position rather than the controller’s value (controller position can be meters away from the actual position). Reading a force receiver makes its position data to be transferred to the corresponding controller.
Write … - these buttons update the person controllers values with the tab content (virtually pressed every time you change some value).
Mirror vertical does mirror copying current limb tab content including direct and parametric values to another tab but updates direct values only (the black and the dark blue ones). The mirror plane is defined by hip rotation sliders: the green ones for the arms and the dark blue ones - for the legs. Calculation and applying of angles values should be done manually on the destination tab (Write Parametric Values button's use case).