d of interpenetrating surfaces somewhere:
Now all links (except a possible single ball on the very end of odd numbered ball series) are four balls long, including the jostled ones. Without that step, those items simply don't appear in the output, leaving way too big of gaps to ignore, eventually leaving huge gaps at later stages of segment doubling:
So if I turn the jostling multiplication factor way down it should work imperceptibly:
Ta-dah! The jostling strategy WORKS! Granted, only in this special case where I know I'm dealing with adjacent pairs of worms along a curve, not generic objects arranged in space by some artist.
Now I just need to wrap the multiple Python script components I'm stringing together into one script.
How long does the full 2400 balls take, finally? It took 12 Python scripts that merge pairs, to achieve this breakdown: 2400 -> 1200 -> 600 -> 300 -> 150 -> 75 -> 38 -> 19 -> 9 -> 5 -> 3 -> 2 -> 1. Time was 2 minutes 50 seconds, so there is some extra struggle for 2X as many balls as 1200 that took 1 minute 20 seconds, but only ten more seconds.
…
Added by Nik Willmore at 9:06pm on February 17, 2016
hacia donde crecerán las venas, y tenemos otro conjunto de puntos 'N' que son los que forman el patrón de venas.
1. Por cada 's' perteneciente a S, buscamos el 'n' perteneciente a N más cercano. Ese 'n' va a "moverse".
2. Por cada 'n' que se mueve, hacemos un vector dirigido a todos los 's' hacia los que se mueve.
3. Calculamos el vector medio de todos los vectores del paso 2, movemos 'n' con ese vector y lo añadimos a V.
4. Si algún 's' está muy cerca de algún 'n', ese 's' se elimina.
5. Se repite el proceso.
Esto es para formar venaciones abiertas sin autocrecimiento (como la siguiente imagen, hecho con Visual Basic).
Para las cerradas (las reticuladas que forman algo como células, como en la imagen tuya), el paso 1 y 4 son distintos y no sabría decirte cómo hacerlo. En ese pdf explica un método usando delaunay pero es muy lento, además gh no tiene ese algoritmo en 3d (entonces solo se podría hacer este patrón en 2d), por lo que estoy buscando otras vías, solo he logrado llegar a esto:
Es más complicado de lo que parece.
No obstante, si te conformas con menos, hay muchas formas de crear raíces y patrones similares, con SortestWalk, Anemone, etc... Hay ejemplos en este foro.
Si realmente quieres conseguir ese patrón, deberías aprender a programar porque para añadir distintos radios a las venas es necesario que las venas tengan topología y eso se complica demasiado desde gh. Nervous System para su "Hyphae" usó C++ con la librería CGAL, que es una muy poderosa librería de algoritmos de 3d.
…
d work exactly as the physical model. In the model, we have a curved surface which can be analysed into squares. These squares are filled with two kind of units which are connected with each other and create a grid that follows this curved surface.
We have managed to analyse this curved surface into a planar surface consisted of squares and we painted the squares with colours to represent the kind of unit that "fills" each square. So, now in rhino I have managed to build the curved surface that I want it to be filled with the two types of units.
I also have the planar surface built in Gh with the squares split into two lists, each one for each kind of unit. Because these units are mambranes, I used kangaroo to make them act like mambranes.
I hope I described the problem clearly. The point is to keep the dimensions of the units
the same and make it work in Kangaroo. Do you have anything in mind that I should look up or any advice ? Thank you in advance and i m sorry for the extended description.
*Pic 1: the curved surfaces that has to be filled with the units
*Pic 2: The binary system that shows which square is occupied by which unit
Blue=2 , Red=1, White= Blank
*Pic 3: unit 1
*Pic 4: unit 2
*Pic 5: a point of view of the physical model (not the final curve at the surface)
…
e.github.io/hydra/viewer?owner=chriswmackey&fork=hydra_2&id=Outdoor_Microclimate_Map
Thank you very much in advance!
1. why the underground zone representing the ground is defined as a plenum zone? By default, an office zone program is assigned. Will this affect the outside surface temperature of the ground plenum zone and affect, in turn, the outdoor microclimate map calculation?
2. I assume the construction GroundMaterial composed of five layers of 200mm concrete materials as assigned to the ground plenum zone is to assimilate a ground surface composed of thick concrete. But why this construction is assigned to this zone using both the Set EP Zone Construction and Set EP Zone Underground Construction components? Will the surfaces of this zone automatically recognized as underground surfaces based on their positions in relation to the default xy plane?
3. why a brep is connected to the input node distFromFloorOrSrf on the Indoor View Factor Calculator component which is expecting a number according to its annotation?
4. why the outdoor comfort analysis recipe is used for the indoor comfort analysis component?
5. why the OutdoorComfResult and DegFromNeutralResult are 2 csv files with PPD and PMV values if PMV/PPD thermal comfort model is only applicable to indoor air-conditioned space?
…
in App store.
2. Modelo now supports VR! check out this video:
3. We've added a specular option in the rendering settings. So now you can have your design rendered a little bit shinny-er.
4. There is also a "filters" option in this panel, with which you can get some interesting image post processing effects. We are expanding this filter library, if you have any suggestions, please let us know.
5. This one is very important and has been requested by our customers for a long time. Now when you upload a model, you can grab the reviews(3d comments, screenshots,sketches) from your previously uploaded model! This works really conveniently if you use Modelo for your design review/presentation, cause you don't have to recreate the same 3d anchor views every time you made some changes to your design.
6. Also, our developer API is almost ready, which means if anyone is interested in developing a grasshopper plugin that works with Modelo, they can!
There are some many other updates and bug fixes happened. I don't want to list all of them here. Definitely stay subscribed with our newsletter. Modelo is thrived to grow into a more comprehensive platform! If you have any good ideas about our platform, please do not hesitate to let me know!
Here is our Youtube channel: https://www.youtube.com/channel/UCufBShhLtUQepsit9ilI-AA
Cheers
Qi…
Added by Suqi to Modelo at 1:24pm on October 18, 2016
the following image of a hut.
I do not have experience using kangaroo to simulate forces, but I have made a test using multiple random components on a flat surface to fake the effect I'm going for. See image below.
The main issue I'm having is that the original file used for my test surface used box morph and the variable pipe command. Box morph is a bit touchy on a curved surface and it is not as elegant as I would like it to be (ie. I want all the hair diameters to be perfectly circular and uniform in size). Variable pipe also does not align the base of the hair with the existing surface, which means I have to offset the surface and then trim the excess of my pipe.....leading to heavy code and the file crashing.
So I'm trying to rebuild the "hairs" using a new method:
1) Subdivide the surface
2) Find the midpoint of each surface and then create a straight line that is perpendicular
3) Move a point along the on the straight line (between the start and end points) in the z direction, and then create a nurbs curve using this point and the start and end points
4) create a circle at the base of each crv, and then two more circles: one at the point in the middle point (I think I set it to .9) and the end of the curve
5) The problem: Now I am trying to sweep along these three circles and the nurbs curve to create a bent hair/pipe that is flush with the conic surface, but it does not work.
If someone can help that would be amazing. I've included my original surface test file and my new file where I am rebuilding using the sweep command. Below is a drawing of what I'm trying to achieve.
…
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…
the other pluggins again, I doubt that problems arise and if I already have them Which are due to the autodesk pluggins that I can install on another computer or mount a virtual machine, but I doubt it, I simply had to install Grasshopper first and then the rest.)
Problem:
Good day, afternoon or night, please help I can not install the Grasshopper plugin 0.9.76.0 in Rhinoceros 5SR13, I do not know if it is because I uninstalled the version of 32 Bit of Rhinoceros and I only have installed the 64 Bit version, I have installed on Rhinoceros 64 Bit:
Autodesk Realtime Renderer 2014 x64 Autodesk Shape Modeling 2014 x64 Autodesk T-Splines 2015 x64 V-Ray 2.00.23938 for Rhinoceros 5 x64 V-Ray Express 2 for Rhinoceros 5
I would infinitely appreciate the resolution to this problem, for the moment I can not think of anything other than to uninstall everything and leave only installed the program Rhinoceros 5SR13 with Grasshopper 0.9.76.0 and nothing more.
I already tried to download another new file from Grasshopper 0.9.76.0, which ruled out that this installer is wrong, what I could do is look for another version of Rhinoceros but I have the newest one or one of the newest versions: Rhino_5.13.60913.21340_x86_x64_Multi. Exe
I understand that the Grasshoper installer is showing me a message where it says there is a Win32 exception where the system can not find the source file, what I do not know is if this exception has to do with the Windows C /: Folder: Windows, subfolder: System32 or I do not know if it refers to that as I do not have the 32 bit version of Rhinoceros maybe the installer gets confused and generates the installation error exception.
Another thing to which the exception is associated is the start process file: Start.nfo or start information.
There is also a programming argument for file upload errors of boolean operations (geometry operators) associated with the platform operating system, a process called child process.
Also appears another note that says the installed package of a plugin called inspector and I do not know what else I can not explain.
I do not know what to do, I just happen to uninstall and install everything and I do not think the Rhinoceros installer has any errors, I have Windows 10 edition of Red Stone 1 of 64 Bit.
Thanks and if anyone had this problem and solved it please tell me how to fix it or if someone knows about programming you can tell me why all those errors or exceptions are.
Greetings, have a nice day, afternoon or night wherever you step or stand or wherever you are sitting or lying down.…
t taking part at the Object office in Poznań.
The intention of this event is to provide a relaxed and flexible tutoring experience, with only one goal – getting to know Grasshopper better. We will start with a very exhaustive introduction, then venture into the computational geometry world in whichever direction we like.
Schedule
The long duration of the series (with a possibility of extension) will enable each participant to come up with their own research problems during the learning process. The scope of those problems will have a major influence in setting the direction of each workshop. While a couple of initial meetings will be solely spend on Grasshopper basics, the latter part of the series will have a more open character.
Each meeting day starts at 10 AM and lasts till 5 PM, with an hour long break for lunch (14 hours of tutoring per meeting).
Planned meetings:
02/03 Dec | Intro_01.gh: user interface, geometry types, Rhino/GH connection
16/17 Dec | Intro_02.gh: data flow, paneling, geometry rationalization
06/07 Jan | Intro_03.gh: data I/O, excel, csv, data visualization, preparing geometry for fabrication
20/21 Jan | Intro_04.gh: working with complex definitions, project organization and helpful plugins
10/11 Feb | Intro_05.gh: looping with Anemone, generative design
17/18 Feb | Intro_06.gh: automating tasks with Anemone, scripting introduction
03/04 Mar | Intro_07.gh: scripting
17/18 Mar | Intro_08.gh: Kangaroo
14/15 Apr | Intro_09.gh: user_defined_1 (flexible)
28/29 Apr | Intro_10.gh: user_defined_2 (flexible)
…
w number. If the script is slow you can also double click a number slider to access a panel that lets you slide a value without invoking a recalculation.
You don't need most of the inputs, which are for controlling the transition to the borders of open meshes. No, there's no manual beyond right-click help.
FixC and FixV are to fix and thus retain open borders, mostly, or sharp creases and there is art in them, meaning tricks you just have to blunder into or search for.
Flip is an alternative remeshing strategy worth changing from 0 to 1 to see the effect.
MeshMachine is only giving a nice even curvature-adaptive (Adapt setting 0.8 or so is more reliable than 1) mesh, merely, not thickening mesh wires into struts.
The struts are currently individual capped mesh cylinders. You could also use very slow nurbs cylinders. They may or may more likely not successfully Boolean union together in Rhino. Their diameter is set in the Mesh Pipe component.
There are other plug-ins for thickening the wires of a mesh. Exoskeleton, Intralattice and my favorite, somewhat tweaky Cocoon marching cubes which is however very robust, and I sometimes run the overly fine mesh result into MeshMachine to make it regular and adaptive, since the Cocoon refine component is hard to control. I mostly enter 1s into most inputs though.
If you turn on menu item Display > Canvas Widgets > Profiler and zoom in close enough to the canvas, you'll see timer readouts for how long each component took for a solution, so I can see that the pipes are the slow part, so I'd normally right click disable the chain early on, and right click turn on preview for the earlier mesh step before I make the pipes. The MeshMachine step takes only 2 seconds, and that's with Iter (internal iterations) at 10 instead of a workable 5.
Also turn on Display > Preview Mesh Edges to see the actual MeshMachine mesh.
…