.. toctree:: ******************** Joint Tools ******************** Status: Alpha release Last Updated: 16 October 2017 Overview ========== .. image:: _static/img/toolbox/toolbox_joint.png :align: center cgmJointTools is our attempt at an all in one joint creation and orienting tool for our own purposes. We hope you find it useful as well. **What can I do with it?** * Create joint chains be selection or curve and resplit by multiple methods * Tweak and edit joint orientation values in multiple ways * Define world up vector by object axis or a vector between two objects * Access rayCast joint creation tools (stand alone ui only) * Orient and snap joints on a plane for fingers or limbs * Relatively tweak joint radius values contextually Accessing ============== #. UI - standalone * Top cgm menu - ``CGM> TD/Rigging> > Joints > cgmJointTools`` * Marking menu (several of them) - ``cgmJointTools`` #. UI - Nested * You can find most of the tools nested in the `cgmToolbox `_ #. Python .. code-block:: guess import cgm cgm.core.tools.jointTools.ui() UI ======== If you open the stand alone ui, you should see something like this: .. image:: _static/img/jointtools/main.png :align: center .. note:: When you load it as a standalone, RayCast create options are availabe as well. Seemed overkill to have that in the Toolbox version as well. Orient ======== Tweak ------ Full props to Michael Comet for the logic on this one in his fantastic cometJO. .. image:: _static/img/jointtools/orient_tweak.png :align: center Change the current jointOrient values on selected joints by provided amounts in a relative manner. * ``x[ ] y[ ] z[ ]`` - Set the relative values * ``+`` - Add to the current values * ``-`` - Subtract to the current values * ``Zero`` - Clear out the fields. Vector/Aim ------------ With orientation we're talking about the up vector for aiming for the orientation processes. We have a couple of ways of defining it. .. image:: _static/img/jointtools/orient_vector.png :align: center * ``World`` - You can set to standard axis by the ``X``, ``Y`` , ``Z`` buttons or manually input values. * ``x+...`` - With a selected object, pick an axis which will general a vector and input it to the fields * ``Between Sel`` - If you select two objects, the vector from the first point to the second will be measured and input Aim/up axis directions are how joints will be aimed and oriented. Aim is from one to the next in the chain, up will go by the defined world vector. * ``Aim`` - Set the aim axis of oriented joints * ``Up`` - Set the up axis of oriented joints .. note:: When no parent or child joints are detected, joints will be oriented to the world following the aim/up axis Functions ----------- .. image:: _static/img/jointtools/orient_functions.png :align: center * ``Orient Selected`` - Orient selected joints following the user's settings * ``[]Relative`` - Affects orientation. Relative mode reevaulates the up vector from the parent. This supports better orientation for twisting joint segments. * ``Plane Up/Out`` - Planar orientation creates a snap plane to help fingers and limbs for examples all be on the same rotation plane. * 3 joints are required * Up/Out defines which axis the plane will be cast through - the joints up or out axis. For fingers, you probably want up. For an arm out would probably make more sense. * ``Freeze`` - Our freeze orienation function as we don't like maya's. Create ========= Joint creation is based on selection. There are several main methods. When we resplit, it can be by the selection generated curve or an existing one. .. image:: _static/img/jointtools/create.png :align: center * ``From Selected`` - Create new joints based on selection. Can be transforms or components * ``Mid`` - Create a joint at the mid point of the selected * ``Curve`` - Build joints along selected curve(s) .. note:: Mid only creates mid joint from selection. The other modes support the extra behaviours. What follows are the options that each mode can use. * ``Resplit`` - Resplit a given curve or selection * ``None`` - No resplit * ``Linear`` - Linear curve * ``Curve`` - Cubic curve * ``Sub`` - Resplit between each root. Only supported in ``from selected`` mode * ``[5]#`` Set the number of joints for resplit * ``[] Orient`` - Whether to orient created joints * ``[] Chain`` - Whether to parent created joints * ``[] Relative`` - Relative orienation mode where the last joint's up is used as the new up vector .. note:: Context can be changed via the first menu in the ``cgmToolbox`` or ``cgmJointTools`` RayCast ========= Only shows up in standalone ui. See `toolbox section `_ Axis ====== * ``*Show`` - Show axis (CONTEXTUAL) * ``*Hide`` - Hide axis (CONTEXTUAL) Radius ====== .. image:: _static/img/jointtools/radius.png :align: center Contextual radius editing. * ``/2`` - In this case take current, then divide by 2. * ``-10`` - ... current - 10 * ``-1`` - ... current - 1 * ``+1`` - ... current + 1 * ``+10`` - ... current + 10 * ``*2`` - ... current * 2 .. note:: Context can be changed via the first menu in the ``cgmToolbox`` or ``cgmJointTools`` Utilities =========== * ``cometJO`` - Tool by the brilliant Michael B. Comet for orienting joints * ``*Select`` - Select joints. (CONTEXTUAL) * ``seShapeTaper`` - Tool by our good friend Scott Englert for splitting sdk 'poses'