Aline Normoyle & Nancy Tsang
TrInk is short for "Tree Ink", which describes our Maya Plugin
for autogenerating 3D branching plant
models from 2D source images and rendering them in an eastern ink
style. Our plug-in combines two sets of functionality that
can be used either individually or together, based on the work
from the two SIGGRAPH papers below:
- Approximate Image-Based Tree-Modeling using Particle Flows
by Neubert, Franken, Deussen
- MoXi: Real-Time Ink Dispersion in Absorbent Paper by Chu
TrInk currently lacks the polish to be a truly good out-of-the-box
tool; however, if you're curious to try it, you can obtain the
standalone TrInk plugin for Maya 8.5 here.
TrInk consists of the
To install TrInk, open Maya's plug-in manager dialog under
Windows -> Settings/Preferences -> Plug-in Manager, click
Browse, and then select TrInk.mll. After installation, the
TrInk menu should appear on the top menu bar.
- Plug-in library,
- MEL-based GUI,
- and related data files and paper
Tree Creation: Getting Started
To create a tree with simple geometry,
select "Create tree..." from the TrInk menu. We can use the
default settings to start, but because TrInk generates trees from
source images, it's necessary to give TrInk a source image to guide the
talk more about how to create these images below, but let's start by
browsing for one of the default images, such as "tree1.png",
from the TrInk plug-in directory. Now click the "Create"
button. After about 30 seconds, the created tree will appear
in the scene.
Neubert et al.'s paper guided users in the preprocessing of
photographs into source images for the tree generation algorithm.
This plugin assumes that images have already been
preprocessed and will autoarrange the images inside a 3D bounding box
before running the tree generation algorithm. Source images
should be non-transparent in areas containing tree branches.
The density of branches is proportional to
the opacities in the original images. Optionally,
main branches should be drawn over the density estimates with red
The red lines will guide the creation of the main branches and should
be specified for best results. These red lines must connect
to be read in properly. Some example source images appear
If the user specifies a single source file (or 3 source
files), it will be arranged 3-dimensionally at 60 degree
a very symmetrical, circular tree. If two images are
specified, the images will be placed at a 90 degree angle. In
all cases, the images are aligned at their centers, for example,
Tree creation parameters
In this section, we discuss
the tree creation parameters in the tree panel:
- Source Images
(Required): The image set TrInk should use to guide the
Controls the size of the resulting tree. The generated tree
is constructed inside the unit cube and scaled to the given dimensions
- Number of
particles: Controls the number of branches in the tree.
Specify more particles to create a denser tree with more
branches and a thicker trunk. Specify fewer to create a
Grid Size: Controls the amount of detail retreived from
the source images at the expense of speed. Increase this
number to better capture silhouettes. Decrease this number to
create a tree more quickly.
field Size: Not needed. Do not change this value.
Ink Stroke Creation: Getting Started
The ink rendering feature allows the user to render NURBS
curves as ink
strokes. The user has the option of creating curves manually and
properties to each curve, or automatically generating curves shaped
plants and assigning ink values at creation time. In either case, ink
can be changed or removed at any time.
Ink to NURBS curves
TrInk can render any NURBS curve as an ink
stroke. To get started, simple create a a NURBS curve with
the CV tool, and associate it with an ink stroke via the TrInk menu.
To create a NURBS curve:
1. Go to
Menu->Create->CV Curve Tool, your cursor should now look
like a crosshair
2. Click anywhere on the screen.
NURBS curves require at least four knots (clicks) to create a complete
curve. When a curve has been generated, it will be represented by a
blue/white line. Hit Enter to complete the curve.
Below, we show a set of NURBS curve representing a chinese character:
To create ink strokes:
1. Select the desired curves.
2. Go to
Menu->TrInk->Create ink strokes...
3. Select "Create". All
curves should now be attached to an InkStrokeNode.
4. Press the "render" tool button, or select "Render current frame"
from the render menu to see the brush stroke. For example,
the curves above give the following result.
This rendered image involved changing pressure schemes on various
curves and brush sizes:
Ink Stroke parameters
In this section, we discuss
the ink stroke creation parameters in the ink stroke panel:
Editing Ink Strokes
Resize Brush: Automatically changes the brush size at
render time according to the percieved curve length. Shorter
curves result in smaller initial brush sizes, whereas longer curves
result in a user specified initial brush size. Checking this feature
will not change the user specified brush size.
Color: Automatically render a gradation of the
specified color. The specified color will be the darkest color used.
Color is assigned to each curve based on their depth, where the
furthest curve away from the camera eye recieves the darkest
- Size: Specify
the brush size.
Water: Specify how much water the brush should
contain. For best results, Amt Water
should be greater than Amt Pigment.
- Pressure: Available
pressure schemes for a curve. Brush size is automatically adjusted
according the the scheme.
Spread: Specify the number of iterations the ink
simulation should run. This affects the overall maximum radius of ink
spread. A Flow Spread set to 1 will result in no fluid flow.
- Color: Specify
color of the ink.
- Viscosity: Specify
the viscosity of the ink (Doesn't really do anything).
Pigment: Specify the amout of pigment that will
be applied to the stroke.
For any curve attached to an InkStrokeNode, opening up the channel
editor should reveal the node attribute below the normal transformation
channels. You can change parameters by clicking on the node
and revealing the parameters in the channel editor. The channel editor
allows for multiple curves to be updated with a particular parameter at
You can also select a single curve and adjust parameters in the
Notes: The maximum Flow Spread of all the ink nodes will be used as the
number of iterations for the simulation.
Rendering generated trees with ink
TrInk allows the tree generation and ink features to be used
together (with identical parameters):
- Go to Menu->TrInk->Create ink tree...
- Adjust to desired values
- Hit "Create"
Known problems and limitations
TrInk has a few known problems and
limitations, listed below:
- Tree generation parameters cannot be tweaked after
creation. Users must change parameters and recreate the tree.
- The user cannot manually specify the alignment of the
source images. The source images must be setup outside of
- The density estimate used for particle initialization is
less accurate than it could be.
- Geometry creation for the tree simply extrudes circles
along branch curves. The resulting tree mesh is not
continuous and only looks good from far away.
- The ink rendering is only supported for Maya Software (e.g.
mental ray and renderman not supported)
- Ink strokes do not work with batch render.
However, a MEL script can be written to work around this
- Ink strokes are not blended with non-ink objects.
The ink paper will cover other objects in the scene in the
view window, however, if the image is saved in a format that stores
alpha values, it can be blended outside of Maya. Currently, the way
that colors are written creates a paper color fringe around the brush
strokes which may or may not be desireable.