Saturday, July 18, 2015

FaceMe for Rhino

I don't know why but Rhino still doesn't have a feature similar to sketchup's FaceMe. By using only a billboard image instead of a heavy 3d model, FaceMe is one reason why sketchup scenes can be so light weight. Years ago I made a rhinoscript to accomodate this, but recently I adapted it to grasshopper so that it can be more controllable.

Simply stated, this is a grasshopper script that reorients the billboards to face an attractor point. I've also attached some jitter commands to create some variation. Then bake the new billboards and delete the initial surfaces. In the future, some vb/c# work can link the attractor to the camera location. 

Note that for now, all billboards textures must be assigned by layer and differently billboard images need to be grouped and baked separately.

Typical billboards


Move Jitter

Rotate All Billboards

Rotate Jitter

Combined Effects


I was dressing up an exterior scene that required a number of different plants. I created various 3d blocks of these plantings (made up of two vertical PictureFrames at 90 degrees from each other), but soon became confused of which was which, and how tall plant was. So I wrote a quick script to label each block with its name and current Z height at its origin. 

I've always liked the ability of TextDots in rhino, as they can be very useful in communicating obscure information quickly. This script can be modified to quickly show which layer, scale, and rotation of the block, as well as texture information inside the block.

Sunday, July 12, 2015

Tracking Movement: Circular Lofts

Building off of the previous circular loft script, I created a tracker that traced the location of a series of points over time. As a form twirls across the screen, the series traced points form curves, and are lofted into graceful forms.

I'm using the recorder to track points, and feeding the points into an interpolated curve. Works surprisingly well! Right now there is only a rotate transform, but I did play around with a move transformation (x,y) as well. I'm still trying to figure out what I can do with these extrusions:

 I then isolated the move transform to the x dimension only, and I got some interesting script-like curves. As the resulting traces are highly dependent on the initial loft forms, I feel like there's a lot of potential here.

Friday, July 10, 2015

Creating with Grasshopper: Circular Lofts

I was exploring three point circles when I realized that I could use grasshopper to manipulate lofted circular forms dynamically.

I started with three curves in space, broke them down into smaller segments, used the end points to create 3 point circles, and then lofted them into vase forms. By rotating the original curves, I was able to really create complex forms and transitions. Fun!

Did some iteration studies:


Continued form finding exercise... with a little help from array:

A refinement in array allows me to rotate the form in an array. Could be interesting once I develop enough tools to "animate" this form.

3dm | gh

Clusterizing this array and rotate portion leaves a beautifully simple script.

Friday, July 3, 2015

Exaggerated Ribs

CurvatureGraph provides a nice analytical tool to review curves for kinks. It is also a pretty way to "grow" the curve. I wanted to build off of Jittery Lines with a script that thickens polylines relative to its control points, as CurvatureGraph works for a Curve. It's a common effect (that I'm almost certain there's an existing script for) that I want to explore and build on top of.

To go about this, I've broken the script down into 5 parts:

1. Explode polyline to get line segment vectors
2. Calculate bisecting vectors*
3. Calculate angle and direction of "turn" from original vectors
4. Create offset vectors at the kink points
4a. Create Weighted Offsets based on adjacent vector angles
5. Join these points into new polylines

*Just using bisectors for the offsets will result in "twisted" ribbons. That is why I untwist this by "flipping" the bisector when the line segment goes from clockwise to counterclockwise.

Here's a 2D example running on multiple curves:

I've resolved part 4a by creating three options for weighting how I offset the polylines: by a shift slider (shift about center), an equal slider (grows equally), and by duo sliders.

More forms: