radiance parameters to get rid of blotching. To add another level of complexity to my problem, I am running simulations with a translucent material with the following properties: void trans testTrans
0
0
7 0.478 0.478 0.478 0.000 0.010 0.178 0.635
I have had no issues with the renderings when I use clear glazing, as seen on this image:
However the blotching-issue becomes very noticeable when I introduce translucent glazing into the scene:
For the two above cases I used the following parameters:
_av_ is set to 0
xScale is set to 2
_ab_ is set to 6
_dc_ is set to 0.5
_aa_ is set to 0.2
_ad_ is set to 2048
_st_ is set to 0.5
yScale is set to 2
_ps_ is set to 4
_ar_ is set to 64
_as_ is set to 2048
_ds_ is set to 0.25
_pt_ is set to 0.1
_dr_ is set to 1
_pj_ is set to 0.9
_dp_ is set to 256
_dt_ is set to 0.25
_lr_ is set to 6
_dj_ is set to 0.5
_lw_ is set to 0.01
I ran another test with increased Radiance parameters and got the following output:
with the following parameters:
_av_ is set to 0
xScale is set to 6
_ab_ is set to 6
_dc_ is set to 0.75
_aa_ is set to 0.1
_ad_ is set to 4096
_st_ is set to 0.15
yScale is set to 6
_ps_ is set to 2
_ar_ is set to 128
_as_ is set to 4096
_ds_ is set to 0.05
_pt_ is set to 0.05
_dr_ is set to 3
_pj_ is set to 0.9
_dp_ is set to 512
_dt_ is set to 0.15
_lr_ is set to 8
_dj_ is set to 0.7
_lw_ is set to 0.005
Although the second blotching case is much better than the first, it is still very bad for hours when the sun is lower in the sky. The above images are rendered for a clear sky at 18:00 in Germany in a West-facing room.
Sorry for the long post! Can someone help? Kind regards, Örn
…
he plug-in supports intuitive design of paneling concepts as well as rationalize complex geometry into a format suitable for analysis and fabrication. The plug-in is closely integrated with Rhino 7 and is widely used for architectural and other building designers.
Download
The new PanelingTools for the new Rhino 7.2 is now available. You can access Rhino 7 evaluation and upgrades from here…
Documentation
For documentation and examples, please check:
PanelingTools Manual for detailed description of commands and options.
PanelingTools for Grasshopper Manual includes tutorials and description of PT-GH components.
Paneling Scripting page has a listing of paneling methods for RhinoScript.
Paneling Tutorials page has links to video tutorials.
Paneling Short Clips page has short video tutorials that covers the core functionality of PanelingTools.
Paneling Gallery page has users projects with PanelingTools.
Videos
**NEW** PanelingTools Webinar Course - December 2014 learn how Paneling tools works and how best to integrate it into your design process.
Paneling Tools Webinar - February 11, 2011
Paneling Tools Webinar on Vimeo
Feedback
Please tell us what you think and how you are using PanelingTools to help shape future development.
Join the PanelingTools Group in Rhino Forum and post photos, news and discussions. Make sure to tag with keyword “PanelingTools”.
For questions and feedback, contact the developer.
Source: McNeel Wiki
Keshia C. Stich
Grid Paneling Group
…
a given with the third set of information (at the 6th minute). From that, it will then match - for the same exact boats - the speed data given at the 4th minute. Finally it will do a matched subtraction of V(4th) from V(6th) for each boat. Those numbers - whether then scaled up / down or somehow manipulated - will act as the Z dimension which will create the topology. Since V2 - V1 can have a minus value, the overall topology will be a mix of mountains and icebergs this time.
Perhaps to be more accurate, we could divide V2-V1 by 120 and let the topology show the change in speed in a second within that two minutes; the XY coordinates belonging to the latter position of the ships, not the first.
Your definition as you say helps for the linear drawing as it continues from it's stopped. I used that in the current sketch as well for again doing the same thing.However when, I tried to use it for what I am trying to do with the acceleration thing, the result was different. I will try to explain this again;
Let's say that until this point 6 sets of data has arrived - so 12 minutes has passed -. Within that 6 sets, the number of of boats for each one differ as not all of them are able to send data every time. Let's assume in total there are 25 boats and 18 of them have always managed to send data in those 12 minutes. So 18 from the beginning until the end, and finally let's say the remaining 7 of them only could manage to come into the picture at the 4th set of data (so 4,5 and 6).
Now, if I were to build a topology of acceleration for the 6th minute which would mean that I would have to subtract V(4th minute) from V(6th minute) of all 18 vessels, I would need index 2 and 1 from all the branches. If I do this only after 6 minutes has passed from the beginning it would probably work, however if I do it later like at the 12th minute, it does not.
And the very reason for that is when the remaining 7 join the crowd at the 8th minute they obtain an index number of 0, and then 1, and then 2 - at the 12th minute. Because of that when I try to match the V2-V1s with Coordinates on the Unary Force component, while there are 18 sets of coordinates, there are 25 different speed values.
Of course this is quite a simplified scenario and perhaps your vessel matching could solve this specific one but there are cases where its more complicated and random.
I do still want to show vessels' position in a specific time with such pipes you have suggested, but I am trying to construct a collective model, in its simplest form being equal to pipes + topology
For the time thing, what I meant was in this version when you click play the mountains just keep on rising and the topology is constantly deformed. I was wondering if we can set up a timer so that it runs the physics engine for couple of seconds and then freezes the topology as it is. Otherwise I would have to press pause manually everytime, which is not that big of a deal tbh, just for the accuracy sake it would be good to run the engine for the same interval for each model.
All the best,
Levent…
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…
release.
2. Of course, I agree the support is woeful for this at present. Find attached an example of trying to find a completely new definition for a target geometry. Using galapagos with these inputs help the machine get quite close. Obviously, its a combinatorial problem so bloat is an issue.
3. It's a great idea, and a thought I've had on the todo list. It's trickier than you think though due to the way you have to instantiate a component on the canvas. In addition, persistent data in the ingredient components that exists in the generated ones is possible.
4. Again, yes options for the inputs is a good idea and one I'm working on.
5. Indeed. Ideally, you should be able to put clusters in the ingredients. This is where things start to get very tricky without the help of David :) . If I can get user objects to work, then that's a step in the right direction. At present, you need to compile new components to get Embryo to include them.
6. Because it was the easiest to implement with the gene pools. Revising this to make it more efficient is a good idea, because at the moment it aint.
7. Good idea. I can include that in the options component.
Finally, just to say implementation in Grasshopper has its pros and cons, it's obviously not built for this kind of thing. In the future, I'd like to build an independent plug-in for Rhino that will handle GP better.
Anyway, thanks for having a go! I still intend to make the repository public.
As to what I do, I used to lead the Ramboll Computational Design team in London but we've all gone our separate ways now. I'm now a lecturer in Computational Design at the University of West of England (UWE) in the UK.
…
is Radius = (size+40)/(2*Pi), where "size" is the value to give, it's usually used in countries like Spain, Italy, Netherlands, Switzerland... The next release will have 6 ways (5 regional system + diameter) to give it the size in different regional systems with just two clicks, in fact, the rings of the next release are already developed, but will have to wait...
Knowing that:
ISO (International Organization for Standardization). mm of internal circunference. Austria, France, Germany, Belgium, Scandinavia...
radii = Size / (2 * Math.PI)
European Size. Spain, Italy, Netherlands, Switzerland...radii = (Size + 40) / (2 * Math.PI)
British Size. United Kingdom, Ireland, Australia, New Zealand, South Africa...radii = ((Size * 0.4) + 11.5) / 2
American Size. United States, Canada, Mexico...radii = ((Size * 0.83) + 11.54) / 2
Japanese Size. Japan, China, India, South America...radii = ((Size / 3) + 12.67) / 2
Diameter Size. Many goldsmiths anywhere.
radii = Size / 2
Source: http://www.18carat.co.uk/ringsizes.html
and since this release are UserObject componentes, you can remplace if you want the Size component with one new. For example, right clicking size_param, going to Expresion and setting x*pi-40, the size input will be the diameter of the resulting circle, if you give it a value of 14, the circle will have a radius of 7. Then save the userobject (File>Create User Object) and remove the other.
Or create a new one, since this component is just a rotated circle and a cylinder.
Hope this helps.…
r is open, the memory use jump quickly and stay at high level, even if I didn't open any GH file:
3. once I close GH (with Rhino still running), the memory use drop a bit, and rise again, but not to the high level as before:
4. once I close Rhino, the memory use will drop to normal level:
5. the GH components I'm using are installed locally on my computer:
I'm not sure if this is a problem with my computer in particular, as this issue only happened a few days ago. I'm using Rhino 5 SR7 64bit in Windows 7 Pro and the latest version of GH on my computer for quite a while with no obvious speed issue, and I didn't upgrade them recently.
Hope you can kindly advise!
Thank you!
- Ji…
Added by Grasshope at 4:23am on September 13, 2016
was not all there myself. Overall the night wasn't that productive so I wanted to apologize, I will do a better job in the future.
Attached to this message is the Assignment sheet for the upcoming week. Please post the picture of the models before 7:00 PM Monday 2/16.
Here is a link to the completed script from last night, as well as the Rhino file and presentation pdf.
https://www.dropbox.com/sh/3g6fnue93dk8iub/AAB88CNVCtC64cmz_ENLlojQa?dl=0
A few notes:
- I added two separate tags to the end of the script. One set is for the 3D model of your form, locating where the pieces originally come from. The second set is for the flattened out sections, which can be etched on your pieces to actually locate them when they are physically created. Play around a bit in the script and try to understand what is going on between the different parts.
-Baking: We went over baking in last weeks class. You right click on the component you want in the physical realm and select bake. Rhino will then ask you to select a layer to place the items on. I would suggest having two layers, one will be for cutting and one will be for etching (when you bake the tags(optional)). Once the pieces are in Rhino, you can use the Make2d command and export to AutoCad where you can laser cut (if you are unsure about this process, Google it as there are numerous tutorials).
-I would recommend using chipboard as it is the cheapest and most readily available, but don't let me chain your creativity if you come up with another material.
I look forward to seeing your guys models. See you Monday!
…
ight. Note that i added the Ladybug component to simplify the inputs...
Here are some functions i'd love to see:
1. Ability to cull down to a partial year / date range AND hours range. Currently the DSchedule component can only truncate time of day. But if for example i want to look at averages just during the summer months between 9am - 6pm, i have to do that in the excel .ill file. It seems that the components may allow this already, just not sure which settings need to be set (seems that the reporting frequency has something to do with this...)
2. I'd also like to be able to look at a subset of the points to look at averages in a part of the grid. The easiest i presume would be just to pull item #s; maybe there's a way to add visual identifiers to the selection option? Again, have been doing this in the .ill file.
3. Provide, as an alternative to the .pts file, the option to input the point geometry directly from the rhino file - maybe this would help with #2?
4. I read up on your explanation on showing point-in-time values but can't seem to get that working. Would love to be able to do slider animations of the point-in-time calcs over a day like the bottom right of this (here i used Ladybug but the DA output would be more accurate).
5. Visualization Bounds doesn't seem to work on the daylighting side - would like to be able to manually change.
6. Showing the peaks is a fantastic addition! But all that information is bundled in the python script - would love a way to parse it out to just show the peak numbers for example.
7. Similarly to how DIVA shows data, it'd be great to add a component that visualizes the simulation parameters and color scale in the Rhino viewport...:)
i'm sure there's more as i continue to use it...
great script.
dan
…