Intro to Prop Assets

Last Updated 02.06.2019

Assignment

  • Add some props to our character

Goals

  • Understand the basics of the HANDLE rigBlock
  • Explore what you can do with it

Resources

Starting Point

I’m going to start this one with a my rigged asset from base.

  • The following rigBlocks at the skeleton state: master, spine, head, legs
  • Any reference you want ready to go

Handle Blocks

This is our first take on handle blocks so a quick overview of what they are. The purpose of handle blocks is for a single joint control to drive something with options for that. There are a number of options they can do:

  • Shape
    • Simple proxy shapes
    • Loft setup like you’ve been using on other blocks
      • New loftList setup added during this course
  • Options
    • banking
    • aim
    • Set which point you want for articulation.

Let’s start with giving our asset a backpack.

Backpack

This will be our first handle so I’ll go through more detail with this one than others. You also should be relatively familiar with the process by now so I’m gonna go quicker.

Define – Create

Let’s make our rigBlock

  • Open up the mrsBuilder. | cgm Top
  • Add the rigBlock to our scene | Add>handle>shaperList.

This will create our new shaperList handle rig Block

Should look something like…

Things to note:

  • It’s built aiming up. That’s because the shapeDirection is y+. If you change that and then redefine it’ll build on any of the rigBlock’s axis.

Define – Size

Use the rigblock and define handles to position your rig block on your design or model.

  • Form – You’re not worrying about the pivots here, just bounding box your frame
    • Put the rigBlock around the middle of the back
    • Move the end handle to the top of the backpack size you want
    • Scale the end around the size of the end to the volume
  • up – Check your up handle to make sure it’s where you want it.
  • blockParent – Set the block parent to the spine
  • Name – Set the name tag via the Contextual > Names > Name | Set Name Tag

Settings

This is a new block type so we have a number of options.

  • addAim | If you want an aim setup on the control. If on, you’ll see an aim handle to define that vector
  • addPivot | If you want a pivot bank setup you would be familiar with from our other work in the class.
  • baseShape | Not applicable to this setup. With a having a proxyShape of shapers ignores this. On any other option this would define the shape of your control curve. We’ll make one of those in a bit.
  • loftDegree | Same as other block setups. Changes the loft degree for a shapers setup
  • loftShape | This is our base loftShape like other blocks we’ve looked at. When loftList option is chosen and no previous loftList is set on creation or by other means, The loftList will fill with this option.
  • loftSides/loftSplit |affects both the loft setup and use these values for converting the regular proxy shapes to poly for proxy/puppet mesh work
  • loftList | This is verified at the start of the template state. For each shaper you have a loftShape enum attr will be created so you can specify what handle you want per template handle.
  • numShapers| You should know this one by now….
  • numSubShapers | …
  • rotPivotPlace | Important. This is where you control pivot will be. The default is jointHelper which is our preferred setup
  • shapeDirection | Specify which axis of our rig block our define handles cast from
  • shapersAim | Controls how the shapers segment setup is aimed to the end handle or in a chain (usually only use the chain for tails)
  • spaceSwitchDirect | If on, each direct control will have space switching setup. We have some concerns on speed for this but if you want the option it’s there.

For more detail, explore the Handle doc and Shared settings doc.

Template

Next we need to shape our backpack. First, push to template state.

  • Select your tail rigBlock  in mrsBuilder | backpackHandle - [DEF]
  • Change state | <Templ>.

You should be familiar with the controls we have to use here. Hop to.

Note – Turning on default material helps usually

  • Template handles | Use these to generally shape
  • Loft curves | These are used to shape your look
  • Orient helper | Make sure it goes the direction you want

What are we looking for at this state?

  • Shape| You want your template to generally match the look you’re going for. If you’re not working from a mesh and just an image plane really pay attention to your various angles.
  • Orient| Ensure the orient helper at the top of the limb is pointing where you want

If you want to try other soft shapes at an handle:

  • Save your block dat | Utilities - Contextual > BlockDat > Save
  • Change some loftList options | loftList_whichever
  • Rebuild the template | <Templ>
  • Load your block dat  | Utilities - Contextual > BlockDat > Load

You can also try adding another handle if you want more control. I ended up.

  • Going to 4 shapers
  • loftList –  circle, square, square, square, circle

Prerig

Let’s go ahead and push to prerig.

  1. Select your backpack rigBlock  in mrsBuilder | backpackHandle - [TMP]
  2. Then hit <Prerig> | This pushes to prerig state

What are we looking for?

  • Handles |  This block is simple
    • We have one joint handle [1] to place and orient how we want it. I’m gonna put it pretty much in the middle of the pack
  • Pivot Helper | So we have a pivot helper [2]. So we’ve only used the pivot helper in one orientation on the ground. That’s fine and all but having the pivot setup would make a lot more sense if it was a long his back to bounce around there.

Skeleton

This state may not be the most exciting but it is important. We want to pay special attention to the orientations after build to make sure they are where we expect them to be and oriented the way we want.

Go ahead and push to to skeleton state and you’ll see a joint added.

  1. Select the spine block backpackHandle - [PRE] in mrsBuilder
  2. Then hit <Skeleton> | This is to push to skeleton state

What are we looking for at this state?

  • Joint orient/position | make sure they look like we expect
  • Joint parent | make sure the root of your chain is going where you expect. In my case I want it going to the chest.

Now that we have a skeleton where we want it I’m going to rig.

Rig

Save off your file as to be safe we’re not going to be saving rigged blocks in our working file. In my case my file is: props_backPack_skeleton.ma

You can name yours what you like.

  1. Select the master block backpackHandle - [SKL]  in mrsBuilder
  2. Then hit <Rig> | This is to push to rigstate. It will ask for a confirmation saying it needs to rig the master and spine to complete these request
  3. Wait for it to complete

There’s a lot of things happening when we rig. You should be familiar by now.

As such, try it, change settings and iterate until you’re happy.

Helmet

Let’s say our project lead comes by and says, “Hey, you know that helmet? We want that to come off now in a shot.”

“Aye aye!”

First things first. We need to remove the old helmet from our setup.

Removing old helmet

  1. Select the master block headHead - [RIG]  in mrsBuilder
  2. Right click menu | Select Head Geo Group
  3. F focus in the outliner to find it
  4. Find the helmet geo and select it
  5. Right click menu | Remove Selected
  6. This will remove the geo and parent it to world.

Redo the proxy on the head

  1. Select the master block headHead - [RIG]  in mrsBuilder
  2. Reproxy via the contextual top menu | Contextual > Rig > Verify Proxy 

Define – Create

Let’s add a new handle block for the helmet.

  • Open up the mrsBuilder. | cgm Top
  • Add the rigBlock to our scene | Add> handle > box.

This will make a handle a little different from our previous.

Define – Size

Use the rigblock and define handles to position your rig block on your design or model.

  • Form – You’re not worrying about the pivots here, just bounding box your frame
    • Put the rigBlock at the base of the head
    • Move the end handle to the top of the head
    • Scale the end around the size of the helmet
  • up – Check your up handle to make sure it’s where you want it.
  • name – Set the name tag. In my case it’s ‘helmet’
  • Parent – Go ahead and set the blockParent of this block to the head

Template

Now we move to shaping

  • Select your helmet rigBlock  in mrsBuilder | helmetHandle - [DEF]
  • Change state | <Templ>.

This is what we get.

Now I have a couple of immediate concerns here.

  1. The cube box control looks a lot like our head control and will be difficult to select
  2. I don’t want him wearing a cube but the helmet proxy I have.

Fixing the control shape

The easy way would be simpley to grab the control curve and move and scale it so it sits above the helmet. Something like this.

I want you to learn some other concepts so lets try something else.

  1. Select the helmet rigBlock
  2. Change the baseShape attribute  to square
  3. Retemplate the helmet

This will get you a square at the base of our block. If I move it up and rotate it, I get something like…

Better but I think that might still get in the way when selecting the head or if we had face stuff . So let’s try one more.

  1. Select the helmet rigBlock
  2. Change the baseShape attribute  to pyramid
  3. Retemplate the helmet

I take took the new pyramid and shaped it above the head. Not great, but a place to start and now we’ve learned some things so lets’ move on.

Swapping our Proxy

I don’t really want a cube head for my proxy but the helmet I have so let’s do that.

  1. Select the master block helmetHandle - [TMP]  in mrsBuilder
  2. Select the mask geo
  3. Right click menu | Replace with Selected Geo
  4. This will remove the old geo and parent it to world. You can delete it

After some fiddling with the control curve again I ended up here.

What are we looking for at this state?

  • Shape| Control shape
  • Proxy Mesh | we want our proxy to be right

Prerig

Let’s go ahead and push to prerig.

  1. Select your tail rigBlock  in mrsBuilder | helmetHandle - [TMP]
  2. Then hit <Prerig> | This pushes to prerig state

What are we looking for?

  • Joint Helper | Make sure it’s[1] placed where I want. I just put it in the middle of the head but you could just as well put it at the top or somewhere else if you wanted a particular point of articulation
  • Pivot Helper[2] | On a whim I left addPivot on to try. Thought maybe if you wanted to throw the helmet and have it settle easily it might be nice. It’s a demo whatever.

Skeleton

Go ahead and push to to skeleton state and you’ll see a joint added.

  1. Select the spine block helmetHandle - [PRE] in mrsBuilder
  2. Then hit <Skeleton> | This is to push to skeleton state

What are we looking for at this state?

  • Joint orient/position | make sure they look like we expect
  • Joint parent | make sure the root of your chain is going where you expect. In my case I want it going to the head.

Rig

Save off your file as to be safe we’re not going to be saving rigged blocks in our working file. In my case my file is: props_helmet_skeleton.ma

You can name yours what you like.

  1. Select the master block helmetHandle - [SKL]  in mrsBuilder
  2. Then hit <Rig> | This is to push to rigstate. It will ask for a confirmation saying it needs to rig the master and spine to complete these request
  3. Wait for it to complete

There’s a lot of things happening when we rig. You should be familiar by now.

As such, try your ear , change settings and iterate until you’re happy. When you are, mirror your ear and finish your build.

[agni

 

_block post_id=”5423″]

Exploring Options

You can experiment with other processes and options.

Options to try:

  • Add more doodads to your rigs
  • Play around with handles

What if I him to hold his helmet?

Good question. Let’s discuss something new. The real question you’re asking is “How to I add new dynParents to my dynParent setup on my helmet”.

Let’s do it.

  1. Open up the cgmDynParentTool | cgm>animation>cgmDynParentTool
  2. Select the head control
  3. Load it in the tool | <<

Now we can see our options.

Adding new parents

We want to add our hands but we want the blend joints and not the controls. Usually I use the parent of the rigJoint for my drivers. To find those I gotta do a little digging till we have a better system for doing this.

I’m gonna cheat cause I know. We’ll do one wrist so you can see and then you can add whatever you want to the system.

  1. Mel select the joint I want | select R_wrist_blend_frame
  2. In DynParentTool, add that as a parent | Add
  3. Rebuild the group in that ui | Rebuild
  4. Now look at the head space control

What if I want that to just be wrist in the enum?

  1. In DynParentTool, select that item | \R_wrist_blend_frame
  2. Right click menu alias | alias
  3. Type ‘r_wrist’
  4. Rebuild  again | Rebuild 

Lots of other things you can do. For a much fuller breakdown on the dynParentTool, see the docs.

In closing

This is just a foundation. Try things, make suggestions and see what you can make.

Josh Burton

[MRS Project Lead | CG Monks] Josh is an animator turned TD who hails from Oklahoma, pre-undergrad in the Marine Corps, animation basics at Savannah College of Art and Design, cut his teeth in gaming and commercials before co-founding CG Monks and more recently the CG Monastery. The Morpheus Rigging System is a culmination of years of R&D and he is now thrilled to see what users can create, collaborate and expand on with this open source MRS platform.