You are on page 1of 10

for Rhinoceros

FurGen is a fur plug-in for Rhino which allows for easy and quick generation of
fur-like meshes for the purpose of visualization. The geometry created by the
FurGen plug-in can be used to add realisim to materials such as fur, grass, rugs,
cloth, towels, velcro, and many others.

Installation
Command List
Introduction
Command Descriptions
•frSetUp
•frDisplay
•frResolve
•frBakeState
Workflow
•Baking and Managing Baked Objects
•Minimizing Poly Counts
•Utilizing Textures
•Strand Bending and UVs
•Saving Fur Data
FurGen
Installation
F
The zip file contains three (3) files; FurGen.rhp, FurGen.tb, and this file FurGenManual.pdf.
Unzip the file and place the FurGen.rhp file in a folder where it will not be disturbed. The
suggested location would be to place it into the Rhino Plug-ins folder, which under a typical
windows installation is in C:\Program Files\Rhinoceros 4.0\Plug-ins. After placing
the FurGen.rhp file in a safe location you can either drag and drop the plug-in on a running
instance of Rhino to load the plug-in or install it by running the PluginManager command,
choosing Install from the bottom of the dialog, and finding the FurGen.rhp file.

To install the toolbar, first put the FurGen.tb file in a folder where it will not be disturbed.
You can put this along with the FurGen.rhp or you can place it in the folder with all of the
default Rhino toolbars, which can be found under C:\Documents and Settings\All
Users\Application Data\McNeel\Rhinoceros\4.0 in a typical XP installation or C:\
ProgramData\McNeel\Rhinoceros\4.0 in a typical Vista/Windows 7 installation. Note
that both the Application Data and ProgramData folders are hidden. After placing the FurGen.
tb file in a safe location, run the Toolbar command, choose File > Open, then navigate to the
location of the toolbar file.

Command List
FurGen
• Prints plug-in information to command line

frSetUp
• Create or modify a fur setup

frDisplay
• Turn off or on the fur display for an object

frBake
• Adds the geometry for a fur setup to the document

frResolve
• Resolves the fur setup on an object that has been modified

frBakeState
• Set whether a fur setup will be baked or not

frRename
• Rename a give fur setup

frDelete
• Delete a given fur setup

frSaveFurData
• Save fur data for all fur objects in the scene

frLoadFurData
• Load fur data from previously saved file
FurGen
Introduction
FurGen has been designed to make creation of fur as easy as possible and to provide as much
feedback, information, and usable geometry. It helps to know just a little bit about FurGen to
get started.

The first step is to create a fur setup on an object. A fur setup is a collection of all the
information and parameters needed to create fur. The two identifying components of each fur
setup is the Rhino object and the name of the setup. There can be multiple setups on a single
Rhino object, but each must have a different name. Two different Rhino objects can each
have a fur setup with the same name.

FurGen then goes through a three (3) step process to create the final geometry; base points
on the object, polylines (strands) from those base points, then a mesh around each of
those polylines. Each of these three components are controlled by a different collection of
parameters, and you can add any of these three types of geometry to the Rhino document.

All together, creating all three of these different sets of geometry each and every time a
modification is made can take a bit of time, so FurGen will do two things to keep this as
speedy as possible. First, FurGen will reuse as much information as possible. This means that
if all you change is a mesh parameter, then the points and strands will be reused. Second,
FurGen only regenerates points and strands when modifications are made. Meshes are added
explicitly through the frBake command.

Since FurGen doesn’t recalculate the mesh with every modification and you must explicitly add
the fur mesh to the document, it can be hard to keep track of changes made to the fur. Not to
mention that fur meshes can potentially slow down the viewport. This is where the fur display
comes in. The fur display is automatically enabled whenever the Fur Setup interface is active
for the fur setup that is being modified, but its possible to enable the display at anytime on a
per object basis. This can help keep track of the fur setups that have been created without
adding heavy geometry to the scene.

Now that we’ve got the basics down, you can begin to play, explore, or read on to find out
more of the specifics.
FurGen
frSetup
F
Quick Icons
The icons at the top of the Fur SetUp Interface
are meant to allow access to quick utilities without
having to run a separate command. From left to
right here’s what each button does.

Pick - pick another Rhino object for fur


Add a SetUp - add an new Setup on the current
Rhino object
Rename a SetUp - rename the current setup
Delete a SetUp - delete the current setup
Match a SetUp - pick another object and fur
setup to use its parameters

Drop Down List


This displays a list of all the fur setups that on
the current Rhino object. By default each setup
is named automatically. If you’d like to use a
different name, then you must rename the setup
after creating it.

Point Settings
The number of points created is controlled by the
Density of points, expressed as point per square
unit. This allows for objects of different size to
achieve the same affect easily. Below the Density
input is the display of the area of the object as
well as the number of points currently created.

Strand Settings - Length


These settings control the length of the strands.
In order to create varying strand length, the
minimum and maximum length must be set to
different values. The number of segments can
control how many divisions are made along the
length of the strand. Adjusting this will affect
quality of the result, of the bend, and also poly
count.

Strand Settings - Bending


These settings control how the strand bends. In
order to have the strands bend in different ways,
minimum and maximum gravity must be set to
different values. Normal Variation will rotate the
normal that is used for the strand, which can
create a “rougher” looking appearance. Bend
Type controls how the strand reacts to gravity.
FurGen
frSetup...cont.
Mesh Settings
These settings control how the mesh is created. In
order to create varying the width of each strand,
the minimum and maximum width must be set to
different values. Taper will decrease the width of
the strand as it gets closer to the tip. Sides will
determine how many faces around the strand will
be used. UV Type will change how a texture is
applied to the strands.

frDisplay
The frDisplay command will enable the display for
all of the fur setups that have their bake states
set to active for a given Rhino object. In order to
prevent the display from slowing down the Rhino
viewport, the display will only display a quarter
of the strands and up to 500 strands. The color
of the strands will indicate whether the fur data
is connected with its base object, in a conflicted
Green strands indicate that the fur is connected
state, or if the base object has been deleted. with its base object

frResolve
At some point after creating fur on a Rhino object
you might need to move or modify that object.
When this happens, the calculated fur data
doesn’t match the current geometry or settings of
the Rhino object and is therefore in a conflicted
state. You can tell if the fur setup is conflicted
by turning on the display for that object. Strands Red strands indicate that the fur is in a
that appear in green are currently connected with conflicted state with its base object
the Rhino object. Strands that are a deep red are
in a conflicted state. Strands that are displayed in
purple have had their base object deleted.

In order to reconnect the calculated fur data with


the current geometry you must run frResolve
command. This will recalculate the point and
strand data with the new object based on the
previous fur settings that were being used.
Purple strands indicate that the fur has had its
base object deleted
FurGen F
frBakeState
Since its entirely possible for a single Rhino object to have multiple fur setups, it becomes
necessary to control whether or not all of those setups will be displayed or baked. In comes
bake state. A bake state is flag that says whether or not a given fur setup will be baked
or not. This is also looked at when the fur display for the object turned on. Using the
frBakeState command will allow you to turn the bake state on or off for any of the fur setups
on a given Rhino object. The bake state for an object is on by default, so unless you turn it
off, it will always be baked and displayed.

Baking and Managing Baked Objects


There are several options when baking geometry created by FurGen. First of all, you can bake
either the points, strands, or mesh by changing the Type option in the command line. The
points will be added as a point cloud and the strands will be added as polylines and grouped
together. By default only the baked setups that are active for the selected object(s) will be
baked, but it is possible to bake the active setups on all objects by toggling the Bake option in
the command line.

Once you’ve added your fur objects to the document, you might want to take extra care while
working with them. Most meshes that generated by FurGen are quite dense, so having them
visible within the document might slow down your Rhino viewport. It is recommended to use
the frDisplay command to see the strands of your fur setup while working in the document,
and only bake the mesh when its time to render.

After you’ve rendered, you may not have any need for the fur mesh until the next round of
renderings that you need to do. Hiding the mesh or putting it on its own hidden layer are
two options so that it doesn’t slow down your work. Another option is to delete the mesh
all together. As long as you do not modify the object or the fur setup, then FurGen will keep
the calculated mesh in memory, and it will be available to quickly add again through frBake
command.
FurGen
Minimizing Poly Counts
Its important to be mindful of the density of the meshes that FurGen creates. FurGen
can easily create extremely dense meshes with millions of polygons. These meshes have
the potential to slow down Rhino, increase render times, and potentially cause crashes.
Minimizing the poly count whenever possible will ensure that the meshes FurGen creates don’t
bog down the rest of your work with Rhino.

The first parameter to keep track of is the density of the fur setup. This will determine
the number of points that are created. The current number of active points is display just
underneath the density control in the Fur Setup interface. This number will turn bold and red
when the number of points that have been created is getting fairly high. Using the smallest
density possible to achieve the desired effect will keep the number of points created in check.

The number of segments that are used for the strands is the second aspect of the fur setup
that will influence the poly count. This setting will control the smoothness of the polyline
used for each strand. Although it is tempting to set this number higher so that the result is
very smooth, the end result typically is not all that distinguishable from the default setting of
6 segments. If your setup has fairly low gravity values, then you may be able to decrease the
segments without any significant loss in smoothness.

The last parameter that influences the poly count


is the number of sides used for each strand.
FurGen has the ability to create several different
types of meshes depending on the number of
sides that are used. At a value of 3 or above,
FurGen will create a tube-like mesh around the
strand. The advantage to this mesh type is that
it can be viewed from any angle, creates very
round looking strands, and can also be capped for
prototyping. The downfall of this type of mesh
Tube mesh - created
is that creates meshes with more faces then are
with 3 or more sides
generally needed.

At a value of 2, FurGen will create a view-


dependent mesh that will face the camera and
vary its normal across the width of the strand.
This mesh is more efficient than the tube-like
meshes, but is only meant to be viewed from one
angle and has a slightly lower quality rounded
effect. Since the camera position is taken
into account when generating this mesh, it is
recommended to set your camera to the position
that will be used for rendering and make sure that
correct viewport is active when baking. If you
intend to render the fur from multiple angles and View Dependent mesh -
use this mesh type, you must bake the mesh for created with 2 sides
each viewing angle.
FurGen
At a value of 1, FurGen will create a flat mesh that
F
will be perpendicular to the plane of the strand.
This mesh will not vary its normals, and will not
respond to camera location. This is the most
efficient of all the mesh types, but is generally
only suitable for creating flat strands as would be
needed for something like grass.

Sample poly count with 50,000 pts


Segments: 8, Sides: 8 = 3,200,000 polygons Flat Mesh - created
Segments: 6, Sides: 5 = 1,500,000 polygons * with 1 side
Segments: 5, Sides: 5 = 1,250,000 polygons
Segments: 5, Sides: 3 = 750,000 polygons
Segments: 5, Sides: 2 = 500,000 polygons
Segments: 5, Sides: 1 = 250,000 polygons
*Default settings

Utilizing Textures
It is possible to use texture maps to control the
length, gravity, and normal parameters. Textures Base texture
must be a jpeg, png, bmp, gif, or tiff. When using
length or gravity textures, the image must be a
grayscale image. The minimum length or gravity
value will be used for the black points of the
image, and the maximum length or gravity value
will be used for the white points of the image.
Note that “minimum” and “maximum” length or
gravity is not enforced, so it is possible to have a
higher minimum gravity than maximum gravity. Length Map
There is no problem with this and can effectively Min = 1
allow you to flip the white and black points of the Max = 5
image if you choose.

By using a texture for normal variation you are


explicitly describing the normal. Therefore you
need a normal map as opposed to a grayscale
image.

You must have an active render mesh for the


Gravity Map
object in order to use textures as the texture Min = 1
coordinates of the base object are required. Max = 0
Generally if you have seen the object in a shaded
viewport mode, then it has an active render mesh.
FurGen
Strand Bending and UVs
The bending for each strand is calculated for
Times2
each strand based on its normal, the amount
Power2
of gravity, and the negative Z direction. The

al
Constant

m
amount of gravity basically dictates the angle

or
N
of the last segment of the strand. So a gravity
value of 0 would not change the strand from its Grav = 0.5
normal direction, a value of 1 would have the last
segment be pointing straight down, and a value of
0.5 would have the last segment at an angle that
is halfway between the normal and the negative Z Times2
Power2
direction.

al
Constant

m
or
N
There are 3 different bending types that dictate
how the strand bends from the initial direction of
the normal to the final direction as dictated by the
amount of gravity. The simplest type is Constant,
which will rotate each segment evenly between
the initial and final directions. This results in a
very even curl from the beginning to the end
of the segment. The most natural looking type Grav = 1
is Times2, which is also the default type. Each
segment bends twice as much as the segment
after it, which results in a strand that has more Object with
bend at the beginning of the strand then at the Diffuse Texture
end. The last type is Power2. This type has
dramatically more bending at the beginning of
the strand than at the end, so the result is most
similar to wet hair.

There are also 2 different options for creating


UVs on each of the strands. The From Base Point
Fur added with
option will retrieve the UV parameter from the
FromBasePt
point on the object, then use that parameter along option
the whole strand. The result is that each strand
will be able to match the color of the texture
on the base object, provided the same material
is used. This is the most highly recommended
option if you have a distinct texture on the base
object that you’d like to utilize in the strands. The
Along Strand option will take a small vertical strip
of the image, then apply that to the strand. This
will allow you to change the color of the base
and the tip of the strands with the image. The
horizontal position of that vertical strip taken from
the image is assigned randomly.
Fur using Along
Strand option
FurGen F
Saving Fur Data and Rhino files
As of the initial pre-release of FurGen, the data generated from all of the fur setups is not
saved within the document. In order to save all of this data you must use the frSaveFurData
command, which will allow you to save an external, xml based file with all of the fur
information. The parameters for each individual fur setup is saved, along with each point and
all the individual seed variables. This data can then be loaded back in with the frLoadFurData
command. It is important to note that the data is tied to the original Rhino objects, so loading
a fur data file that was saved from a different file will not have any affect.

When it comes to saving Rhino files, you will want to be mindful of whether you have added
any FurGen created geometry to the document. Just as the amount of geometry created has
the potential to slow down the display or working with Rhino, it also has the potential to make
saved Rhino files unnecessarily large. This is exceptionally true with any dense meshes that
have been added to the document. The recommendation is to save out the fur data using the
frSaveFurData command and then delete any baked geometry that you have in the document.
Upon reopening the Rhino document, load the fur data with the frLoadFurData command and
recalculate any fur geometry that is needed. The reason for this recommendation is to keep
the file sizes as manageable as possible.