| | |
learning procedural animation
![]() |
I need to learn more about this before i can even think about starting coding, problem is i can't find a thing on it except a few papers. I am speaking about no keyframes, you just manipulate the bones through algorithms. i need to see some source code on this. Any books i might have missed?
Battlingmaxo
Battlingmaxo
bones often have keyframes... except they're usually rotation keyframes in a bone's local space. if you mean skinning.. the general idea is:
> import vertex data such that each vertex has an associated list of influences ( integer ids ) and weights ( normalized across the influences ).
> import structure data such that each influence has a bind space matrix ( transform of the influence when the skin was bound to the bone )
> assuming you only have one influence per-vertex, for every redraw, loop through all vertices, and transform each vertex by the inverse of the bind space matrix multiplied by the transform of the influence at THIS moment in time. if using more than one influence per vertex, transform a copy of the original vertex by each influence and take a vertex weighted sum ( using the weights associated between each vertex and influence ).
otherwise.. your question is quite general.. perhaps elaborate on what exactly you mean by 'procedural', i.e. how do you intend to drive the movement? something physics based? if you want to do rigid body physics, read tutorials on 3-d rigid body physics without transform hierachy ( i.e. just objects without bones ) and on 2-d rigid body physics with hierachy ( usually expressed as constraints )... and then try and combine the two.
> import vertex data such that each vertex has an associated list of influences ( integer ids ) and weights ( normalized across the influences ).
> import structure data such that each influence has a bind space matrix ( transform of the influence when the skin was bound to the bone )
> assuming you only have one influence per-vertex, for every redraw, loop through all vertices, and transform each vertex by the inverse of the bind space matrix multiplied by the transform of the influence at THIS moment in time. if using more than one influence per vertex, transform a copy of the original vertex by each influence and take a vertex weighted sum ( using the weights associated between each vertex and influence ).
otherwise.. your question is quite general.. perhaps elaborate on what exactly you mean by 'procedural', i.e. how do you intend to drive the movement? something physics based? if you want to do rigid body physics, read tutorials on 3-d rigid body physics without transform hierachy ( i.e. just objects without bones ) and on 2-d rigid body physics with hierachy ( usually expressed as constraints )... and then try and combine the two.
Plato forgot the nullahedron..
Just what i said procedural animation (no keyframes) I am no expert but this seems to be the prefered animation at least as of the last few years or so, it is new so i can't find much on it. the movements will be completely done with algorithms no keyframes at all. tweening has a few keyframes but this has none. I am sure in the next couple of years many books will be on this I will be moving let's say a fin in realtime. Again i am not an expert on this that is why i need more. i think also PA is much more smooth that is why it is popular
BattlingMaxo
BattlingMaxo
Well. the most important question is, what kind of algorithms do you intend to use? There's many different types of procedural animation. A few from the top of my head:
- mechanics simulation ( rigid body, cloth, continuum )
- inverse kinematics for character movement
- chaotic functions ( mostly used for textures )
- individual character movement driven by AI
- massive groups of character movement driven by social simulation
- particle engines for effects
- other general, informal, ad-hoc stuff
EDIT: - also, path following an explicit / implicit curve is a pretty common/easy to use procedural method.
And most of these require different areas of research.
I wouldn't say that procedural is 'the future' in all circumstances. Taking full control of a procedural scene can be hard - keyframes allow for fine grained control. If you're making movies - it's easy to run simulation and then fix up discrepancies and make changes using manual keyframing. In interactive real-time it's not so easy, you have to make sure the algorithm being used looks right in many different situations.
- mechanics simulation ( rigid body, cloth, continuum )
- inverse kinematics for character movement
- chaotic functions ( mostly used for textures )
- individual character movement driven by AI
- massive groups of character movement driven by social simulation
- particle engines for effects
- other general, informal, ad-hoc stuff
EDIT: - also, path following an explicit / implicit curve is a pretty common/easy to use procedural method.
And most of these require different areas of research.
I wouldn't say that procedural is 'the future' in all circumstances. Taking full control of a procedural scene can be hard - keyframes allow for fine grained control. If you're making movies - it's easy to run simulation and then fix up discrepancies and make changes using manual keyframing. In interactive real-time it's not so easy, you have to make sure the algorithm being used looks right in many different situations.
Last edited by MattEvans; Oct 5th, 2008 at 9:59 pm.
Plato forgot the nullahedron..
I am reading on the many different animation techniques out there. I will developing a realtime, interactive aquarium like dream aquarium. if you take a look at this program it is exactly what i want. procedural, (no keyframes) interactive realtime. Yes i know it is going to be very hard that's is why i need to see source code on this kind of animation
one type of algorithm will be inverse kinematics any info you can provide will help but check out dream aquarium and you will have abetter idea of what i want to do
BattlingMaxo
one type of algorithm will be inverse kinematics any info you can provide will help but check out dream aquarium and you will have abetter idea of what i want to do
BattlingMaxo
Well, I'm not sure how far you've read yet, but this site is good for info on simulating animal / human / vehicle behaviour:
http://www.red3d.com/cwr/steer/ and http://www.red3d.com/cwr/boids/ . The site also has loads of links to other pages.
I wouldn't imagine that the dream aquariam uses inverse kinematics very heavily, although maybe for the crab.. There's been alot of research into realistic movement of cockroaches ( strangely enough ) so if you want to move around a structurally similar creature, that research might prove useful. I will send you a link I have with implementation details of cockroach movement tomorrow ( I don't have it here )
Alternatively, this link describes a method for simulating articulated characters ( particularly ragdolls ) using a particle engine and constraint relaxation. I've actually implemented this to see if it'd be useful, and, whilst I didn't find it useful ( only because it didn't combine too well with an existing rigid-body mechanics simulation ) you might.. http://www.gamasutra.com/resource_gu...obson_01.shtml. You can also use a particle engine ( with certain modifications ) to drive animal / human movement ( although only macroscopically ).
For an underwater aquarium, you'll also want to look at water simulation.. specifically look at fake caustics, wave simulation, and err... a nice informal ad-hoc method - perterbing each vertex's x co-ordinate by sin ( v.y + time ) in a vertex shader.
What language are you using? There are usually some free libraries that might be helpful, not necessarily suggesting a drop-in game engine library, but math libraries are quite useful for matrix work
http://www.red3d.com/cwr/steer/ and http://www.red3d.com/cwr/boids/ . The site also has loads of links to other pages.
I wouldn't imagine that the dream aquariam uses inverse kinematics very heavily, although maybe for the crab.. There's been alot of research into realistic movement of cockroaches ( strangely enough ) so if you want to move around a structurally similar creature, that research might prove useful. I will send you a link I have with implementation details of cockroach movement tomorrow ( I don't have it here )
Alternatively, this link describes a method for simulating articulated characters ( particularly ragdolls ) using a particle engine and constraint relaxation. I've actually implemented this to see if it'd be useful, and, whilst I didn't find it useful ( only because it didn't combine too well with an existing rigid-body mechanics simulation ) you might.. http://www.gamasutra.com/resource_gu...obson_01.shtml. You can also use a particle engine ( with certain modifications ) to drive animal / human movement ( although only macroscopically ).
For an underwater aquarium, you'll also want to look at water simulation.. specifically look at fake caustics, wave simulation, and err... a nice informal ad-hoc method - perterbing each vertex's x co-ordinate by sin ( v.y + time ) in a vertex shader.
What language are you using? There are usually some free libraries that might be helpful, not necessarily suggesting a drop-in game engine library, but math libraries are quite useful for matrix work
Last edited by MattEvans; Oct 8th, 2008 at 1:00 pm.
Plato forgot the nullahedron..
Here's a link to that paper on cockroach movement: http://portal.acm.org/citation.cfm?id=97882.
Plato forgot the nullahedron..
Thanks, Matt, for your help. I believe he is using an inverse kinematic chain for the fish creating the sine movements i read a paper that was experimenting with that movement for the fish because it was the most effective of the methods tried
BattlingMaxo
BattlingMaxo
•
•
Join Date: Dec 2008
Posts: 1
Reputation:
Solved Threads: 0
•
•
•
•
I need to learn more about this before i can even think about starting coding, problem is i can't find a thing on it except a few papers. I am speaking about no keyframes, you just manipulate the bones through algorithms. i need to see some source code on this. Any books i might have missed?
Battlingmaxo
GPL-ed, dynamo... and that's it.
You found the fish. That's all I know of, if you get your system done... you could provide the first! Though I probably couldn't even get it to compile. XD I need to practice.
![]() |
Other Threads in the Game Development Forum
- Previous Thread: LoadImage() to bit array
- Next Thread: wanna be games developer - but donno wht 2 do?
| Thread Tools | Search this Thread |
3d advertising ai algorithm ban c++ cambridge camera censorship china competition console development engine fov fpx game gamer games gaming gauntanamo government idaho in-gameadvertisement intellectualproperty laracroft live manhunt math mathematics matrix mercenaries microsoft mmorpg modded msn naked news nintendo obama palin physics pirate playstation politics projection ps3 rpg search software sony stephenhawking stocks studio technology terrorism tombraider uk videogame web wii world-of-warcraft xbox xbox-live xbox360






