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…
onstrates the following:
1. The definition's functionality employing HumanUI for the custom user interface.
2. The evaluation of the definition's ability to handle different point cloud data sets.
3. Video reports with the definition's results, animating subsequent per deviation step frames.
This definition calculates best fitting plane deviations. The number of manual set parameters has been minimized to two the facade per World UCS axis selection and the search width. This defines a box, which is used to crop protruding architectural details, which do not contribute to the analysis, but also ensures that large deformations are included in the calculation.
For the automation of the vertical and horizontal sections creation, the analyzed cloud is clustered, according to user defined number of 2d grid cells. The deviations corresponding to each cell are averaged in mean and median mode.
The process is displayed mostly in real time, with some speed up in some parts. Too long calculations have been omitted during video edit. The setup is responsive and benchmarks show that changing between dense point cloud data sets and facades is pretty quick (6.5-7.5M points, 25-45 deviation steps, 44x22 clusters), updates are calculated in acceptable timings (3-6 minutes).
I would like to thank Heumann A. and Zwierzycki M. who provided direct support with HumanUI and Volvox. Also Grasshopper3d forum users Maher S. and Segeren P., who contributed with Rhino viewport manipulation scripts.
More on Volvox:
http://papers.cumincad.org/cgi-bin/works/Show?_id=ecaade2016_171&sort=DEFAULT&search=ecaade%20volvox&hits=2629
http://www.food4rhino.com/app/volvox
http://duraark.eu/
HumanUI:
http://www.food4rhino.com/app/human-ui?page=1&ufh=&etx=…
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.
…
other kind of planes because I need to deal with Display Pipline .
There's a few threads about similar problem( i'm posting them here as a reference)
1. Viewport rectangle
2. TextTag parallel to Viewport
3. Horster method (with timer)
4. Another horster method to get On screen display (also with timer)
5. Discussion how to send Rhino Viewport Cplane to GH
There is a lot of things possible to do using camera frustum plane such as:
- making custom project layout
- Camera-plane sections
- 3d Isovist (example of Francois)
- projections on the frustum plane
I need to output geometry to Grasshopper in order to use a Frustum Plane for dynamic operations like for example: On Screen Display of Text Tags with sections and other views.
…
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.…
(http://www.food4rhino.com/app/quelea-agent-based-design-grasshopper) take like 40 seconds when the toggle activates to go from one end of the ramp to another.
With proximity 3d i'm analyzing each instance the agents are closer than x units. In picture 3 we can see that in 212 instances the agent are closer than those x units.
Finally all the genes that controll the ramps are connected to the G of octopus component and one of the conflicting objectives connected to the O of octopus component is the number of instance quelea agents get close.
So the thing I need is to iterate the ramps controling the genes with octopus but activating the boolean toggle (quelea run) each time the ramps are modified so the agents take 40 seconds to perambulate the environment, analyze the instance they get close and let octopus iterate again searching for a optimized environment.
…
eñadores, y creativos interesados en el aprendizaje de metodos avanzados de generación y racionalización de geometría compleja, y su implementación en distintas etapas del proceso de diseño.
Se abordaran los conceptos básicos para hacer frente a diversas problemas de diseño a través de la implementación de una serie de plataformas computacionales con el objetivo de construir un flujo de trabajo que permita optimizar proyectos de diversa escala y explorar esquemas geometricos complejos de manera rápida y eficiente.A lo largo del 6 dias trabajaremos con la plataforma de Modelado 3d Rhinoceros, el entorno de programación visual de Grasshopper y el motor de Renderizado de Vray.Estudiantes: $4,500.00Profesionistas: $5,500.00info+inscripciones:workshop@complexgeometry.com[044] 33 3956 9209[044] 33 1410 8975[044] 81 1916 8657
…