04.16
Here’s a sweet “bike chain” / “tank treads” rig explained:
I’m open to ideas for further short-form tutorials. If you have any, or found this particular tutorial educational, speak up! I welcome your feedback. ![]()
Here’s a sweet “bike chain” / “tank treads” rig explained:
I’m open to ideas for further short-form tutorials. If you have any, or found this particular tutorial educational, speak up! I welcome your feedback. ![]()
Here’s how you can use ICE to create a null that controls a weightmap gradient:
Here’s a little project that kept me busy for several months last year and it’s finally public domain knowledge that my employer worked on it.
Enjoy!
Hey everyone, earlier this year I started working at Rodeo FX.
Loving it there and just wanted to share with you this new trailer for one of the first projects I got to put my hands on here.
It’s for the magician heist movie “Now You See Me“. Enjoy! ![]()
(Trailer courtesy of Yahoo Movies.)
Some of you may remember I wrote about some ICE trickery with strings some years ago. The other day I pondered if one could turn a string of digits into an integer or scalar (float) value. Well, I’ve found a way! Read More >>
Did you know you can do this? ![]()

BREAKDOWN:
1. Set an OK center position with "Move Center to Bounding Box" / "Move Center to Vertices".
2. Enter "Center" mode. (top right)
3. Right-click on "Ref" button (below Local) and choose "Pick Polygon/Edge/Point Reference".
Click an object to select it and highlight the desired components.
4. While still in both "Center" and "Ref" modes, reset rotation to 0,0,0 then go back to "Object" mode (top right), go "Local" mode and reset rotation to 0,0,0 again. — That’s it!
ps: The faces need not be in the same object. (It could be another’s!)
Beveling and/or extruding vertices of an Icosahedron primitive can get you some pretty cool patterns:
You’ve probably heard of ICE keywords like “self“, “this” or “this_model“… but did you know about “this_parent“?
It’s not undocumented, but it’s often forgotten.
If you’ve ever seen a Maya rig, you’ve probably seen their joints system which draws “fake” bones. Fake as in that it’s just an OpenGL virtual representation of the hierarchy/parenting, not an actual object. I’m not a big fan, but I do like the concept of being able to sketch out a skeleton by duplicating and reparenting joints, and thanks to “this_parent” we can do the same in ICE! Read More >>
What’s the smart way to pick any arbitrary number of items with XSI’s PickElement or PickObject commands? Read below… ![]()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | si = Application def pickForever(**kwargs): ''' Pick forever, and ever, and ever, and ever... until you rightclick. ''' # Default options leftMessage = kwargs.setdefault('leftMsg', 'Pick something') middleMessage = kwargs.setdefault('middleMsg', leftMessage) selFilter = kwargs.setdefault('selFilter', 'object') # Loop and yield forever until complete: while 1: out = si.PickElement(selFilter, leftMessage, middleMessage) obj = out("PickedElement") buttonPressed = out("ButtonPressed") modifier = out("ModifierPressed") if obj: yield obj, buttonPressed, modifier else: break # _______________________________________ # USAGE EXAMPLES: def processIndividually(): ''' Deal with each pick, one object at a time... ''' for obj, button, modifier in pickForever(leftMsg='Pick Object', selFilter='polygonmesh'): button = ['left','middle'][button-1] # (-1 because 0 means right, but is never returned.) si.LogMessage( "Picked %s with your %s mouse button!" % (obj.FullName, button) ) def listExample(): ''' Getting a list of picked objects, only after picking is complete... ''' pickedObjects = zip(*list( pickForever(leftMsg='Pick Object') ))[0] si.LogMessage( pickedObjects ) # Cool, eh? :) |
Ever wondered what’s the deal with *.xsiaddon files? What are they?
Well, they’re good ol’ XML with a bit of metadata and the files embedded in them are compressed with the zlib library and base64 encoded for safe plaintext storage.
How would we parse such a file? Check this out: Read More >>