View Full Version : Spider Demo scene

08 August 2003, 06:42 PM
Anyone here is interrested in dissecting/discussing the spider demo scene that comes on the install cd?

08 August 2003, 12:48 AM
You are :D



08 August 2003, 02:36 AM
Yep that I am. So I went back onto the messiah Yahoogroup, and found all the info I could find about the scene that was posted previously.

The guy that alledgedly made the scene works or worked for one time at Pixar according to Fred. His name is Frank Aalbers. Previous messages on the list confirmed this. Although the last time the creator answered questions regarding the scene, he claimed that he made the scene 3 years previous and wasn't sure of what he did exactaly to get the scene going.

So here's what info I found regarding automation and the spider scene:

just connect the SINe expression to a
rotation channel. you can also make a
position/movement expression that checks
how big the movements of the character is
so that you can use that as a multiplier
for the SINe expression.

Best regards
(name omitted)

Sorry (name omitted) ! It's been like 3 years ago I did that and can't remember
the details. But this is kinda the idea as far as I remember.

1. Make a cycle that looks as follows.
x = -1, z = -1 , y = 0
x = 0, z = 0 , y = 1
x = 1, z = 1, y = 0
and then jump straight back to
x = -1, z = -1, Y = 0

Y is the positive alternation of a sine.

2. Lock the Path distance of the spider to that cycle.

3. Calculate the direction vector of the spider . Use the x element
of the vector to size the x value of the cycle and the z element to
size the z value of the cycle.

4. Parent this final cycle on each leg IK goal using a pathdistance
offset between the legs to alternate the motion.

That's kind of the basics.

Hope it helps.


Thanks for your response, Frank. That cycle looks like the walking
pattern for the legs. Looks like, perhaps, you're using the velocity
vector to determine the stride? Not quite sure what you're getting at
with #4. But, thanks! I want to take a look at that spider again soon.
-(name omitted)-

08 August 2003, 02:56 AM
Ok here is the first stumbling block. Here's the question I posted over on the yahoogroups:

I have a question regarding the spider demo scene on the messiah
disc. Why is it that when in setup mode, one cannot see any of the
objects? What am I missing?

This is Fred's response:

That's an extremely old scene (set up by Frank Aalbers, of Pixar), from back
when even the original messiah was just in beta. For some reason, due to
changes in the software, everything is scaled to 0 in Setup but *keyframed*
to the proper scale in Animate.

So to fix it, just go into Setup, and for every item, turn off XForm and
scale everything (everything that's at 0) to 1. (If you don't turn off
XForm, when you go out of setup everything will be scaled to 2, because it's
all keyframed to be "setup position +1. You could leave XForm off though
and just reset the scale of everything after you exit Setup.)


I am now in the process of doing this.

08 August 2003, 03:19 AM
And if anyone wants to jump in here please feel free. I decided that this is the best place to figure this thing out. This way, anyone whom is looking for the info can find it in it's own thread here.

So here's what I can tell are all the scene components:
A body object
8 leg chains

(each chain consists of 3 segments with a null placed at the end of each leg)
8 Ik effectors (controlling the IK on the legs)
a slider bank (to turn off uatomation on the legs or per leg)
a null - used to cycle through the walk pattern
a null used to move the actual character around.

08 August 2003, 03:30 AM


08 August 2003, 06:56 AM
So in trying to understand the spider scene I have created an identical scene using my own mesh. I copied over all 42 expressions and none are generating errors. This is good.

Ok so the next part is to figure out what all the expressions do.

I attatched the corresponding null SP01_L01-08 x, y and z channels to the later 24 expressions. This caused my scene to duplicate the initial leg ik driver positions of the original scene. This is a good thing, I can now go back into the expressions and try to figure out which numbers to adjust to line up the nulls with my characters legs. Hopefully it will just be a simple numerical adjustment in the expressions to line things up properly.

The good thing in trying to figure out all the expressions is that there aren't that many unique expressions present. 24 of the expressions are 3 sets of 8, one set for each legs x, y and z. There are also a series of 9 expressions related to the slider bank, and there are another 3 on top which are controlling the x y and z of something.

So that only makes it a grand total of about 9 unique expressions to figure out. Not too bad.

I also think 3 or 4 of the remaining expressions are variables to feed into the longer expressions.

08 August 2003, 09:51 PM
Here is a repost of the first expression question I asked over on the other messiah board (yahoogroups). Below that is the answer I recieved.

2. These 3 expressions:




What are they doing exactaly? They are the first 3 expressions
listed in the scene. I am not quite sure I even have an idea of what
they are for.


xwpos, ywpos, zwpos are refering to the world position of xyz respectively.

NOW is a parameter in time.
(NOW+0.1) gets the value from the future
(NOW-0.1) gets the value from the past

@ is "at"

I also had a previous question about the sin function, I got a response about that as well below. This is one of the other expressions in the scene.

As far as the previous mails about Sin, its the mathematical trigonometric function Sine.

Sine of 0 is zero
Sine of 180 is 1
Since of 360 is zero
Sine values range from 0-1, the same for Cosine
Sine is useful for oscilation.

Hope this helps
(name removed)

08 August 2003, 04:39 AM
Before I go any deeper into the expressions in the scene, I decided that I should look and see how the segments and the leg IK are set up in the spider scene. This will help me determine how I should go about setting up my own scene using bones instead of segments.

The legs all appear to have normal IK applied to them, also their position values are all figured out in animate mode, not in setup mode which was my first assumption. Once the legs are all set up in straight lines radially out from the center object, IK is applied to each of the chains. On the bottom of the chain (closest to the body) are the objects that gets anchored. The null at the tip is what gets the IK goal(nulls Arm04 through Arm04_7). The IK goal for each tip null at the end of the arm chains, should be the corresponding SP01_L01 through SP01_08 nulls.

The next thing to look into is to what actually has animation in the scene.

There are only 2 things in the scene that have animation keyframes applied to them.

1.) SP01_Walk

This I believe is the null to control the spiders walk cycle. It is directly tied into and feeding values to several expressions. I will get more into how this works in a bit.

2.) SP01_Base

This null's motion is what moves the spider's overall position

08 August 2003, 05:21 AM
I have figured out what the most simple of the expressions does in the scene.

The expression


is being used to generate the oscilation pattern for the leg motion. If you change the number to a lower number you will have multiple legs performing the same motion, or rather they will appear to be at the same point in the animation cycle. I believe a higher number than 7 either won't effect the pattern or will cause the legs to not oscilate in a perfect cycle. Meaning there may be gaps before it loops. I believe ideally this number should be adjusted, accomidating for one less than the total number of legs on the character you wish to automate.

This expression plays a more important role later in the expression list; in expressions X_SP01_L01 Y_SP01_L01 Z_SP01_L01 through X_SP01_L08 Y_SP01_L08 Z_SP01_L08 to be exact. It is what is feeding the oscillation pattern to the leg driving nulls.

08 August 2003, 06:38 AM
I think I discovered what the "SP01_Cycle_Keyframe" slider bank is for.

To help me realize what I think the slider bank is being used for, I turned off all the coresponding expressions that I thought were related to the slider bank.

Nothing changed to the scene when I played back the animation.

I then decided that since the sliders expressions didn't appear to be doing anything during playback, I should re-enable the expressions and try moving the sliders during playback. That is when I realized that the sliders set the appropriately linked legs back to rest position.

I was wondering how blending to and from automation was to be handled. This slider bank allows the user to dampen automation on any desired leg, at any time during the animation. One just has to keyframe the slider(s) positions. This is great, now one can go from standard Ik motion to automation no problem.

The only problem I can see with this theory is that not all the legs appear to have normal rest positions (a couple are sticking upward). I am assuming that the reason for this is not that this isn't what the slider bank was intended for, but it's more like 2 or 3 legs need tweeking during setup.

Here's one of the expressions giving the sliders the ability to take the legs out of automation:


I believe that this expression is stating: The remaining difference between the first slider and the third slider is the amount of dampening that will occur for the thrid leg's automation. While I may be wrong about how the formula is set up, I do understand what it is doing.

Now which expression is next......

08 August 2003, 04:37 PM
wow. respect.
is this the spider_setup_01 scene?

08 August 2003, 04:56 PM
Yep. I don't know if that's the exact name (spider_setup_01), however it's the one on the messiah install cd.

08 August 2003, 07:16 PM
Man, you're really serious about understanding that spider scene, aren't you?;) I like this thread... it reads more like a journal, really. By the time you're done, you should be a real wiz


One of the things that you pointed out in that scene is that there is a lot of repetition. That's because Frank created it long before p : m 1.5 was release; when there was no messiah : script. When you get it all worked out, and are able to apply the knowledge to your characters, it's a good idea to write a script. It will not only save time in your current setup, you'll also be able to reuse it for other characters quite easily.

08 August 2003, 08:26 PM
Lyle, thanks for the comments. The way I see the spider scene is it's a great and simple (higher math aside) example of messiah's power. It's intrigued me since I first saw it, I just never got around to figuring it out. At first the scene seems a bit daunting, however upon further investigation it ends up there really isn't that much going on.

As for the scripting the setup, I think it's a great idea. That will become the task after I figure this thing out. It will be a great way to learn scripting as well. I hope I end up loving scripting in messiah as much as I love scripting in Maya.

Either way, if and when it gets made into a script, it would be not only a benefit to myself but to everyone else as well.

08 August 2003, 08:28 PM
welcome aboard Lyle. :)

08 August 2003, 02:36 AM
Getting back to the first 3 expressions.




I thought I had figured out what they were for, however I was only partly right. I knew they had something to do with translating some variable to the walk cycle. I don't know why I hadn't thought of it earlier, the purpose of the first 3 expressions is to provide speed data to the cycle. What this means I believe is that the further that the null moves between frames, the faster the legs cycle. It makes sense too, there must be a way to make the legs appear as if they cycling at the proper rate to keep up with the distance that the spider is moving.


So here is the question part of the post I made over on the yahoogroups:


Also, SP01_Base is the null that moves the spider's overall position
in the scene. This null also appears to be the one that determines if
the cycle moves or not. Obviously if the null is moving the spider,
then the cycle activates.

So my understanding of these expressions is that they are a function of position in relation to time. No big secret. Also once the expression is calculated; it ends up being a variable to feed to the other expressions later in the scene. Is this correct or am I missing something? Also, why are these expressions subtracting themselves from the expressions?



And here is the answer I got:


Hi Mike,
while I don't have my copy of studio yet and just lurk, I might be able to
help you here.




This is the difference in position between now and a part in the future,
i.e. the distance travelled between now and now + 0.1. The speed.
If you remember your physics:
Speed is the distance travelled per unit time (i.e. miles per hour).

So, the expressions up there find out the speed of the spider (to a degree,
this is only an approximation).


(name removed)

08 August 2003, 04:26 AM
I took a break from looking at the expressions, and I decided to give attatching my model with it's own IK rig to use with the automation rigging. And guess what. It works. My character walks. It's not pretty by any means, I spent all this time dissecting the scene, and about 20 min setting up a rig consisting of 8 legs chains of bones and one main big huge bone for the middle. I need to do some weighting now.

I am going to wait on posting a test animation till after I can get the gratuitous deforming of my characters head and torso bulb taken care of. The legs are solid, the rest of the body is moving like a huge piece of taffy oscillating along with the legs.

Other things one must consider in trying to use this setup with characters of other sizes and shapes:

The rest position of the IK goal nulls; when I activate the sliders, the leg IK defaults to the origin (0,0,0). This is not desirable and does not look right on my my example. The legs curl all up like a dead bug.

At first I was thinking that I had two options; one being to see if any of the later expressions was causing this and try to adjust numbers in the expressions, the other is to see what happens if I try to adjust the IK driver nulls in setup mode.

As it turns out, what needs to happen is that you need to adjust the IK goal nulls (SP01_L01 through SP01_L08) positions in setup mode. They need to be placed at the same x y and z as the tip nulls of the legs. This allows for a natural rest state for the character.

With the information I have figured out so far, it is possible to reuse this rig on any number of characters.

08 August 2003, 01:36 PM

08 August 2003, 01:52 PM
congrats! Looks like a play-do version of the face hugger Alien crossed with Twiddly Dee. In other words: very original!

08 August 2003, 03:14 PM
I'm not done yet :)

I still have a ways to go as far as figuring out how the remaining expressions are actually working. However I guess now I do have the advantage now that I know what they all do. At least that is my take on things.


I still need to figure out a way so that the back legs done extend through the bulb.
I need to figure a way to limit the cycle within my characters range of motion.

However, both problems may just be adjsting numbers in the later expressions.


I need to figure out a way so that the legs when blended out of automation dont slide back into rest state.

I believe that will be a good ole keyframe the IK handle solution.

Lastly, I need proper rigging on my character. That will be apart from this thread though. I may take the weekend off of the spider rig, and properly setup and weight my character.

08 August 2003, 01:52 AM
I've been following your quest here and I have to congratulate you for sticking with it and actually implementing it on your finger creature thingie. Good job!

08 August 2003, 03:18 AM
Just wait...

If it's at all possible, I will make a script for 6 legs and 10 legs from the 8 leg script. That is something else I am looking into at the moment. It looks possible btw.

08 August 2003, 09:23 AM
Do you mean a centipede set-up?
That would be wicked!

I've got to dive into this a bit. Maybe I cna help.
Can you make auto-rigs already?
It would be great to have a crab-leg auto-set-up.

Facial Deluxe
08 August 2003, 02:34 PM
Don't understand any of your expression research but, the animation is beautiful :p

08 August 2003, 06:37 PM
Actually the weighting is bad on the model so I will disagree to an extent that the results are good.
As for understanding the info, once I get the whole thing figured out I plan on compressing down the info to the bear essentials so that it's more easily understood. My goal is to make this scene easily understood for both myself and others. On top of that I'll have someone proofread my findings as well when I am done.

08 August 2003, 06:43 PM
Dobermunk, be my guest. Help me out, that was initially the intention. It was never for me to sit here and talk to myself. I was hoping that more people were interrested in figuring this scene out. I guess not. However this thread is at 404 views now so someone must be reading it. I also figure I am making some sense since nobody is actually calling me on anything. Who knows though, I have been wrong in the past :)

08 August 2003, 08:54 PM
Last nights results:

I figured out something about the last 24 expressions (3 for each legs x, y and z). What they are doing is applying the walk cycle to the IK goal nulls SP01_L01 - SP01_L08 that in turn is causing the walk cycle to happen because thoes nulls are the goals for each legs IK.

So in the the expression:



The number -0.313 is the x rest position of the SP01_L08 null. As mentioned above, this is the null driving the IK for the legs. Now, in order to use the slider bank channels to blend the spiders legs from automation back to and from standard IK, ideally one will want to use the nulls SP01 - SP08's values from their X and Z channels in setup mode.
I eyeballed the values for my purposes, however I am assuming that one can use other more precise methods (such as another expression) to determine as to where the root of the tip null for each legs x and z coordinates falls in actual world space. This will ultimately allow for smooth blending of the legs back to rest position when you activate the slider channels.

Now in my example, the values I chose to use, the numbers did not work perfectly. I didn't account for leg girth or the fact that all my legs on each side are different lengths.

So for my example I tried a couple of things to get the cycling to work better. I guess the main issue I am having with my mesh is that because the legs are of differing diameters and lengths, I have a lot of clipping occuring between the legs of similar lengths. I also have the back legs slightly clipping through the bulb at the rear of the character.

To combat this I decided to adjust X and Z values in setup mode of the X and Z_SP01_L01 - SP_08 nulls, hoping that I got less clipping. I have yet to find a happy medium however I only tried adjusting things for about an hour last night. Along with adjusting the values of thoes nulls in setup mode, I also need to adjust the values to match the new numbers in the last 24 expressions as well. Again, this will allow for one to blend back to the characters rest position much easier.

The other thing I tried was to adjust the world position of the SP01_Walk null. This however didn't work so well, it made the walk cycle start to look unbelievable. The legs did not give the illusion as much that they were moving at a proper rate as they should have. This adjustment may still be an option, it may just be that I need to figure out a working stride length for a character of my size.

And since I just mentioned it, I believe the SP01_Walk null is there to set up the characters stride length, which in turn is also being used for the characters walk cycle pattern for each leg. Also I think it's being flipped somehow via expressions to compensate for the opposite side.

2 other things:

1.) The last 24 expressions be discussed further once there is more understanding of what is going on in the expression.

2. ) In the example of the X_SP01_L08 expression, there is another value (-0.313), which also hapens to be the same number that is used earlier in the expression (mentioned above). This number being the same as the first value is pure coincidence. I looked at the other expressions similar to this (the other 23) and this one happened to be one of the only ones that had similar values in both places.

The reason I am mentioning this number, adjusting that number as well will allow you to alter the distance the cycle occurs in. I have yet to figure out what this number is doing exactly, however this number as well may be something adjusted to help solve my clipping problems.

08 August 2003, 09:22 PM
Hey, if anyone sees any horrible typos please point them out or email me about them. I just found a whole bunch, I am sure there are more. thoes I found I went back and fixed. On top of that if anyone sees any reference to anything labeled "Elo", and it appears to not make any sense, that is the abbreviation for the nulls and objects I used in my scene. Thoes replaced the SP01 names on things, I mistakengly used thoes names when talking about the spider scene several times. I went back and fixed that issue, however if I use that naming and am talking about the spider, mention that one as well. I don't want to confuse anyone else.

08 August 2003, 09:39 PM
Dobermunk , I was also thinking about a centipede setup. That would be a ton of expressions. 3 extra for each leg. How many legs does a centipede have anyway? I think it can be done though.
Also, there is a expression "SP01_SetOff". Right now that has a value of 7. I think you would just need to set that for a value of one less leg than your character has, so that the cycle will oscillate properly. On top of that you would also need to adjust a couple additional numbers in the last 24 expressions, and also add 3 extra lines similar to the current 24 for each additional leg. Then you would need to create expression's for more slider channels to accomidate for each extra leg. That is just off the top of my head, there is a bit more to deal with though than just thoes things.

08 August 2003, 10:58 PM
I'm very weak at rigging, so be warned.

But I think there might be a way to cheat the expressions on a rig for parallel legs. There's a great zipper rig in the files section, in which two curves are parented to a master curve. The zipper handle is a 'point-along-curve' variable that pulls both curves together (overriding there individual keys).

Methinks there must be a similar way to approach to legs moving in a parallel fashion.

I'm working on a contract for a week, so I'll be a bit rare - I have so much catching up to do on the new messiah release! At any rate, I'll be following enthusiastically from the sidelines and then I'll go take apart that spider!

08 August 2003, 04:33 PM
Cool, glad to see someone else is interested. As for the scene and what I have posted, one should be able to get their custom character working with the spider scene with little problem.

Assuming of course one can actually read around any gramatical and or spelling mistakes :)

I'll also be off the spider till early next week as well. No time this week for the spider, and this upcoming weekend hopefully I'll be camping and far away from the backlit screen.

Also, I want to get my character properly rigged before I go any further with the expressions. I never did get around to that over the weekend.

08 August 2003, 03:53 PM
Ok, one last thing before I concentrate the rigging of my character.

I was able to totally adjust my characters stride length last night, solely with the numbers in the last 28 expressions. Those were the expressions that were mentioned previously, specifically in the post that started with "Last nights results:". So what this means is that my character does not have clipping issues anymore. I also got rid of IK snapping which I may not have mentioned previously.

IK snapping occurred for 2 reasons. The first was because my legs are of various lengths. The second reason which is related to the first; the spider scene had the goal nulls placed evenly around the spider character.

If anyone is wondering what I am referring to when I mention snapping, I am talking about the legs stretching to meet the goal nulls, specifically when those nulls reach a range that the leg chains cannot reach.


I was also thinking that it would be great to have a additional slider bank to adjust the x and z translation limits per leg set in the expressions. That way if you run into problems like clipping with the legs (through themselves or other body parts) one could set up whatever values they see fit via a slider per leg set. Having a function like this included in some sort of script would make the scene very portable.

09 September 2003, 07:21 AM
In case anyone is still following along, I am still rigging the spider. There has been a slight delay in my progress; F-Zero GX and Soul Calibur 2 came out in the same week.

I have finally pryed myself away from the TV, right now I am weighting the legs properly, next I rig the face.

The last part of the rigging that I will be attempting, to get a flexmotion curve to effect the curvature of the characters spine with the legs attatched to the bone chain. Anyone get something like that to work on another model?

I had troubles in the past getting atttched limbs/chains to work properly with the flexmotion effect applied to a single bone chain with limbs. Basically what happend was the limbs were ignored. I may have to try something with muscle bones instead if I cannot get a proper solution working.

What I am looking to do with the flexmotion, I want nulls or curve points to properly allow me to arch my characters back.

And after all that is done I will get back to dissecting the remaining expressions.

10 October 2003, 07:28 PM

I'm the maker of that Spider setup :-)


10 October 2003, 07:36 PM
Originally posted by chalbers

I'm the maker of that Spider setup :-)


Frankie! :) I forgot to mention, great work on the tank in Nemo:thumbsup: I'm really glad to see you're finally getting recognized for your greatness (personal & professional).

Give Amy a shout for me;)


ps: I should have sent this via private email, but I'll get distracted as soon as I get there.

10 October 2003, 07:47 PM
Originally posted by lmilton
Frankie! :) I forgot to mention, great work on the tank in Nemo:thumbsup: I'm really glad to see you're finally getting recognized for your greatness (personal & professional).

Give Amy a shout for me;)


ps: I should have sent this via private email, but I'll get distracted as soon as I get there.

Hey Lyle !!

Yeah ! It was fun , but I only worked like 3 weeks on Nemo ! :-) I did the rigging for that plastic bag. the one they swing around with nemo in it and that rolls over the table and stuff.

How are you guys doing ?

PS: Amy's still listening to that music tape every week ! ;-)


10 October 2003, 09:25 PM
Originally posted by chalbers
Hey Lyle !!

Yeah ! It was fun , but I only worked like 3 weeks on Nemo ! :-) I did the rigging for that plastic bag. the one they swing around with nemo in it and that rolls over the table and stuff.

Cool:D Are you on the Incredibles? I'm really looking forward to that one.

How are you guys doing ?

We're doing fine. Just working as hard as ever. Our schedules are even more full since we released the new products. There is a great deal of interest, right now; everybody seems to be really diggin' the new stuff. I ain't complainin', but it doesn't really allow for sleep. Nothin' new;)

PS: Amy's still listening to that music tape every week ! ;-)


Carla will be very glad to hear that:)

I guess you and I should continue offline (I have a couple of other things I want to talk about). I don't think I have a current address for you, but you can reach me at my address.


10 October 2003, 10:07 PM

Hello Chalbers _ make an Auto-SpiderRig and I'll send a music tape too! Aww, c'mon. At least I'm back on topic!

Great setup - I am in awe of that kind of stuff.
Ever need a model? We can barter!

CGTalk Moderation
01 January 2006, 11:00 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.