h mind wandering or daydream, both at present, and through future applications of brain knowledge in design.
The work I am seeking to collaborate with a computational/interaction designer on is looking at how fidgeting and micro movements of the hands, made while daydreaming may, in-fact be embodiments of where the wandering mind is going. This is based on a specific scientific paper produced titled 'Restless Mind, Restless Body' by Paul Seli.
Outcome 1: I am proposing is to use the point cloud data produced from the twitching fingers to generate a geometry which embodies and brings solid form to the fidgeting fingers motion. This form will become a sculpture element CNC milled from a stone-like material.
Outcome 2: I am proposing is that the point cloud data is developed into a 3D animation to be integrated into an interactive video work.
Systems which may be good starting points for the project could be, combinations of Leapmotion and Grasshopper (https://www.youtube.com/watch?v=eXlWhA9c7N0) or Firefly, Leapmotion and Kangaroo (http://www.grasshopper3d.com/video/kangaroo-constraints-firefly-leapmotion). Although these outcomes are different, I thought these approaches may be adaptable to what I am looking to create.
If you are interested in the project I would love to discuss it with you in more depth, and explore if a collaboration may be possible.
Please email hello [at] amycroft [dot] co [dot] uk…
e chosen to dive into Grasshopper. I’m about 6 months in. If some of my comments are completely off, please take that to mean that a feature is too inaccessible to a newish user rather that it’s just missing, as I may have stated.
One of my primary pain points is this. Things that can be done in other programs are invariably easier in other programs. This is a big enough issue that I doubt there’s an easy solution that an armchair qb like myself can offer up.
The interface:
I’ve used a lot of 3D programs. I’ve never encountered one as difficult as grasshopper. What in other programs is a dialog box, is 8 or 10 components strung together in grasshopper. The wisdom for this I often hear among the grasshopper community is that this allows for parametric design. Yet PTC (Parametric Technology Corp.) has been doing parametric design software since 1985 and has a far cleaner and more intuitive interface. So does SolidWorks, Inventor, CATIA, NX, and a bunch of others.
In the early 2000's, when parametric design software was all the rage, McNeel stated quite strongly the Rhino would remain a direct modeler and would not become a parametric modeler. Trends come. Trends go. And the industry has been swinging back to direct modeling. So McNeel’s decision was probably ok. But I have to wonder if part of McNeel’s reluctance to incorporate some of the tried and proven ideas of other parametric packages doesn't have roots in their earlier declaration to not incorporate parametrics.
A Visual Programming Language:
I read a lot about the awesomeness and flexibility of Grasshopper being a visual programming language. Let’s be clear, this is DOS era speak. I believe GH should continue to have the ability to be extended and massaged with code, as most design programs do. But as long as this is front and center, GH will remain out of reach to the average designer.
Context sensitivity:
There is no reason a program in 2014 should allow me to make decisions that will not work. For example, if a component input is in all cases incompatible with another component's output, I shouldn't be able to connect them.
Sliders:
I hate sliders. I understand them, but I hate ‘em. I think they should be optional. Ya, I know I can r-click on the N of a component and set the integer. It’s a pain, and it gives no feedback. The “N” should turn into the number if set. AAAnd, sliders should be context sensitive. I like that the name of a slider changes when I plug it into something. But if I plug it into something that'll only accept a 1, a 2, or a 3, that slider should self set accordingly. I shouldn't be able to plug in a “50” and have everything after turn red.
Components:
Give components a little “+” or a drawer on the bottom or something that by clicking, opens the component into something akin to a dialog box. This should give access to all of the variables in the component. I shouldn't have to r-click on each thing on a component to do all of the settings.
And this item I’m guessing on. I’m not yet good enough at GH to know if this may have adverse effects. Reverse, Flatten, Graft, etc.; could these be context sensitive? Could some of these items disappear if they are contextually inappropriate or gray out if they're unlikely?
Tighter integration with Rhino:
I'm not entirely certain what this would look like. Currently my work flow entails baking, making a few Rhino edits, and reinserting into GH. I question the whole baking thing, btw. Why isn't it just live geometry? That’s how other parametric apps work. Maybe add more Rhino functionality to GH. GH has no 3D offset. I have to bake, offsetserf, and reinsert the geometry. I’m currently looking at the “Geometry Cache” and “Geometry Pipeline” components to see if they help. But I haven't been able to figure it out. Which leads me to:
Update all of the documentation:
I'm guessing this is an in process thing and you're working toward rolling GH from 0.9.00075 to 1.0. GH was being updated nearly weekly earlier this year. Then it suddenly stopped. If we're talking weeks before a full release, so be it. But if we're looking at something longer, a documentation update would help a lot. Geometry Cache and Geometry Pipeline’s help still read “This is the autogenerated help topic for this object. Developers: override the HtmlHelp_Source() function in the base class to provide custom help.” This does not help. And the Grasshopper Primer 2nd Ed. was written for GH 0.60007.
Grasshopper is fundamentally a 2D program:
I know you'll disagree completely, but I'm sticking to this. How else could an omission like offsetsurf happen? Pretty much every 3D program in existence has this. I’m sure I can probably figure out how to deconstruct the breps, join the curves, loft, trim, and so forth. But does writing an algorithm to do what all other 3D programs do with a dialog box seem reasonable? I'm sure if you go command by command you'll find a ton on such things.
If you look at the vast majority of things done in GH, you'll note that they're mostly either flat or a fundamentally 2D pattern on a warped surface.
I've been working on a part that is a 3D voronoi trimmed to a 3D model. I've been trying to turn the trimmed voronoi into legitimate geometry for over a month without success.
http://www.grasshopper3d.com/profiles/blogs/question-voronoi-3d-continued
I’ve researched it enough to have found many others have had the exact same problem and have not solved it. It’s really not that conceptually difficult. But GH lacks the tools.
Make screen organization easier:
I have a touch of OCD, and I like my GH layout to flow neatly. Allow input/output nodes to be re-ordered. This will allow a reduction in crossed wires. Make the wire positions a bit more editable. I sometimes use a geometry component as a wire anchor to clean things up. Being able to grab a wire and pull it out of the way would be kinda nice.
I think GH has some awesome abilities. I also think accessing those abilities could be significantly easier.
~p…
s, the participants will focus on the key advantages of Grasshopper’s capabilities through a range of design challenges in order to aid designers in both their drafting tasks and modelling capabilities.
The workshop covers many concepts such as Object Attributes/Parameters, Data Types, Data Structures, and Designing with Algorithms. Specifically, this course will focus on understanding both Lists and Data Trees, as well as the best practices for integrating Grasshopper into your Professional Design Workflow. The workshop offers guided curriculum and continuous support, based on in-depth and professional learning experiences.
Workshop outcomes:Teach the participants how to:-
+ be proficient in parametric logics learning the key benefits of parametric techniques in architecture design workflow (when to use it & how to use it)+ Correctly communicate with different 3D and BIM packages in order to keep the geometry clean and light while preserving all NURBS information.+ Develop architecture design based on mathematical equations to create non-standard free form building skin.+ Create a pattern that changes dynamically based on specific inputs which can be applied over the building façade, interior walls or ceiling or even floor pattern.+ Automate and Optimize design variables to achieve the optimum solution for the design problem.
Program Outline:
DAY 1:-Introduction to Parametric Design -Introduction to Grasshopper & Rhino (technical tools).
DAY 2:-Exploring the parametric workflow. -Setup the design algorithm & generating a list of data.
DAY 3:-Introducing the new ways of generating parametric curves and surfaces.-Parametric form generation in-dept
DAY 4:-Introducing Data Tree logic and parametric transformations.-Creating Associative techniques – Attractors (points, curves and vectors).
DAY 5:-Working with advanced form generation with dynamic pattern.-Parametric optimization based on environmental analysis -featuring the Performance-Driven Design possibilities
DURATION:6 – 8 hours per day [50 - 60 hours Total]Every Saturday [9.00 Am : 1.00 Pm & 2.30 Pm : 6.00 Pm]
PREREQUISITES:No need of any specific knowledge of Rhinoceros or Grasshopper.
REGISTRATION:In order to register, you will need to fill the Registration Form .https://docs.google.com/forms/d/1PckdW1hrWs9fJAHWBZlVsuhH8K0PfDuMWIpXHT_4FYw/viewform
REGISTRATION DEADLINE:23th October 2014.…
Added by ayman wagdy at 7:48am on October 19, 2014
we're actually using PET sheets for our flexures. We try to design so that the flexures don't go through more than +/- 30 degrees of deflection. If the angular deflection is kept small, the lifetime can definitely be on the order of 1000000 cycles.
As for the design process (item 2), ideally the designer would be able to use a simple 3D CAD tool to design a model of a robot, and the geometry would be represented by dimensioning the individual parts in the model. Maybe there should be some parametric primitive kinematic building blocks like four bar linkages, box frames, etc. that a user could build up a robot from. But, the key functionality the tool needs to provide is for the designer to be able to visualize how the robot will move when it's fabricated. This could mean observing (or plotting) the motion of a leg, a wing, or a series of body segments. Ideally, then, the tool would generate an unfolding of the design. How this would work is still very vague - maybe the user would assist in the unfolding, maybe there would be an optimization routine that computes optimal unfoldings based on criteria like minimal waste, or fewest pieces (I would *not* constrain the problem to construction from a single monolithic piece as in origami). The biggest problem we have right now, is that our design process is totally divorced from fabrication. Even if we went through the trouble of extruding individual thin plates in Solidworks and creating an assembly for visualizing the kinematics of a mechanism, that particular representation doesn't transfer easily to the fabrication process because it's essentially monolithic.
Item 3: The 2D drawing is simple a drawing done manually in Solidworks. There are different layers for flexure cuts, outline cuts, and potentially any cuts to be made in the plastic flexure layer. Depending on the robot, there may be many separate pieces for different parts and linkages in a single robot. For example, the drawing for a robot containing a fourbar linkage may have the linkage laid out as a physically separate piece consisting of five rigid links connected by four flexure hinges. During assembly, the designer would then fold up that linkage and insert it into the robot wherever it's supposed to go. If you're curious you can see some sample 2D drawings for older designs here: http://robotics.eecs.berkeley.edu/~ronf/Prototype/ under the "Example Structures" heading.
I noticed Kangaroo seems to be a popular choice for physical simulations. I don't really even need to include forces like bending resistance - I'm happy to allow the design tool to approximate flexures as pin joint-type hinges. Once the design is unfolded, the details of how to cut the flexures could be worked out in a post-processing step. I wouldn't expect the tool to be able to realistically simulate the bending of the hinges.
I'm going to have to dig a lot deeper into understanding Grasshopper and Kangaroo. I only just got started with Grasshopper today by following the folding plate tutorial on wa11ace.com.au today. …
ally, obviously it's a little different to what you have all suggested, although the advice was used and appreciated.
private void RunScript(DataTree<Point3d> x, ref object A) {
//new tree object
DataTree<Point3d> treeOfPts = new DataTree<Point3d>();
// new variable to stroe the largest point
double theLargestY = Double.NegativeInfinity;
bool descendingY = true;
for (int i = 0; i < x.BranchCount; i++) // cycle through the branches (x.BranchCount) passed into the script
{
foreach (Point3d pt in x.Branch(i)) //cycle through the list within the branch
{
//do something here... in my case find the larget point in this branch
//(which is a rectangle of points, the starts at the lowest pt.X value )
if (descendingY)
{
if(theLargestY < pt.Y)
{
theLargestY = pt.Y;
}
//then store all values descending from that point
//while maintaining the tree's structure
if (pt.Y < theLargestY)
{
// new path object with an index of i
GH_Path path = new GH_Path(i);
//Add the relevant info to the list at the specified path
treeOfPts.Add(pt, path);
}
}else //ascending
{
if (pt.Y > theLargestY)
{
// new path object with an index of i
GH_Path path = new GH_Path(i);
//Add the relevant info to the list at the specified path
treeOfPts.Add(pt, path);
}
if(theLargestY < pt.Y)
{
theLargestY = pt.Y;
}
}
}
//inverse ascending/descending
descendingY = !descendingY;
//reset the largest point
theLargestY = Double.NegativeInfinity;
}
//'pass out' the newly created tree
A = treeOfPts;
}
Many thanks…
Added by David Dawkins at 5:38am on February 23, 2016
tric configuration, for example another coplanar configuration (no matter what order it takes the segments) but rotated in the space (so it takes other segments of course).
Simple stated, among all the possible combinations there are identical shapes, both coincident or not. In any case all the combinations shares the central point. I'm aiming to obtain a list of different shapes (actually a sort of pipe joints to 3d print).
When I've red my own words I've realized that the concept can be stated in a more simple way.
I've tried to move on to produce the different shapes to compare, so I've played around a little bit with the definition.
I've used Anemone with two data strams, one for the geometries so every istance can be visualized properly and not overlapped, and one for the index to cycle through the slider that sets the path_index input of the cluster adding 0.001 for each cycle.
I must admit that I'm not expert with data trees and branches so I barely understand what goes on in the cluster; intuitively I'd connect the index counter to the path_index input but it doesn't work.
Another thing I've noticed is that nothing comes out from the D1 data strem while I'd expect a series of crescent values. Maybe I could try a sort of hard coding with a grafted series from 0 to 1 with 0.001 steps.
Attached you can find the last version.Thank you in advance for the support.…
oop to connect with line command this point i with the point i+1, but
something doesn't work! i've only the last line draw in my viewport.
that's the code: (don't worry about variable like pt3,pt4, or other...unused...i use all this in second time to connect
in different way this points between us)
Private Sub RunScript(ByVal ListPoints As List(Of On3dPoint), ByVal NColonne As Integer, ByRef A As Object, ByRef B As Object)
Dim pt1,pt2,pt3,pt4 As On3dPoint
Dim count As Integer
Dim arr_line As New List(Of OnLine)
Dim line As New OnLine
Dim N_matrix As Integer
N_matrix = (ncolonne * ncolonne) - Ncolonne - 1
For count = 0 To N_Matrix
pt1 = ListPoints(count)
print(pt1.x)
pt2 = ListPoints(count + 1)
print(pt2.x)
line.Create(pt1, pt2)
arr_line.Add(line)
Next
B = arr_line
End Sub
thanks all.…
step-sizes. It starts out with large jumps, then as it cools the jumps get smaller and smaller as does the likelihood of a retrograde jump being accepted as a valid new state.
Most fitness landscapes have more than one dimension and therefore a 'jump' could include any number between 1 and N, where N is the dimensionality of the landscape. The Drift Rate setting —which may well be poorly named— controls the odds that a jump includes an additional dimension. All jumps must be at least one-dimensional, but 25 percent of them (on average) will include another dimension. 25% of those will include a third dimension and 25 percent of those a fourth and so on and so forth until the dimensionality of the landscape has been reached. Here's a list for 1000 jumps:
Drift Rate: 25%
1D jumps: 750
2D jumps: 187
3D jumps: 47
4D jumps: 12
5D jumps: 3
6D jumps: 1
A good question to ask would be; "Why would you want a jump to include more than one dimension?" and the answer is that the more genes are related, the higher the changes that a multi-dimensional jump will yield an improvement. It's not difficult to imagine that you cannot improve your current state by only modifying a single gene. Sometimes you need to change two in unison in order to reach a better solution. If your genes are highly related (which is bad practice to begin with) then you may need to adjust the Drift Rate to a higher value.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
Added by David Rutten at 11:09am on April 17, 2012
) Course Fee: Professional EUR 825,- (+VAT), Student EUR 415,- (+VAT)
Led by plug-in developer and structural engineer Clemens Preisinger, along with Zeynep Aksoz and Matthew Tam from the expert Karamba3D team, this three-day workshop will focus on methods of setting up structural systems in the parametric environment of Grasshopper. The participants will be guided through the basics of analyzing and interpreting structural models, to optimization processes, and how to integrate Karamba3D into C# scripts.
This workshop is aimed towards beginner to intermediate users of Karamba3D. However, advanced users are also encouraged to apply. It is open to both professional and academic users. For beginner users of Rhino and Grasshopper, there will be an optional introductory course one day before the Karamba3D course.
Karamba3D 1is a parametric structural engineering tool which provides accurate analysis of spatial trusses, frames, and shells. Karamba3D is fully embedded in the parametric design environment of Grasshopper, a plug-in for the 3D modeling tool Rhinoceros. This makes it easy to combine parameterized geometric models, finite element calculations, and optimization algorithms like Galapagos.
Course Outline
Introduction and presentation of project examples
Optimization of cross sections of line-based and surface-based elements
Geometric optimization
Topological optimization
Structural performance informed form finding
Understanding analysis algorithms embedded in Karamba3D and visualizing results
Complex workflow processes in Rhino, Grasshopper, and Karamba3D
Places are limited to a maximum of 10 participants with limited educational places. A minimum of 4 participants is required for the workshop to take place. The workshop will be canceled if this quota is not filled by October 28. The workshop will be taught in English.
Course Requirements
Basic Rhino and Grasshopper knowledge is recommended. An introductory course is offered.
No knowledge of Karamba3D is needed. Participants should bring their own laptops with Grasshopper and either Rhino 5 or Rhino 6 installed. You can download a 90-day trial version of Rhino. Karamba3D ½ year licenses for non-commercial use will be provided to all participants.
Please register here……
Added by Matthew Tam at 6:38am on September 13, 2019
, which is merely making a new Voronoi from the calculated centers of mass of the original Voronoi cells, and doing so again and again, but here I'm not using Hoopsnake or Anemone plugins to make a loop, I just copy the component into a stack of them. Hoopsnake was slow anyway since it stores all the solutions. I'm not using the native Voronoi since it only allows a geometry bounding box, not a 3D surface, so I had a VB script I got somewhere, and used that instead, and you can double click them to see the code inside. It's rather slow but can be quickly tested on smaller numbers of original points, and you really only need about five cycles since it rapidly converges on a minimum. I've created scaled down versions of the full final Voronoi cell solids, so the actual NURBS solid is likewise bigger than what you see here:
Those were done with 300 points, though many of those are immediately deleted since they lie outside the NURBS surface which is a sphere point edited into a new shape, and took several minutes, but it's only one minute for only 50 starting points in the bounding box. The blue dots show the paths of relaxation:
There are no surface points here, all are inside the original body, rather evenly, so connecting to the outside world is another matter.
Because it's not a strict topological all-tetrahedral mesh, it can in fact be more even in distribution than the usual finite element tetrahedral meshes.
It could be vastly sped up, perhaps, using something like Qhull, a command line C program, rather than a Visual Basic (VB) script.
I'm curious what exactly your STL file is. Is that a scan of real bone? Now if that really is the solid you want to make points in, well, it's already highly complex and perforated, so doing this script on it may be rather slow! A drawing of what you want would be helpful. Hundreds of points inside, but evenly spaced within the little threads of the truss? Why not use the mesh vertices as points and not use any points in the interior of the beams?
…
Added by Nik Willmore at 9:29pm on August 11, 2015