ably after some sort of rough cutting you can no longer see.
But it's not standard CAM ("computer aided manufacturing") software toolpaths, since they are not parallel to each other, the fine little ribs that is, but sort of web between the bulk fabric like macrostructure. Nor are they of fixed width, but often quite wide, often tapered even from fat to skinny.
It's always possible that the entire big/small structure was fully 3D modeled then CNC cut very finely, so we are not really looking at efficient toolpaths at all in the fine structure, but actually CAD modeling, as if the whole thing was 3D printed. 3D printing would of course add its own layer-by-layer artifacts.
Here is the original artist's web site, based on a reverse Google image search:
http://www.danielwidrig.com/index.php?page=Work&id=CREAM
Ah, the artifacts (thick vs. thin tiny ridges) are likely explained by use of a spiral toolpath, which is fast and efficient, or either a circular toolpath, which would add artifacts between concentric circles, but you can see how a ball mill is making a micro-pattern here, over the CAD model of folded fabric, where I added red lines:
To achieve this as a 3D model, you would overlay by addition an undulated spiral of ridges on top of a folded fabric model, so just ignore the little ridges and worry about how to undulate a fabric like this, since the micro ridges are just decorative embellishment of the bulk structure.
One way, since I don't see any undercuts is to think in grayscale, in order to create a height map. Swirly stuff in Illustrator or Photoshop, or just 2D curves that then become filled in as stripes then blurred like crazy to make gradient transitions, then converted to a plaque to give it height field 3D structure.
The artist's Flickr has more detail that makes the little ridges look less regular, and more like webbing that conforms to the bulk structure:
https://www.flickr.com/photos/danielwidrig/
Again, so what? Getting the bulk structure is what matters.
I don't have an answer yet, but that's some initial impressions. Kangaroo (physics engine) can create fabric and let it fold about but I still think a 2D image strategy may work easier than trying to do physics (!).
There are Photoshop plugins that do chaotic swirling patterns, for instance, and I assume you know what a heightfield is, or can look it up. It's just the more white the higher you make it in Grasshopper, via some component. Native Rhino has that too.
Native Rhino also had the Drape command, in which you could merely create some 2D construction plane lines and raise them above a surface plane and 3D point edit them a bit to make the middle higher and the ends go down a bit, then drape a plane onto the combination and that would likely give some nice 3D "fabric" structure with the same sharp mountain peaks and smooth hills between them.
…
Added by Nik Willmore at 5:33am on October 19, 2015
variable. It's a short enough script for normal users, along with Stackoverflow and Google English language searches to debug in the future. Just try isolating the problem in a copy of the script, paring it down to a few lines that still fail the same way, then ask around, since then you'll likely only have a basic Python issue to figure out.
import Rhinoimport subprocess# TO MAKE THIS WORK, RIGHT CLICK RHINO.EXE AND OPENFLIPPER.EXE TO ACCESS THE PROPERTIES>COMPATIBILITY TAB AND CHECK "RUN THIS PROGRAM AS ADMINISTRATOR."# ALSO MAKE SURE TO EDIT THE OPENFLIPPER CORRECT VERSION NUMBER AND INSTALLATION PATH THAT I HAVE HARD-WIRED TO VERSION 3.1, BELOW.# Write an ASCII format STL file for the input mesh, for OpenFlipper to operate on:stl_file = open("C:/NIKS_OPENFLIPPER_PARSER_TEMP.stl","w")stl_file.write("solid OBJECT\n")Input_Mesh = Mesh # Let's not use the Rhino term Mesh in the script itself.Input_Mesh.Normals.ComputeNormals() # NITM ("Not In The Manual") but this is needed first.verts = Input_Mesh.Vertices # Get all vertices of the mesh from Rhino.for i,face in enumerate (Input_Mesh.Faces): # Rhino gives faces by vertex index number.stl_file.write(" facet normal %s\n" % str(Input_Mesh.FaceNormals[i]).replace(",", " ")) # Rhino gives normals!stl_file.write(" outer loop\n")stl_file.write(" vertex %s\n" % str(verts[face.A]).replace(",", " ")) # Rhino has ABCD properties for face vertex index numbers.stl_file.write(" vertex %s\n" % str(verts[face.B]).replace(",", " "))stl_file.write(" vertex %s\n" % str(verts[face.C]).replace(",", " "))stl_file.write(" endloop\n")stl_file.write(" endfacet\n")stl_file.write("endsolid OBJECT\n")stl_file.close()# Generate an OpenFlipper script on the fly in order to alter settings not accepted on its command line:openflipper_script = open("C:/NIKS_OPENFLIPPER_PARSER_TEMP.ofs", "w")openflipper_script.write("core.loadObject(\"C:\\\\NIKS_OPENFLIPPER_PARSER_TEMP.stl\")\n")openflipper_script.write("id = core.getObjectId(\"NIKS_OPENFLIPPER_PARSER_TEMP.stl\")\n")openflipper_script.write("remesher.uniformRemeshing(id,%s,%s,%s,true)\n" % (TargetEdgeLength, Iterations, AreaInterations))openflipper_script.write("core.saveObject(core.getObjectId(\"NIKS_OPENFLIPPER_PARSER_TEMP.stl\"),\"C:\\\\Out.stl\")\n")openflipper_script.write("core.exitApplication()\n")openflipper_script.close()# Windows command line execution of OpenFlipper with argument to run our script:OFS = "C:/NIKS_OPENFLIPPER_PARSER_TEMP.ofs"subprocess.call(['C:\Program Files\OpenFlipper 3.1\OpenFlipper.exe',OFS]);# Read in the OpenFlipper output STL file back into Grasshopper:mesh = Rhino.Geometry.Mesh() # Initialize "mesh" variable as a blank mesh object to hold each face.MESH = Rhino.Geometry.Mesh() # Initialize "MESH" variable as a blank mesh object to accumulate faces.with open("C:/Out.stl") as f: for line in f: if "vertex" in line: q = line.replace("vertex ", "") q = q.replace("\n", "") q = [float(x) for x in q.split()] mesh.Vertices.Add(q[0],q[1],q[2]) # Fill mesh with three vertex lines in a row. if "endloop" in line: # File itself tells us we are done with three vertices for one face. mesh.Faces.AddFace(0,1,2) # Create a single face mesh. MESH.Append(mesh) # Magically build a real multi-face mesh while removing redundant vertices. mesh = Rhino.Geometry.Mesh() # Reinitialize empty mesh object for each mesh face.MESH.Normals.ComputeNormals() # Gives nice mesh and preview but makes the script take longer.…
Added by Nik Willmore at 4:32pm on October 9, 2017
efied when confronted by your elevated thinking and ability.
I (rather obviously) fully support your position, however I think the upset expressed by individuals on this post is valid. They are not on your level. They never will be. They probably won't ever need to be. And that's why you run your own business (let's use American Sniper analogy: you're the sheepdog) and they're the sheep - they're skilled people, but require a safe environment within which they can work. Without them you wouldn't be able to run a successful business. Without you they wouldn't have jobs. It's a symbiotic relationship; and please, anyone reading this, I'm not saying this to be provocative, it's just the way the world goes round. Think about the leaders of Google, Apple, Tesla, then re-read the above; it should provide solace to anyone struggling to accept that there are minds out there far greater than their own.
Anyone with real experience in office will know that Peter is making an irrefutably valid point; any building project, even remotely advanced - and like Peter I am making my argument strictly from the perspective of real-world design and delivery of a building project - requires a robust tool to deliver. Utilisation of a computational design tool will invariably warrant some sort of intervention to that tool that supports the needs of the project, namely: coding. I have argued before that without this intervention the designer is then restricted to "prepackaged components that could potentially kill off a novel design solution". That said, the use of GH natively for such endeavours will always suffer this fate, not unless the scheme utilising the tool is largely simplistic. It is not an AEC tool.
The paradigm shift in the AEC industries to BIM means Rhino and GH are going to be defunct if they fail to evolve. I'm confident they will, but clearly these tools will never be primary design tools. Dynamo is an interesting one to bring up; I predicted a while back that GH was the "Betamax of the parametric world". The fact that Dynamo plugs into Revit seamlessly and that increasingly, Revit is taking a stranglehold on the market, means that there may be some truth in my prediction. Admittedly, it still has a long way to go before Dynamo or Revit is anywhere near Rhino/GH. A surface modeller with a brilliant algorithm editor (ie GH) has its uses, but ultimately it could find itself wiped out by the prevalence of BIM authoring tools, the associated government legislation, and the desire to utilise modern technology for design realisation.
Grasshopper is a tool geared largely towards students - it's colourful, pretty, engaging, "easy to use" (a fallacy up there with man-made climate change - ask the sheepdog if you don't understand why) and has successfully opened up a whole new world to a generation of designers (rue the twisty towers, voronoi, hexagonal cladding, circle packing and 'wallaby'). But equally when these students graduate - as Peter points out - they then use GH for live project work and therein lies the problem. Of course this doesn't cover all cases, but nevertheless, a failure to understand the demands of professional practice - a disregard to broadening ones horizons - has the potential to lead to a catastrophic brain-drain for the built environment and engineering. Why not embrace the opinions of others (Peters) who have identified this and wish to enlighten? But then this forum never has been democratic, I know it all too well; any opinion at odds to the collective mass gets shunned, accused of 'trolling', and vilified.
In conclusion, Grasshopper can only be used for project delivery with the aid of coding. I closely observe many (only decent) building projects that have used GH for project delivery and it's the same recurring theme: coding to bridge the GH shortfalls and get the job done. Visual programming by itself is intrinsically flawed, after all why is GH programmed with code? This is the point Peter is making and one which he feels is important to convey; coding is a requisite for anyone seriously looking to implement GH as part of a real-world work-flow for building design and delivery. That's the truth of it.
Now, best run before the GH fanboi mob comes after me - it's been a while and I'm sure they're thirsty...…
control points are sufficient. For arcs that its complicated, it all fake checkpoints more vectors. See the results here:
http://www.youtube.com/user/rhymone1?feature=mhum#p/a/u/1/7eXiOGvevaA…
Added by Rémy Maurcot at 12:28pm on April 13, 2011
u forum.J'apprecie votre page ainsi que l'exemple du composant gha.(je suis la dessus en ce moment).
Pour ce qui est de votre exemple je trouve ça trés intéressant.Les ID de départ d'ou provienne t-il, d'un Text dot ou d'un point ?
J'aimerais modifier le texte dans rhinoceros et que dans gh le text se mettent à jour.Pour ce qui est de leurs position c'est bien ça que je veux; elle est fixé par lobjet de départ:ID
Si je démarre d'un fichier vierge comment injecter les objets comprenant l'ID ?
Merci encore de votre intéressement et de vos efforts de traduction.
Google Translate:
Wooh, good job.
I start working with VB script and other, and for now my level is beginner but I'll catch up soon, thanks to you and people on the forum.
I appreciate your page and the example of the component gha. (I'm the top now).
As for your example I find it very interesting.
IDs starting or he comes, a text or a dot point?
I would like to change the text in rhinoceros and gh in the text are updated.
In terms of their position it is what I want and is set by lobjet starting: ID
If I start with a blank file how to inject objects containing the ID?
Thank you again for your sharing and your translation efforts.…
Added by Rémy Maurcot at 7:10am on December 23, 2011
uick answers. Below you will find some suggestions, but don't think of them as rules and especially don't think of them as guarantees.
1. Choose a descriptive title for your post
Don't call your question "Help!" or "I have a problem" or "Deadline tonight!", but actually describe the problem you are having.
2. Be succinct but clear in your wording
People need to know some details about your problem in order to understand what sort of answers would satisfy you, but nobody cares about how angry your boss or how bad your teacher or how tight your deadline is. Talk about the problem and only the problem. If you don't speak English well, you should probably post in your native language as well as providing a Google Translation of your question.
3. Attach minimal versions of all the relevant files
If you have a GH/GHX file you have a question about, attach it to the post. Don't expect that people will recreate a file based on a screen-shot because that's a lot of pointless work. It's also a good idea to remove everything non-essential from a GH file. You can use the 'Internalise Data' menu option to cut everything to the left of a parameter:
If you're importing curves or Breps or meshes from Rhino, you can also internalise them so you won't have to post a 3DM file as well as a GH file. If you do attach large files, consider zipping them first. Do not use RAR, Ning doesn't handle it.
It is especially a good idea to post files that don't require any non-standard components if at all possible. Not everyone has Kangaroo or Hoopsnake or Geco installed so if your file relies on those components, it might not open correctly elsewhere.
4. Include a detailed image of the GH file if it makes sense
If your question is about a specific (group of) components, consider adding a screenshot of the file in the text of the post. You can use the Ctrl+Shift+Q feature in Grasshopper to quickly create nice screenshots with focus rectangles such as this:
5. Include links to online resources if possible
If you have a question about Schwarz Minimal surfaces, please link to a website which talks about these.
6. Create new topics rather than continuing old ones
It's usually better to start a fresh question, even if there's already a discussion that kinda sorta tangentially touches upon the same issue. Please link to that discussion, but start anew.
7. This is not a 'do my work for me' group
Many of us like to help, but it's good to see effort on our part being matched by effort on your part. Questions in the form of 'I need to do X but cannot be bothered to try and learn the software' will (and should) go unanswered.
7b. Similarly, questions in the form of 'How do I quickly recreate this facade that took a team of skilled professionals four months to figure out?' have a very low success rate.
--
David Rutten
Lead Grasshopper Development
Robert McNeel & Associates…
Added by David Rutten at 12:58pm on October 1, 2013
Diploma project from knagata on Vimeo.
Kinect hack on GRASSHOPPER 01 from knagata on Vimeo.
Kinect & Grasshopper from Elise Elsacker on Vimeo.
gHowl + Processing + Lazycutter Test from Atel