Hand

Last Updated: 04.18.2019

_images/hand_progress_0226_01.png

HAND - blockFrame for digits

This block is in very alpha state. This is our first blockFrame rigBlock . It's our digit handler or HAND for short.


Profiles

Block profiles may have their settings changed at will. These are simply presets.

General notes:

  • Profiles are initially loaded at creation but they should be able to be safely loaded at define state
  • Distances are stored in cm (maya's base unit)
  • Some settings are overridden by the buildProfile settings. For example some game buildProfiles will have endJoints off.

Human

  • numFinger | 4
  • numThumbInner | 1
  • numThumbOuter | 0
  • fingerProfile | finger3
  • definePose | relax

Toon

  • numFinger | 3
  • numThumbInner | 1
  • numThumbOuter | 0
  • fingerProfile | finger3
  • definePose | relax
_images/hand_toonTest.gif

HAND - blockFrame for digits


Paw

  • numFinger | 4
  • numThumbInner | 0
  • numThumbOuter | 0
  • fingerProfile | finger1
  • definePose | wide

Workflow

Roughly how hands are intended to be used.

  1. Place your arm or leg or whatever how you want it. When you're ready for your hand...
  2. Add a hand and set the blockParent to the thing it should follow and set the attachPoint
  3. Snap it to the end handle of the thing it should follow
  4. Size it using the base size and the handles
  5. Set your finger count and other options
  6. Verify your drivers
  7. Tweak those settings to shape and position
  8. Verify your subBlocks
  9. Push those subBlocks to template state
  10. Snap/Shape align those blocks
  11. Build and iterate to find a setup you like best
  12. When you're happy, mirror those subBlocks to the other side with or without a hand

Special Calls

verify_drivers

Builds the drivers from our eventual rigBlocks to be driven by the system


verify_subBlocks

Checks and/or rebuilds the rigBlocks driven by this rigBlock. Typically LIMB block fingers or thumbs.


subBlock_align

Call to snap/shape rig blocks to the blockFrame.


mBlockArg

str/mNode | What we want to process. If none, it does them all. If a rigBlock passed that has this as it's blockFrame, will use that one.


templateScale

enum | Whether to scale the template loft curves or not


UI

_images/hand_ui_02272019.png

Has right click menu via mrsBuilder.

  • Verify Drivers | Rebuilds the drivers. If you change the finger count for example you'd want to do this
  • Sub
    • Verify | Make sure we have the driven rigBlocks we expect
    • Rebuild | Force a rebuild on the sub blocks
    • Snap | Position and orient relevant handles
    • Shape | Cast shape the loft curves as well as position and orient relevant handles

Define

_images/hand_define.gif

Shapes

Bounding box

The size of this object is defined by the baseSize attr. When you define the block the define handles are spaced within this volume. So roughly sizing this to your hand will aid you in more quickly getting to what you want.


Define Handles

The little balls you see are to be used to roughly approximate the boundaries of the hand. The thumbs are more direct than the fingers which will sub split based on finger count.


Vector Handles

The Thumbs have vector handles which will be more clear once we have our drivers verified.


Settings

baseSize

float3 | We've used this before. The important thing here is that you change the size and the redefine to have the define handles lay themselves out in the volume represented.


definePose

enum | What positional layout do we want our initial define handles in our volume. The base vector for the thumbs are changed by this setting.

  • wide | Layed out on a plane as much as possible
  • relax | Slightly rounded layout.

fingerProfile

enum | What LIMB profile do we want our sub blocks to use.

  • finger1 | Single section finger
  • finger2 | Two section finger
  • finger3 | Three section finger. DEFAULT.
  • thumb | Single section finger

State Goals

What are we looking for at this state?

  • Position and orientation of the rigBlock
  • Size using the base size
  • Shape the general shape of the hand with the define handles

Drivers

_images/hand_drivers_base.png

This block as a special sub state when the drivers are. When you verify the drivers you'll see something like this (note, default material on)

Settings

There are a number of settings that affect our drivers.

numFinger

int | How many fingers do you want spread on our frame


numThumbInner

int | How many inner thumbs do you want. Inner thumb is what we have as humans. Only one supported for now.


thumbInner_0_scaleX/Y_X and finger_X_scaleX/Y_X

float datList | Current iteration on shaping the hand at this state. You have x/y scale control per driver per finger/thumb

_images/hand_drivers_change.gif

paramFingerStart_X / paramFingerEnd_X

float datList | How you can slide the digits across the curves for more finese in placement

paramSplit_X

float datList | Where you want the breaks in the digits. Currently setup for 2 but plan on expanding in future.

_images/hand_paraSplit.gif

SubBlocks

The idea of the blockFrame is it eventually creates the fingers/thumbs we need to make the actual hand work.

Using the ui, you can:

  • Verify or rebuild subblocks
  • Snap align them
  • Shape align them
  • Mirror to the other side
  • Self mirror (why you would want to we're not sure but the tech was there from the facial stuff so).

Known Issues

  • Param split setup for 2 and doesn't honor extra splits though it will still build fine
  • You need to push mirror a couple of times when mirroring HAND rigBlocks.

Change Log

2019

April

  • FK build | build with no ik now

February

  • Docs
  • First Implementation