MechWarrior 4 style animation with OGRE?

The place for artists, modellers, level designers et al to discuss their approaches for creating content for OGRE.
Post Reply
User avatar
Gaffeghan
Greenskin
Posts: 110
Joined: Sat Nov 13, 2004 10:37 pm
Location: Ballston Spa, NY
Contact:

MechWarrior 4 style animation with OGRE?

Post by Gaffeghan »

I've asked this question several times, but never quite gotten a satisfying answer. So I'll ask in a different forum

Is there any easy way to make MW4 style 3d animation that is both compatible with OGRE, and economical renderspeed wise? I ask because this kind of animation is a large part of my game project and I need to know what to tell my 3d modelers to do. I myself am very familiar with the LightWave modeler and scene layout, and am eagerly awaiting the LW .mesh/.skeleton exporter plugin currently in development by "P".

Also, I've searched but haven't found anything helpfull: can the .scene format contain any animation?
User avatar
haffax
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 4823
Joined: Fri Jun 18, 2004 1:40 pm
Location: Berlin, Germany
x 8
Contact:

Post by haffax »

Maybe you never got a useful answer because many people (like myself) have not the slightest idea what animations in MW4 look like and what makes them distinct. ;)
Could you describe them a bit?
team-pantheon programmer
creators of Rastullahs Lockenpracht
User avatar
RyanN
Halfling
Posts: 82
Joined: Thu Aug 19, 2004 6:41 am
Location: Victoria, Australia
Contact:

Post by RyanN »

i think hes talking about weighted animations, ie: Unreal2 when the characters would track you dynamically.
User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19269
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 67
Contact:

Post by sinbad »

I'm still no wiser. Weighted animation? That could be interpreted multiple ways - multiple weights on bones (supported), weighted blending between multiple animations (supported). As tanis says, explain what you mean and perhaps you'll get an answer.
MrSandman666
Gnoblar
Posts: 18
Joined: Sun Dec 05, 2004 6:34 pm

Post by MrSandman666 »

My guess would be that he wants to know about something like the following:

In Mechwarrior it's possible to move several parts of the mech seperately from each other. A mech consists of several different parts: torso, legs and two arms. These parts are further divided. Most notably the legs: they have a platform beneath the torso to which they are attached. Each leg is subdivided into - I believe - two or three segments (depending on the model) connected with joints, much like a knee. Then each leg has a foot with a few toes. This foot is movable on a ball joint and the toes can move up and down a bit. That way the mech is pretty flexible. For example when it stands sideways on a slope it can keep the torsoe balanced by tilting the leg platform and extending the legs independantly as well as tiltint the feet sideways.

Another nice effect is that you can move all the body parts indepentantly. You can turn the torsoe to the left and up while the legs are still running into the same direction, for example. Or you could move the arms seperatly (though that is not possible in this specific game). You can also adapt the "gear" (the legs) to the terrain and do things like that. The leg animation is really the most impressive thing about the mechs, in my opinion.

What's special about this is that it's not just blending a "turn" animation with a "run" animation. At least it feels like the mech is really composed of several distinct parts, not one single mesh that gets bent with every animation. In the older Mechwarrior games you could even blow a mech apart (like blast of a leg or an arm).
There is no polygon stretching going on as the torsoe turns, unlike the classical animations of single-mesh humanoid models.

This is actually I've been looking for myself and I'm pretty sure it's doable in Ogre, I just don't have a clue as to how...

A few screenshots to illustrate my incoherent rambling:
http://www.gamespot.com/pc/sim/mechwarr ... l?page=149
http://www.gamespot.com/pc/sim/mechwarr ... l?page=134
http://www.gamespot.com/pc/sim/mechwarr ... ml?page=94
http://www.gamespot.com/pc/sim/mechwarr ... ml?page=75
http://www.gamespot.com/pc/sim/mechwarr ... ml?page=55
Mr. Sandman bring me a dream...
User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19269
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 67
Contact:

Post by sinbad »

Ok, so I can think of 3 approaches immediately:

1. Make each section of the mech a separate entity, each with a separate skeleton. Make one the 'main' entity (maybe the legs) and attach the others to bones on the main skeleton.

2. Use a unified entity with one skeleton, then create separate animations which only include the parts of the model. E.g. 'legs_walk' only has tracks for the legs, 'leftarm_wave' only includes tracks for the left arm. Then change the animation blend mode on the skeleton (skeleton->setBlendMode(ANIMBLEND_CUMULATIVE)) so that animations are just 'added up' afterbeing multiplied by their individual weighting, rather than being averaged. Then just enable all the animations you want to combine at once, and each will animate their own part of the skeleton.

3. Use a regular skeleton with normal animation, but take manual control of individual bones (see the article in the wiki)

My preferred option would be 2.
machinimist
Halfling
Posts: 65
Joined: Sun Feb 06, 2005 12:55 am

Post by machinimist »

i think he means physics driven animation (realtime ik,...).
User avatar
Bren
Goblin
Posts: 215
Joined: Tue Jul 08, 2003 4:41 pm
Location: 0,0,0
Contact:

Post by Bren »

sinbad wrote:2. Use a unified entity with one skeleton, then create separate animations which only include the parts of the model. E.g. 'legs_walk' only has tracks for the legs, 'leftarm_wave' only includes tracks for the left arm. Then change the animation blend mode on the skeleton (skeleton->setBlendMode(ANIMBLEND_CUMULATIVE)) so that animations are just 'added up' afterbeing multiplied by their individual weighting, rather than being averaged. Then just enable all the animations you want to combine at once, and each will animate their own part of the skeleton.

My preferred option would be 2.
Given this, would it still be possible to "cross blend" the legs from run->stand while the left arm is waving? I would guess not.
User avatar
Nek
Gnoblar
Posts: 21
Joined: Mon Aug 18, 2003 6:06 pm
Location: Houston, Tx
Contact:

Post by Nek »

If you make each section a different mesh with its own set of animations like sinbad suggested in point 1, you could easily have the arms run the "Wave" animation while the legs do the "Transition from run to stand" animation and the torso doing a "right twist" animation for example. Just attach the models together like voltron and away you go!... just don't get served. :wink:
User avatar
Gaffeghan
Greenskin
Posts: 110
Joined: Sat Nov 13, 2004 10:37 pm
Location: Ballston Spa, NY
Contact:

Post by Gaffeghan »

first: whoa! never gotten that many replies so quickly

second: i realize my question may have left many people in the dark as to what i was talking about: animation that instead of bending at joints, rotates like a robot's arms would as apposed to stretching and contorting like an organic being... but ty for all the good input, i do require parts that rotate sepperatly from the actual object under control. so that's helpfull. MrSandman666 understands my question.... somewhat disturbingly... but nonetheless, that's pretty well what i meant:
There is no polygon stretching going on as the torsoe turns, unlike the classical animations of single-mesh humanoid models...
that's my question pretty well... (how??)
User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19269
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 67
Contact:

Post by sinbad »

This is easy to achieve - just assign all vertices on a single 'block' of the mech to a single bone at weight 1. Stretching occurs when vertices are weighted to more than one bone, or when vertices in a set of faces are weighted to different bones. If you weight the whole block of the upper arm to one bone, it won't stretch. You problem is probably that you're skinning it like a character mesh - don't. Manually assign the bone weights to give the kind of rigid setup that character skinning is usually trying to avoid.
User avatar
Gaffeghan
Greenskin
Posts: 110
Joined: Sat Nov 13, 2004 10:37 pm
Location: Ballston Spa, NY
Contact:

Post by Gaffeghan »

awesome, that answeres my major question. just gotta make lightwave do the same thing so i can see the final result befor it's in OGRE... that'll be fun.. :? :roll: thanks for the prompt responses, all of which have been very helpfull. 8)
User avatar
Gaffeghan
Greenskin
Posts: 110
Joined: Sat Nov 13, 2004 10:37 pm
Location: Ballston Spa, NY
Contact:

Post by Gaffeghan »

sinbad wrote:Manually assign the bone weights to give the kind of rigid setup that character skinning is usually trying to avoid.
I've managed to make lightwave do what I want, but I gotta ask: would this weight mapping be done in lightwave pre-exportation, or in OGRE, post exportation?

Also, I understand that P has halted work on the lightwave exporter... and I can no longer search for his posts.... Is anyone else currently working on this project? I'm not the best programmer around, and am very underqualified to work on an exporter, but I may look into it should the need arrise. I'm not proficiant with 3DS Max, or Maya, and Blender is underpowered for what I'm trying to do... but it has some nice features. + I like the layout system of Lightwave.
User avatar
dennis
Gremlin
Posts: 157
Joined: Mon Nov 11, 2002 4:21 pm
x 4

Post by dennis »

Of course this should be done in Lightwave before exporting. I'm still working on getting discontinuous vertex maps (VMAD's) exported correctly. I didn't know P stopped his efforts altogether. Perhaps he could pick up the skeletons/bones/weights part of the lightwave converter.
Post Reply