It is currently 24 Oct 2014, 08:58

All times are UTC + 1 hour [ DST ]




Post new topic Reply to topic  [ 21 posts ]  Go to page 1, 2, 3  Next
Author Message
 Post subject: Strand Collision Framework
PostPosted: 24 Oct 2013, 02:04 
Offline
User avatar

Joined: 10 Jul 2009, 20:52
Posts: 7
Edit:
Was crashing in SI2015, and there's apparently at least one person who is crazy enough to rely on this mess.
Here is a fix for that. Also takes care of the unsupported type and constraint map errors perPointArray has been spitting out.
http://www.mayulive.com/StrandCollisionFramework24042014.zip
Replace the DLLs with the ones in the above zip and everything may work.


A number of custom ICE nodes and various compounds that allow for strand-to-strand collisions.

This is an old project I had originally dropped, largely because I didn't feel like starting over to fix all the issues with it. As such, everything is held together by duct tape.

What it can do: https://vimeo.com/groups/ice/videos/76018502
Download (Addon and example scenes): http://www.mayulive.com/StrandCollisionFramework.zip
Will likely require the VC++2012 redistributable: http://www.microsoft.com/en-us/download/details.aspx?id=30679

The most glaring issues are:

1. No shared data set, meaning that, internally, self-colliding strands are not aware of how other strands in the cloud are reacting. They are only updated with full iterations (repeat node in ICE), which gets very expensive. It's a hackjob that really shouldn't be working, but does. sort of.

2. Doubled-ended "Hooked" strands were never meant to be stretched, it just happens that they somewhat tolerate it. Do not expect stretching to work. Hell, don't expect hooked strands to work at all.

3. Stiffness has no weights, meaning colliding segments are moved just the same as other segments. This means that you will end up with a bump in your strand unless you increase the number of full iterations (repeat in ice).

4. Violent collisions require that we keep tight control over how strand length is corrected. However, very stiff strands require that we continuously correct the strand length in a manner that breaks this system. If you are going to have reasonably stiff strands colliding with geometry, "Use Current Length" /HAS/ to be disabled.

5.
Verlet integration is terrible and should have been replaced. If you have a look into the Verlet integration compound (stolen from the original dynamics framework, along with a few other compounds), you will see a number of hacks implemented to counteract Perpetual Wobble Syndrome (PBS). Alas, there is no cure.

6. Friction simply pushes the strand back to where it was at the previous frame, hence it does not work when the target is moving. You generally always want some amount of friction though.

7. Weighing down strands (strandmass) was a last-minute feature that just happened to be implementable without doing anything fancy. Don't expect a lot from it.

____________________________________

This entire setup was made with SI2011 in mind. It does appear to be working in 2013/2014, though they both spit out an error claiming that one of the nodes is using an invalid constraint map. There is no such error in 2011, and the error remains even if all ports are given separate constraint maps. Everything works fine despite this error, so it can be ignored. Likewise, as 2011 does not have fun features like subframes, it is not set up to work with them.

Softimage will also complain that the 3Delight plugin is not installed on scene load. I just can't seem to remove it from the scene.

Usage should be largely self-explanatory, with the zip containing a number of example scenes.
The length Correction factor before collision takes place corresponds to the bidirectional length correction in the original strand dynamics framework. Think of it was a wobbliness factor.
A lot of the compounds have a Range input. These compounds are driven by various values, usually the collision force. We divide the input by the range value and clamp it between 0 and 1, so a range of 10 and an input value of 1 would give you 0.1, or a 10% effect. The lower the range the stronger the effect, with 0 disabling it completely.

While I'm reasonably sure there should be no more crash-inducing bugs, I might be inclined to fix any that occur. All other issues are features. Except maybe the addon file being broken.


Last edited by Roughy on 26 Apr 2014, 04:13, edited 5 times in total.

Top
 Profile  
 
 Post subject: Re: Strand Collision Framework
PostPosted: 24 Oct 2013, 04:48 
Offline
Moderator
User avatar

Joined: 21 Jul 2010, 00:33
Posts: 585
Hey Roughy it has been a long time since your first Vimeo post on this. I am very glad you eventually got to share it. Even though you warn us about the downsides, the videos show a lot of good stuff. Hopefully I'll have time to play with this sooner then later.

Best regards, and again thanks!

_________________
Gustavo Eggert Boehs
Blog: http://www.gustavoeb.com.br/blog | Training: http://gustavoeb.com.br/blog/?cat=16&lang=en_us


Top
 Profile  
 
 Post subject: Re: Strand Collision Framework
PostPosted: 24 Oct 2013, 10:34 
Offline

Joined: 27 Aug 2010, 22:25
Posts: 345
hi Roughy,


You have made something wonderful, and the fact it works at all, is incredible, so 'duct tape job'' or not. It's a marvelous achievement.

Thanks so much for sharing it, and I also appreciate your expectation-managing, although I wouldn't put you in charge of your own marketing!


Top
 Profile  
 
 Post subject: Re: Strand Collision Framework
PostPosted: 25 Oct 2013, 08:40 
Offline

Joined: 28 Jan 2010, 14:13
Posts: 68
I've just tested scenes and i feel it's totally awsome !
Do you think its possible tu use it to simulate hairs ?

great job, and thanks


Top
 Profile  
 
 Post subject: Re: Strand Collision Framework
PostPosted: 25 Oct 2013, 14:10 
Offline

Joined: 24 Sep 2010, 18:28
Posts: 696
Roughy, you're a man! I remember used your per point array ice node before si 2012 came out, it was super usefull, I'll test this framework since the project I'm working on have to have such kind of interaction between the strands. Thank you for sharing it!

_________________
Constantine
Learnable Programming
The Future of Programming


Top
 Profile  
 
 Post subject: Re: Strand Collision Framework
PostPosted: 25 Oct 2013, 15:39 
Offline
User avatar

Joined: 09 Jun 2009, 11:02
Posts: 690
Location: Montreal Canada
Roughy wrote:
Softimage will also complain that the 3Delight plugin is not installed on scene load. I just can't seem to remove it from the scene.

I think you have to merge into a new scene to get rid of that.

_________________
// Steve Blair
// "You're not a runner, you're just a guy who runs" -- my wife
//
// My Blogs: Arnold | Softimage


Top
 Profile  
 
 Post subject: Re: Strand Collision Framework
PostPosted: 25 Oct 2013, 18:20 
Offline
User avatar

Joined: 06 Aug 2009, 17:26
Posts: 521
This looks really good! Is it free and for commercial work?


Top
 Profile  
 
 Post subject: Re: Strand Collision Framework
PostPosted: 26 Oct 2013, 11:27 
Offline

Joined: 05 Sep 2011, 22:57
Posts: 120
Location: Berlin
very nice work! thank you.


Top
 Profile  
 
 Post subject: Re: Strand Collision Framework
PostPosted: 26 Oct 2013, 12:10 
Offline
User avatar

Joined: 08 Jun 2009, 22:48
Posts: 93
Location: UAE - Abu Dhabi
Thank you very much for sharing this .

_________________
3D Supervisor - Production House .


Top
 Profile  
 
 Post subject: Re: Strand Collision Framework
PostPosted: 28 Oct 2013, 15:18 
Offline
User avatar

Joined: 08 Jun 2009, 22:45
Posts: 177
Location: tehran-iran
^:)^


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 21 posts ]  Go to page 1, 2, 3  Next

All times are UTC + 1 hour [ DST ]


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group