Growing a flower in XSI
by Adam Sale

XSI's highly intuitive workflow makes creating organic animations a highly enjoyable process. The core concept of XSI's architecture is built around a non-linear workflow. We'll take advantage of that fact a lot in this tutorial. We'll start with a cube, and using a series of deforms and shape animation, wind up growing a flower.

In this tutorial we'll be using the following tools:

Drawing CV NURBS curves
Deform by Curve
Extrude along curve
Shape Jitter
Non - normalized Shape Keys
2D Chains
Enveloping
Object to Cluster Constraints
Animation Mixer
Birail
Nurbs to Mesh

You can start off by downloading or drag and dropping this finished Sample model file

Growing Stems
The stem of the flower needs to grow up out of the ground, branching along the length a couple of times to create the Sepal, the leaf like structures found underneath the flowering parts. One idea is to rough in your flower stem using a series of curves to block the form. I've used 5 curves in the sample scene.

We'll be extruding the cube's top polygon along the first stem curve. Select the cube and hit the "U" hotkey. You'll be in Raycast Poly selection mode. Select the top polygon and while in the model module, click on Modify > PolyMesh> Extrude along curve. XSI will force your mouse cursor into a pick session.

Click on the stem curve. Your cube will attempt to extrude itself along the form of the curve. The initial results will need some tweaking. As you apply the command and picked the curve, XSI opens a property editor for the operator you've chosen.

Adjust the subdivision slider to add in an appropriate number of subdivisions. For the amount of detail I wish to put into the flower, I'll use a fairly high subdivision number to make all of the polygons in the extrusion as square as possible. It'll make for a better form when I start splitting arms and leaves out of this stem. Remember that you can enter numbers into the subdivision box if the slider values are too low for you. A value of 10 fits the cube to the curve pretty well.

As the stem grows it should start out with a thick base and taper in diameter the taller it becomes. In the same extrusion property editor, click on the Transform tab and adjust the extrusions Scale in the X and Z-axes. You'll find that you won't need to adjust their values much to get the look you're after. Values of .92 in both axes were more than enough to taper the stem

The next aspect of the stem you need to model is the twist of the extrusion. As a flower grows, it will twist slightly following the path of the sun across the sky day after day. Slight anomalies in the 'rifling' of the stem will make for a more realistic structure when we subdivide the cube as well as accentuating the additional operators we add to the scene.

Add a twist to the stem by slightly adjusting the Y Rotation of the extrusion operator. A value of about 6 degrees will suit me just fine.

The last step we need to perform before closing the extrusion property editor is to animate the growth of the stem. Click on the Extrude tab to access its start and end properties.

With your time slider at frame 1 drag the extrusion end value to 0 and click the Green keyframe button to the left of the end property. I decided that with my time lapse animation, the growth of the stem would take 6 seconds at 30 FPS. Set the end frame to 180 and then drag the end slider value to 100. Set another key for the end property. Click here to see an animated example

I would also set two key frames for the rotation property of the extrusion operator. The stem will start off straight and then over time begin to twist in response to the suns changing position.

Growing the Sepals
The sepal is the leaf like structure found directly underneath the petals. To grow these structures, we'll use two more extrusion along curve operations. Drag your timeslider to the last frame (180) of the animation. Using your raycast poly tool, select a polygon just underneath the area where you wish to have your sepals emerge. In our example, I've already drawn a CV nurbs curve to indicate where the structures will emerge. Before you execute the extrusion command, make sure that you've deselected the polygon you used to extrude the length of the stem. When you've only got the 'sepal' polygon selected, click on Modify>PolyMesh>Extrude along curve, and then pick one of your sepal curves.
As with the previous extrusion, the operation will need some modification. In the new property editor, adjust the number of subdivisions to an appropriate number. When growing the sepals, you'll want to be sure that the extrusion flares out into the shape of a leaf. This can be accomplished using the X and Z scale of the extrusion operator as well as a slight rotation on the operator's Y-axis. Notice that as you extrude the sepal the end of the extrusion will remain squared off. It'll be fixed up a little later using shape animation. For now, we'll focus on blocking in the flower form and creating a rough animation.

When I create animation, I'll generally block keys at the same frame. In the case of the flower, I'll make sure that all of the keys describing the finished state of the flower end up at frame 180. This is more of a workflow issue than anything else. If I know that all final keys are stored on a given frame, it makes it very easy to open a dopesheet and then offset animation from that point. For a simple example like this flower it might not seem like a big deal, but when dealing with a mountain of keyframe info, small steps like this can stop you from going insane while managing keyframe data.

At this stage, since the sepal has been modeled in its nearly finished state (minus the shape animation to round the leaf structure) we should key the results at frame 180. In the extrusion property editor set a key for the extrusions end value, the X and Z scale as well as the Y rotational value.

 

You'll also need to key the extrusion in its beginning state as it branches out from the stem. I've keyed the extrusions beginning values in at frame 100. Set the end value to 0, as well as keying the X and Z scale at 1. Finally, key the Y rotation at 0 degrees.

Repeat the same process for the Sepal on the opposite side of the stem. Key the sepal on the same frames mentioned above. We'll offset the animation a little later.

When you grow the leaves found at the base of some flowers, you'll use the same technique of extruding an existing stem polygon along a curve.

At the end of the extrusion stage, your flower should look more or less like the one on the right. You can subdivide the stem structure by pressing the + key on your numeric keypad

Creating Flower Petals
The petals you create will largely depend on the type of flower you are trying to create. In this example, I'll be creating rose like petals. A bi-rail is a good tool to begin blocking out the form of a petal. A birail creates a Nurbs surface, which you may wish to later convert to a poly-mesh for further editing. Start off by drawing a curve in the front view window as shown in the image to the right. To speed up your work, you can activate the SYM button found at the bottom of the transform tab to draw both curves simultaneously. Remember to turn off the SYM button when done. After you've drawn the two guide curves, you need to create a 180-degree arc that will extrude itself along both guide rails. Rotate the curve so that it lies perpendicular to the two guide rails.

With the arc selected, click on Create>Surface>Birail. In the pick session that follows, click on one guide curve, and then the other. Using this information, XSI creates the Birail surface. Remember that you still have a modeling relation between the three curves and the resulting NURBS surface, so you can use the curves to modify the shape of the surface. When you're satisfied with your shape, select the NURBS surface and freeze it. Delete the construction curves to clean up your scene.

At this point you may with to add detail to the petal, you may wish to give it a thickness or some variation. Converting the surface to a Polygon can help things out in this regard as XSI's poly editing tools are far superior to the NURBS editing tools. Whatever the case, when you've finished modeling a single petal, duplicate it as many times as you need to create all the petals for your flower. Freeze each of the petal copies.

Growing Petals
In order to grow petals, we won't use the extrude along curve operator implemented for the stem and sepal. Since we're dealing with fully formed petals, we need a way to grow them along a defined path that emanates from the tip of the stem. To prepare the petals, make sure that each petal's center is located at its base. You'll also want to freeze the scale and rotation of each petal, to 0 out the rotational values and bring the scales back to 100 percent.

You'll need a way to to parent each of the curves to the top polygon of the stem. Get a null and click on Constrain>Object to Cluster. Click on the stem to select it, and then drag a box around the four vertexes at the top of the stem. In the pop up box that appears choose the cube (Poly) option. The null will then be constrained to the middle of the top polygon. You can then make each of the petal curves a child of this null. Drag the timeslider back and forth to see how the curves follow the movement of the stem. Make sure that each of the petal curves scales has been frozen to 100 % (Transform > Freeze Scaling)

Drag the time slider to the last frame of your animation. Since this frame represents the last frame of your animation, it makes a perfect point to draw in guide curves that will represent the positions of the fully formed petals. Draw in curves as shown in the image to the right.

We're now ready to attach the petals to the curves.

Select a petal and click on Deform> Deform by Curve. In the resulting pick session, click on one of the petal curves. Depending on how you've built your petal and the curve, the petal should jump from its initial position to some place in your 3D scene. Hopefully it jumps to match the position of the petal, if it doesn't you can change adjust this in the curve deform property editor. Click on the constraint tab of the curve deform PPG and activate the constrain to deformer option. Your petal should now mimic the position and rough form of the curve you constrained it to. There may be some size differences that can be edited by clicking on the curve deform tab. At this point, you'll want to set the shape of your petals in their end form. To adjust this, you'll need to drag the scale along curve slider as well as the scale along normal and binormal sliders to get the proportions of your petal correct. The roll slider will also be necessary to orient the petal properly so that its surface points more or less skywards. When you've got the curve deform settings tweaked to your satisfaction set a key for the above properties on frame 180.

 

We'll need to set keys for the initial state of the petals just before they begin to sprout from the tip of the flower stem. I'll use frame 100 again as a temporary holding point for the beginning keyframe information. The keys can be offset at a later time. Set the curve deforms 3 scaling values (curve, normal and binormal to 0 and set a key for each property. You can adjust the roll value to your liking (I chose initial values of 30 degrees) Click here to see an animated example.
Repeat this same process for all of the petals you'll need for your flower. Later when you offset the animation, you can have all of the petals start to grow at slightly different times to allow for some asymmetry in your animation. Your Petal Animation should look roughly like this so far: Click here to see an animated example.
Creating the look of budding petals
Click on Create>Skeleton>2D Chain and draw a skeleton chain over top of each petal curve. Use an adequate number of bones in each chain to clearly define the shape of the petal curves. 4 or 5 bones per chain should suffice. Select each curve one at a time, and in the Animate module, click on Deform>Envelope>Set Envelope. You can branch select each chain or you can individually pick the bones that will affect each curve. When you're done right click to assign the bones to the relevant curve. Close the pop up property editor that appears. Repeat the enveloping process for each petal curve.

Select each of the skeleton chains as a branch and make them children of the null that you constrained at the top of the stem.

The petals grow out along the curves, however flower petals begin as green buds that grow out from the center of the stem before opening up into their flowery state. To create the illusion of budding, we have a number of tools at our disposal. For the sake of variety, I'll be using 2D skeleton chains to control each of the petal curves. XSI allows you to envelope curves, so this should offer a great solution with which to shape these curves opening up as the petal grows along its length. This combination of deformers should create the look we're after.
Making sure your time slider is at frame 180, select all of the bones in each chain and set a rotation key for them in their fully bloomed position. Drag the slider to frame 100 and rotate the bones of each chain into a folded position so that the chains look as though they are cupping the top of the stem. This will mimic the budding stage of the flower. You may not want to have the flower bud right away, so you can add a hold for the budding process by setting another key a little later on in your timeline, say at frame 140. The keys at frames 100 and 140 should have the exact same value to maintain the hold.
Creating the time lapse effect.

As the stem grows, you'll want to introduce some animation variety as it grows skywards. Keeping the stem static will look odd. Draw an 8 or 10 bone 2D skeleton chain along the stem curve and envelope the curve to the skeleton chain. When you watch a time lapse of a plant or tree growing, the first thing you notice is just how much the plant moves in the air due to wind currents, and the position of the sun. By animating the bone chain, you can begin to simulate this 'twitching' motion.

You can do the same for the Sepal curves if you wish some additional movement to your flower structure.

As a last layer of movement along the flower, select all of the curves used to grow the flower and click on Deform>ShapeJjitter. Shape jitter will help to further augment the time lapse twitching effect by randomly offsetting each vertice in the curves and animating that offset over time based on how you edit the shape jitter properties. After the shape jitter has been applied to each curve, you'll want to go in and manually adjust the jitter frequency and seed values to break up the movement.

Finishing touches: Rounding off the Sepals and base leaves
In order to complete the flower, you'll need to add some shape animation to refine the sepal and leaves you created earlier on. The first thing you'll need to do is organize your scene. Create and appropriately name a model and drag all of the flower pieces into the model. The model will allow us to create shapes and use the animation mixer for this flower, while maintaining the ability to export and use it in other scenes later on.
Drag the time slider to frame 180 and select the cube (stem). In the animate module, click on Deform>Shape>Store Shape Key. This is your initial neutral shape. Name it accordingly. Now using your move point tool (m) adjust the points of a sepal until you've rounded out the shape appropriately. When you're satisfied, select the cube (stem) and click on Shape>Store Shape Key. Name the new shape appropriately. While creating the rounded shape of a sepal, you'll have amassed a number of move component operators. Once you've stored the shape, you can select the folder of move components and hit the delete button (not the freeze button). The new shape is stored in the model's mixer, so the move components become redundant. At the same time, every shape you create should begin by manipulating the original neutral shape of the stem, deleting the move components is a good way of returning your model to a neutral pose. When you create the first shape on the cube (stem) XSI inserts a cluster shape combiner at the top of your operator stack.

Create as many refined shapes as you'll need to round out each of the sepals as well as any base leaf shapes you may have. Remember to delete the folders of move components after you've created and stored the shapes.

With the flower model selected, open up an animation mixer and click on the update button to bring up the model's mixer. At the top of the animation mixer, click on Mix>Shape Mixer Properties. In the property editor that appears, turn off the normalized option to put the mixers shape solver into an additive mixing mode.

Add as many shape tracks as you'll need to the mixer by clicking shift +S. Right click on a shape track and load a shape source you've created onto each shape track. When the shape is loaded onto a track, right click on the shape clip and choose the clip properties option. In the time control section of the popup property editor, set the clips in and out points to match the start and end frame of your scene. Also, ensure that your clip's scale is set to a value of 1.

Now, you are free to animate the weight of each shape clip as it influences the shape of the sepal and leaves.

If you wish to further enhance the workflow of your scene, you could use proxy parameters to bring all of your flowers controls into one custom parameter set. Hunting around for properties can be very troublesome in a larger scene. Proxies make your life a bit simple by centralizing control of your scene. Creating a proxy is as simple as dragging and dropping a keyframe icon widget onto an existing custom parameter set. The initial name assigned to the proxy isn't very intuitive, you can rename it by right clicking on the keyframe widget in the custom parameter set and choosing edit parameter definition.

This tutorial is a good example of just how versatile a tool XSI is. Its non-destructive operator stack allows us to return to any stage of a project and refine add, or remove operations without compromising the integrity of what we've already created. Happy Gardening!

Growing a Flower in XSI was written and performed by Adam Sale, Technical Director at Joncrow Entertainment. Please contact the author before republishing. Copyright. Joncrow Entertainment, 2002.