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?


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.

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


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.

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


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_guide/20030121/jacobson_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

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


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?


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.