grass distribution
Posted: Thu Sep 12, 2013 3:25 pm
Hello,
I am trying to evaluate a good way to do grass with the rhino/octane combination.
I succeeded in creating 1m X 1m grass panels which I created with the help of the harmonize script
to add jitter and randomness (scale + / - 20%, random rotate 360 deg, xy move +- 0.01m) to a 6400 (800x800) array of grass elements each consisting of 3 single leaves in a polar array of 120 degrees .
The geometry is than saved as an object file and reassigned to a simple block, which is then arrayed as necessary.
However there are different disadvantages to this approach:
1. The 1X1 grass panels cannot be placed precisely, structures under 1m are not possible.
2. When placed on large areas some kind of tiling can occur
3. for 3 dimensional structures this does not work.
So right now I think the best approach would be as follows.
1. create a surface the grass will be applied to
2. distribute Points to the surface by defining a density / sm (e.g. 6400pt / square meter)
3. replace the points by an user defined object or a block
4. apply random transformations to the objects (scale,rotate,displacement)
5. transform the objects to a csv file (separators have to be “real” commas not just “space” )
6. select a grass element (3polar arranged grass leaves) block it and apply the csv file to it.
Right now there are several tools to (partly) archive these functions (harmonize script, csv export scripts, apply points to surface scripts...) however the hole process is quite cumbersome and during some parts very slow. Since my knowledge of grasshopper and other scripting methods is very limited I would like to ask the community if someone can do a script which combines all or at least some parts of the process. Maybe I would be a better approach to create the csv file with the transformations directly from the information of the surface topology?
Any feedback would be really appreciated
best regards
Andreas
I am trying to evaluate a good way to do grass with the rhino/octane combination.
I succeeded in creating 1m X 1m grass panels which I created with the help of the harmonize script
to add jitter and randomness (scale + / - 20%, random rotate 360 deg, xy move +- 0.01m) to a 6400 (800x800) array of grass elements each consisting of 3 single leaves in a polar array of 120 degrees .
The geometry is than saved as an object file and reassigned to a simple block, which is then arrayed as necessary.
However there are different disadvantages to this approach:
1. The 1X1 grass panels cannot be placed precisely, structures under 1m are not possible.
2. When placed on large areas some kind of tiling can occur
3. for 3 dimensional structures this does not work.
So right now I think the best approach would be as follows.
1. create a surface the grass will be applied to
2. distribute Points to the surface by defining a density / sm (e.g. 6400pt / square meter)
3. replace the points by an user defined object or a block
4. apply random transformations to the objects (scale,rotate,displacement)
5. transform the objects to a csv file (separators have to be “real” commas not just “space” )
6. select a grass element (3polar arranged grass leaves) block it and apply the csv file to it.
Right now there are several tools to (partly) archive these functions (harmonize script, csv export scripts, apply points to surface scripts...) however the hole process is quite cumbersome and during some parts very slow. Since my knowledge of grasshopper and other scripting methods is very limited I would like to ask the community if someone can do a script which combines all or at least some parts of the process. Maybe I would be a better approach to create the csv file with the transformations directly from the information of the surface topology?
Any feedback would be really appreciated
best regards
Andreas