Marleys Ghost

Meet The Flockers

19 posts in this topic

A small demo of swarming 3D qboids in LE2.

 

This is a slow motion video capture of how the rules effect the behaviour:

 

 

 

Controls

Cohesion - Q increase - A decrease

Alignment - W increase - S decrease

Separation - E increase - D decrease

Reset qBoids - R

qBoids - T increase - G decrease

 

you will need to Reset the qBoids for a change in number to take effect. All other settings are realtime.

The B key will toggle on and off the outline of the confinement volume, and the Z key toggles an application speed attenuation function which attempts to keep the qboids moving at roughly the same speed no matter how many (min 10 - max 250).

 

This is basically a proof of concept WIP.

 

For more information about this file:

http://www.leadwerks...t-the-flockers/

 

 

 

 

Rev 00

 

 

Rev 01

 

3

Share this post


Link to post

Impressive. You really got the boids flowing. Are you using Craig Reynolds papers from 1987? I started with that one, but like with many other things I didn't finnish it. Congratulations, really great for birds.

0

Share this post


Link to post

@Mack: Thanks m8, working on your fish now lol

 

@Roland: Thanks and no, I did not read his papers but I did read one of his webpages, and another by Conrad Parker just to get a written definition of the rules down, I explain why I did it that way on my blog, as technical reading was the last thing on my "must do list" yesterday morning after a "busy" Saturday night lol ...

0

Share this post


Link to post

That is awesome MG, great job.

 

 

Thanks Paul, it's a lot more stable now than my first "early Sunday morning" draft version when all the flocking flockers flocked off ... rolleyes.gif

0

Share this post


Link to post

Very nice, would emulate shoals of fish well

 

Thanks Pix, yeah fish shoals are working .. had a small glitch in the mesh alignment function .. but had a little time today so rectified that.

 

 

@Diedir & Ken: Thanks, it's still very much a WIP.

0

Share this post


Link to post

@Pix, Aggror & knowledgegranted: Thanks, I had a request for the exe that I used in the "Fish" video, it became a little more complex since that was recorded, as its now a small app I use to check for bottlenecks in the code and avenues for operational speed improvements. If I find time today I will update the demo.

0

Share this post


Link to post

Ok, heres a demo of the app I am currently using in my testing for those that have shown interest, its not that user freindly interface wise, but it was not written with "public" release in mind.

 

Rules:

 

Cohesion - Boids try to fly towards the average position of local flockmates in a given radial volume of 3D space

 

Separation - Boids try to keep a small distance away from other local flockmates in a given radial volume of 3D space

 

Alignment - Boids try to match velocity with other local flockmates in a given radial volume of 3D space, velocity is speed in a given direction.

 

Keys 1 -7 Change Boid Mesh

 

1 - qBoid

2 - Poly Arrow

3 - Fish

4 - Butterfly

5 - Seagull

6 - Parrot

7 - Shark

 

Controls:

 

Cohesion Radius - Q increase - A decrease

Alignment Radius - W increase - S decrease

Separation Radius - E increase - D decrease

 

Reset Boids - R

 

Number of Boids - T increase - G decrease (min 10 - max 500)

 

You will need to Reset - R - the Boids for a change in the number of Boids to take effect.

 

Boid Max Velocity - Y increase - H decrease - N Apply

Boid Max Turnig Force - U increase - J decrease - M Apply

 

Max Velocity and Max Turning Force are not realtime adjustments and need to be applied to take effect, as they are tied in directly to the individual Boid Type structure which I will be using later for some additional individual behavioural functionality.

 

Update Cycle - I increase - K decrease

 

The update cycle changes how many cycles have to pass before calls to the update Boids functions are made. When set to 1 this means every update cycle, 2 means every other update cycle and so on.

 

Animation Speed - O increase - L decrease

 

For those Boid meshs that have animations, this will increase and decrease the playback speed in realtime.

 

The B key will toggle on and off the outline of the confinement volume, and the Z key toggles an application speed attenuation function which attempts to keep the Boids moving at roughly the same speed no matter how many, this will have very little or no effect when Vsync is on.

 

Toggles:

 

Z - Attenuation

X - Wireframe Mode

C - AntiAlias

V - VSync

B - Outline of the confinement volume

P - Mesh Freedom

 

Mesh Freedom changes the rotational constraints of the Boid mesh "Pitch - Roll - Yaw" means it can rotate about all axes (X,Y,Z), "Yaw Only" means it will only rotate left and right (Y axis)

 

 

 

0

Share this post


Link to post

Thanks Mack, once I get the basic flocking streamlined I can then think about adding other behaviours, next on the list though is to tie in the individual Boids velocity magnitude and acceleration to the animated Boids animation speed.

0

Share this post


Link to post

ok, a small revision for those that have shown interest. I had an hour to kill so have added dynamic animation speed to the shark mesh. Each individual Boids swimming animation speed is now controlled as a function of that Boids velocity vector magnitude with respect to the Boids maximum allowed movement speed, basically the faster the Boid goes the faster the mesh "swims". The only difference to the controls in the app is that when the shark mesh is selected (number key 7) the "Animation Speed" adjustment will be for the maximum animation speed possible. All other Boid meshes remain the same for the moment.

 

Controls

 

 

 

0

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Create Your Account

Sign in

Already have an account? Sign in here.


Sign In Now