Advertisement

A UI for procedural animation

Started by March 27, 2005 05:17 PM
6 comments, last by TechnoGoth 19 years, 10 months ago
I've been reading coverage of Will Wright's Spore project, as well as kicking around some of my own ideas, and I'm wondering how one would approach designing a system whereby players can 'create creatures' and have the game do as much of the work as possible. For example, say I want to create a creature from scratch. I drag and drop some geometric primitives onto a '3D canvas,' rotating and manipulating the model to get the main shapes of my creature as and where I want them. Then I join primitives together, picking pairs of shapes and creating a 'bone' between them. Finally I stretch a skin over the whole model, giving it smooth joints and the like. Then comes animation. Perhaps I pick out particular bone pairs in the model to form 'joints' between them, and then a Poser-style IK system to create keyframes for an animation sequence. The physics system would have to figure out the result - for example, if I move the wing bones rapidly down, it would have to provide the resulting upthrust (and so my creature begins flying). But it all sounds terribly overcomplicated for the end user. If my game is going to ask the player to construct a fair number of creatures - if I want players to use creature construction fairly liberally, creating different creatures for different situations - then how can I do it? Is it practical to do it in 3D? What about 2D characters instead? Perhaps selecting from a number of predefined 'movement types' and then selecting significant elements ('leg', 'hand', etc)? What about other things, like creatures that breathe fire?

Richard "Superpig" Fine - saving pigs from untimely fates - Microsoft DirectX MVP 2006/2007/2008/2009
"Shaders are not meant to do everything. Of course you can try to use it for everything, but it's like playing football using cabbage." - MickeyMouse

This might be useful to check out.

theprodukkt

They created a first person shooter in 96 kilobytes by generating all the resources through code. I don't know how much control users would have with their system though. It seems like you would almost have to guess at what operators to link together until you get what you want.

You might want to check out Fighter Make for the Playstation also. It had an animation editor that let you rotate the bones to create animations. It was very frustrating to create anything decent with it. It might be easier with a mouse and keyboard though.

There was also a game called Amazing Island for the Gamecube. I haven't played it but I think they had a similar idea to yours. From what I've seen you can draw a shape in 2D and it somehow figures out a 3d from it.

Instead of figuring out movement based on the bone movements, you could let the player set a velocity vector for each animation. It wouldn't be as realistic but might be easier for the user to figure out how his creature is going to move.
Advertisement
You can provide certain pre-built attributes in a palette. It'll constrain your users' imaginations somewhat, but the creatures in the Spore demo weren't necessarily physically viable either.
Quote:
Original post by monkey8751
This might be useful to check out.

theprodukkt

They created a first person shooter in 96 kilobytes by generating all the resources through code. I don't know how much control users would have with their system though. It seems like you would almost have to guess at what operators to link together until you get what you want.
I got the impression that their stuff was more about looking at their animations, saying "hey, this is kinda like a sine wave", and then writing code to generate animation keyframes using a sine wave or two. So really, the animations are 'hard coded' - which is sadly not what I'm looking for.

Quote:

You might want to check out Fighter Make for the Playstation also. It had an animation editor that let you rotate the bones to create animations. It was very frustrating to create anything decent with it. It might be easier with a mouse and keyboard though.
Yeah, that's what I'm thinking - that unless you're careful it'll be frustrating. I'm kicking around a design in which it's a major gameplay element, so it would need to be (a) fast (b) easy to use and (c) relatively freeform.

Quote:

There was also a game called Amazing Island for the Gamecube. I haven't played it but I think they had a similar idea to yours. From what I've seen you can draw a shape in 2D and it somehow figures out a 3d from it.
Cool. I've already been doing a bit of work into that - the basic idea of taking a spline and rotating it to generate a volume is something you'll find in most 3D modelling packages, but accounting for the fact that it's a front view rather than a spinnable outline make it a bit harder.

Quote:
Instead of figuring out movement based on the bone movements, you could let the player set a velocity vector for each animation. It wouldn't be as realistic but might be easier for the user to figure out how his creature is going to move.
Actually, movement extraction's not much of a problem - it's actually fairly easy to do, having been around since Half-Life 1. The point is, though, I'm trying to avoid things like 'velocity vectors' - they're fine for animators, programmers, and physicists, but not for the average gamer.

Quote:
Original post by Oluseyi
You can provide certain pre-built attributes in a palette. It'll constrain your users' imaginations somewhat, but the creatures in the Spore demo weren't necessarily physically viable either.

Right - as clarified on IRC, we're talking about selecting one from a number of prebuilt animation types ("walking", "flying", "rolling", etc) and then picking out the necessary elements (wings, legs, etc). I worry about the flexibility of that, though, as well as the quality of the result - walking is more than just moving your legs; good anims tend to be whole-body based.

Something I'm wondering about is a muscle basis. After creating the basic 2D/3D model for their creature, the user then creates muscles - two clicks per muscle, straight line from point A to point B. Perhaps an AI could figure things out from that - by 'testing' each muscle to see the kind of movement it generates, then formulating a plan (sequence of muscle movements) for each kind of desired movement (close forward, mid-range forward, long forward, up, face left, move left, etc). Perhaps even do it in realtime, like some sort of alternative to inverse kinematics.

Richard "Superpig" Fine - saving pigs from untimely fates - Microsoft DirectX MVP 2006/2007/2008/2009
"Shaders are not meant to do everything. Of course you can try to use it for everything, but it's like playing football using cabbage." - MickeyMouse

What I think would be interesting would be a bit more intuitive for the non-artistically inclined user. The basic process of creating a creature would follow these lines:
-Select bone size & length
-Position bone
-Repeat with new bone, connect a certain joints to define limitations(hips are different than knees, after all)
-Once all bone structure is in place, allow the player to select a point on the bone structure and define it's tissue mass. Variances in these will allow the program to define the shape and structure of the hide.
-Define certain bones as important, 'feet' 'neck' and so on.
-Allow the player to define hide-style(skin,scales,feathers,etc) and other cosmetic features. With knowledge of the bone structure and the movement limitations of the joints and which bones are meant for which tasks, you could attempt to apply a basic movement to them.

Half the fun of a system like this, I think, would be creating animals that operate functionally different. Three legs, elephants supported by thirty foot high legs, and so on.
Quote:
Original post by Run_The_Shadows
What I think would be interesting would be a bit more intuitive for the non-artistically inclined user. The basic process of creating a creature would follow these lines:
-Select bone size & length
-Position bone
-Repeat with new bone, connect a certain joints to define limitations(hips are different than knees, after all)
-Once all bone structure is in place, allow the player to select a point on the bone structure and define it's tissue mass. Variances in these will allow the program to define the shape and structure of the hide.
-Define certain bones as important, 'feet' 'neck' and so on.
-Allow the player to define hide-style(skin,scales,feathers,etc) and other cosmetic features. With knowledge of the bone structure and the movement limitations of the joints and which bones are meant for which tasks, you could attempt to apply a basic movement to them.
Hey, that's really cool. What if everything after bone structure was done using a 'painting' paradigm? So you 'paint' meat onto the bones, and then 'paint' different skin types (fur, feather, etc) on top of that. Perhaps that'd be easier than setting tissue masses and the like?

Quote:
Half the fun of a system like this, I think, would be creating animals that operate functionally different. Three legs, elephants supported by thirty foot high legs, and so on.
Yes, exactly. While it would allow for totally alien creatures, people would also be able to try 'variations' on regular ones - if they're stuck for ideas, they'll go with what they know anyway, right?

Richard "Superpig" Fine - saving pigs from untimely fates - Microsoft DirectX MVP 2006/2007/2008/2009
"Shaders are not meant to do everything. Of course you can try to use it for everything, but it's like playing football using cabbage." - MickeyMouse

Advertisement
I think the easiest way to tackle this would probably be to break down fairly abstract 'creatures' into basic reusable forms, and give certain elements an accumulation factor for the rest of the heirachy.

For example, you could create 3 'types' of legs; standard vertical 2 joint (Biped), horizontal 2 joint (Spider-like) and a 3 joint version (For quadripeds). Allowing the user to create their own attachment points for these limbs will mean that the COG in relation to the limbs would fluctuate, and this could be used to control the gate and final placement of the limbs when walking, and could divide this by the number of limbs to create the appropriate walking speed (Creatures with more limbs tend not to move much faster than those with less).

Customising the look of the character to be 'boundless' is a little more tricky. You could try some fancy of welding cyliders together and applying a smooth over it to minimise creases (To get the effect of skin) and then attempt to work out the most used limbs and add extra muscle definition, or you could just go with the Z-brush approach of painting a displacement map directly onto the mesh.
What about a system where the user has a set of primitives and joints they connect togoether in a lego style creature creation system. After building a body in that manner then the user could apply various texturing and smoothing systems in the form of brushes to the creature. Its important to make it as simple and easy to use as possible. I for one would not one to spend hours using a modelling program just to create every creature I want to use in the game.

I'd much rather use some simple that allows for complex creatures.
Want to make a snake? Attach two wedges together to make a body segement then connect body segements together with pivot joints to make the snake as long as you want.

This topic is closed to new replies.

Advertisement