StrandTree - Ice Procedural Tree Generator
Plugins linking to this thread: (hide)
Strand Tree
Updated April 2014 with a fix by Hans Adrian for Softimage 2014+. Strand Tree is a set of ICE compound nodes that allow the creation of plants and
trees. See the author site / the si-community discussion for documentation, example
scenes and videos.
Emitters: Emit Branches, Emit Leaves Grow Control: Even distribution grow, Random distribution grow Modifiers: Modify Branch Color by Iteration, Modify Branch Width by Iteration, Modify Particle Size by Iteration, Modify Value by Iteration, Modify Value by Normalized Strand Segment Debug: Debug Iteration Strand Effects: Deform Tree by Curve, Surface Grow Rendering: Tree Visibility Options, Use Geometry Branches Presets: Basic Tree, Pine Tree
Hans' interesting explanation for the Softimage 2014 fix: [..] I moved the »set data« node to outside of »Add point« node on creation. This is because whenever there is a »Add point« node, the custom attribute stored in points may be reset. This was the case with »self.__strandTree_NumBranchesPerIteration«, which was reset to 0. It caused division by 0 in »Even Distribution Grow« node and thus the whole compound does not work. To work around this, we need to set the custom attributes in per Object context, instead, so that those attributes will not reset when there is another »Add point« node.
Available: Softimage ICE Procedural Tree Generator, ICE Procedural Tree - Surface Grow and Tree simulation - wip.
local backup: StrandTree.xsiaddon (fixed version)
Emitters: Emit Branches, Emit Leaves Grow Control: Even distribution grow, Random distribution grow Modifiers: Modify Branch Color by Iteration, Modify Branch Width by Iteration, Modify Particle Size by Iteration, Modify Value by Iteration, Modify Value by Normalized Strand Segment Debug: Debug Iteration Strand Effects: Deform Tree by Curve, Surface Grow Rendering: Tree Visibility Options, Use Geometry Branches Presets: Basic Tree, Pine Tree
Hans' interesting explanation for the Softimage 2014 fix: [..] I moved the »set data« node to outside of »Add point« node on creation. This is because whenever there is a »Add point« node, the custom attribute stored in points may be reset. This was the case with »self.__strandTree_NumBranchesPerIteration«, which was reset to 0. It caused division by 0 in »Even Distribution Grow« node and thus the whole compound does not work. To work around this, we need to set the custom attributes in per Object context, instead, so that those attributes will not reset when there is another »Add point« node.
Available: Softimage ICE Procedural Tree Generator, ICE Procedural Tree - Surface Grow and Tree simulation - wip.
local backup: StrandTree.xsiaddon (fixed version)
author site: http://iceduous.blogspot.com / si-community thread
-
- Posts: 94
- Joined: 09 Jun 2009, 23:47
StrandTree - Ice Procedural Tree Generator
download link: Strand Tree Compound Pack
edit: If you are using Softimage 7.x version, please update and reexport the "Emit Leaves" compound. it's using the "Point Index to Location" node that only comes with softimage 2010 version, but this can be replaced with the "ID to Location" node inside the compound, like in this image: emitLeaves_Fix_xsi7.jpg
videos:
Building a Tree
Surface Grow
Tree Dynamics - WIP
16 compounds:
Emitters:
- Emit Branches
- Emit Leaves
Grow Control:
- Even distribution grow
- Random distribution grow
Modifiers:
- Modify Branch Color by Iteration
- Modify Branch Width by Iteration
- Modify Particle Size by Iteration
- Modify Value by Iteration
- Modify Value by Normalized Strand Segment
Debug:
- Debug Iteration
Strand Effects:
- Deform Tree by Curve
- Surface Grow
Rendering:
- Tree Visibility Options
- Use Geometry Branches
Presets:
- Basic Tree
- Pine Tree
(all of them located under Tasks Tab > "Strand Tree")
more info at: http://iceduous.blogspot.com
Cheers,
Fabricio
edit: If you are using Softimage 7.x version, please update and reexport the "Emit Leaves" compound. it's using the "Point Index to Location" node that only comes with softimage 2010 version, but this can be replaced with the "ID to Location" node inside the compound, like in this image: emitLeaves_Fix_xsi7.jpg
videos:
Building a Tree
Surface Grow
Tree Dynamics - WIP
16 compounds:
Emitters:
- Emit Branches
- Emit Leaves
Grow Control:
- Even distribution grow
- Random distribution grow
Modifiers:
- Modify Branch Color by Iteration
- Modify Branch Width by Iteration
- Modify Particle Size by Iteration
- Modify Value by Iteration
- Modify Value by Normalized Strand Segment
Debug:
- Debug Iteration
Strand Effects:
- Deform Tree by Curve
- Surface Grow
Rendering:
- Tree Visibility Options
- Use Geometry Branches
Presets:
- Basic Tree
- Pine Tree
(all of them located under Tasks Tab > "Strand Tree")
more info at: http://iceduous.blogspot.com
Cheers,
Fabricio
Last edited by fabricio.chamon on 28 Apr 2010, 06:26, edited 3 times in total.
- Hirazi Blue
- Administrator
- Posts: 5107
- Joined: 04 Jun 2009, 12:15
Re: StrandTree - Ice Procedural Tree Generator
Very nice!!!
edit: I've moved this thread from "Announcements" to "ICE Compounds", now that we host the file ;)
edit: I've moved this thread from "Announcements" to "ICE Compounds", now that we host the file ;)
Stay safe, sane & healthy!
- Hirazi Blue
- Administrator
- Posts: 5107
- Joined: 04 Jun 2009, 12:15
Re: StrandTree - Ice Procedural Tree Generator
Just saw this on the XSI Mailing List and went ahead and placed it on the si-community server also: strandtree_quickguide.pdf
@fabricio - I'll remove it, if you don't want too be hosted here, obviously...
@fabricio - I'll remove it, if you don't want too be hosted here, obviously...
Stay safe, sane & healthy!
-
- Posts: 94
- Joined: 09 Jun 2009, 23:47
Re: StrandTree - Ice Procedural Tree Generator
cool! thanks a lot Leendert.
I was not aware of the file upload filed on the post form, lol!
that's why I didn't posted it here, because I didn't want to spam the forum with links that open ad windows...
now that I know it exists, I'll upload some more images, scenes and presets I have here.
I was not aware of the file upload filed on the post form, lol!
that's why I didn't posted it here, because I didn't want to spam the forum with links that open ad windows...
now that I know it exists, I'll upload some more images, scenes and presets I have here.
- Hirazi Blue
- Administrator
- Posts: 5107
- Joined: 04 Jun 2009, 12:15
Re: StrandTree - Ice Procedural Tree Generator
Files too large to attach, for instance "StrandTree 3.1" , can obviously still be sent to
"upload [at] si-community.com"
"upload [at] si-community.com"
Stay safe, sane & healthy!
Re: StrandTree - Ice Procedural Tree Generator
this is a fantastic toolset, thanks a lot for sharing, incredible work, its stable and fast, i'm having so much fun with it
again, thank you!
again, thank you!
-
- Posts: 94
- Joined: 09 Jun 2009, 23:47
Re: StrandTree - Ice Procedural Tree Generator
Here's the Ivy scene for you to experiment with, as showed on the vimeo surface grow video.
note: the statue model was not modeled by me, it's a free model downloaded from some website. for more info check the "copyright" annotation property under the object inside the scene.
Get it here: StrandTree_Ivy
note: the statue model was not modeled by me, it's a free model downloaded from some website. for more info check the "copyright" annotation property under the object inside the scene.
Get it here: StrandTree_Ivy
- Hirazi Blue
- Administrator
- Posts: 5107
- Joined: 04 Jun 2009, 12:15
Re: StrandTree - Ice Procedural Tree Generator
I've got a strange feeling an attachment is missing... ;)
Stay safe, sane & healthy!
-
- Posts: 94
- Joined: 09 Jun 2009, 23:47
Re: StrandTree - Ice Procedural Tree Generator
Hi Hirazi,
the attachment is about 1.3mb, so I sent the upload request to upload [at] si-community.com, like you said earlier.
could you check if the e-mail has arrived please ?
the attachment is about 1.3mb, so I sent the upload request to upload [at] si-community.com, like you said earlier.
could you check if the e-mail has arrived please ?
- Hirazi Blue
- Administrator
- Posts: 5107
- Joined: 04 Jun 2009, 12:15
-
- Posts: 94
- Joined: 09 Jun 2009, 23:47
Re: StrandTree - Ice Procedural Tree Generator
Hi,
First I'd like to thank you for your work on these compounds, they produce really nice trees !
I'm trying to optimize the result, playing with Shape Resolution U & V mostly.
But now I'd like to switch to segment shape for the last iterations so those little branches are rendered with a simple Hair_Renderer shader.
I can switch the shape from capsule to box, but when switching to segment, those iterations don't render.
I tried this :
if state id > n :
-shape = segment
-branch width = branch width * 100 (to match the result from mesh to hair)
-set data self.StrandTree_isHair = true (bool attribute used in the render tree to switch a to Hair_Renderer shader)
I made a test on a simple ice Cloud and it works, but digging in your compound is not as trivial ;)
Do you have an idea why it doesn't work ?
anyway thanks a lot for sharing this !
thomas
First I'd like to thank you for your work on these compounds, they produce really nice trees !
I'm trying to optimize the result, playing with Shape Resolution U & V mostly.
But now I'd like to switch to segment shape for the last iterations so those little branches are rendered with a simple Hair_Renderer shader.
I can switch the shape from capsule to box, but when switching to segment, those iterations don't render.
I tried this :
if state id > n :
-shape = segment
-branch width = branch width * 100 (to match the result from mesh to hair)
-set data self.StrandTree_isHair = true (bool attribute used in the render tree to switch a to Hair_Renderer shader)
I made a test on a simple ice Cloud and it works, but digging in your compound is not as trivial ;)
Do you have an idea why it doesn't work ?
anyway thanks a lot for sharing this !
thomas
Re: StrandTree - Ice Procedural Tree Generator
Fabricio, this is impressive---Thanks for sharing, this is really fun to use!
I noticed that you can add a few more levels of iteration by putting a "modify value by iteration" into "strand resolution" of "emit branches" .This reduces segment count for shorter branches. Use the default curve, and your original resolution value for the "value" in "modify value by iteration"
(Thomas , I think this is what you meant with "playing with Shape Resolution U & V")
I could add 2 more levels of iteration this way :
I noticed that you can add a few more levels of iteration by putting a "modify value by iteration" into "strand resolution" of "emit branches" .This reduces segment count for shorter branches. Use the default curve, and your original resolution value for the "value" in "modify value by iteration"
(Thomas , I think this is what you meant with "playing with Shape Resolution U & V")
I could add 2 more levels of iteration this way :
softimage resources section updated Jan 5th 2024
-
- Posts: 94
- Joined: 09 Jun 2009, 23:47
Re: StrandTree - Ice Procedural Tree Generator
@Thomas: Hi, this is very strange, I couldn't get to work either. How did you tested this on the simple ice cloud ?
I tried to achieve this with 3 scenarios:
1) point cloud with 2 "add point" nodes, one with particles set to: shape=cylinder, size=0.1 and another with: shape=segment, size=10. Both have a "Create Strands" node connected to the "on creation" port. Right from this simple setup I'm not able to get the segment to render if the first particle has a shape other than "segment" itself or "point".
2) same as above, but the shapes are both cylinder (different state_id on each add point node). From this I did like you: if state_id greater than x, change shape, size and strandsize. interesting enough, this gives me inconsistent results for each of the comparision types:
- equal to, less than, less than or equal to - WORKS
- not equal to, greater than, greater than or equal to - DOES NOT WORK (only the cylinder strands show up on render)
strange is that the viewport is changing correctly, but the render is not.
3) using emit from source instead of add point node, to check if it was something related to init attributes set inside the emitter compound, then doing the same "if state_id = x ...bla bla bla" as before. result: same inconsistency with the comparision node. this is really weird.
SOLUTION: as it looks like a bug, the only solution I've found is to get a second point cloud, plug clone point node (source=first cloud, target=self, delete source if cloned=true), and do the if statements you like to enable the cloning. this worked fine no matter what comparision type I used. attached a pic showing the ice tree:
(by the way, testing on SI 2010 sp1 here)
@Reinhard: very clever!! I think this setup could fit right inside the emit branches compound on the next version release. What do you think about this being default? Also nice image you have there, lots of strands going on the last iterations huh? (looks like hair). are you rendering with sss or it's just a impression ?
I tried to achieve this with 3 scenarios:
1) point cloud with 2 "add point" nodes, one with particles set to: shape=cylinder, size=0.1 and another with: shape=segment, size=10. Both have a "Create Strands" node connected to the "on creation" port. Right from this simple setup I'm not able to get the segment to render if the first particle has a shape other than "segment" itself or "point".
2) same as above, but the shapes are both cylinder (different state_id on each add point node). From this I did like you: if state_id greater than x, change shape, size and strandsize. interesting enough, this gives me inconsistent results for each of the comparision types:
- equal to, less than, less than or equal to - WORKS
- not equal to, greater than, greater than or equal to - DOES NOT WORK (only the cylinder strands show up on render)
strange is that the viewport is changing correctly, but the render is not.
3) using emit from source instead of add point node, to check if it was something related to init attributes set inside the emitter compound, then doing the same "if state_id = x ...bla bla bla" as before. result: same inconsistency with the comparision node. this is really weird.
SOLUTION: as it looks like a bug, the only solution I've found is to get a second point cloud, plug clone point node (source=first cloud, target=self, delete source if cloned=true), and do the if statements you like to enable the cloning. this worked fine no matter what comparision type I used. attached a pic showing the ice tree:
(by the way, testing on SI 2010 sp1 here)
@Reinhard: very clever!! I think this setup could fit right inside the emit branches compound on the next version release. What do you think about this being default? Also nice image you have there, lots of strands going on the last iterations huh? (looks like hair). are you rendering with sss or it's just a impression ?
-
- Posts: 94
- Joined: 09 Jun 2009, 23:47
Re: StrandTree - Ice Procedural Tree Generator
forgot to say: check first page for a video of a wip tree simulation!
Re: StrandTree - Ice Procedural Tree Generator
Cheers man, thanks for picking up on this Fabricio. I think it would be nice to have this as default, the length attenuation fcurve could be reused. It might make sense to implement it using a slider from 0 (no optimization) to 1 (full).
Had some side effects (see attached) using this but I think this could be resolved if new branches were spawned at random % positions instead of at random points. I don't know how difficult it is to implement this because I haven't gone to real depths with ICE yet. There is a compoud I remember (I think done by Helge) called GetPositionOnStrand that could probably be used for this. You can find it inside Kristinka Hair kH_Strand_Length compound.
The material is 2011's Hair_Shading, standard raytracing & shadows using a light rig. I think the SSS effect might come the high number of lights (64).
______#
PS... nice sim!
Had some side effects (see attached) using this but I think this could be resolved if new branches were spawned at random % positions instead of at random points. I don't know how difficult it is to implement this because I haven't gone to real depths with ICE yet. There is a compoud I remember (I think done by Helge) called GetPositionOnStrand that could probably be used for this. You can find it inside Kristinka Hair kH_Strand_Length compound.
The material is 2011's Hair_Shading, standard raytracing & shadows using a light rig. I think the SSS effect might come the high number of lights (64).
______#
PS... nice sim!
Last edited by rray on 28 Apr 2010, 18:16, edited 1 time in total.
softimage resources section updated Jan 5th 2024
Who is online
Users browsing this forum: No registered users and 38 guests