Growing a flower in XSI
by Adam Sale

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

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.


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.
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


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.

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)

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.

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.

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.



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.