Sonic components are now part of Mosquito:
http://grasshopper3d.com/group/mosquito
http://www.studiosmuts.com/ceed3/mosquito/
Sonic is a Grasshopper plugin suite that currently contains the following components:
UPDATE : New Refraction component!!!! as requested 🙂 and a fix for TargetRays when rays reflect several times off a single surface/object.
COMPONENTS:
Refract: A plugin that works in a similar mannar to the Reflection component (TargetRays) except it calculates refraction rays. Requires that you specify a refraction index for the medium which the ray is passing from and into. See the description of this component below.
SquareRoot: An optimized Square Root function multiple times faster than the default Square Root Component (based on Math.Sqrt I presume) with a slight trade off in rounding numbers.
Flow: Calculates the flow of lines via the path of least resistance down a sloped surface.(eg. water runoff)
TargetRays + SurfaceRays: Both plugins are used to cast and calculate surface reflections rays.
We hope to develop this into a larger suite of components, but for now its contains three components.
The plugin suite comes with many GH Example files.......
DOWNLOAD
Sonic components are now part of Mosquito:
http://grasshopper3d.com/group/mosquito
Mosquito Download:
http://www.studiosmuts.com/ceed3/mosquito/
If you like it please support us, that way we can devote more time to develop these plugins.Flow Video
Click on the FLOW VIDEO above or go to : http://www.youtube.com/watch?v=MEl94L7VIrY
Surface and Target Ray Video
Click on the TargetRays VIDEO above or go to : http://www.youtube.com/watch?v=Q57srPYiZnQ
SonicRoot
INPUT/OUTPUT
Here you can see that the difference in time to calculate 5000 numbers between Grasshoppers Square Root (based on Math.Sqrt I presume) and Sonics Square Root. There is a tradeoff in accuracy, but that should not matter, given the speed.
The Algorithm
The binary Algorithm used in this component stems from Gaming and Graphic development back in the 1990's effectively calculating the inverse square root. It also makes use of Newton's method of finding roots. I have also made use of some scary looking bitwise manipulation.
Input: Insert the number or list of numbers you wish to compute.
Root: Resulting Square Root of those numbers.
Flow
INPUT/OUTPUT
Surface: Plugin your surface that you wish to use for flow testing.
Points: Plugin your points that you wish to use for each stream, note that these points only have to be near the top of the surface , check examples .
Res: The resolution of the curve output. The low the value to more rigid the curve. Try to keep this fairly low.
Calc: Number of calculations for each stream. This input and 'Res' work together, if you raise 'Res' value then you need to increase Calc. Calc can also be used to animate the flows.
pLine: Use a 'boolean toggle' to choose whether the output 'Curves' are PolyLines. If left 'False' the output will be Interpolated Curves.
Target and Surface Rays
Main Features Include:
Multiple Surface Calculations ,Occlusion testing , Automated output of Normals, UVs , Vectors and more in ordered Data Tree Branches and Paths.
OUTPUTS
(NOTE: All outputs are demonstrated in the "OUTPut example" files included with the download.)
The outputs are the same for both plugins and are as follows:
Points: Exports a list of points for each ray, each ray has its own Path in the DataTree.
Vectors: Exports each vector for each of the above bounce 'Points', lists are ordered the same as the Points ouput.
Normals: Exports the normals for each reflection point for each surface supplied.
UVs: The respective UVs for the above list entries in case you would like to evaluate the surfaces, you will need to use some culling logic here.
Srfs: Outputs the input surfaces in a relative order to the above lists. excluding surfaces not involved in the process.
SrfUvs: This list order matches the "Srfs" output. Use this with the "Srfs" output to evaluate the surface bounce points.
SrfInd: This is an odd one, but it contains the indexes for the first 4 outputs with regards to surfaces in the "Srfs" Output. ( I find it useful)
SrfCull: This is used to cull out the first 4 output values so that the output is relative to each surface in "Srfs".
Curves : Outputs the bounce path for each ray as Polylines.
Refract
Calculates the refraction of rays through mutliple surfaces.
SourcePts: The start of a ray.
TargetPts: The end point of a ray.
Surfaces: The surface through which the rays will be refracted.
Ni: The Refraction Index of the first medium the ray starts in i.e. Air
Nr: The Refraction Index of the medium the ray is passing into i.e. Water
Solid: Toggling this will treat the space between any two surfaces as the same medium. Check example files included in the download for more info.
Refraction Indices:
I have included a list of generic Refraction Indices in the Grasshopper definition.
Enjoy the Plugins,
Carson
Example Images: