UDK Notes - Characters And Skeletal Meshes


Make a folder in content:
    skelmesh_box__maya  (this is a maya project)

Model a box, all one object, at a reasonable size
(combine if not all one object)
Move the pivot point to the origin
Freeze transforms
Delete History

Go to animation mode (upper left of maya ui)

Skeleton > Joint Tool

hold x (snap to grid)
zoom into the origin
click once to make a joint
push enter
Name the joint:
Change the bone radius to 10  (optional)
In the side view, draw a lid bone
name it b_Lid
name the top b_LidTip

select none
select b_Lid
shift select b_Root
push p for parent

select none
select b_LidTip
shift select b_Lid
shift select b_Root
Skeleton > Set Preferred Angle

select none
shift select box
shift select b_Lid
shift select b_Root

Skin > Bind Skin > Smooth Bind Options
  Bind To:  Selected Joints
  Max Influences: 2  (2 or 3 are usually recommended)

  Click Bind Skin

Note:  In game engine, every extra joint adds complexitity/cpu cost.
Every influence per vertex add complexity as well.
Have verts affected by as few bones as possible.

select none
select the box
Skin > Edit Smooth Skin > Paint Skin Weights

Notes about the tool:
  RMB over bone, use select influence
  painting only some verts
    go to select mode, select verts
    go back to paint mode to only affect those verts

q for select
face mode
select only the lid  (double click the lid)
push ctrl-f9   (or use  ctrl RMB  to...)

select bones
export selection
call it: box__opening__anim

Creating A Skeletal Mesh For UDK
(this will be an item container box, but the same process works for entire characters)

Make a container of three boxes with extrudes, and default xforms
Put a different looking blinn on each box
Group the boxes, select all of them, hit control+g
Name the group
Name the materials and shading groups


Make a lid bone and a base bone (two clicks each)

Name them, and the tips
(you don't always have to name the tips, but it makes this example clearer)


Duplicate base and call it b_All

Go to top view
draw skeleton tool
hold down x for grid snap
click far away from all other bones
  and drag to origin
  otherwise the bone will
    get connect to others
You can change the radius if you like

call the new bone b_Root
Parent b_All to b_Root


If you want to, you can make additional
  mesh objects, such as elastic bands
    holding the lid down.

Make sure mesh objects have pivot points at origin
Make sure parent group is at origin and has pivot at origin
Freeze Transforms on the group
  (just to be sure)
  (will do children)
Delete the history on the group
  (will do children)

Bind the skeleton to the meshes
  You can do it one mesh object at a time if you want to be careful.
  Edit > Reset Settings
  Change "joint hierarchy" to "selected joints"
  Most of the time you should turn off remove ununsed influences
    (you can do it yourself later)

Paint bones weights for meshes

To Export
  Select the mesh group
  Shift select the root bone
  Edit > Select Hierarchy
    this selects everything individually
    they'll go yellow in the hypershade

  File > Export Selection Options
  Chose "FBX Export" for the type of export
  Click export
  In the options on the right, turn on "Animation"
  save it in your src_udk as

  save the maya scene

  save as, and save it as box__opening__anim.ma
  Animate box opening from 1 to 24
  ensure your timeline goes to 25, UDK will not get the last frame
  save the maya file again
  export again as box__opening__anim.fbx


Import, choose the FBX you just expored
Enter the package name
Turn off "import animation"

After bringing in the model
RMB > New Animset
  (use the same/correct package again)

name it:

In the anim set editor use
file > import fbx animation
choose your file box__opening__anim.fbx

Animation Compression > Animation Compression Settings
  Least Destructive
    Apply to set
      About to compress (choose yes)

This make UDK capable of playing the animation efficiently in game.

Add Skeletal Mesh To Scene
Add Trigger To Scene
Select Trigger
Open Kismet

RMB > New Event Using Trigger > Used

RMB > New Matinee

Connect Trigger's "Used" to Matinee's "Play"

Select the skeletal mesh (in your scene)

Double click on the matinee

RMB In the dark grey area on left
  New Skeletal Mesh Group
    Name it "Open"  (name doesn't matter much)

Click on the open track at the top
in the properties find "group anim sets" and push the plus button
with the animset selected in the content browser, push the
little green arrow to attach the animation set to the matinee track.

Click the "anim" track
push enter on the keyboard
choose the track you want and push ok
(there's only one track right now)

Anything that triggers the matinee's "play" input will
cause the animation to start

Remember that you might want to turn Max Trigger Count to zero
(in the kismet trigger event properties)
zero means no limit how many times to trigger


Teaching3D is a creation of Joe Crawford