Showing posts with label Rigging. Show all posts
Showing posts with label Rigging. Show all posts

Thursday, March 31, 2011

Facial Rigging Webinar - Balancing Quality and Control - Part I

I'm doing a free facial rigging webinar next Monday on April 4th from 2-3pm PST as a part of Image Metrics' Faceware 3.0 Weekly Webinar series.

"Facial Rigging - Balancing Quality and Control"

It's a three part session that will eventually lead to an attempt to answer the common question, "What's the best way to build a facial rig?".

This coming webinar will start us off with a discussion on the most common rig types I see in both the game-space as well as film and commercial, what our experiences have been with them in both quality and usability, and issues we've had to deal with in production using these different types of assets. We'll go over what types of rigs tend to work best for different types of productions. I'll be discussing the most common things that character riggers tend to leave out or don't polish enough when building facial rigs. I'll also answer some common questions regarding joint placement, use of blendshapes and curve-based rigs, and skinning techniques.

For more info, visit the IM forums.

Hope to you see everyone there!

Wednesday, October 20, 2010

animatorsresource: New Animation School: AnimSchool

animatorsresource: New Animation School: AnimSchool: "...There is a new online animation school set to debut in November called AnimSchool. school will be run by the creator of 3D Appeal Blog and 3D Appeal Blog Now, David Gallagher."

Looks like David's school will have a, "3D Character" program that teaches modeling and rigging on top of the animation classes. Read JP's article over at Animators Resource for more info and an interview with David.

Tuesday, July 27, 2010

Maya: Transfer Mesh UVs After Rigging

This is slightly off-topic than the usual scripting posts, but I found this really useful and wanted to share.

It's a technique on how to transfer UVs from one mesh to another while maintaining deformer history on your object. It worked for what I was doing and I imagine I'll be using it again in the future.

http://animbiz.blogspot.com/2010/02/transferring-uvs-after-rigging.html

I'm currently working on a bullet proof transfer script, I'll let the world know when it works. :)

Friday, June 11, 2010

MEL Script: Print Toolbox

One of the best things about scripting is that it gives you the ability to design your own tools that compliment and speed up your workflow. When I'm using Maya I am in constant need of information from my scene. Whether I'm debugging a broken file, preparing scenes for delivery to a client, or setting up a rig, I always need little morsels of data from the scene to do this. To help me with this I wrote this simple little toolbox that let's me get a lot of the data in just a click.

It's a small floating gui with a half-dozen buttons that let you print out some very useful information.

Features:
  • Print Transform Values: Prints out basic transform values in the script editor for everything selected in an easy to read format.
  • Print SDK Count: Prints the number of set driven keys in your scene.
  • Print Joint Count: Prints the number of joints in your scene.
  • Print Selection Count: Tells you how many objects are selected.
  • Print All Nodes Count: Gives you the total number of nodes in your scene.
  • Print Selected To Array: This will print out your selected objects into an array that you can copy from the script editor.
There are of course an enormous number of random things that you may want to print out at any given time but these are the ones that I need to use on a day to day basis. Perhaps in an updated version I'll add the ability to customize which buttons appear and allow you to print out a load of other things. For now, enjoy!

Get the Print Toolbox here: jgPrintToolbox.mel

As always feedback and comments are welcome. If you're just getting into MEL scripting take a look at the script itself to see how it's working.

Tuesday, February 9, 2010

MEL: Split A Joint / Bone Chain To A Specified Number Of Joints

Here's a procedure you can use in Maya to split a joint chain into multiple joints.

This proc requires jgArrToStr which you may recognize from yesterday's post. :)

Source them both first and then run it by typing:

jgSplitJointChain joint1 joint2 4 ;

(joint1 being the parent of the two.)
(4 being an example of how many joints you want to add.)

One note, currently it assumes y-up as your secondary axis orient. Maya doesn't let you query SAO so there's no way I know of to dynamically check what to use. Change it in the proc if it's not y-up in you're setup.


// **********************************************************
// Adds A Specified Number Of Joints Into A Chain
global proc jgSplitJointChain (string $parent, string $child, int $numJnts) {

// Adjustment For Math Purposes
$numJnts++ ;

// Checks
select -cl ;
if(!`joint -ex $parent`) error ($parent+" doesn't exist in scene or is not a joint.") ; // Does Parent Exist
if(!`joint -ex $child`) error ($child+" doesn't exist in scene or is not a joint.") ; // Does Child Exist
if(jgArrToStr(`listRelatives -p $child`, 0) != $parent) error ($parent+" is not the parent of "+$child+".") ; // Check Parent/Child Relationship

// Joint Positions
float $pPos[] = `joint -q -p $parent` ;
float $cPos[] = `joint -q -p $child` ;

// Parent Orientation
string $ro = `joint -q -roo $parent` ;
string $sao = "yup" ;

// Unparent Child
parent -w $child ;

// Vector
float $jointVector[] ;
$jointVector[0] = ($cPos[0]-$pPos[0])/$numJnts;
$jointVector[1] = ($cPos[1]-$pPos[1])/$numJnts;
$jointVector[2] = ($cPos[2]-$pPos[2])/$numJnts;

// Deselect All
select -cl ;

// Loop And Setup Joints
string $lastJntCreated = $parent ;
string $newJnts[] ;
for($i = 1; $i < $numJnts; $i++) {

// Create Joint
string $jnt = `joint -p ($pPos[0]+($i*$jointVector[0])) ($pPos[1]+($i*$jointVector[1])) ($pPos[2]+($i*$jointVector[2]))` ;

if($i == 1) parent $jnt $parent ;

// Set Last Created For Reference (Updates Until Last Iteration)
$lastJntCreated = $jnt ;

}

// Reparent End Joint
parent $child $lastJntCreated ;

// Orient Joints
joint -e -oj $ro -secondaryAxisOrient yup -ch -zso $parent ;

}

If you have any trouble using this or have questions/comments, send me a note!

Scripting Topics

MEL (41) Maya (39) Scripting (32) Scripts (21) programming (14) Free Mel Scripts (8) MaxScript (7) Coding (6) Rigging (5) tutorial (5) 3ds Max (4) Python (4) Tricks (4) faceware (4) image metrics (4) Learn (3) Namespace (3) Namespacing (3) animation (3) facial (3) webinar (3) Code (2) GDC (2) Game Developers Conference (2) Multiple Namespaces (2) Print Selected Objects (2) Recursive (2) Removing Namespace (2) Return (2) Set Driven Keys (2) TOkenize (2) Tips (2) Toggle Background Color with MEL (2) animation tools (2) animators resource (2) deformers (2) learning (2) maya tools (2) mesh (2) modeling (2) nodes (2) procedure (2) script swell (2) transforms (2) Animschool (1) Attribute (1) Background Color (1) Beer (1) Blur (1) Character Setup (1) Check if an object exists (1) Class (1) Command Line (1) Constraints (1) Create SDK (1) Create a directory with mel (1) Data (1) Export (1) FilterString (1) Fix (1) Floating Slider Time (1) Functions (1) Get Maya Version MEL (1) Get Parent (1) Google (1) Holiday (1) How To Write To A Text File (1) Import (1) Incremental Save (1) Index (1) Joint Chain (1) Make Set Driven Keys (1) Maya Version (1) Modules (1) Objects (1) Orient Constraint (1) PYMEL (1) Parent (1) Parent Constraint (1) Point Constraint (1) Position (1) Print (1) Print Current Selection (1) Print Random Quotes (1) Print Selection (1) Print Vertices (1) Progress Bar (1) Progress Window (1) PyQT (1) Removing Spaces From Names (1) Scene File Name (1) Select Connections (1) Select Outgoing Nodes (1) Split Bones (1) Split Joints (1) St. Patrick's Day (1) String Array (1) System (1) Transfer UVs (1) Viewport (1) White Space (1) Windows Username (1) Zero Out Attributes (1) animButtonState (1) arrays (1) articles (1) auto key (1) better (1) blendshapes (1) break (1) confirm dialog (1) continue (1) convention (1) e3 (1) efficiency (1) error (1) eval (1) executable (1) fclose (1) fopen (1) fprint (1) games (1) improving (1) infinite loop (1) joints (1) listHistory (1) listRelatives (1) logic (1) loops (1) milestone (1) nodeType (1) objExists (1) recursion (1) rotates (1) rotations (1) schools (1) sculpting (1) setAttr (1) shout outs (1) source (1) source a script with a variable (1) speed (1) tech-artists.org (1) translates (1) video (1) warning (1) world matrix (1) worldMatrix (1)
 
Script Swell - Blogged