Joint Tools

Status: Alpha release

Last Updated: 16 October 2017

Overview

_images/toolbox_joint.png

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

  1. UI - standalone

    • Top cgm menu - CGM> TD/Rigging> > Joints > cgmJointTools
    • Marking menu (several of them) - cgmJointTools
  2. UI - Nested

    • You can find most of the tools nested in the cgmToolbox
  3. Python

import cgm
cgm.core.tools.jointTools.ui()

UI

If you open the stand alone ui, you should see something like this:

_images/main.png

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.

_images/orient_tweak.png

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.

_images/orient_vector.png
  • 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

_images/orient_functions.png
  • 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.

_images/create.png
  • 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

_images/radius.png

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'