Page 1 of 4
Call for XSI test models
Posted: Mon Mar 28, 2005 5:14 pm
by sinbad
I'm getting to the final stages of the 'official' XSI exporter now, and I'm looking for test models. I'm looking for anything and everything really; any and all test models will be gratefully received. I already have a couple, but I'd like more.
Here are a few things I'm particularly interested in testing:
1. Skeletal animation based on non-chain objects, e.g. nulls. I understand this is fairly common practice, especially when mapping down from motion capture data (the 'master skeleton', implemented as chains) to game skeletons (implemented as nulls). I'm pretty sure my exporter deals with this, but I'd like a decent test.
2. Meshes which were defined using higher-order surfaces (e.g. nurbs). The exporter only exports PolygonMesh, but having played with this it's easy to create a polymesh from a surface, and they stay nicely in sync so I don't see any reason why this wouldn't work. However I'd like to see some 'typical' examples.
I'm assuming based what I see in XSI's workflow that when creating multiple animations for a character, you partition up the timeline into multiple chunks, e.g. frame 1 to 60 is 'walk', frame 61 to 90 is 'shoot' etc. This is how other modellers I've seen do it, but I have no experience of XSI's NLA feature and I'm a little suspicious that it might provide a better way. I'm implementing an animation splitter based on the timeline partitioning, just like the 3DS exporter, but I'd be interested to hear people's opinions.
Thanks
Posted: Tue Mar 29, 2005 9:30 pm
by Rixeh
Sinbad can we have the ability to export individual animation clips? (I like to separate all the different animations for a character into clips -- Walk, Run, Jump, Crouch, etc.) Say, then you could select which clips to export? At least this would make things easier than exporting one massive timeline with hundreds of frames (and digging through everything until you found the start/end times for each ani.)
Thanks dude, XSI owns meh!
Posted: Tue Mar 29, 2005 11:35 pm
by sinbad
This is the kind of feedback I'm after. Where do you define the clips? I rummaged around and wasn't quite sure what I was doing (I'm no animator) so directions would be helpful.
So far I've just added a widget to let you list animation names and start/end frames so the exporter will split it for you, but a slicker way would be good.
Posted: Wed Mar 30, 2005 6:11 am
by Rixeh
Hehe umm actually I'm still learning XSI animation as well...

In maya they're called clips, I think XSI calls it 'tracks'? Application>Views>Animation mixer...
Ill let you know soon as I figure it out.

BTW I'm gonna PM you this model:
http://www.distant-sun.net/modules.php? ... =0&thold=0
It's made of polys and NURBS curves, and it's got a huge polycount as well as about 25 individual pieces.
Posted: Wed Mar 30, 2005 6:19 am
by nfz
very nice model.
Posted: Wed Mar 30, 2005 9:15 am
by zarthrag
Sinbad, you're referring to the animation "mixer". Which is covered in the community tutorials at softimage's site. The way my scuttlepod model works, the animations/poses are stored as clips, you can then arrange and mix clips - and export them. Should be perfect for OGRE. (if the one I sent doesn't work that way, kick me for another one.)
Basically, the "frames" at the bottom are used to create the animation itself. You then "cut" it from the (global clip?) and store it in a "clip" in the mixer. Poses can be stored as well as animations, and those can be blended together in much the same way ogre can - so there is no need to separate animations by frame numbers and yada yada.
Here are some links on how it's done, a quick browse should shed some light.
Creating a walk cycle:
http://www.softimage.com/education/Xsi/ ... rial09.pdf
Using the animation mixer:
http://www.softimage.com/education/Xsi/ ... rial09.pdf
Posted: Wed Mar 30, 2005 1:21 pm
by sinbad
Aha, ok thanks, I'll definitely investigate this. I'd like to support the 'XSI way' of doing things as much as possible.
@zarthrag: I didn't notice that in the scuttlepod mesh, but then I didn't really know what I was looking for. I'll have to check it out when I get home. Your model has been invaluable to me as a test BTW, thanks muchly

Posted: Fri Apr 01, 2005 3:06 am
by Rixeh
Allright, the Maya -> XSI exporting pipeline is G A R B A G E.

I swear, Alias released Maya 6.5 JUST to break compatibility with every other software package on the planet. And that's INCLUDING Maya 6.0. Bah.
Basically that RSX model won't convert without some severe problems -- which may end up giving you false positives when you try to use an exporter. So here's a mesh/rig of a Raptor (like, jurassic park dinosaurs raptor). It's not mine but it was released 'open' sooo here ya go:
http://www.distant-sun.net/files/Raptor.rar
Posted: Sat Apr 02, 2005 2:56 am
by zarthrag
@sinbad: I sent another (recent) model just in case. I haven't had time to model as much as I need to because I'm behind on some coding - but there will be more soon.
Posted: Sat Apr 02, 2005 4:02 pm
by sinbad
Thanks, I've learned a lot about XSI's approach to animation (which I like) in the last couple of days and am working out the kinks in the skeleton export as we speak. My standard test, 'Mr Bendy', is now exporting fine, and I'm picking up the list of animations from the list of Actions registered in XSI rather than requiring the user to split up the timeline.
I haven't done anything with the animation mixer - it seems this is for setting up a single 'whole sequence' animation which isn't what we're about here. I think that by listing the Actions in the exporter window (which you can then click to enable / disable in the export) works well - it just means your Actions have to be self-contained, you can't combine multiple actions in the mixer for export. Given that most models will need multiple animations I think this is the right approach.
I'm still having a few issues with the animation of the Scuttlepod, but that's precisely why I wanted examples.

Posted: Sat Apr 02, 2005 9:57 pm
by Rixeh
Posted: Sun Apr 03, 2005 12:45 am
by temas
ph33r

Posted: Sun Apr 03, 2005 11:08 pm
by sinbad
@zarthrag: Ok, I have a small issue with the way the Scuttlepod is set up. I've been trying to support all modes of skeleton setup in XSI, not just Chain Root/Bones (since anything can be a bone in XSI), whilst at the same time trying not to export anything which is not used (because too many bones is expensive and makes it hard to use hardware skinning) .
So, firstly picking up all the bones which have vertex assignments, then ascending the scene tree until I hit the root, including any bones I might have missed (not directly assigned vertices, but structurally are required to represent the animation correctly). All goes swimmingly on my simple tests, but the Scuttlepod causes me problems. On every leg, there is an effector at the 'knee' which is all well and good. However, the foot is then a separate bone chain, as a child of the effector. That means in order to represent the animation correctly, I have to include the effector. The bottom part of the leg then has it's own chain root as a child of the (in the same position as the effector).
Now, I think I can eliminate one of the effector and the chain root everywhere that happens, by combining any animation they have. I'm just not sure how get my code tp figure that out. I don't think I can just ignore these effectors, because they do include animation (it just position changes). I could do if it didn't have any children, since all it would be doing is changing the pos/rot of the chain, but this making other chains a child of it has me thrown a bit. Is this normal?
I need to delve a little deeper into the respective animation data of the effector and the chain below it to see if I can figure out how to rationalise it . I don't just want to export everything and pray, because redundancy is really important to eliminate in skeletons. Any feedback welcome.
Posted: Sun Apr 03, 2005 11:57 pm
by zarthrag
That is kinda tough, I originally made the foot a part of the leg chain, but the original concept drawing called for a "spider-like" motion, and that was the only way it would seem to IK correctly. The parenting was meant to ensure that it simply stays together for animation purposes - that way the leg could be independantly moved without moving the entire leg (attack animations, climbing, etc.)
I couldn't find much about anything that wasn't directly related to bi-ped animation - so for all I know those legs could be dead-wrong in construction. What other way is there to attach it so that I can still move it separately?
I've been meaning to "redo" that entire model as a single envelope anyway, maybe this is a good excuse. (ugh) It's my first usable model in XSI, and while WAAAY easier than Maya 6, it's been an interesting experience.
I'm off to "Joe's Crab Shack" with some friends, so I gotta cut this short. I'll work on a nwe model tonight and get it to you ASAP - I'll expressly avoid parenting the foot-bone. But I need to figure out how to duplicate the effect. (Gee, I wonder how crab legs would bend...)
Posted: Mon Apr 04, 2005 2:43 am
by Bill
sinbad wrote:Now, I think I can eliminate one of the effector and the chain root everywhere that happens, by combining any animation they have. I'm just not sure how get my code tp figure that out. I don't think I can just ignore these effectors, because they do include animation (it just position changes). I could do if it didn't have any children, since all it would be doing is changing the pos/rot of the chain, but this making other chains a child of it has me thrown a bit. Is this normal?
In one of my versions I made the end effector a bone. However, I decided it shouldn't be and pulled it. If you look at the bone chain the end effector is at the same level as the root. I think it's mainly there to give the animator something to grab on to to control the bone chain.
I thought about doing what you're doing and making everything able to act as a bone, but I just got dizzy and fell out of my chair.
I did make the root objects bones though so that chains of bones could be stuck together. I can handle a tree structure of bone chains this way.
Posted: Mon Apr 04, 2005 2:52 am
by Bill
zarthrag wrote:That is kinda tough, I originally made the foot a part of the leg chain, but the original concept drawing called for a "spider-like" motion, and that was the only way it would seem to IK correctly. The parenting was meant to ensure that it simply stays together for animation purposes - that way the leg could be independantly moved without moving the entire leg (attack animations, climbing, etc.)
I'm not 100% certain about what your talking about and I haven't tested my answer. Nevertheless here goes. I think there are two things you can look at. One is to have a bone for the foot that is part of the leg chain and then declare the "ankle" a pseudoroot. The other is to create another bone chain that is attached to the last bone of the leg chain.
Hey I'm guessing here. Don't hold me to it.
Posted: Mon Apr 04, 2005 2:57 am
by zarthrag
Bill wrote:
...but I just got dizzy and fell out of my chair.
As I am about to do! What is the "correct" way to model a wrist? I may have to revisit the tutorials and build the model accordingly. I'll have to beat on it a while to find out.
BTW: Joe's Crab Shack is great. Loud and hard to hear at times, but great!
Posted: Mon Apr 04, 2005 5:20 pm
by Bill
zarthrag wrote:
What is the "correct" way to model a wrist?
Beats the hell out of me. However, you might take a look at the built in character rigs. Animate->Create-Character->Biped Guide
Posted: Mon Apr 04, 2005 5:59 pm
by sinbad
Thing is, if you can do it in XSI, I'd really like to support it. I want to give the artist as few rules as possible - if they can do it, I want to be able to use it (within reason).
I saw that the end effector is always a child of the chain root in XSI 4.2 which does indicate that it's supposed to be 'detached' from the rest of the bones in the chain and just influence them. This means the 'derived' animation is baked into the bones, which is great - I can safely ignore the effector, which is what my code does by default since it only trails 'up' from bones which have vertex assignments, therefore it would never traverse an effector).
The fact that you can then go and base further chains underneath the effector is a headache because this pulls it into the traversal, but I'm wondering if the chain root that is underneath it actually has any animation to it at all. I'm guessing probably not. So maybe my intended technique of identifying 'bones' (which can be anything) which do not have any varying kine parameters over all animation sources, then eliminating them (and propagating any transform they were adding to the children) might work. I think this will effectively eliminate the chain root below, meaning we'll be back to the 'normal' number of bones for this setup. Needs some serious testing...
Posted: Mon Apr 04, 2005 7:53 pm
by zarthrag
Simply put, making the effector of a node the parent of the root of a node is common practice in XSI. The tutorials I've looked through pretty much encourage doing this because it's the one (easy) way to ensure your skeleton works as expected.
The way the tuts present it, it's the "end of the chain" which can be used as the point of reference for new geometry. (Create a two-bone arm, then attach the root of a one-bone wrist to the effector, then attach the 3-bone fingers to the effector of the previous and blah-blah-blah.)
What I *did* notice playing around is that making the root a child of the last bone in the chain works too. (Cut "root1" out of the effector and make it the chile of "Shin Bone". That didn't seem to mess up the movement at all. If that's exportable, then maybe "reforming" the hiearchy pragmatically may be ok (for most circumstances, I expect.) Simply make the root of the next chain a child of the last bone, ignoring the effectors.
Additionally, it seem HL2/Unreal3 (which has also recently adopted ModTool) use *lots* of bones in hiearchies. A preview video on the site mentioned using models with over TWO HUNDRED bones in a model!
That's some scary stuff considering that I think they really are a hiearchy. (In typing that, I just realized my model isn't parented by a null...) It took me quite a while just make those 3-bones per-leg work/move the way I wanted. From what I can tell, the chain root doesn't have an animation applied to it, (but in XSI, it's "safe" to assume little.)
Posted: Mon Apr 04, 2005 8:11 pm
by Bill
Another thing to worry about is the animation mixer. In XSI if you have two bone chains that manipulate a node, then the motion of the node is sort of the average of the motion due to each bone chain. In Ogre the motion of one bone chain is applied and then the motion of the other is applied (I think). You get very different results.
I choose to ignore the problem and suggest that people not do that if they are going to export to Ogre. You might want to give it a try however. The idea I was thinking of was to generate a third bone system to export that behaved like the mixing of the other two bone chains.
Another problem is that Ogre always take the shortest path while doing rotations. So a rotation from 0 degrees to 360 produces no motion in Ogre. In XSI, however, it would rotate the object one revolution.
And yet another problem is that motion in Ogre has a constant acceleration and the motion is in a straight line between point a and point b. The is not usually the case in XSI as the motion is defined on a curve that is fit to the keyed locations.
I ignored these too. But I think what you could do is add extra keys to capture the XSI motion.
In my lazy way I decided to rely on the users knowledge of Ogre to set up the bounds to the motion in XSI so as to not describe anything that Ogre couldn't handle.
Posted: Tue Apr 05, 2005 4:23 pm
by RoundSparrow
Bill wrote:
In my lazy way I decided to rely on the users knowledge of Ogre to set up the bounds to the motion in XSI so as to not describe anything that Ogre couldn't handle.
I think we all agree that the goal is to have at least one exporter that really tries to cut down on the limitations and sets the examples for all the rest.
A lot of people are waiting on the sidelines for the hard work here

Posted: Tue Apr 05, 2005 5:21 pm
by Bill
heh I'm sure Sinbad will do a bang up job.
One other thing you have to watch out for that I forgot to mention. XSI doesn't require that all nodes of an object be under control of a bone. In Ogre, if one point of an object is under control of a bone, all points on the object have to under bone control. Of course, I rely on the user knowing this and creating a dummy bone for the rest of the object that isn't animated. However, one could automate the creation of a dummy bone to handle the unenveloped points.
Posted: Tue Apr 05, 2005 8:00 pm
by sinbad
Bill wrote:Another thing to worry about is the animation mixer. In XSI if you have two bone chains that manipulate a node, then the motion of the node is sort of the average of the motion due to each bone chain. In Ogre the motion of one bone chain is applied and then the motion of the other is applied (I think). You get very different results.
By default OGRE blends evenly between animations - see Skeleton::setBlendMode, which defaults to ANIMBLEND_AVERAGE, but can be set to ANIMBLEND_CUMULATIVE if you
want to add animations together instead. You can change the relative weight of each animation, but the absolute values don't matter, only the relative ones. So weights of 0.5/0.5 on 2 animations will give you the same result as weights 2.0/2.0 for example. In any case, I don't think you'd be looking to export the contents of the mixer, since it seems to be a 'final sequence' kind of compositor rather than discrete character animations. Unless you were doing it for cutscenes, I guess.
Another problem is that Ogre always take the shortest path while doing rotations. So a rotation from 0 degrees to 360 produces no motion in Ogre. In XSI, however, it would rotate the object one revolution.
Hmm, this was done because all other modellers assume that the shortest path is always used, so this is the default.
And yet another problem is that motion in Ogre has a constant acceleration and the motion is in a straight line between point a and point b. The is not usually the case in XSI as the motion is defined on a curve that is fit to the keyed locations.
Again, this is configurable. Just change the Animation interpolation mode to IM_SPLINE and the effect becomes extrmely close to what you see in XSI.
Posted: Tue Apr 05, 2005 10:36 pm
by sinbad
Ok, this is just getting worse
My hope that the effector's effects would be replicated in the bones themselves, or otherwise be redundant was in vain. Worse than that, I discovered that much of the animation in the Scuttlepod appears to be encoded in the 'up vector' objects, not in the actual bones. I've been poring through the items in the action source trying to figure out why the exporter doesn't seem to do anything for the scuttledpod (or very little) yet works fine for my simple tests, and this is why. So the vertices are assigned to bones, and those bones DO move, but only under the influence of these external objects which have animation tracks on them. As far as XSI is concerned most of the bones themselves are not animated. Quite how I figure out what the derived effect on the bones is I have no idea.
[edit]Ok, I think for the sake of my sanity I'm going to have to lay down some ground rules even though I didn't want to. That is that even if you use derived techniques like up vectors and effectors, that you bake keyframes for the bones before exporting. I can't see any other way of doing this without going absolutely spare - I've been trawling about inside XSI's animation internals for several days now and feel like I'm getting nowhere

Thoughs?[/edit]