enerated their 3d shapes, but couldn't find what some of their types are:
This happens due to lack of Openstreetmap.org data attached to that building geometry. This data is called a "tag". A tag consist of two items connected with = character.
For example, an office building would have the following tag: building=office. Residential building tag would be: building=residential Ambulance station: emergency=ambulance_station The building, with 10 stories/floors would have a tag: building:levels=10
If you know that some building is an office building, a residential building, an ambulance station or anything other than that, you can tag that building by yourself. This is the beauty of the Open street map: any user with internet connection can add the content to the Open street map for free! Once you add the content (a tag/tags) Gismo would instantly be able to use it! Like this:
Here is a 5 minute tutorial on how to add a tag to a specific building at Openstreetmap.org.
Warning: adding tags and geometry to Openstreetmap.org is highly addictive activity! Use at your own risk!…
Added by djordje to Gismo at 4:55pm on May 9, 2017
ermedio fondamentali per la corretta comprensione del software Rhinoceros.
Il corso si svolgerà nei seguenti giorni:
Lunedì 07/10/2013 dalle ore 9:30.00 alle ore 13:30
Martedì 08/10/2013 dalle ore 9:30.00 alle ore 13:30
Lunedì 09/10/2013 dalle ore 9:30.00 alle ore 13:30
Martedì 15/10/2013 dalle ore 9:30.00 alle ore 13:30
Scadenza preiscrizione per Rhinoceros StartUP : 04/10
Contenuti
- Presentazione e spiegazione dell’ interfaccia
- Approfondimento dell’ utilizzo dei comandi base 2D per la gestione del documento di progetto
- Teoria Free-Form
- Modellazione di architetture semplici per eseguire operazioni Booleane semplici e complesse
(addizione, sottrazione, intersezione)
- Presentazione e spiegazione delle superfici a doppia curvatura e loro pannellizzazione
- Comandi di editing, superfici tagliate e raccordi tra superfici
- Analisi di curvatura, tangenza e posizione delle superfici
- Impaginazione e costruzione degli elaborati bidimensionali attraverso modelli tridimensionali
- Modellazione di architetture complesse
Destinatari
Il corso è rivolto a studenti universitari, professionisti ed anche a coloro che non hanno precedenti esperienze di modellazione 3D.
Alla fine del corso, verrà rilasciato l’attestato di partecipazione ad un corso di Rhinoceros qualificato e certificato dalla casa sviluppatrice McNeel, valido anche per la richiesta di crediti formativi universitari.
Docente del corso
Il corso sarà tenuto da un docente qualificato con riconosciuta esperienza universitaria, esperto in disegno e rappresentazione dell' architettura e del design ed istruttore McNeel:
Michele Calvano| _architetto, dottore di ricerca in rappresentazione architettonica specializzato nella modellazione matematica (Nurbs) e modellazione parametrica.
Docente ART ( Autorized Rhino Trainer) - [vedi - CV]
Info
Per ulteriori informazioni di carattere didattico sono a disposizione i seguenti contatti:
Responsabile didattico e docente del corso : arch. Michele Calvano
Info mail: parametricart@gmail.com
cell: 340 3476330
…
:)
In last semester I did the architectural design part of a given assignment. On top of the building (in the open space) there is a cloud-like roof >> ETFE cushion.
Above: The top view of the roof.
Below: The front elevation of the roof.
Now I am working on the structural design part of this roof. I used the mesh (mentioned in my original post) and transferred it into beams, baked the result directly to GSA using the plugin developed by Jon Mirtschin.
I did the initial form finding using this beam mesh in GSA. See below (the cushion not mirrored yet, so just one side)
I set the curve boundaries as restrictions and add pressure to surface elements. I got a bubble shape and all the reaction forces along the edge.
>> Form find of the ETFE bubble and reactions.
For the "green middle part" (the compression component in the cushion), the steel part, I am trying to find its shape in Abaqus.
I used the same curve shape to create a solid steel plate. Add reactions I found in GSA to this plate as loads, set the positions of supporting columns as restrictions. Run the topology optimization, below is a result with volume eliminating up to 33%:
>> Form find of the middle steel compression part.
Then is the interaction/combination of both cushion and steel frame. But import/export between Abaqus/GSA/Rhino_GH........... .........
So I am thinking to use Abaqus topology optimization as a guideline, print the result out and draw those holes with marker, assume it works with certain algorithm, then do all the stuff in Rhino/GH/GSA.
Therefore, currently I am not really working on generating a 3D mesh for the entire cushion. Indeed is a solution to find the form of the cushion/steel frame and their corresponding forces.
Last but not least, the gh components you used look quite unfamiliar with me, and not really readable... what's the name of it?
Thank you.
…
t file** - ply file with just x,y,z locations. I got it from a 3d scanner. Here is how first few lines of file looks like - ply format ascii 1.0 comment VCGLIB generated element vertex 6183 property float x property float y property float z end_header -32.3271 -43.9859 11.5124 -32.0631 -43.983 11.4945 12.9266 -44.4913 28.2031 13.1701 -44.4918 28.2568 13.4138 -44.4892 28.2531 13.6581 -44.4834 28.1941 13.9012 -44.4851 28.2684 ... ... ... In case you need the data - please email me on **nisha.m234@gmail.com**. **Algorithm:** I am trying to find principal curvatures for extracting the ridges and valleys. The steps I am following is: 1. Take a point x 2. Find its k nearest neighbors. I used k from 3 to 20. 3. average the k nearest neighbors => gives (_x, _y, _z) 4. compute covariance matrix 5. Now I take eigen values and eigen vectors of this covariance matrix 6. I get u, v and n here from eigen vectors. u is a vector corresponding to largest eigen value v corresponding to 2nd largest n is 3rd smallest vector corresponding to smallest eigen value 7. Then for transforming the point(x,y,z) I compute matrix T T = [ui ] [u ] [x - _x] [vi ] = [v ] x [y - _y] [ni ] [n ] [z - _z] 8. for each i of the k nearest neighbors:<br> [ n1 ] [u1*u1 u1*v1 v1*v1] [ a ]<br> [ n2 ] = [u2*u2 u2*v2 v2*v2] [ b ] <br> [... ] [ ... ... ... ] [ c ] <br> [ nk ] [uk*uk uk*vk vk*vk]<br> Solve this for a, b and c with least squares 9. this equations will give me a,b,c 10. now I compute eigen values of matrix [a b b a ] 11. This will give me 2 eigen values. one is Kmin and another Kmax. **My Problem:** The output is no where close to finding the correct Ridges and Valleys. I am totally Stuck and frustrated. I am not sure where exactly I am getting it wrong. I think the normal's are not computed correctly. But I am not sure. I am very new to graphics programming and so this maths, normals, shaders go way above my head. Any help will be appreciated. **PLEASE PLEASE HELP!!** **Resources:** I am using Visual Studio 2010 + Eigen Library + ANN Library. **Other Options used** I tried using MeshLab. I used ball pivoting triangles remeshing in MeshLab and then applied the polkadot3d shader. If correctly identifies the ridges and valleys. But I am not able to code it. **My Function:** //the function outputs to ply file void getEigen() { int nPts; // actual number of data points ANNpointArray dataPts; // data points ANNpoint queryPt; // query point ANNidxArray nnIdx;// near neighbor indices ANNdistArray dists; // near neighbor distances ANNkd_tree* kdTree; // search structure //for k = 25 and esp = 2, seems to got few ridges queryPt = annAllocPt(dim); // allocate query point dataPts = annAllocPts(maxPts, dim); // allocate data points nnIdx = new ANNidx[k]; // allocate near neigh indices dists = new ANNdist[k]; // allocate near neighbor dists nPts = 0; // read data points ifstream dataStream; dataStream.open(inputFile, ios::in);// open data file dataIn = &dataStream; ifstream queryStream; queryStream.open("input/query.
pts", ios::in);// open data file queryIn = &queryStream; while (nPts < maxPts && readPt(*dataIn, dataPts[nPts])) nPts++; kdTree = new ANNkd_tree( // build search structure dataPts, // the data points nPts, // number of points dim); // dimension of space while (readPt(*queryIn, queryPt)) // read query points { kdTree->annkSearch( // search queryPt, // query point k, // number of near neighbors nnIdx, // nearest neighbors (returned) dists, // distance (returned) eps); // error bound double x = queryPt[0]; double y = queryPt[1]; double z = queryPt[2]; double _x = 0.0; double _y = 0.0; double _z = 0.0; #pragma region Compute covariance matrix for (int i = 0; i < k; i++) { _x += dataPts[nnIdx[i]][0]; _y += dataPts[nnIdx[i]][1]; _z += dataPts[nnIdx[i]][2]; } _x = _x/k; _y = _y/k; _z = _z/k; double A[3][3] = {0,0,0,0,0,0,0,0,0}; for (int i = 0; i < k; i++) { double X = dataPts[nnIdx[i]][0]; double Y = dataPts[nnIdx[i]][1]; double Z = dataPts[nnIdx[i]][2]; A[0][0] += (X-_x) * (X-_x); A[0][1] += (X-_x) * (Y-_y); A[0][2] += (X-_x) * (Z-_z); A[1][0] += (Y-_y) * (X-_x); A[1][1] += (Y-_y) * (Y-_y); A[1][2] += (Y-_y) * (Z-_z); A[2][0] += (Z-_z) * (X-_x); A[2][1] += (Z-_z) * (Y-_y); A[2][2] += (Z-_z) * (Z-_z); } MatrixXd C(3,3); C <<A[0][0]/k, A[0][1]/k, A[0][2]/k, A[1][0]/k, A[1][1]/k, A[1][2]/k, A[2][0]/k, A[2][1]/k, A[2][2]/k; #pragma endregion EigenSolver<MatrixXd> es(C); MatrixXd Eval = es.eigenvalues().real().asDiagonal(); MatrixXd Evec = es.eigenvectors().real(); MatrixXd u,v,n; double a = Eval.row(0).col(0).value(); double b = Eval.row(1).col(1).value(); double c = Eval.row(2).col(2).value(); #pragma region SET U V N if(a>b && a>c) { u = Evec.row(0); if(b>c) { v = Eval.row(1); n = Eval.row(2);} else { v = Eval.row(2); n = Eval.row(1);} } else if(b>a && b>c) { u = Evec.row(1); if(a>c) { v = Eval.row(0); n = Eval.row(2);} else { v = Eval.row(2); n = Eval.row(0);} } else { u = Eval.row(2); if(a>b) { v = Eval.row(0); n = Eval.row(1);} else { v = Eval.row(1); n = Eval.row(0);} } #pragma endregion MatrixXd O(3,3); O <<u, v, n; MatrixXd UV(k,3); VectorXd N(k,1); for( int i=0; i<k; i++) { double x = dataPts[nnIdx[i]][0];; double y = dataPts[nnIdx[i]][1];; double z = dataPts[nnIdx[i]][2];; MatrixXd X(3,1); X << x-_x, y-_y, z-_z; MatrixXd T = O * X; double ui = T.row(0).col(0).value(); double vi = T.row(1).col(0).value(); double ni = T.row(2).col(0).value(); UV.row(i) << ui * ui, ui * vi, vi * vi; N.row(i) << ni; } Vector3d S = UV.colPivHouseholderQr().solve(N); MatrixXd II(2,2); II << S.row(0).value(), S.row(1).value(), S.row(1).value(), S.row(2).value(); EigenSolver<MatrixXd> es2(II); MatrixXd Eval2 = es2.eigenvalues().real().asDiagonal(); MatrixXd Evec2 = es2.eigenvectors().real(); double kmin, kmax; if(Eval2.row(0).col(0).value() < Eval2.row(1).col(1).value()) { kmin = Eval2.row(0).col(0).value(); kmax = Eval2.row(1).col(1).value(); } else { kmax = Eval2.row(0).col(0).value(); kmin = Eval2.row(1).col(1).value(); } double thresh = 0.0020078; if (kmin < thresh && kmax > thresh ) cout << x << " " << y << " " << z << " " << 255 << " " << 0 << " " << 0 << endl; else cout << x << " " << y << " " << z << " " << 255 << " " << 255 << " " << 255 << endl; } delete [] nnIdx; delete [] dists; delete kdTree; annClose(); } Thanks, NISHA…
up before you can produce a nice render. If you are using vray for Rhino you need to first learn how to set up (as an architect) a nice solar daylight system with environment, is actually very easy. (1 - set up sun lighting, 2 - set up environment, 3 - choose correct settings, such as activating indirect illumination)
However, since sketchup is the perfect draft tool for architectural design, it happens to have an environment with daylight defined already when you open an empty file. Vray for sketchup knows how to use all these settings so the only thing you need to do is to hit render. Apart from that you need to learn some simple material settings, which you find here: http://www.vray.com/vray_for_sketchup/manual/, the same manual for rhino here: http://www.vray.com/vray_for_rhino/manual/
The advantage of using vray for sketchup rather than for rhino (although if you can handle vray for one program its exactly the same for the other), is that you can easily import models from 3d warehouse. Sketchup is an excellent render set-up platform, except its only 32-bit so a to complex scene will simply not render. Rhino 64-bit will handle this better.
Conclusion, learn vray, whatever you learn can be applied to sketchup, rhino and 3ds max. Sketchup is probably a tool you already use and vray for sketchup will render with correct settings by default. Later when you take it to the next step you can go one and learn vray 2.0 for 3dsmax.
Personally I like using Luxology render engine that comes with Microstation, simply because I handle it better and Microstation is the best tool for architects in my opinion. However Vray is similar but more powerful.…
Added by Martin Hedin at 4:11pm on October 21, 2011
something in 3d, explode it to single surfaces, reference it to GH in proper order -manually- then unfold it with gh).
To make it really elegant you could try to make some "topology language" - have you seen this talk by Robert Lang http://www.ted.com/talks/lang/en/robert_lang_folds_way_new_origami.... ?
You can always make only few parametric types of structures - like leg, hand etc. (this is much easier than Mr.Lang's ) which can change its sizes, but topology stays the same.
Beside - Your sandwich looks really good, i played something similiar before.... have you tried thin PE (polyethylene) sheets ? Its similiar to PP (polypropylene) but a little bit softer. It is (PP) commonly used as tic tac box cap ( http://www.absolutelynarcissism.co/wp-content/uploads/2011/09/Tic-T... ) and some say that it can fold/unfold about 1000000 times. It would really simplify the whole production (just one cnc router needed to obtain full structure). Of course bending it will require prefabrication to look like e.g. http://www.grasshopper3d.com/video/the-swarm-2012 by Mr. Wieland Schmidt.
To clear things up :
1. It certainly can be done with rhino/gh
2. You should write some more on how should it all work (what you provide as geometry)
3. You should also provide some more info how 2d drawing looks now.
EDIT : I forgot about kinematics - use kangaroo. There are forces now like bending resistance etc.
…
3 arms and 6 legs (PS: Remember: in real-life our fee is proportional to the budget > thus > like Godzilla > the bigger the better).
In the mean time (auto detection of struts < min Allowed == true) get the gist of the whole "torque" issue, the other gist not to mention the other-other gist.
Of course you can opt for NOT making the cables (green) that stabilize the "extension" part of a given tensegrity strut ... yielding the Mother in Law syndrome (fat and ugly):
But ... hmm ... well ... are you really the chosen one? Here's your chance for the ticket to Paradise (full Lord's assistance, that is). Identify this engine, name the designer and the related immortal racer (when men were men).
Moral: Heaven can wait. …
ese explanations help (we will also look at your file) asap.
About your question regarding the Tutte graph drawing algorithm (also known as topological embedding):
The Tutte algorithm can be viewed as a special case of Spectral Graph Drawing, which is a mathematical solution for topological embedding formulated as an optimization problem. The formulation of the topological embedding (e.g. as in Tutte algorithm) is in fact quite similar to the so-called force-directed drawing that is often solved by heuristic methods like the one we have made for the SYNTACTIC plugin. You can read more about Force-Directed Graph Drawing (a.k.a. coin-graph drawing and kissing disks drawing) and Spectral Graph Drawing and Spectral Graph Theory in my dissertation.
The functionality of the Tutte algorithm is only guaranteed for graphs that are 3-connected, i.e. graphs with more than 3 vertices which cannot be torn apart unless at least two vertices are removed.
https://en.wikipedia.org/wiki/K-vertex-connected_graph
Speaking of the conditions for the Tutte algorithm to work properly: Practically, this implies, for instance, that there should not be rooms connected only to one other room.
Anyhow, long story short, we have decided to continue with Spectral Graph Drawing and 3D force-directed graph drawing. These algorithms are ready and with a couple of adjustments for maximum speed and stability we will release them shortly. Some conditions for these algorithms are easier to ensure, but in general if a node(room) is connected to only one space or the graph is not well connected one cannot expect a good graph drawing from neither of these methods. The other issue that is also common is that the force directed graph drawing will not work if one forces a big bubble to be squeezed in the middle of smaller bubbles. Stay tuned. …
nd and downloading definitions to learn from them, but still don't get it right.
So my problem is:
1.- I want to achieve a kagome, hexagonal gridshell that keeps the bamboo pieces like straight geodesic lines.
2.- I also would like to keep the curved bamboo as splines, so I imagine this will give the easiest method for bending the bamboo at the real scale. As Mårten Nettelbladt in his blog http://thegeometryofbending.blogspot.jp/ mentions, the best way will be to keep the geometry where all the pieces have a spline curvature ( or as B.K.P. Horn calls it “The curve of last energy”) In order to achieve splines do I need to make the grid a Dynamic relaxation “Kangaroo”? will this help?
3.- I would also like to simulate the bending of the elements from a 2D to a 3D, but maybe this can be a next step on the definition…
Some of the common problems that I notice in the definitions found is that when people do weaving, the lines don't bend flat to the geometry but rather they twist so when you look close the cross of pieces intersect, which is impossible in real life…
As you can see there are a number od issues here, I apologize to put them all together, maybe it makes this confusing but I think is better to look at the whole picture. I have been reading a lot but I have no idea how to start.
The more I read the more interesting the subject becomes but the more confused I become. Is there some kind soul that could give me a hand? Any help will be really appreciated.
Thanks a lot!
Miguel…
o fix before it becomes very usable, but I'm posting the file here in case anyone wants to try it out.
It is a few simple scripts which record point locations from a first Kangaroo simulation whenever the capture button is pressed, and then when you playback the animation it interpolates between this captured sequence of points, pulling a second Kangaroo simulation to these targets. You can control the playback with a slider or automatically with a timer.
This should work with other Kangaroo2 setups, but here demonstrated with a human figure modelled as a collection of rigid bodies. At the knees and elbows the rigid bodies share 2 points to give a hinge joint, while for shoulders, neck, hips, ankles, wrists and torso they share only single points, giving a basic ball joint.
This is also the first time I've posted this model, and I'm also including the setup without the animation script. I know there are numerous issues with this poseable figure - dragging joints sometimes moves parts of the model you don't want to, and joints have unrealistic ranges of motion. I made a start at trying to limit some of these - such as ClampLength goals to stop the torso bending too much, but more could be done. There is also an issue with the rigid bodies (which track orientations with a frame of 3 points) that if you grab the frame itself, the simulation can break. I'm currently rethinking this whole approach.
I should also say that although I have heavily modified this human model to make it work for this setup, I did start from a mesh downloaded from some free 3d model collection site, but unfortunately I do not know the name of the original artist. If someone recognises it I would like to add appropriate credits.…