Strand Collision Framework
Plugins linking to this thread: (hide)
![](/download/lb/roughy/scf.jpg)
updated for Softimage 2015. This set of ICE nodes simulates inter-strand collisions as well as strand self-collisions.
Fwiw the author declares it to be in a »useable enough« state —
see the demonstration video to get an impression of its speed and stability.
[..] 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.
Read more in the thread linked below, including usage and the limitations
local backup: StrandCollisionFramework_2015.xsiaddon (includes patch from si-commmunity thread) scf-demo_scenes.zip (demo scenes)
[..] 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.
Read more in the thread linked below, including usage and the limitations
local backup: StrandCollisionFramework_2015.xsiaddon (includes patch from si-commmunity thread) scf-demo_scenes.zip (demo scenes)
author site: http://www.mayulive.com / si-community thread
Strand Collision Framework
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/StrandCollision ... 042014.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 ... x?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.
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/StrandCollision ... 042014.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 ... x?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.
Re: Strand Collision Framework
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!
Best regards, and again thanks!
Gustavo Eggert Boehs
Blog: http://www.gustavoeb.com.br/
Blog: http://www.gustavoeb.com.br/
Re: Strand Collision Framework
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!
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!
Re: Strand Collision Framework
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
Do you think its possible tu use it to simulate hairs ?
great job, and thanks
Re: Strand Collision Framework
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!
- xsisupport
- Posts: 713
- Joined: 09 Jun 2009, 11:02
- Location: Montreal Canada
- Contact:
Re: Strand Collision Framework
I think you have to merge into a new scene to get rid of that.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.
Re: Strand Collision Framework
This looks really good! Is it free and for commercial work?
The society that separates its scholars from its warriors will have its thinking done by cowards and its fighting done by fools.
-Thucydides
-Thucydides
Re: Strand Collision Framework
very nice work! thank you.
- eternal art
- Posts: 93
- Joined: 08 Jun 2009, 22:48
- Location: UAE - Abu Dhabi
Re: Strand Collision Framework
Thank you very much for sharing this .
3D Supervisor - Production House .
- farhaad_yousefi
- Posts: 178
- Joined: 08 Jun 2009, 22:45
- Location: tehran-iran
- Contact:
-
- Posts: 253
- Joined: 17 Feb 2010, 15:13
Re: Strand Collision Framework
this is fantastic, thank you!!
unfortunately i get an error with a custom ice node. Per_Point_Array.dll
although it still works.
may it have something to do with this?
unfortunately i get an error with a custom ice node. Per_Point_Array.dll
although it still works.
Code: Select all
# WARNING : 3000 - Invalid port type specified for Custom ICE Nodes.
# Port Name: Attribute
# ID: 0
# Invalid port type: 276480
# WARNING : 3000 - Invalid port type specified for Custom ICE Nodes.
# Port Name: Array
# ID: 201
# Invalid port type: 277504
# ERROR : 2384 - This port type(s) is incompatible with other ports of the same constraint map:
# <Node: Per_Point_Array>
# <Port ID: 201>
# <Group ID: 201>
"...the output port was using the same same context
ID as a "singleton" input. So using two context IDs solved it..."
SI 2015 @ WIN7-64
Re: Strand Collision Framework
Yeah, it's an error that only pops up in 2013/2014 (and possibly 2012). Loads fine in 2011
Back when trying to fix it SI would complain even if all ports were given separate constraint maps. Any and all combinations short of cutting the extra ports would result in the same error, so I'm just going to leave it as long as it doesn't cause any actual problems.
Granted, chances are I'm overlooking something painfully obvious. Would expect it to throw the same error in 2011 though.
Back when trying to fix it SI would complain even if all ports were given separate constraint maps. Any and all combinations short of cutting the extra ports would result in the same error, so I'm just going to leave it as long as it doesn't cause any actual problems.
Granted, chances are I'm overlooking something painfully obvious. Would expect it to throw the same error in 2011 though.
-
- Posts: 31
- Joined: 16 Sep 2013, 21:29
- Skype: jm_quintela
Re: Strand Collision Framework
Thanks!, just in time to test some dinamic Muscle System ideas I was having... great timing men , thaks a lot, you probably save a lot of us HOURS of work ![Happy :)](./images/smilies/1.gif)
![Happy :)](./images/smilies/1.gif)
Re: Strand Collision Framework
Can the strands collide with things other than strands?
Re: Strand Collision Framework
The framework includes a node that turns the edges of a mesh into strands, which you can collide with.
It also includes the stock strand collision setup, which lets them collide with mesh faces as usual.
Have a look at the Dynamic-Mesh-Collisions sample scene
It also includes the stock strand collision setup, which lets them collide with mesh faces as usual.
Have a look at the Dynamic-Mesh-Collisions sample scene
Who is online
Users browsing this forum: SiteExplorer [Bot] and 46 guests