Thursday, July 7, 2011

Webinars & Videos

Script Swell now has a widget with links to the webinars and tutorial videos I've been working on the last couple of months. So far they are all in the realm of facial animation and rigging, along with my Faceware demo from GDC this year. As I make more videos I'll keep the links updated. The links take you to YouTube, though you can also find them all on Vimeo if that is your preferred site.


Monday, June 6, 2011

E3 Expo 2011 - June 7-9 - Los Angeles

The 2011 E3 Expo begins tomorrow in LA! It's always a fun and semi-relaxing expo for us. Although we have our fair share of meetings and biz-dev going on, for the most part we spend a lot of the time actually enjoying the event and getting to see all of the new games! Usually we're stuck in a meeting room all day doing stuff...not this time! This week we'll be out and about enjoying the talks, trailers, videos, events, etc.

I'm really excited to see some of the new trailers and get up to speed on this year's releases. I work too much and haven't really been paying any attention to gaming news. That's part of the irony of the gaming industry I suppose. It's a bad habit and something we should all strive to avoid. :)

Hit me up if you'll be in town for the expo. Plenty of parties and cool stuff going on. Hope to see some of you guys here.

In some other un-related news, I suck at updating the blog. I'll try to fix that.


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!

Tuesday, March 22, 2011

MEL/MAXScript Tutorial Requests

I've been wanting to write another MEL and/or MAXScript tutorial lately, but I'm not sure yet what topic(s) I want to cover. There's plenty of MEL commands and techniques and other stuff I could do but I figured I'd put out a call and see if anyone had some specific requests. Leave a comment if you have an idea for a tutorial that you'd like to see.

Thursday, February 3, 2011

Game Developers Conference (GDC) 2011

Hey Scriptahs! Apologies for the lack of updates lately. I started a new job in December and with the holidays and such it's been a busy, busy couple of months. I did get to take another trip to Scotland though to visit a client last week and I'll be all over North America this year, including being in San Francisco for GDC.


Nick Ramsay and I will be doing a Live FACEWARE™ demo at GDC on Thursday (3/3) at 10:30am (Room 309, South Hall). Image Metrics' facial animation software will soon be released to the public and we'll be showing you what it does and how to use it.

There is also a technical artist meet-up brewing (looking like Wednesday evening). Seth Gibson is organizing. For more details check out this thread at TAO. (http://tech-artists.org/forum/showthread.php?t=1303)

There are plenty of technical artist sessions at GDC this year, it should be great fun. If you'll be at the conference leave a comment below., maybe we can meet up and grab a beer!

Wednesday, December 8, 2010

MEL Scripting Tutorial: How To Write To A Text File

In this mel scripting tutorial we'll look at how to write data out to a file so you can make your own data exporting tools. By the end of it you'll have a firm understanding of and know how to take data from your Maya scene and write it out to a file. This is a follow up to the previous tutorial: How To Read A Text File. This article assumes you've read the previous tutorial and is a continuation of the concepts discussed in it. If you've not read the tutorial on how to read a text file, please browse Script Swell's Technical Artist Tutorials or click here.

Skill Level: Beginner to Intermediate

There are two things you'll need in order to proceed: some data to write out, and a text a file to write it to. To start off let's create a string array in Maya. In the script editor, copy and paste the following and run it.
// Create A String Array With Test Data
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;
Next, create a file in an easy location, e.g. "C:\mel\testFile_v01.txt". In this file, on the first line type the following: "This is the first line of my text file, version 01!". Save and close your file.

Now let's get into some code and see how this works. The idea here is that we're going to "open" our file as an object in Maya, put our data inside it, then "close" it. If you recall in the previous tutorial we use the fopen command to open the file and prepare it for use.
// Create A String Array With Test Data
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;

// Define Your File Path
string $filePath = "C:/mel/testFile_v01.txt" ;

// Open Your File
$fileId = `fopen $filePath "a"` ;
The first difference you may have noticed from the previous tutorial is that instead of "r" (for 'read') we've switched to "a" which stands for "append". What this means is that we're telling MEL that when we're working with this particular file, we'll be writing to it but we'll be appending data onto the end of whatever is there. This way using the "a" flag you can keep your current data intact and simply add more to it. Let's continue on with more code.
// Create A String Array With Test Data
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;

// Define Your File Path
string $filePath = "C:/mel/testFile_v01.txt" ;

// Open Your File
$fileId = `fopen $filePath "a"` ;

// Print Array To File
for($line in $myStrArray)
fprint $fileId ($line+"\n") ;

// Close File
fclose $fileId ;
The newest line in our code starts with a for in loop and is looping through our string array one line at a time. This is because in this case we don't just want to dump all the data to the file, we want to have control over how it's added and make sure it's exporting to an easily readable format. We loop through our array one line at a time and use the fprint command. What fprint does is essentially the same thing that the normal print command does except it prints to your text file instead of Maya's script editor. Just like print though, it will not add a new line at the end of the argument and this must be done manually, hence the "\n" that I've appended to the $line variable. If you leave this out, all of your data will print to a single line! After we're finished printing out the data we're using fclose to "close" our file object.

-----------------------------------------------------------
Tip: If you forget to use fclose and leave the file object "open" within Maya it will become locked and you won't be able to make changes to it outside of the program. If this happens you will need to close Maya to "unlock" your file.
-----------------------------------------------------------

After running this script, take a look at your text file and you'll see the file now reads the following:
This is the first line of my text file, version 01!
This is line one of my data from Maya.
This is line two.
And then line three!
Nicely done! You are now one step closer to building your data export tool. Next we'll double back slightly and look at another flag we can use in the fopen command. Look at the code below.
// Create A String Array With Test Data
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;

// Define Your File Path
string $filePath = "C:/mel/testFile_v01.txt" ;

// Open Your File
$fileId = `fopen $filePath "w"` ;

// Print Array To File
for($line in $myStrArray)
fprint $fileId ($line+"\n") ;

// Close File
fclose $fileId ;
The only change here is we've swapped the "a" flag with it's brother: "w" which stands for "write". What write will do is destroy the prior contents of the file and replace them with whatever we're printing to it. So your result will be:
This is line one of my data from Maya.
This is line two.
And then line three!
This time only the string array has been printed to the file and the original file's contents were destroyed.

Both of these flags are useful depending on the context of what you're doing. Be sure to check out these commands in the MEL documentation as well for a slightly more in-depth look at how they work.

It really is simple as that to write out data! As long as you remember to fclose your file and use the correct flags when using fopen you shouldn't have any trouble using this technique.

For more tutorials check out the Technical Artist Tutorials page. Leave a comment below if you have any thoughts or questions and thanks for reading!

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