UDK Notes - Characters And Skeletal Meshes

http://udn.epicgames.com/Three/ContentHome.html
http://udn.epicgames.com/Three/FBXPipeline.html
http://udn.epicgames.com/Three/FBXSkeletalMeshPipeline.html



Make a folder in content:
  yourname__skelmesh_box__udk
    src_udk
    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:
b_Root
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
  box__skelmesh
Name the materials and shading groups

  bottom_box_mat_skin00
  bottom_box_sg_skin00
  top_box_mat_skin01
  top_box_sg_skin01
  side_box_mat_skin02
  side_box_sg_skin02




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)

b_Lid
  b_LidTip
b_Base
  b_BaseTip


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



b_Root
  b_All
    b_Lid
      b_LidTip
    b_Base
      b_BaseTip


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
    box__skelmesh

  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



In UDK:

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







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

name it:
box__animset

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