Emreu's WoW-to-Maya project.
Posted 09 October 2011 - 10:11 PM
A small introduction: me, I'm a 3D fellow who've got some spare time on my hands. And I've decided to spend at least a part of it to test the feasibility of creating a smooth workflow for sending WoW models and animations into Maya, my 3D package of choice. Reason I'm still pestering this forum is, I figure, my successes or lack thereof might be of interest to someone, somewhere, sometime - I know I looked around for a good while before I started this!
So I thought I'd make myself a thread and post some updates now and then, if nothing else for personal recollection. While I've plenty of time now, I don't want to instill any illusions in anyone - least of all myself - that this project will be "done" or even "done soon". I'll poke on it now and then when I feel like it, until I stop feeling like it. Hopefully I'll have time to develop it so far that I can use it for machinima purposes before that happens!
Now, I'm starting out with the playable races, these being, after all, the Big Deal. The main focus now lies on the rigging part; setting up new characters/variations is easy enough (though, of course, no doubt with some peculiarities here and there) but it's all for naught if I don't get a satisfactory animation system up. There will, no doubt, be particulars to each race/gender-rig, but for now, I'm working on the humanmale and hoping it will be translateable to the other race/gender variations, too. Even if it entails a good deal of manual work, once the system's figured out, there aint all that many races that I'm interested in, anyway. The real worry - or, nuisance - is if I run into stuff I simply have no way of recreating. Particle systems, for instance - all that glowing smoke and stuff in WoW - don't make the cut, but then again, I aint very interested in them. More's the pity for spells and things, I suppose - though I aint looked into that yet - but all that can be dealt with in various other ways.
Anyways, rigging. I've tried to think it through and chop up the task a bit, and here's the list of what I want to accomplish in terms of rigging:
- WoW animations accessible in Maya, via trax clips. Got this nailed pretty swell already, though one needs to make a list of all animations that are cycles to make sure the clean-up gets done proper. And, it doesn't include scalar animation right now - thought I didn't need it, but turns out I might. The clips include upper/lower-body division, so that characters can wave with their upper body but walk with their lower. This is what I've been doing mostly so far. Made a small clip about that.
- An animator-friendly rig, capable of blending with the animation clips. Will probably have to make some sort of triple skeleton set-up, like IK/FK switches - one skeleton to drive the skinned character, and it's constrained to two others: one that takes trax clips, and one that takes manual animation. This is the real meat of the project right here, and anything labeled "success" pretty much hinges on it.
Also, it would be nice with a few more features:
- Some extra controls, particularly in the face. I don't want to redo WoW entirely - that would defeat the purpose - but that humanmale_001 looks horribly stiff without even being able to move his eyebrows.
- Motionpath controls for the root of the character. WoW's animationcycles are great - but they don't move anywhere. Easiest is to just have a rather linear motion; more neat would be a more custom curve-setup, so that feet stay properly still on the ground while the rest of the character moves forward in their cycle-animation.
- Mapping the different race/gender variations to each other, so that they can use each others' animationclips. Who haven't wanted to see their burly taurens swaying like seductive night elves?
- A deformable (scalable) rig. The whole IK/FK-animated-clips switch messes that up a bit, I should think. But for full freedom in the future, it'd be nice to be able to create, say, custom characters with really long arms or real tall and thin. (Males, that is. Got plenty of female rigs fitting that description) Modeling it aint a problem, but animating it along with applying the animation clips?
On the skin side, or character variations; in a rudimentary form, setting up new characters is rather easy. For now, I create new characters/variations/skins in WMV, then send them via 3dsmax and do some cleanup - but it's, like, twenty clicks and it's done. At least, that is, exporting the main character mesh: shoulderpads, helmets and such don't come along for the ride. I thought that'd be no problem, and simply constrain them to the appropriate bones, but on the one shoulderpad I tested - Avatar - I found it actually had a small cloth-thingie that needed to have its skinning and be constrained ground-wise, more or less. So I digged it up in the WMV browser and exported that separately and did some constraints (not included in that youtube clip linked above) but it was a bit of a bother. More than twenty clicks, at least.
But it works, pretty much. A dream is to push things to be a bit more dynamic - simulating capes and such for the fun of it. But that's the fun of it right there: once it works in Maya, one can do extra stuff with it. Perhaps make him a bit fatter, paint a different texture and whatnot. So that not everyone is the same over-muscled mega-hunk. There might be pencil-neck geeks in WoW, too! (Might? Hah.)
The real dealio with character variations is that, this way, every character needs to be set up manually. And that's fine if one is just doing a few, or real specific, characters. But the dream I have includes battle scenes and crowded streets - of course they do, they're dreams! - and so I can't help but ponder automatizing things. Or, on the smaller scale, it's a bother that, should your character decide to put on a hat, one has to import a whole new skin from WMV to get rid of/flatten his hair.
Conceivably, I could tick all the geosets in WMV, export it, but not merge vertices together - that's part of the cleanup process - and overcome the need for cleaning it that way, and wind up with all the separate objects in Maya, but with skinning intact. That's the dealbreaker, there - don't want to manually skinweight every moustache that gets haved off. With a bit of sorting things into lists, one could - perhaps - write a script that randomly selects some appropriate features, makes a mesh of that, chucks the skinning from the separate objects onto the merged mesh, and concocts a suitable texture-cocktail of skin features and tones, hair colour and clothing. The day I can do a script that does all that for me, I'll shout "eureka" and jump through a window. I will fly, of course, for then I will have attained superhuman abilities.
Posted 10 October 2011 - 11:45 AM
I wish you all the luck I can afford to give you for this project! I would LOVE to see the actual variation in the characters. Like you said, humans come in many formats, but only 1 in WoW. The muscle-bound guy is great for Paladins and Warriors, but when was the last time you saw a ripped Mage?
For the variations, you could pull out all the geosets into a single, unmerged Master model file, then write a script in Maya to randomly select and show geosets, and assign textures to them. Might save you some trouble during character generation for background characters.
For the battles/crowd scenes, look into a software called Massive. I managed to get a copy, but I can't make heads-or-tails of it yet. It's suppose to let you program an AI and assign models (with randomized parts!) to instances of that AI. For the random parts, you would set up a library of parts to choose from for capes, armor, faces, really everything, and have it randomly assigned to the AIs. You could teach them to avoid other people, walk around the streets, hate characters marked as Alliance or Horde (yes, you can have separate AIs for each faction) and attack Death Knights with tomatoes. Really, anything you want! The downside is writing the AI. (As far as I can tell...)
Might start a project for that if I ever get some time to work on that...
Feel free to ask me anything, as I will be glad to help in any way I can!
Reboot Universe? (Y/N)
Posted 10 October 2011 - 03:57 PM
When I start getting to the point where Massive becomes of interest - which'd be right after having an acceptable rig set-up in Maya, which could be pretty soon - I'll be sure to give a holler. After all, it'll likely take some rig changes to get Massive working, and Massive certainly is a goal in itself. Be silly for both of us to work that out on our own, wouldn't it?
But tell me - how far have you come? Perhaps it would save us both time if our efforts could be combined? If nothing else, it might be more... inspirational, having a co-conspirator. Not that I'd want to back out of Maya - one does feel most comfortable sticking to what you know - but even so. The more the merrier, innit?
By the way, do you - or anyone else happening to read this - happen to know how much scale-animation there is in the character animations? So far, I've really just found one instance of it where it's actually used, but in many clips there're these empty keyframes that stretch beyond the length of the actual animation, which messes up my system if I'd include -all- scalar animation. It just seems a bit wasteful to include scalar animation for every single bone, if it's basically never used. And when it's used, it's only for special effects, which one might want to recreate anyway.
Posted 10 October 2011 - 08:04 PM
Mostly, I've been focusing on exporting the cities, landscapes and objects that make up the environments, which is needed by Massive so the people can properly walk around obstacles, and have a ground-plane to walk on. I HAVE done some work within LW, but I'm looking at that I probably need to program an addon or two to take full advantage of the WoW models and reduce the number of models I need export for the various characters. (Basically, write a LW version of the script I suggested you write.)
But, so far, I've managed to match WoW lighting and textures, which is great if I want do Machinema that's inter-cut with in-game images/videos.But I also have some great settings for a Better-Than-WoW Lighting/Texture setup.
As for the Animations, not quite sure about the phrases you're speaking of, but if my guess is correct, you only need to collect the animation data for the first branch of bones. A lot of the other bones are used for in-game things, and aren't needed for the model's animations. There is also currently a bug that's screwing up Animation exporting. Not sure what's causing it, but we know it's there. I'm hoping that we'll be able to fix this when we build WMV v8.
Reboot Universe? (Y/N)
Posted 10 October 2011 - 09:55 PM
Now, I've already discarded the bones you mention, but there's some empty animation (key frames doing nothing, same value) on some bones in certain animations. That is to say: in the stand cycle, for instance, all translate and rotate animation on the joints stops at frame 80(ish) at 30 fps; but there's this one bone with keyframes on its scale attributes all the way to frame 159. But I'm starting to think that that particular bone is a special case, and I can be a bit more selective with which bones' scale-animation I want to take into account.
Can't say what the bug in programming-speech is, but as you've maybe realized already, I guess that in WoW the animations are, so to speak, all lying one after another on a theoretical timeline. The effect, then, is that if Stand ends at frame 80 and Walk begins at 81, those joints on Stand's animation that don't have a key on the last frame of the first take's animationline start interpolating towards Walk's start-pose. For cycled animations, my fix is easy enough: simply copy and paste frame 1's animation to the last frame of animation, and the animation's fixed. (I then back a frame in the timeline, keyframe everything, and delete the last frame - it messes up things having it around when cycling things).
For non-cyclic animations, my current hack simply deletes the last frame of animation - those animations will always have to blend into the next animationclip anyway. A more proper fix, I guess, would be to dig up the animation-cycle that follows the non-cyclic ones, and paste in its first frame on the non-cycling's last frame. Then everything'd match up.
Posted 12 October 2011 - 03:14 AM
You get this.Replay it a few times for that nightmare fuel to sink in.
To be fair, I aint tried to figure out just why things explode yet, but I found it a momentous milestone! My setup is a bit messy, so might be I just need to clean up my setup a bit; or, just hunch down and to a custom-tailored autorig.
Posted 12 October 2011 - 02:22 PM
But no more! I think I've figured it out, though now just using a copy of the original skeleton - not my fancy autorig - as the "animation-friendly" rig for quick testing purposes. My constraints on the skeletons were both on Translate and Rotate channels; but the Translate attributes should really-really-really not be interpolated. The whole point of skeletons is to animate (mostly) the Rotate channels, so that everything maintains scale and whatnot. I'll give my fancier rig a try later.
Also, I've come to realize that I'll definitely will want to, as you say, bring all the geosets into Maya and do the character setup there. While it might become less... intuitive, creating new characters on the fly - WMV is awesome for that - it will be necessary to get the changes one do on one mesh to carry across to all the rest. It'd be silly making an eye-brow setup for every single different human male one import, after all. Besides, with Massive approaching - I think I'll look into that next, after getting this rig to work (holdin' my thumbs for tonight) - it'll have to be done sooner or later.
Posted 12 October 2011 - 05:38 PM
Well, not entirely - but I'm sure I can make it work, now, layering the abAutoRig on top of the original skeleton, and blending the WoW-animation with custom animation. There's a bit funkiness in there - shoulders and fingers not rotating quite splendidly, but that's just a question of fixing the new rig's skeleton and constraining the right things to each other. In the end, it would be nice to be able to snap the abAutoRig to the "result" skeleton's position, to make transitions easier - in that clip, the feet sink through the ground as they interpolate towards their new positions, and I'm not quite sure how to deal with that, except just more controlled transition-blends.
It's should also be easy enough to make it so that only parts of the character "blend" - that is to say, one could pose one's entire character, then "free up" the left arm to make a WoW-animation-take wave or something. Or the other way around: have the entire character run in its WoW-animation cycle, but keep certain rig-parts custom-animated. (Head looking some direction, a hand clutching a wounded shoulder or whatever, while the rest of the body keeps running.) At least theoretically, since I'm now only taking a few joints' translate channels into account, so it's mostly just rotates. Will see about that later.
No, I think it is Massive-time now. Getting bored of Maya, and whatever I learn in Massive, it will surely mean rig-changes. Dang it, Kjasi, you've got me all Massive-crazed!
Posted 14 October 2011 - 05:38 PM
An explanation might be in order to, ah, reveal the hidden - very well-hidden - genius. It's twenty-some humanmale skeletons, inside Massive, cycling between doing the Wave and Sprint animation. It could have been two thousand with a drag on a slider. Though there's hardly a full cycle in that clip, the characters go on happily alternating between those two motions, wandering off into the sunset. (Those two because they happened to be open in my Maya scene at the time.) For the Sprint part of the cycle, the characters also move forward a bit, but one will eventually want to animate the whole-body-forward motion into the clips inside Maya. So as not to produce these kinds of results, heh.
I tried a bit shoving the geometry in there, too, but a script to export the skin weights from Maya to Massive didn't work perfectly, so I'll have to clean that up. Also slightly annoying is that I aint figured out how to render these scenes with... well, anything more interesting than what you saw in that clip. Mental ray's my preferred renderer, but I'm sure I'll figure something out once I look into it more closely. Another, more interesting question, is whether I'm coming to the point that I'll want to clean up the WoW-exported skeleton. While I think it should work for simply cycling the animation clips it has, and do some transitioning, Massive does have dynamics and ragdoll functions that looked pretty easy to set up... at the very least, one'll want to figure out which of those dummy-joints that don't really do anything, and get rid of those. I guess they're no biggie with twenty characters, but what if there was twenty thousand of those dummy joints hogging down the simulation?
But, later. My next goal is to get a mesh in there that works, and see about setting up a simple stand-walk routine of WoW animation clips, while avoiding (but staying relatively close to) other agents. And, Kjasi, if you're getting into Massive, too, gimme a shout. 'Cause this is definitely work that could be shared - makes no sense both of us setting up entire Massive agents and animation trees and brains for basically the same purposes.
Posted 14 October 2011 - 08:15 PM
Things have been busy lately, so I haven't had time to work in Massive. But my goal is to build a single brain that basically runs all the functions and all the logic needed for every character, using toggles (or something similar) to set up the character. Included in there will be a Horde/Alliance toggle, which will make building fighting armies rather easy.
If I can't do that with a single brain, then I'll build a single, basic brain, then build off-shoots for each class with a faction toggle.That way I can have Boomkins acting like Boomkins, Prot Warriors acting like Prot Warriors, and Resto Shamans acting like Resto Shaman. And, of course, citizens, vendors, and so forth.
Reboot Universe? (Y/N)
Posted 16 October 2011 - 04:15 PM
In other news, sat down a bit and sort of met the goal I mentioned. It aint particularly pretty, but it works, which is all I wanted to demonstrate. The skinning, some basic action tree, and a bit of crowd movement and collision avoidance. Considered going fancy and adding in some character variation just-because, but meh.
No, the two big questions remaining to me now is, first, how well (or rather, how poorly) the current skeleton will hold up to dynamics - after all, it'd be awesome to rain down arrows and death on heaps of poor humanmale_005s and watch them die in different ways. And, second, how the heck to render it all prettily. Preferably, I'd render it with mentalray - as that's what I use in Maya - but I've had no luck so far setting that up. Might be I need the standalone version of MR; information I found is surprisingly scant and nebulous on the subject.
Think I'll use next week to iron out that kind of stuff, and perhaps make a small clip to showcase my progress. After that, this project will be on the backburner for a while. Other things coming up.
Posted 19 October 2011 - 02:12 AM
I've even begun looking into simply importing the sims into Maya. Found a plugin that was supposed to be able to do it, but it aint loading, so now I'm considering just doing it myself. After all, it's easy enough to export the skeletons with their animation out of Massive. Annoyingly, the geometry doesn't seem to carry across (that would, after all, have been ideal) so now I'm thinking about letting Massive do the animation on the skeletons only, then chuck it into Maya and randomize and skin characters onto the skeletons. While that'd be hands-on - really, the stuff I've read about setting up renderers for Massive has been out of my depth - I'm none too pleased.
Did just that; exported the agents' animation into Maya. And lo! - the results!
It was a bit annoying, though - importing just 100 skeletons with 100 frames of animation from .fbx files took near five minutes. That was, though, using just one processor. Not being the most techy fellow, I figure I can just open four more instances of Maya and import away.
After importing the 100 skeletons and their animations, I made a quick wee script to skin the same man to them all - but, potentially, this stage could be developed into a full-fledged character randomization script. This might mess a bit with you if there're things in Massive to distinguish agents - this way, everything is re-randomized. But I assume one could choose to export only one agent-type out of Massive at a time, to make sure there'll be no old grannies thrown into one's horde of orcs by chance.
To make up for the puny crowd, then I duplicated the whole gang a couple of time, made instances of them. Potentially, I guess, one could do a bit of cheating that way - simulate a batallion or two in Massive, then port them into Maya, constrain them to the ground, and duplicate them. Assuming the ground's nothing fancy, that'd be a... well. Possibility. It seemed to be a bit less heavy-weight. Just the 100 skeletons and their 100-frame animations created a 400 mb big scene file in Maya. Optimizing the skeletons a bit might help with that.
Finally, rendering was quick enough. A bit disturbing was finding that everyone's left foot's freaked out after it was all done, but feels like something easily fixable.
Conclusion? Chucking everything into Maya seems... doable. I'll anyway want to create a character randomization thingie inside Maya, so there's no real biggie on that front. No, it's more the added time and setup that is annoying, plus the fear that it'll get a bit tricky to have absolutely HUGE crowds - but, for those epic 100,000-men battle scenes, one'll have to cheat away anyhow. Having failed so far to fix a proper renderer for Massive, this begins to seem like the easiest alternative.
On the up side, getting everything into Maya just makes it easier to make it all stick together.
As an aside, I did a quick test just deforming the character a bit - that is to say, I began the quest for the non-Schwarzenegger mage. And my conclusion is this: it's easy. It's seems perfectly possible to translate around the joints of the characters and still apply the WoW-animation on top. However, if one starts to translate joints around, it becomes a whole new skeleton, and will need a new animator-friendly rig, and a new setup in Massive. Easier is to make smaller changes to the original model, leaving the joints as they were, thus creating geometry-variations. But it gets a bit funky if one, for instance, wants a really skinny human male. Then it might be time to create a new skeleton-variation. But it's rather flexible, so whatevs.
Posted 27 May 2012 - 03:21 AM
Other things got in the way, obviously. But I aint forgotten, and I aint lost interest. I'm still kickin' and such. Well, rigging, rather. To pick up my monologuein'...
What with having left the project back when in a bit of a hurry, I kind of needed to rediscover it for a while. Massive, I decided, was too annoying to go back to - especially as I saw something about the new version of Softimage having some native crowd sim. But first step was rigging, anyway. Here's where it's at.
What it shows is a character doing, first, ordinary wow-animation, full-body, then two wow-animations split on upper and lower body; then some wow-animations on most bodyparts but with an arm detached and hand-animated. (He's doing a simultaneous cube-pickup and a bow there in the end. Why, is my beautiful animation not wonderful?) As that video is, like, a hundred frames and uncommented, here will follow a description of why it took me, urgh, days of rigging to accomplish it. For one thing, I aint a great rigger. For another, there were a great bunch of things I wanted the rig to be able to do. And mostly, my friends made me buy D3.
The first, obvious, distinction is being able to blend between your own hand-animation and imported wow-animcycles. That's easy. I did that way back. Just constrain a "skin-skeleton" to a "rig-skeleton" and a "clip-skeleton" in what's more or less a standard (Maya) IK/FK switch.
Stuff got weird when I wanted to be able to do this selectively. I want to be able to use wow-animations as much as possible - but to offset them, to override them on specific bodyparts, etc. And for my controls to kind of follow along the animation of the actual skin-skeleton. Or not, depending on if I don't want them to. Oh, and I wanted an actual IK/FK switch on my rig. And I wanted to be able to, what's the word, "lock" and unlock IK controls - so that, if one wants to, the hand will stay stuck where it is, or alternatively follow along the animation of the rest of the body.
It all got pretty technical. Some of the stuff I wanted turned out to be mutually exclusive, at least the way I built up the rig, so I decided to just go ahead and make a small test. Which was the video you maybe watched, link in second paragraph. Conclusion was that it was a bit clumsy, but it gets the job done. I'm gonna do a more fullscale test next and see if I'll want to rebuild the rig.
Which would suck.
Other things on the to do list: improved facial rigging and character customization in Maya.
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users