'Real' crowd

Discussions about SOFTIMAGEs© Interactive Creative Environment©
User avatar
Mathaeus
Posts: 1778
Joined: 08 Jun 2009, 19:11
Location: Zagreb, Croatia

'Real' crowd

Post by Mathaeus » 01 May 2010, 03:03

Hi all,

here is a new toy :) . It's crowd system. Instead of instances, real meshes were used. Method is similar to MT Static instancer, but just this time, I've used 'real' copies of mesh, enveloped by point cloud with an ICE envelope. Entire rig is reconstructed in point cloud, which allow procedural animation as well as simulation, blending multiple inputs, whatever...

For now, system is a bit messy, but I hope I'll have something useful to share in near future.
[flv]http://www.matkovic.com/anto/ice-crowd-29apr10.flv[/flv]
FLV movie with procedural animation

Image

Image

Cheers


Moderator edit - I've embedded the flv, please remove if you don't want it embedded... - HB

User avatar
dwigfor
Posts: 395
Joined: 17 Nov 2009, 16:46

Re: 'Real' crowd

Post by dwigfor » 01 May 2010, 03:34

Wow! Thanks for the video. Great job so far! It's always fun seeing the stuff you make.

User avatar
farhaad_yousefi
Posts: 178
Joined: 08 Jun 2009, 20:45
Yahoo Messenger: farhaad_yousefi@yahoo.com
Location: tehran-iran

Re: 'Real' crowd

Post by farhaad_yousefi » 01 May 2010, 19:02

wooooow.!!! i say friend you're doing some serious crow-sim here.!! \m/

i'd be more than happy if you consider me as an beta tester.!! ;) :ymbringiton: \m/

fabricio.chamon
Posts: 94
Joined: 09 Jun 2009, 21:47

Re: 'Real' crowd

Post by fabricio.chamon » 02 May 2010, 21:26

Hi Mathaeus, looks very promising!
could you give more details about the crowd setup?

thanks.

User avatar
Mathaeus
Posts: 1778
Joined: 08 Jun 2009, 19:11
Location: Zagreb, Croatia

Re: 'Real' crowd

Post by Mathaeus » 03 May 2010, 21:03

Thank You guys,

Of course I planning to share this, I just need to find some way to make it really useful. Even it really isn't a rocket science, far away of that... it can be very hard to figure out what the hell I did with all these compounds. On the other side, open structure allows flexibility for me. I would say, just an usual contradiction with ICE :)

I thinking about some kind of tutorial for specific task, together with support files, compounds.. For now, the first candidate is a 'stadium people' setup, where all actors are animated procedurally, but still can perform separate actions, directed by you.

Basic structure is a simplified version of crowd setups that Helge Mathe already did in his mt-ice_tutorials. IK chains are from these files too. I think these tuts are still downloadable from this place.

Nothing is simulated here, everything is (almost) procedural animation.

There are two point clouds. First point cloud is a 'driver' of action. This one is animated, in the same way as birds in 'animated flock of birds' tutorial - actors are following virtual paths, created as curves in between NURBS surfaces. This point cloud performs a few tasks more, such as creating positions for foots and upper body, raycasting the ground, saving a 'path percent' value, creating basic walk cycle. Walk cycle is created with simple 'walk generator'. Equivalent of 'path percent' is modulated by function curves - with all drawbacks of this approach. It's very, very hard to get believable human walking with this - but all of us know that aliens are walking just in this way :)

Second point cloud is for creating clones. Firstly it's just a copy of driver point cloud, then points are cloned in order to match skeleton's hierarchy - number of envelope group members is number to clone. Original points are deleted, to get uniform pattern. For example, if you have 25 deformers in envelope, with this pattern the same body part will take ID 26, 51, 76, 101... Formula for matching is something like ((Point ID - number of point in driver point cloud) / number of members in skeleton group)> select in array of global transform in group. BTW, basic math operations, like divide by scalar and modulo, also ID to location geometry query - seems to be soooo often with these setups...
Global transforms from skeleton group are saved as custom attribute, as per point array. They are also saved as a matrix per point - this is an equivalent of Static Kine State property. Some other custom attributes are created as well: 'PartID', 'ActorID'....

This time, rig is a common IK/FK mix, legs are IK, all the rest is FK. So the next step is to transfer positions for upper body and foots. For the rest of rig, only rotations were used. Some of rotations are again 'path percent' modulated by function curves or trig functions (Sinus rulez :) ). Rotations of antennas and rods are angles multiplied by turbulence, turbulence is driven by point positions. For now, 'Select Case' node is used - 'Part ID' as input, then 'something' in appropriate port.

Next step is a bunch of small compounds for creating parent/child relationship, executed one after another, following 'PartID' attribute. After that, two IK solvers. I've created a much better version of these solvers during this weekend, now they have a stretchy soft IK as an option.

At the end, there is a compound that convert all transforms into the new custom matrix attribute - this is equivalent of skeleton's global transform.

Each alien has an ICE envelope, slightly modified DQ skin compound (here I've used only linear blending, I just forgot to activate DQ). Instead of envelope group as input, point cloud is used, with ICE tree like this one. By modifying 'ID on driver point cloud' value (the one commented with orange bar), aliens will 'jump' through points of driver point cloud. Pattern for matching these ID's strictly rely on pattern used for creating clones.

By the way, the same method can be used for placing the point cloud as an intermediate deformer, in between skeleton and final envelope output - you'll need just one point cloud for that, created from members of envelope group.

I've tried other way for enveloping, such as separating actors inside only one mesh, by using indices on mesh, something along line line of MT_static_Instancer - even I got it to work, it tends to be exponentially slower on large meshes, I guess because of multiplying all these huge arrays. By separating the job in a smaller pieces/actors, performance seems to fall pretty linearly. For about 40 actors, in total of 70K triangles and 1K envelope deformers, the best playback is about 9 FPS on QuadCore machine.

Also, promising alternative for enveloping seems to be a simple, automatic interpolation of saved attributes from closest points on point cloud (Get Closest Points node), especially after freezing ICE tree that creates attributes. But it isn't very accurate.

Of course, if instances are used instead of enveloping - one instance for each body part - playback is much better.


Cheers

User avatar
farhaad_yousefi
Posts: 178
Joined: 08 Jun 2009, 20:45
Yahoo Messenger: farhaad_yousefi@yahoo.com
Location: tehran-iran

Re: 'Real' crowd

Post by farhaad_yousefi » 04 May 2010, 19:00

woow..procedural animation huh.?! i say contact the Phil Taylor from ice..and have him consult you some..coz he was behind the "cat" and know a lot about procedural animating
and also Helge can give a lot to this process ..
i myself played a lot with "massive" and i can consult you with needs and field .!!
and , i think nothing like a mini project would challenge this ..and would be a good sponsor too ;)..!!
and do consider the interaction with motor.!! and motion capture files.!! :ymalien:

User avatar
Mathaeus
Posts: 1778
Joined: 08 Jun 2009, 19:11
Location: Zagreb, Croatia

Re: 'Real' crowd

Post by Mathaeus » 05 May 2010, 00:13

farhaad_yousefi wrote:woow..procedural animation huh.?!
It's really easy to replace it with simulation - that may be easy to figure out from description in my previous post.

Cheers

User avatar
Mathaeus
Posts: 1778
Joined: 08 Jun 2009, 19:11
Location: Zagreb, Croatia

Re: 'Real' crowd

Post by Mathaeus » 14 Sep 2010, 10:05

Galls and Guys,

Just to let you know, I'm planning to post this one, sometime at the end of this month or a few weeks later.

What it is exactly.... it's not a crowd system ( yes I made a bit of confusion, calling it 'crowd'). It's a small set of compounds that takes a 'real' transformation group, and create clones into the point cloud. Then, inside ICE tree, it's possible to build a complete new hierarchy and apply various types of transformations - procedural animation, simulation, loading multiple caches, blending of live animation sources. Also there is a modification of DQ/Linear Blend skin compound for using the point cloud for enveloping - and a very basic, 'walk steps generator' in separated Point Cloud.

There are two ways how you can apply a new motion: enveloping meshes to some of 'virtual actors' in point cloud, or creating the instances of body parts. Second, 'Pinocchio way' allows using a huge numbers of actors.

So, good and bad in this approach:

Good:
- full control: it's possible to blend animation sources of any type, by using different rules: actor, body part, proximity to something, time, whatever.

Bad:
- It's not so simple. Instead of only 'Control instance animation' node, it offers a whole new story , together with a new Point Clouds, compounds...
- It's user's job to create a hierarchy.
- In case of blending, it's (again) user's job to create a hierarchy, exactly for desired blending type (positions, rotations), it's far away of Animation Mixer's pleasure.
- Only way for using animation clips is a loading of caches.
- I don't planning to write about it, anything more than comments inside ICE trees....

...and that's a reason for this post - if someone have idea, exact task, probably we'll be able to create a sample and put it into download. System is already tested in reality, on typical task: people on stadium, raising the panels that creates a recognizable form.

Cheers

FLV with last test in 'enveloping mode'.

User avatar
farhaad_yousefi
Posts: 178
Joined: 08 Jun 2009, 20:45
Yahoo Messenger: farhaad_yousefi@yahoo.com
Location: tehran-iran

Re: 'Real' crowd

Post by farhaad_yousefi » 14 Sep 2010, 22:53

\m/ \m/ \m/ \m/ \m/ \m/
man i really am looking forward for your results.!! you've done awesome so far.!! :-bd

User avatar
Mathaeus
Posts: 1778
Joined: 08 Jun 2009, 19:11
Location: Zagreb, Croatia

Re: 'Real' crowd

Post by Mathaeus » 20 Sep 2010, 23:38

Hi,

a new test of 'sitting-cheering' blend. Animation is... as is :), I've added procedural movement when I became boring of key framing. Anyway, it seems it works quite good with a huge numbers of actors, every actor's rig is evaluated independently. Beside the standard parent-child relationship, there is about 4K IK chains, together with Stretchy Soft IK (the one from plugin by Andy Nicholas).

FLV, in action.

And yes, official :) name is 'Cloudy Rigs'.

Cheers

User avatar
farhaad_yousefi
Posts: 178
Joined: 08 Jun 2009, 20:45
Yahoo Messenger: farhaad_yousefi@yahoo.com
Location: tehran-iran

Re: 'Real' crowd

Post by farhaad_yousefi » 22 Sep 2010, 01:46

Mathaeus wrote:Hi,

a new test of 'sitting-cheering' blend. Animation is... as is :), I've added procedural movement when I became boring of key framing. Anyway, it seems it works quite good with a huge numbers of actors, every actor's rig is evaluated independently. Beside the standard parent-child relationship, there is about 4K IK chains, together with Stretchy Soft IK (the one from plugin by Andy Nicholas).

FLV, in action.

And yes, official :) name is 'Cloudy Rigs'.

Cheers
awesome like before.!! keep it up.! :-bd :ympeace: ^:)^

Zafar Iqbal
Moderator
Posts: 169
Joined: 26 Oct 2009, 09:04

Re: 'Real' crowd

Post by Zafar Iqbal » 24 Sep 2010, 11:26

Thats great work, dude
- Zafar Iqbal

anhungxadieu
Posts: 175
Joined: 17 Apr 2014, 08:39
Skype: nguyenvuducthuy

Re: 'Real' crowd

Post by anhungxadieu » 03 Aug 2015, 14:48

Hi Mathaeus,

do you still plan to release it?

User avatar
Draise
Posts: 894
Joined: 09 Oct 2012, 18:48
Skype: ondraise
Location: Colombia

Re: 'Real' crowd

Post by Draise » 03 Aug 2015, 19:45

A lot of fun. =)

I'd add a couple of double bounces to the proceduralism? And some staying seated by still putting arms up... ;)

User avatar
Mathaeus
Posts: 1778
Joined: 08 Jun 2009, 19:11
Location: Zagreb, Croatia

Re: 'Real' crowd

Post by Mathaeus » 03 Aug 2015, 21:56

anhungxadieu wrote:Hi Mathaeus,

do you still plan to release it?
It had a very unpleasant setup, around two or three stages needed to match 1:1, just to get it to work. Rig with exact number of elements, elements of rig placed into group in exact order, something like that. Thing is from 2010, long before Softimage Crowd FX. Probably is even more complex to manage than Crowd FX, while it provides only a few percents of funcionality - so, better to do not open this old box, I'd say.
Thanks for finding this old thing, anyway.

anhungxadieu
Posts: 175
Joined: 17 Apr 2014, 08:39
Skype: nguyenvuducthuy

Re: 'Real' crowd

Post by anhungxadieu » 04 Aug 2015, 01:22

i have a project, and i want to try a envelope by point cloud, i know Dual quaternion compound can do it but i don't know how to find exactly deformer id in order to have same envelope weight.