You are on page 1of 292

SOFTIMAGE|XSI

Version 5.0

Tutorials I

19992005 Avid Technology, Inc. All rights reserved. Avid, Avid Mojo, dotXSI, metaclay, Painterly Effects, SOFTIMAGE, XSI, and the XSI logo are either registered trademarks or trademarks of Avid Technology, Inc. in the United States and/or other countries. mental ray and mental images are registered trademarks of mental images GmbH in the U.S.A. and some other countries. mental ray Phenomenon, mental ray Phenomena, Phenomenon, Phenomena, Software Protection Manager, and SPM are trademarks or, in some countries, registered trademarks of mental images GmbH. Alienbrain, the Alienbrain logo and NXN are trademarks of NXN Software AG. Syflex is a trademark of Syflex LLC. AGEIA and physX are trademarks of AGEIA Technologies, Inc. Activision is a registered trademark of Activision, Inc. 1998 Activision, Inc. Battlezone is a trademark of and 1998 Atari Interactive, Inc., a Hasbro company. All rights reserved. Licensed by Activision. Digimation and Digimation Model Bank are either registered trademarks or trademarks of Digimation, Inc. in the United States and/or other countries. All other trademarks contained herein are the property of their respective owners. SOFTIMAGE|XSI uses JScript and Visual Basic Scripting Edition from Microsoft Corporation. SOFTIMAGE|XSI includes Open Dynamics Engine ("ODE") software copyright (c) 2001-2003, Russell L. Smith. All rights reserved. Redistribution and use in source and binary forms of ODE, with or without modification, are permitted provided that the following conditions are met: [1.] Redistributions of ODE source code must retain the above copyright notice, this list of conditions and the following disclaimer. [2.] Redistributions of ODE binary code must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. [3.] Neither the names of ODE's copyright owner nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THE ODE SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOFTIMAGE|XSI includes software developed by the University of California, Berkeley and its contributors. Copyright (c) 1989, 1993, 1994 The Regents of the University of California. All rights reserved. This University of California, Berkeley ("UCB") code is derived from software contributed

to Berkeley by Guido van Rossum. Redistribution and use of the UCB code in source and binary forms, with or without modification, are permitted provided that the following conditions are met: [1.] Redistributions of the UCB source code must retain the above copyright notice, this list of conditions and the following disclaimer. [2.] Redistributions of UCB binary code must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. [3.] All advertising materials mentioning features or use of this UCB code must display the following acknowledgement: This product includes software developed by the University of California, Berkeley and its contributors. [4.] Neither the name of the University of California, Berkeley, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THE UCB CODE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOFTIMAGE|XSI contains modified portions of grid control software 19981999 Chris Maunder. SOFTIMAGE|XSI includes the Python Release 2.3.2 software. The Python software is: Copyright 2001, 2002, 2003 Python Software Foundation. All rights reserved. Copyright 2000 BeOpen.com. All rights reserved. Copyright 1995-2000 Corporation for National Research Initiatives. All rights reserved. Copyright 1991-1995 Stichting Mathematisch Centrum. All rights reserved. SOFTIMAGE|XSI uses the OpenEXR software 2002, Industrial Light & Magic, a division of Lucas Digital Ltd. LLC All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: [1] Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. [2] Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. [3] Neither the name of Industrial Light & Magic nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

Tutorials I 3

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOFTIMAGE|XSI includes the libtiff library. The libtiff software is: Copyright (c) 1988-1997 Sam Leffler Copyright (c) 1991-1997 Silicon Graphics, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that (i) the above copyright notices and this permission notice appear in all copies of the software and related documentation, and (ii) the names of Sam Leffler and Silicon Graphics may not be used in any advertising or publicity relating to the software without the specific, prior written permission of Sam Leffler and Silicon Graphics. THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. SOFTIMAGE|XSI includes the libpng-1.2.5 library. The libpng software is: Copyright (c) 2000-2002 Glenn Randers-Pehrson, and is distributed according to the same disclaimer and license as libpng-1.0.6 with the following individuals added to the list of Contributing Authors: Simon-Pierre Cadieux, Eric S. Raymond, and Gilles Vollant. There is no warranty against interference with your enjoyment of the library or against infringement. There is no warranty that our efforts or the library will fulfill any of your particular purposes or needs. This library is provided with all faults, and the entire risk of satisfactory quality, performance, accuracy, and effort is with the user.

The PNG Reference Library is supplied "AS IS". The Contributing Authors and Group 42, Inc. disclaim all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The Contributing Authors and Group 42, Inc. assume no liability for direct, indirect, incidental, special, exemplary, or consequential damages, which may result from the use of the PNG Reference Library, even if advised of the possibility of such damage. SOFTIMAGE|XSI includes the libjpeg library. This software is based in part on the work of the Independent JPEG Group. The libjpeg library is: Copyright 1991-1998, Thomas G. Lane. All Rights reserved. Permission is hereby granted to use, copy, modify, and distribute this software (or portions thereof) for any purpose, without fee, subject to these conditions: [1] If any part of the source code for this software is distributed, then this README file must be included, with this copyright and nowarranty notice unaltered; and any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation. [2] If only executable code is distributed, then the accompanying documentation must state that "this software is based in part on the work of the Independent JPEG Group". [3] Permission for use of this software is granted only if the user accepts full responsibility for any undesirable consequences; the authors accept NO LIABILITY for damages of any kind. SOFTIMAGE|XSI Mod Tool includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/). The OpenSSL toolkit is: Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: [1.] Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. [2.] Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. [3.] All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" [4.] The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. [5.] Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. [6.] Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)". THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED

Tutorials I 5

WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This product includes cryptographic software written by Eric Young (eay@cryptsoft.com). This product includes software written by Tim Hudson (tjh@cryptsoft.com). The SSLeay library is: Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) All rights reserved. This package is an SSL implementation written by Eric Young (eay@cryptsoft.com). The implementation was written so as to conform with Netscapes SSL. This library is free for commercial and non-commercial use as long as the following conditions are aheared to. The following conditions apply to all code found in this distribution, be it the RC4, RSA, lhash, DES, etc., code; not just the SSL code. The SSL documentation included with this distribution is covered by the same copyright terms except that the holder is Tim Hudson (tjh@cryptsoft.com). Copyright remains Eric Young's, and as such any Copyright notices in the code are not to be removed. If this package is used in a product, Eric Young should be given attribution as the author of the parts of the library used. This can be in the form of a textual message at program startup or in documentation (online or textual) provided with the package. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: [1.] Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer. [2.] Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. [3.] All advertising materials mentioning features or use of this software must display the following acknowledgement: "This product includes cryptographic software written by Eric Young (eay@cryptsoft.com)". The word 'cryptographic' can be left out if the routines from the library being used are not cryptographic related. [4.] If you include any Windows specific code (or a derivative thereof) from the apps directory (application code) you must include an acknowledgement: "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"

THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The licence and distribution terms for any publically available version or derivative of this code cannot be changed. i.e. this code cannot simply be copied and put under another distribution licence [including the GNU Public Licence.] SOFTIMAGE|XSI includes software developed by the Apache Software Foundation (http:// www.apache.org/). The Xerces software is: Copyright (c) 1999-2003 The Apache Software Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: [1.] Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. [2.] Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. [3.] The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. [4.] The names "Xerces" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact apache@apache.org. [5.] Products derived from this software may not be called "Apache", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR

Tutorials I 7

SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation and was originally based on software copyright (c) 1999, International Business Machines, Inc., http://www.ibm.com. For more information on the Apache Software Foundation, please see http://www.apache.org/. This document is protected under copyright law. The contents of this document may not be copied or duplicated in any form, in whole or in part, without the express written permission of Avid Technology, Inc. This document is supplied as a guide for the Softimage product. Reasonable care has been taken in preparing the information it contains. However, this document may contain omissions, technical inaccuracies, or typographical errors. Avid Technology, Inc. does not accept responsibility of any kind for customers losses due to the use of this document. Product specifications are subject to change without notice. Documentation Team Judy Bayne, Grahame Fuller, Erik Goulet, Edna Kruger, Luc Langevin, Jamal Rahal, and Gino Vincelli. Printed in Canada. Part No. 0130-07148-01 09 2005

Contents

Contents
Section 1 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Document Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Softimage Customer Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SOFTIMAGE|XSI Tutorials 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installing the Tutorial Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding the Project to the Project Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The XSI Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interaction Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Switching Between Toolbars. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Shortcut Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selecting Objects in a Scene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 18 20 20 21 22 23 23 23 24

Section 2

Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Tutorial 1: The Basics of Working in XSICobblestone Alley . . . . . . . . . . . . . . . . . . . Duplicating and Transforming Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Toggling Visibility for Elements in Your Scene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Parenting Objects Using the Explorer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Custom Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Duplicating and Cloning the Street Lamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Isolating and Modifying a Single Scene Element. . . . . . . . . . . . . . . . . . . . . . . . . . . . Transforming Using the Manipulation Pivot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Cardboard Instances (Boxes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tutorial 2: Editing Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editing from a Property Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editing Multiple Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing an Objects Property Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editing an Objects Operator Stack. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Freezing the Operator Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 27 33 33 34 37 39 40 41 45 46 47 48 48 50

Section 3

Modeling & Deformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51


Tutorial 3: Polygonal ModelingBeckMobile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Taking a Look at the Reference Image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Preparing the Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating the Tank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bolting Down the Tank Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 54 55 56 63

Tutorials I 9

Contents

Adding the Air Vents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Marking Hard Edges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Adding the Legs to Stand On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Duplicating and Joining the Tanks by the Hip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Adding the Pressure Meters and T-Joints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Modeling the Valve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Polygon Reduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Finishing Touches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Tutorial 4: DeformationGrooming Devourus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Devourus Needs Her Grooming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Deforming the Soil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Stylizing the Shape of the Pot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Deforming the Leaf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Grooming the Neck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

Section 4

Animation Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107


Tutorial 5: Low Level Animation, Part 1 Snack! . . . . . . . . . . . . . . . . . . . . . . . . . . . Animating with the Basic Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saving Some Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Marking and Keying the Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Keys in the Keying Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Making Ghost Images to See the Keyframes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adjusting the Keys in the Timeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editing the Function Curves in the Animation (Fcurve) Editor . . . . . . . . . . . . . . . . Editing the Keys in the Dopesheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Compressing the Animation Using Function Curves . . . . . . . . . . . . . . . . . . . . . . . . Tutorial 6: Low Level Animation, Part 2 Auto-feeding!. . . . . . . . . . . . . . . . . . . . . Setting the Fly on a Path to Destruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Constraining the Movements of Devourus Head . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Custom Parameter Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Linking Devourus Movement to the Flys Position . . . . . . . . . . . . . . . . . . . . . . . . . Keying the Jaws Opening and Closing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating an Expression and a Wave to Wiggle Devourus Tongue . . . . . . . . . . . . Reversing the Direction of the Fly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 110 110 111 113 117 118 119 121 124 126 128 129 130 133 135 135 138

10 SOFTIMAGE|XSI

Contents

Section 5

Character Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141


Tutorial 7: Character SetupBecks Skeleton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Skeleton for Dr. Beck Bunsen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating the Legs and Feet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating the Collar Bone, Arms, and Hands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Giving Him Some Backbone ... and a Head . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating and Constraining Control Objects to the Skeleton . . . . . . . . . . . . . . . . . Bringing It All Together under a Parent Null . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Up Vectors for the Legs and Arms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing Out the Rig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Making the Skeleton Easy to Select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tutorial 8: Character SetupBecks Envelope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dr. Beck Bunsen Stretches the Envelope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Group of Deformers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assigning the Envelope to the Skeleton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saving the Characters Default Pose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing the Envelope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Smooth Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Add Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Smooth Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mirroring Weights . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resetting the Reference Pose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding a New Bone to the Envelope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Action Poses to Test and Fix the Envelope. . . . . . . . . . . . . . . . . . . . . . . . . . . Freezing the Envelope Weights . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saving the Envelope Weight Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Limits on the Legs Joint Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tutorial 9: The Walk CycleBeck Takes a Stroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Part I Setting Up the Scene Before Animating . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Synoptic View of Dr. Beck Bunsen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assigning a Transformation Setup to Objects for Easy Keying . . . . . . . . . . . . . . . . Creating Marking Sets for Quick Keying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Part II Making Dr. Bunsen Walk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rotoscoping a Walk Reference Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Keying the Walk Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Animation Editor to Adjust the Motion . . . . . . . . . . . . . . . . . . . . . . . . . Saving Keys on Specific Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 144 144 147 150 152 156 156 157 158 161 163 163 164 164 165 167 168 169 170 173 175 176 177 177 178 179 181 181 183 184 187 187 188 192 194

Tutorials I 11

Contents

Section 6

Advanced Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197


Tutorial 10: Introduction to the Animation MixerBeck is on the Move. . . . . . . . . Storing Transformations in an Action Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Loading the Action Source in the Mixer to Create a Clip . . . . . . . . . . . . . . . . . . . . Manipulating the Action Clip in the Mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Transitions between Action Clips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mixing the Weight of Action Clips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tutorial 11: Advanced Animation MixerBeck All Mixed Up! . . . . . . . . . . . . . . . . . Offsetting a Clips Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Offset Effect Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Permanently Modifying an Action Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cycling an Action Clip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Baking the Clips Changes into a New Action Source . . . . . . . . . . . . . . . . . . . . . . . Setting a Pose Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Bridge Transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Breaking Animation Down into Frequencies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tutorial 12: Shape AnimationBeck is Making Faces . . . . . . . . . . . . . . . . . . . . . . . . Setting Up the Scene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Building Shapes with Construction Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating the Basic Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Clusters for Localized Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modifying the Heads Base Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selecting Shape Keys for Vowels and Consonants . . . . . . . . . . . . . . . . . . . . . . . . . Breaking the Link between the Target Head and its Shape Key Heads . . . . . . . . Breaking Down the Audio Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Animating Dr. Bunsens Face . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Keying the Shapes Weights . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exporting Your Masterpiece in a Flipbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 200 202 204 206 209 214 216 218 220 222 225 227 230 233 235 238 238 239 241 243 245 247 251 255 257 264

Section 7

Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Tutorial 13: ScriptingRepeating Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Command History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Custom Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tutorial 14: Scripts for Automating Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Loading a Fragment of VBScript Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Optimizing the Selected Object for Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . Writing the Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 268 269 271 271 272 272

12 SOFTIMAGE|XSI

Contents

Tutorial 15: Building Custom Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Choosing a Task to Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Designing the Tool. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing the Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Writing the Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Further Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

275 275 276 277 279 288

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

Tutorials I 13

Contents

14 SOFTIMAGE|XSI

Section 1

Getting Started

Tutorials I 15

Section 1 Getting Started

Document Conventions
The following are ways that information is displayed in the SOFTIMAGE|XSI documentation. Typography Conventions
Type style Usage Menu commands, dialog-box and property-editor options, and file and directory names. Definitions and emphasis. Text that you must type exactly as it appears. For example, if you are asked to type mkdir style, you would type these characters and the spacing between words exactly as they are appear in this book. The arrow (>) indicates menu commands (and subcommands) in the order that you choose them: Menu name > Command name. For example, when you see File > Open, it means to open the File menu and then choose the Open command.

Bold
Italics

Courier

>

Visual Identifiers These icons help identify certain types of information: Notes are used for information that is an aside to the text. Notes are reminders or important information. Tips are useful tidbits of information, workarounds, and shortcuts that you might find helpful in a particular situation. The 3D icon indicates information about differences in workflow or concepts between SOFTIMAGE|3D and SOFTIMAGE|XSI. Warnings are used when you can lose or damage information, such as deleting data or not being able to easily undo an action. Warnings always appear before you are about to do such an action!

16 SOFTIMAGE|XSI

Document Conventions

Keyboard and Mouse Conventions SOFTIMAGE|XSI uses a three-button mouse for most operations. These are referred to as the left, middle, and right mouse buttons. In many cases, you will use the different buttons to perform different operations; always use the left mouse button unless otherwise stated. The two-button mouse is not supported in SOFTIMAGE|XSI. If you are using a left-handed mouse or other pointing device, substitute primary button for left button, and so on. This table shows the terms relating to the mouse and keyboard.
When this term is used... Click Middle-click Right-click Double-click Shiftclick, Ctrlclick, Alt+click Drag Alt+key, Ctrl+key, Shift+key ...it means this Quickly press and release the left mouse button. Always use the left mouse button unless otherwise stated. Quickly press and release the middle mouse button (MMB) of a three-button mouse. Quickly press and release the right mouse button (RMB). Quickly click the left mouse button twice. Hold down the Shift, Ctrl, or Alt key as you click a mouse button. Hold down the left mouse button as you move the mouse. Hold down the first key as you press the second key. For example, Press Alt+Enter means to hold down the Alt key as you press the Enter key.

Tutorials I 17

Section 1 Getting Started

Softimage Customer Services


Technical support in North America for SOFTIMAGE|XSI is provided directly from Softimage Customer Service. Immediate assistance for any technical issue is available through hotline, and through electronic and web support services. Softimage resellers working together with Softimage Customer Service provide support worldwide. Licensing Support You can request your new license file through the license request form provided at softimage.com/ licensing or by contacting your reseller directly. Development Support Support for the SOFTIMAGE|XSI SDK is separate from product support for SOFTIMAGE|XSI. The Development support program provides direct contact with our developers through our web-based technical support form. The web also provides answers to frequently asked questions, source code examples and case studies. Late-breaking SDK information, workarounds, tips and techniques can also be found in the knowledge base. Training Support If youre interested in SOFTIMAGE|XSI training, youll find a complete overview of courses, education centers, and training programs at softimage.com/education. Hotline Support If youve purchased a maintenance contract to receive support directly from your Softimage reseller, youll find assistance for contacting your reseller at softimage.com/Corporate/Sales/Buy/ In all other cases, contact Softimage Customer Service at the following numbers and during these hours:
World Wide Tel: 1 (978) 275-2475 Fax: 1 (514) 845-8252 North America Tel: 1 (800) 387 2559 Fax: 1 (514) 845-8252 UK and International Tel: + 44 1 753 658 671 Hours 9 AM to 7 PM (EST) 2 PM to 12 AM (GMT) 1400 to 2400 (UTC) Hours 9 AM to 7 PM (EST) 2 PM to 12 AM (GMT) 1400 to 2400 (UTC) Hours 9 AM to 7 PM (EST) 2 PM to 12 AM (GMT) 1400 to 2400 (UTC)

18 SOFTIMAGE|XSI

Softimage Customer Services

Electronic Support If you have an active maintenance contract and would like to reach us electronically, you will find a Support Request form at http://www.softimage.com/Support/XSI/TechnicalSupport/supportrequestform.asp. For general inquiries about Softimage support services, send an email to support@softimage.com. Web Support The Support and Download sections of softimage.com provide quick access to a wide range of resources from the SOFTIMAGE|XSI teams and user community. Downloadsincluding Presets, Scripts, and Quick Fix Engineering (QFEs)provide the latest solutions for XSI. Online user guides, tutorials, and knowledge-base articles ensure you get the most out of working with XSI. Its like having a dedicated Softimage Customer Service engineer sitting at your desk! Mailing Lists If you have an e-mail account, you can join the worldwide network of SOFTIMAGE|XSI users exchanging ideas. To subscribe to the XSI discussion group, send an e-mail to majordomo@softimage.com with subscribe XSI as the body of your message. Use the message lists for information on related groups. Visit softimage.com/Archives/Help.htm for more information about our discussion groups and mail server. The discussion groups are provided for technical exchanges between customers. Although customer service is not provided through these discussions, we do contribute. Student/Teacher Program Support If youve purchased SOFTIMAGE|XSI through the Student/Teacher program, installation support is offered by Softimage (see the support contact information above). For usage support, you are welcome to join the XSI mailing lists. Softimage Customer Service Addresses
North America UK and International

Softimage Customer Service 3510 Saint-Laurent Boulevard Montreal, Quebec H2X 2V2 Canada

Softimage Customer Service Europe Pinewood Studios Pinewood Road Iver Heath, Buckinghamshire SL0 0NH United Kingdom

Tutorials I 19

Section 1 Getting Started

SOFTIMAGE|XSI Tutorials 1
Whether you are new to SOFTIMAGE|XSI or a seasoned pro, you will always discover more about XSI by working through the Tutorials. Tutorials I is the first guide in a two-volume book set that provides full-color lessons showing you how to perform typical tasks in XSI, step-by-step and in the context of basic productions. The tutorials in this guide cover the basics of modeling and animating, as well as working in the user interface, customizing and building tools in XSI. You can install the scenes from the SOFTIMAGE|XSI v.5.0 Software DVD.

Installing the Tutorial Project


The Tutorials I and II guides use scene content that is available from the Software DVD. Simply copy the entire \tutorials \tutorial_project_5.0 folder from the DVD to a convenient location on your hard disk. The next section shows you how to add the tutorial project to your project list so you can access its scenes.

20 SOFTIMAGE|XSI

Adding the Project to the Project Manager

Adding the Project to the Project Manager


You will add tutorial_project_5.0 to the Project Managers project list so that you can then select its scenes and use them with the tutorials in this workbook. 1. Start SOFTIMAGE|XSI. 2. Choose File > Project Manager from the main menu. The Project Manager opens and gives you access to all projects and scenes. 3. In the Project Manager, click Add Project. 4. Navigate to where you installed the tutorial project, select tutorial_project_5.0, and click Select. tutorial_project_5.0 is added to your list of projects.
Click Add Project to display a browser. From here you can select a project to add to your project list.

Choose a scene from the list. Click Open to display the scene in the viewports.

5. Select a scene from the list of project scenes (on the right side) and click Open. You can also open scenes using File > Open instead of the Project Manager.

Tutorials I 21

Section 1 Getting Started

The XSI Interface


Below is the default layout. As you familiarize yourself with the interface, you can customize it to improve your workflow. For more information about the interface, please see Chapter 2: Interface Commands and Tools in the Interface and Tools guide in the Online Help, accessible at any time by choosing Help > XSI Guides from the main menu.
Viewports let you view the contents in your scene in many different ways. You can resize, hide, and mute viewports in any combination. Press F12 to display the viewport under the pointer at full screen. Press F12 again to revert to a four-viewport display. The main menu bar provides access to all the primary commands.

The toolbar displays one of four toolsets: Model, Animate, Render, or Simulate. Click the toolbar label or press 1, 2, 3, or 4 on the keyboard to switch between toolbars.

The lower interface is where you can create and activate scripts, as well as edit animation and play it back.

The main command panel is the default location of the Layers, Select, Transform, Snap, and Constrain panels.

22 SOFTIMAGE|XSI

Interaction Tools

Interaction Tools
SOFTIMAGE|XSI provides a variety of tools to simplify the process of interacting with a 3D world on your 2D screen.

Switching Between Toolbars


You can switch between the Model, Animate, Render and Simulation toolbars by clicking the top of the toolbar or the top menu and choosing from the menu that opens, or by pressing the 1, 2, 3, or 4 keys, respectively. Use Ctrl+1, Ctrl+2, Ctrl+3, and Ctrl+4 to switch between the default toolbars, the palette toolbar, the weight paint panel, and the hair panel.

Using Shortcut Keys


Many tools can be activated by means of shortcut keys that replace point-and-click menu selection. For example, the z key activates the Pan and Zoom tool. Shortcut keys can be used in supra (temporary) or sticky mode. If you press and release a key quickly, the tool stays activated (sticky). Theres no need to keep the z key pressed while youre zooming in on an object. The mouse pointer changes to tell you which tool youve activated (in the case of the Pan and Zoom tool, it becomes a magnifying-glass icon). If, however, you leave your finger on the key while using the tool, the tool deactivates when you release it (temporary or supra mode). You can cancel a tool at any time by pressing the same key again, pressing another key to activate another tool, or pressing the Esc key. Keyboard shortcut information can be found by choosing File > Keyboard Mapping from the main menu bar. Here are a few of the most common shortcuts youll use: The f key frames the selected object(s) in the current viewport, while Shift+f frames the selected object(s) in all viewports. The a key frames all objects in the current viewport and Shift+a frames all objects in all viewports. Ctrl+z undoes the last change, and Ctrl+y redoes it. To navigate in a scene, move the mouse pointer into any viewport, then do the following: To orbit the scene, press the o key and click and drag the mouse. Note that you can orbit only within the Camera, User, or Spot views. To pan the scene, press the z key and click+drag the mouse. To zoom into the scene, press the z key and middle. To zoom out, right-click. To dolly in the scene, press the p key and click+drag the mouse.

Click the Display Types menu and press the w key (wireframe) or the h key (hidden line) instead of searching through the drop-down menu. Selected object in white. Select icon

Selection text box

Tutorials I 23

Section 1 Getting Started

Selecting Objects in a Scene


As you work, you constantly select and manipulate objects and their components. SOFTIMAGE|XSI provides a number of tools and techniques for selecting objects. Press the spacebar to select objects by dragging a rectangle across them: To select an object, simply click and drag the mouse pointer over it. To deselect all objects, click and drag the pointer on an empty area of the viewport. To toggle an object from an existing selection, press Ctrl (toggle) and select the object. To add an object to the selection, press Shift while clicking the object. You can also use Ctrl+Shift to subtract from a selection.

Selecting Objects in Hierarchies You can select objects in hierarchies in three ways: node, branch, or tree. Node selection: The simplest manner in which an object can be selected. When you node-select an object, it and only it is selected. If you apply a property to a node-selected object, that property is not inherited by its descendants. If you transform a node-selected object, its descendants are not affectedalthough they will update if they have animation on their local transformations, or if ChldComp (Child Transform Compensation) is off on the Constrain panel.
To node-select objects

Left-click on an object. Branch selection: When you branch-select an object, its descendants inherit the selection status and are highlighted in light gray. You would branch-select an object when you want to transform it and its children as a single unit, or when you want to apply a single property that gets inherited by all the objects descendants.
To branch-select objects

Middle-click on an object. Tree selection: This selects the objects topmost ancestor in branch mode. There is no fundamental difference between branch and tree selection; the only difference is which node is the topmost selected one. Tree selection is simply a convenience that lets you select an entire hierarchy by clicking on any of its objects.
To tree-select objects

Right-click on an object.

24 SOFTIMAGE|XSI

Section 2

Basics

Tutorials I 25

Section 2 Basics

Tutorial 1: The Basics of Working in XSICobblestone Alley


Knowing your way around the XSI interface, practicing good housekeeping with your objects, and optimizing your models will save you a lot of time on your 3D productions. To become proficient and efficient in the XSI interface, you will navigate and explore a cobblestone alley where you will light up the area by adding street lamps to the building.

This tutorial shows you how to: Optimize the display of your scene using layers and visibility options. Use selection tools, filters, and the selection text box to select scene elements. Organize your scene elements into manageable hierarchies. Modify the layout and create custom toolbars. Create groups to share properties. Create clones and instances and transform them. Edit properties using random and relative values.

26 SOFTIMAGE|XSI

Tutorial 1: The Basics of Working in XSICobblestone Alley

Duplicating and Transforming Objects


Before working on the actual street scene, you will start with some basic tasks that involve transforming a few simple objects. The term transform includes three different elements: scaling (size), rotation (orientation), and translation (position). You can choose between two main methods to transform objects in XSI: the traditional way uses the mouse buttons to determine which axis to transform an object, and the alternative way is to use 3D manipulators which allow you to interact directly with the transforming object. In this tutorial, you can try out both of these methods to see which one you prefer.
Transform objects in the traditional way

1. Open BAS_e1_Cobblestone_Alley from the Scenes folder of the Tutorial_Project. 2. Rectangle-select the box1 object (the box on the far right of the pile of boxes). For more information on selecting objects and using shortcut keys, see Interaction Tools on page 23. 3. Click the Transform button in the main command area to open its menu. In this menu, make sure that Enable Transform Manipulators is not activated. 4. Press Ctrl+d to duplicate the box. The duplicated box is in the same position and is exactly the same size as the original. Now you will translate it to a new position and scale it so that is looks different from the original box. 5. Activate translation mode on the Transform panel in the main command area: click the t button (translate) or press the v shortcut key. 6. Also on the Transform panel, select the Local manipulation mode. 7. Double-click either the left, middle, or right mouse button to activate the X, Y, or Z axis and translate (drag) the box to a new position on the chosen axis. 8. Activate the scaling mode on the Transform panel: click the s button (scale) or press the x shortcut key. 9. The x, y, and z axis buttons highlight next to the s button, Ctrl+click on the y axis button to deactivate it, and select the Uni (uniform) manipulation mode to scale the box uniformly.

Tutorials I 27

Section 2 Basics

10. Scale the box by dragging the mouse. Notice how the box is scaled equally on both X and Z axes. To rotate, the principle is the same: click the r button on the Transform panel (or press the c shortcut key); choose a reference (local, global, etc.); choose an axis (either by doubleclicking or pressing one of the mouse buttons); and rotate the object by dragging the cursor anywhere in the viewport.
Transform objects using the manipulators

Now try redoing the steps that you just did, but this time use the 3D manipulators. 11. Delete the duplicate box you just created by pressing the Delete key on your keyboard. 12. Press spacebar and then select the box1 object again and duplicate it. 13. Press Enter to display the duplicates property editor, change the duplicates name to mini-box, and close the property editor. 14. Open the Transform menu and activate Enable Transform Manipulators. 15. Activate translation mode again (click the t button on the Transform panel or press the v shortcut key). Make sure that all three axes are selected: if only one axis is selected, you could select all three by clicking on the small striped button under the t button but the easiest way is to double-click on the manipulator where the three axis intersect.
Double-click at the manipulators axis intersection to get all three axis activated.

16. In a viewport, right-click anywhere and choose Local from the pop-up menu. 17. Position the cursor on the Z axis (blue) of the boxs manipulator (the cursor indicates the axis) and move the new box to a new position beside the original box. 18. With the box still selected, click the Parent button in the Constrain panel of the main command area and middle-click box1 (the original box). This makes box1 the parent of mini-box. Rightclick to end the picking session. Now verify the new hierarchy from the explorer.

28 SOFTIMAGE|XSI

Tutorial 1: The Basics of Working in XSICobblestone Alley

19. Press 8 to open a scene explorer floating view. If necessary, set the scope of the first filter button to Scene Root. 20. Set the third filter button type to Objects Only (see image below). 21. Expand the Box1 object by clicking on the plus sign to reveal its child node.
Minimize the window by clicking this minus sign.

Select Objects Only on the Filter menu. Expand the parent object... ...to reveal its children

22. Minimize the explorer by clicking on the minus sign in the upper-right corner of the window. 23. Press the space bar to activate object rectangle selection mode and select the mini-box object. 24. Activate the Scale tool again (click the s button or press the x shortcut key), and make sure that all three axes are selected. If only one axis is selected you can select all three by clicking on the small striped button under the s button. 25. Right-click anywhere in the viewport to open a pop-up menu and deactivate the Uniform option.

Tutorials I 29

Section 2 Basics

26. Place the cursor on the XZ plane of the manipulator (the cursor indicates the axis). Scale the box until it becomes narrow, as in the image below.

The Click Outside Manipulator option in the Transform > Transform Preferences property editor provides four choices for the behavior when you click and drag outside of the manipulator: No Interaction does not perform any transformation or selection. Select Tool allows you to select other elements. Simple Transform performs a transformation using a default manipulation mode (View for translation and rotation, or Uni for scaling). SI3D-style Transform behaves as if Enable Transform Manipulators is off, allowing you to transform in different ways using the mouse buttons and the manipulation mode set on the Transform panel.
Rotate using a reference object

You will now rotate the box hierarchy about the center of a specific reference object.
There are several options available when using the 3D manipulators.

27. Press the space bar to activate object rectangle selection mode, then middle-click box1 to branch-select the parent-child hierarchy. 28. Press the c (rotate) shortcut key to activate rotation mode.

30 SOFTIMAGE|XSI

Tutorial 1: The Basics of Working in XSICobblestone Alley

29. In the main command area, right-click the Ref button and choose Pick Object Reference from the menu. Then pick the box3 object.

The box hierarchy rotates using the reference objects center rather than the parents center.

30. Rotate the boxes counterclockwise about the Y axis by placing the cursor on the manipulators green axis and moving it. Notice that the rotation is in reference to box3s center. Make sure to leave box1 and mini-box in front of the other boxes rather than behind them; otherwise, theyll be obscured when you unhide the rest of the scene.
Translate using a reference plane

You will now move both boxes closer to the existing stack of boxes using a reference plane. 31. With the hierarchy still selected, use the tab key to toggle between transform modes until you get the translation manipulator, then right-click the Plane button in the main command area, and choose XZ from the pop-up menu. 32. Place the cursor on the center of the manipulator so that it indicates xyz and translate the new boxes closer to the stack. Notice that even though you are in a perspective view, the boxes follow the reference plane and their global Y position remains the same. 33. Select the mini-box object and press h to hide it for now.

Tutorials I 31

Section 2 Basics

Layering the Objects in a Scene


Layers provide you with a way of dividing and managing your scenes. The layer control options allow you to toggle Selectability as well as View and Render visibility: Deactivating Selectability is an easy way to keep a layer visible but not selectable. Youll find this especially useful in crowded scenes. Deactivating View and Render visibility can make it easier to work with larger scenes because XSI does not compute hidden geometry.
Make the default street layer visible

34. Press the Key button at the bottom of the main command panel to access the layer panel. 35. Turn on the View visibility option for the Layer_Default layer.
Memo cam buttons

36. In viewport B, click the first memo cam button (orange button) to activate a saved camera position and get an overall view of the street scene.
Create a new layer for Dr. Bunsen

Dr. Beck Bunsen is taking a stroll around the block on a break from his daily experiments. You will put him on his own layer. 37. Click the second memo cam button to frame Dr. Bunsen. 38. Choose Select > Select Single Object in Region from the Select panel in the main command area. 39. In the viewport, tree-select Dr. Bunsen using the right mouse button. When you dont remember what each mouse button does for a certain operation, selection or manipulation, check the mouse/status line at the bottom of the XSI window. 40. At the bottom of the main control panel on the right side of the interface, click on the Key button to access the layers panel. 41. In the Layers panel click on Layers button > New layer. The currently selected objects are put into a new layer.

32 SOFTIMAGE|XSI

Tutorial 1: The Basics of Working in XSICobblestone Alley

42. Enter Beck as the layer name. 43. Toggle the View Visibility and Render Visibility of that layer. 44. Left-click on the Layer_Default leftmost box within the layers panel to set it as current layer. All new objects are created in the current layer. If you do not do set the current layer back to Layer_Default, all new scene objects automatically appear in the Beck layer and will not be visible in the viewport (that layers view and render visibility have been turned off).

Toggling Visibility for Elements in Your Scene


Another way of temporarily filtering out scene elements when you are not currently working on them is to turn off their visibility options. Temporarily hiding them is easier and quicker than building and hiding layers. The spotlight associated to the street lamp is currently not visible. You must toggle on its visibility using the visibility options menu (click the eye icon) on the viewports menu bar. By Shift-clicking the eye icon, you can toggle the visibility of more than one option at a time. 45. Click the first memocam button to reset the camera back to the view of the whole alley. 46. Shift-click the eye icon and activate Lights and Nulls. You want lights and nulls to be visible because you will parent a light in the next section. You will also use one of the nulls in the scene as a positional reference later on in this tutorial.

Parenting Objects Using the Explorer


The explorer displays the contents of your scene in a hierarchical structure, displaying all objects in the scene as well as their properties. Organizing your scenes hierarchy using the explorer is as easy as dragging and dropping one node onto another. You will now make the spotlight a child of the street lamp.
Although the spotlight is physically inside the street lamp, it is not yet part of the street lamp hierarchy because it has not been parented to it.

47. Press Ctrl+Tab to restore the floating explorer that you minimized earlier. 48. Set the third filter button type to All Except Params.

Tutorials I 33

Section 2 Basics

49. In the explorer, drag and drop the Street_lamp_spot onto the Street_lamp object. This moves Street_lamp_spots entire hierarchy under Street_lamp. 50. Expand the Street_lamp object by clicking on its + sign. Notice that Street_lamp_spot (and its hierarchy) is now the child of Street_lamp.
...Street_lamp_spots entire hierarchy is moved under Street_lamp.

When you drag and drop the Street_lamp_spot onto the Street_lamp object...

Creating a Custom Toolbar


Animators may need to use a number of tools more frequently depending on what they are working on. You can customize the interface for easier access to those tools. You will customize the XSI interface to improve the workflow of your next task, which is to make copies of the street lamp and position them on the second building. 51. From the main menu bar, choose View > New Custom Toolbar. A blank toolbar opens. 52. Right-click in the new toolbar and choose Rename from the menu. Name the toolbar Replicate.

34 SOFTIMAGE|XSI

Tutorial 1: The Basics of Working in XSICobblestone Alley

53. Right-click in the new toolbar again and choose Customize Toolbar...from the menu. 54. From the Customize Toolbar dialog box that appears, drag and drop the following commands onto your Replicate toolbar: - Match Global Translation - Menu Button. Enter Replicate Options when prompted to name the menu button. 55. Now drag and drop the following commands to your Replicate Options menu button: - Duplicate Single - Clone Single - Instantiate multiple Close the Customize Toolbar dialog box when youre done. 56. Close the Replicate toolbar. When prompted to save the toolbar, click Yes. Specify a file name and path in the browser that opens, then click OK.

Commands that you drag onto the Replicate toolbar become buttons. You can also drag commands onto special menu buttons. Those commands become items in the menu that opens when you click the button.

57. Open the Palettes panel by clicking the palette icon below the toolbar on the left side of the interface. Notice the space available under the Display Types area. In the next steps you will edit the layout to put the Replicate toolbar into this space.

Tutorials I 35

Section 2 Basics

Before

After

58. In the main menu bar, choose View> Layouts > Edit Current Layout. You cannot modify XSIs original layouts so XSI will create a new layout that is a copy of the current layout. 59. When prompted, enter a name for the new layout and click OK. The new layout opens in edit mode. If necessary, click the palette icon a second time to ensure that any changes you make in the toolbar/palette area are made to the Palette panel. 60. Right-click in the blank section of the Palette toolbar and choose Split Horizontally from the menu, then click in the middle to split the pane in two. 61. Right-click the new pane (below the split) and choose Set Toolbar/Shelf > Replicate [user] from the menu. The Shelf (Replicate) that you are looking for might not be in the list yet. If this is the case you might have to close XSI and restart it for the shelf to be present. If it is the case and you need to do so, please dont forget to save your scene so you can keep on working afterward. 62. Go back to the main menu bar and choose View > Layouts > Exit Layout Editing. 63. When prompted, save your changes to the layout. Switch to your new layout via the XSI menu bar > View > Layouts > name of your new layout. You will see the Replicate toolbar is now bedded into the Palette panel.

36 SOFTIMAGE|XSI

Tutorial 1: The Basics of Working in XSICobblestone Alley

Duplicating and Cloning the Street Lamp


Duplicating an object creates an exact copy, distinct and independent, with no link to its source. Cloning, on the other hand, creates an exact copy that remains linked and dependant on its sources geometry. If the sources geometry changes, these changes also apply to the clone in addition to the clones own local topology change(s).
Duplicate the street lamp and adjust the position of the new lamp

64. Move your cursor over the B viewport and press F12 to maximize the window. Set the display to Wireframe. 65. Branch-select the lamp by entering b:street_lamp in the Selection text box in the Select panel and pressing Enter. 66. In the Palette toolbar, under your customized Replicate toolbar, choose Replicate Options > Duplicate Single. The newly-created street lamp is automatically selected. You must now position it on the green reference null which lies on the surface of the second house. 67. From your Replicate toolbar, choose Match Global and pick the reference null. This moves the new street lamp to the position of the reference null.

If you have difficulty locating the reference null in the street scene, enter ref_* in the Selection text box. This selects and highlights the null in the viewport.
Adjust the street lamps rotation and clone it

68. With the second street lamp still selected, choose Transform > Match Rotation in the main control panel and pick the reference null again.

Tutorials I 37

Section 2 Basics

69. Switch viewport B to the User view from the Views menu and press the f key to frame the second street lamp. You will now clone the second lamp. 70. With the second street lamp still selected, using your Replicate toolbar (on the Palette toolbar), choose Replicate Options > Clone Single. 71. Translate the cloned street lamp using a reference component You will translate the cloned lamp to the other side of the door using the second houses side edge as a reference to make sure the lamp follows perfectly along the wall. 72. With the lamp still selected, click the t (translate) button and right-click Ref > Pick Edge Reference.

First, select the second building.

73. Pick any edge of the second building, and the edges of this object turn yellow. Then pick the leftmost edge of the wall (as shown on the left), and the edge you pick flashes red. 74. Translate the lamp in Z so that it appears on the other side of the door.

Then select the edge of the second building as a reference for translating the cloned lamp.

38 SOFTIMAGE|XSI

Tutorial 1: The Basics of Working in XSICobblestone Alley

Isolating and Modifying a Single Scene Element


You will use a combined explorer and object view to temporarily isolate and work on a single scene element without creating a layer. This is a very efficient way of working because it isolates and automatically frames the object. 75. Choose XSI Explorer from the Views menu of viewport B. 76. From the Viewer menu on the left of the XSI Explorer view, choose Object View.
First set Viewport B to XSI Explorer.

Then set the Viewer to Object View.

Click the z button

77. In the explorer pane, expand the Street_Lamp1 node by clicking on the + sign. Branch-select the Lamp_bar1 sub-node. The lamp appears in the Object View.
Lock

78. At the top of the Object View, click the z button to view the lamp from the side and click the lock icon. 79. Press t (tag mode) and rectangle-select some points near the base of the lamp (as shown on the left). You now need to scale the points uniformly in all axes, using their local center as a reference. 80. Activate the scale tool (press the x shortcut key). Right-click anywhere in the viewport and activate Uniform and Local in the pop-up menu.

Tutorials I 39

Section 2 Basics

81. Drag the mouse on any axis of the manipulator to scale the points. 82. In the explorer pane of the XSI Explorer, expand the Street_lamp2 node. 83. Branch-select the lamp_bar2 sub-node, and click on the Update button so that the cloned lamp appears in the Object Viewer. Notice how the cloned lamp has inherited its source objects modifications. 84. Go into tag mode again (t) and modify the geometry of the cloned lamp by moving some points to another part of the mesh (m shortcut key). Although a cloned object will inherit geometry modifications from its source object, you can also modify it independently.

Update

Transforming Using the Manipulation Pivot


XSI lets you transform objects or components according to different references such as the global or or local center, center of gravity, a parent, a reference plane, or reference object/component. You can also set a location anywhere you want in 3D space to be used as a pivot point for any type of transformation. 85. Select one of the lamps curve-shaped supports. 86. Orbit (press o) in the object viewer until you get a side view of the object. 87. Activate the rotate tool (c shortcut key). You would like to pivot this object at its base, but the objects center is much lower. You will use the pivot tool to move the pivot point to where you want. 88. Press Alt so that a pivot point appears. 89. While keeping the Alt key pressed down (Alt-Shift on Linux), left-click to drag the pivot point along the object until it is at the base of the support. When pressing the Alt key, you can middle-click instead of left-click to position the pivot point anywhere you want in the scene (that is, without snapping to the nearest component). 90. Release the Alt key and rotate the object a bit to see it pivot around the point you specified.

40 SOFTIMAGE|XSI

Tutorial 1: The Basics of Working in XSICobblestone Alley

Working with Cardboard Instances (Boxes)


Instances do not weigh as much as clones because they do not exist as independent objects. Therefore, you cannot modify their geometry independently: they will always be an exact replica of their source. You can, however, translate, rotate, and scale them. The major advantage of using instances is that you can populate your scene with as many of them as you want without increasing the scenes size as much. For example, if you had a warehouse full of hundreds of cardboard boxes, you could create a couple of boxes and then create hundreds of lightweight instances. As far as the scene is concerned, you only have a couple of real box objects. In the next set of steps, you will group the boxes together, assign them a color, exclude these boxes from receiving light (cast by the nearby street lamp), instantiate the boxes, and then randomize their scaling.
Save a camera position

If you are going to need to repeatedly focus your camera on a particular group of objects or a specific area of your scene, it is a good idea to save a memocam for your camera. Then if you move the camera and want to focus it again on the area in question, you can recall your preset camera angle quickly and easily. 91. Set viewport B to the Camera view (Cameras > Camera on the Views menu at the left of the viewports title bar). 92. Press the space bar to switch to object rectangle selection mode. 93. Enter box* in the current selection text box (in the main command area) and press Enter to select all the boxes in the scene. 94. Press f to frame the selection in viewport B. You may want to switch the viewports display mode to hidden line removal for more clarity. 95. Press the s key (multi-purpose navigation tool) and use the mouse buttons to pan (left), dolly (middle), and orbit (right) the viewpoint around the boxes. 96. Once you are happy with the camera view, middle-click in the next empty memocam button area to save that camera position. Left-click this memocam button when you want to recall this camera angle.

Tutorials I 41

Section 2 Basics

Assign a color property to a group

97. With the boxes still selected, click the Group button in the main command area. 98. Name the group Boxes, and close the property editor. 99. Set the viewports display mode to Shaded. The shaded mode allows you to see your scene objects material properties, including color diffusion and ambience. 100.If the palette panel is still displayed, click the toolbar icon in the lower-left corner of the XSI window or press Ctrl+1 to access the default toolbars. 101.Press 3 to open the Render toolbar. 102.With the Boxes group still selected, choose Get > Material > Lambert from the Render toolbar. 103.In the Lambert property editor, click the Illumination tab and adjust the Diffuse and Ambient color of the boxes to your liking. This color property is applied to the group. Grouping objects is a way to assign common properties to objects which are not necessarily part of the same hierarchy.
Instantiate the boxes

Creating an instance of an object means that you can create a replica of it that does not weigh much in the scene (no triangles). The geometry of an instance cannot be changed and it will always mimic the sources geometry, but you can modify the transformation of an instantiated object. 104.Press Shift + S, under the Stats page, toggle Show scene info to see how much the whole scene weighs. You will compare this value with the one you get after instantiating the boxes, toggle it off for now. 105.Press 1 to open the Model toolbar and set the viewport display to Hidden Line Removal. 106.Make sure the current layer is Layer_Default. 107.Rectangle-select the box1 object. 108.To instance this box, you need to make it a model. From the Model toolbar, choose Create > Model > New Model and name the model box_to_instantiate. 109.From your Replicate toolbar on the Palette panel (press Ctrl+4 to display it), choose Replicate Options > Instantiate Multiple. 110.In the Instantiate Multiple page, enter 3 in the Instances text box. On the Duplicate Options page, click the Transform tab enter 2.2 in the Translation X field, then click OK.

42 SOFTIMAGE|XSI

Tutorial 1: The Basics of Working in XSICobblestone Alley

Randomize the size of the boxes

111.Click the toolbar icon (or press Ctrl+1) to go back to the XSI default toolbars and press 2 to open the Animate toolbar. 112.With the three instances selected, click the s (Scale) button on the Transform panel of the main command area. This automatically selects the X, Y, and Z scale axes. 113.Set viewport B to Object Viewer and lock it. 114.From the Animate toolbar, choose Create > Parameter > Randomize Marked Parameters > 10% Relative.

Original boxes

Boxes after the randomized scaling

115.Move the boxes so they dont overlap. 116.Select one of the instantiated boxes. 117.On the Transform panel, enter r(0.7,1.0) in the Scale Y axis text box and press Enter. XSI scales the Y axis of the box to a value between 70% - 100% of its original size. In the same scale Y axis text box, enter 0.5+ and press Enter to increase the Y scale of the box by 0.5. You can enter any mathematical operation in text boxes. 118.Scatter the three boxes along the sidewalk. 119.Select the box_to_instantiate object (source object for the instances) and press Shift+Enter (Info Selection) to see how much it weighs (take note of the triangles value). If you do the same for one of the instance boxes, you will see that there is no triangle information since instances have no geometry. 120.Press Shift + S, under the Stats page, toggle Show scene info to see how much the whole scene weighs. Notice that the scene has no more triangles than it did before creating the instances.

Tutorials I 43

Section 2 Basics

Conclusion By manipulating the objects in the scene, you have familiarized yourself with the tools that will serve as the basis for all of your work in XSI. You have used transformation and selection tools to manipulate scene elements in a variety of ways and used layers, groups, and hierarchies to organize these elements and share properties among them. You have also used viewports, visibility options, and the render region to control the many ways you can view your scene. For more information, see the following chapters: Chapter 2: InterfaceCommands and Tools in the Interface and Tools guide. Chapter 4: Viewing 3D Objects in the Interface and Tools guide. Chapter 2: Selecting in the Scene Elements guide. Chapter 2: Transformations in the Transformations guide.

44 SOFTIMAGE|XSI

Tutorial 2: Editing Properties

Tutorial 2: Editing Properties


In SOFTIMAGE|XSI, its all about properties. Every object in your scene is distinguished by its own set of properties, which are in turn defined by a series of parameter values. When you edit and manipulate the objects in your scene, you will almost always use property editors to define these values. Using a simple primitive, this tutorial will teach you the basics of editing an objects properties. This tutorial shows you how to: Edit the primary properties of an object from its property editor. View the objects properties from a pop-up explorer. Apply Move and Add Point operators to an object in a viewport. Edit an objects operator stack.

Tutorials I 45

Section 2 Basics

Editing from a Property Editor


1. Start this tutorial with a new scene. Press Ctrl+n or choose File > New Scene from the menu bar at the top of the main window. 2. From the Model toolbar, choose Get > Primitive > Curve > Arc. An arc appears and its property editor opens. From the property editor, you can edit the primary properties of the arc. If you have an object that already exists and you want to edit its properties, you would select the object and press Enter to open its property editor. 3. Modify the arcs Start Angle and End Angle parameters by dragging their sliders.

Press f to frame the selection in the viewport. Press s in camera view to track (left mouse button), dolly (middle mouse button), and orbit (right mouse button).

Edit the parameters and get immediate visual feedback in the viewports.

You can close a property editor by clicking on the in its upper-right corner or by pressing Ctrl+` (single left quotation mark above the Tab key on most keyboards).

46 SOFTIMAGE|XSI

Tutorial 2: Editing Properties

Editing Multiple Objects


You can also edit multiple objects at once using property editors, which is especially useful for duplicated objects. 4. With the arc selected, press the d key and click anywhere beside the arc to create a duplicate. Exit the duplicate mode by pressing Esc or right-clicking. The center of the duplicated arc is positioned where you click, and the arc itself is positioned in relation to its center. To see the relationship between the selected arc and its center, activate Centers in the visibility menu (click the eye icon) in a viewport. 5. Select the duplicated arc and modify its End Angle to make it different from the original arc. - If the property editor is open, it automatically updates to display this objects properties. - If the property editor is not open, press Enter to open it. 6. Add the unselected curve to the selection by pressing Shift while selecting it. Notice that the property editor automatically updates to display the latest values. Also notice that the End Angle text box is blank, which means that the current End Angle setting for the two selected objects is not the same. This is because the property editor can only display shared values of a multiple selection. 7. Enter a value of 180 for the End Angle and see that both arcs have been edited. The End Angle is now visible and common to both objects. 8. Ctrl+click one of the arcs to toggle its selection (deselect it). You should now have only one selected arc and the property editor has been updated.
Lock icon

9. Lock the property editor by clicking the lock icon in the upper-right corner. 10. Deselect the remaining arc and reselect the other one. The arc which is defined by the open property editor now turns blue, indicating that it has an open property editor on screen although it is not actually selected. Press Enter and a second property editor appears for the newly selected arc. The second property editor may appear directly on top of the existing property editor. 11. Using the second property editor, you can modify the properties of the second arc independently of the first arc (whose property editor is now locked).

Tutorials I 47

Section 2 Basics

Viewing an Objects Property Nodes


All the properties belonging to an object are nested under it in the explorer for easy and quick access. You can access and change any of these properties from there by clicking the operator or property icons. 12. To view the objects properties, select one of the arcs and click the Selection button in the Select panel on the main command area. A pop-up explorer appears. You can also open a pop-up explorer listing an objects properties by pressing F3 while the object is selected.

Click the Selection button to display a popup explorer that lists all the properties of your selected object.

Default property nodes of a primitive object

Operator Icon Property Icon

Properties that are shared between objects are italicized.

Editing an Objects Operator Stack


The operator stack is fundamental to modeling in SOFTIMAGE|XSI. It displays the history of all the operators (such as MoveComponent) that you have applied to an object. You can use the history to modify and delete the operators for that object. There are four regions within the operating stack: Animation, Shape Modeling,Secondary Shape Modeling and Modeling. When an operator is added to the stack, it is added to the stack corresponding to the Construction Mode you are working in. You can select the Construction Mode at the top of the XSI toolbar. You can also control what level of the operator stack is being used to display your object in a viewport using the Construction Mode Display options in the viewports Display menu. The current setting is shown in the lower-left corner of the viewport. 13. For this exercise, make sure the Construction Mode is set to Modeling and the Construction Mode Display is set to Result.

48 SOFTIMAGE|XSI

Tutorial 2: Editing Properties

14. Press and release the m key, then drag to move some points on the arc in the Camera view. Pressing and immediately releasing the key activates the Tweak Curve tool in sticky mode so that you dont need to hold down the key while you drag each point.

In this exercise, move the points of the arc (blue points), not the knots on the curve i.e. the rusty colored points nor the white handles. You might want to zoom in on the curve to facilitate the manipulation of the points.

15. Press Space bar to go in object selection mode, click the Selection button again to display the arcs properties. Now the arc object has a construction history: the four stack markers appear under the arc objects primitive nodeSecondary Shape Modeling,Animation, Shape Modeling and Modeling. A Constrain Virtual Component folder now appears under the Modeling marker. The operator stack always appears under the first subnode of an object in the explorer (in this case, the subnode named NURBS Curve List). A new operator will be created within the current Construction Mode. 16. Expand the Constrain Virtual Component (by clicking the + sign) to show the two operator nodes. 17. Select one of the Constrain Virtual Component nodes and press the Delete key. You will see that you have removed the corresponding move point operation from the arc curve. 18. Return to the arc and move a few more points. 19. From the Model toolbar, choose Modify > Curve > Add Point Tool by CVs to activate the Add Point tool. Position the cursor between two points on the arc and middle-click to add a point. 20. Press and hold the m key and move a few points. When you release the key, you will switch back to the previously active Add Point tool. Pressing and holding the key activates the Tweak Curve tool in supra (or temporary) mode. This lets you temporarily use another tool without deactivating your current tool. 21. Click the Selection button to view the curves construction history in the pop-up explorer. The arc objects construction history now consists of ConstrainVirtual Component operator and Add Point. If more then one operator was done of each, they are then regrouped in folders.

If you add more then one points to the curve, a folder will appear to contain all of them

Tutorials I 49

Section 2 Basics

Freezing the Operator Stack


When you are satisfied with an object, you can freeze its operator stack. This removes its construction history, which means that you can no longer go back and change values. However, the object requires less memory and is quicker to update. 22. Select the arc: press the space bar (if the Add Point tool is still active) to activate the Selection tool, then click and drag to select the arc. 23. Click the Freeze button on the Edit panel in the main command panel. 24. Click the Selection button again to display the pop-up explorer. Take note that the folders and operators are no longer under the arcs NURBS Curve List. Freezing Downwards from an Operator You can also freeze in a downwards direction from a specific operator in the explorer. This can be useful if you want to continue to modify a specific operator while freezing the others. 25. To do this, open an explorer window by pressing 8 or by choosing Explorer from the Views menu of a viewport. 26. Right-click on the operator and choose Freeze. That operator and all the operators below it disappear, the ones above remain. You can also freeze downwards from a region marker in the operator stack. Select the Modeling, Shape Animation, Animation and Secondary Shape modeling marker within the operating stack and freeze downwards from there. Conclusion By editing this simple object, you have been introduced to a few basic but important concepts in XSInearly everything in XSI is an object defined by properties that you can edit (and animate) from a property editor or by directly manipulating the object within the 3D views. As you edit an object, XSI records your modifications in the operator stack. You can return and edit or delete these operators as needed. The operators can be reorganized within the stack and moved between the four regions of the operator stack which allows you to change the order in which the operators are applied to the object. When you are satisfied with your edits, you can freeze all or part of the operator stack, reducing the storage size of the object and finalizing its state. For more information, see the Scene Elements guide.

50 SOFTIMAGE|XSI

Section 3

Modeling & Deformations

Tutorials I 51

Section 3 Modeling & Deformations

Tutorial 3: Polygonal ModelingBeckMobile


Youve just been contracted by the environmentally friendly Dr. Bunsen to retrofit a cleaner secondary propulsion system to his vehicle. In this tutorial, you will familiarize yourself with the polygon modeling tools available in XSI.

This tutorial shows you how to: Create basic polygon meshes by rotating and extruding curves. Select components and loops of components on polygon meshes. Modify polygon meshes by duplicating, extruding, and transforming selected polygons. Further modify polygon meshes by splitting, subdividing, bridging, and slicing components. Draw individual polygons directly. Create symmetrical objects by mirroring one half. Smooth polygon meshes by applying subdivisions, and keep specific edges sharp by marking them as hard. Convert curves to polygon meshes. Combine shapes with Boolean operations. Lighten heavy geometry using polygon reduction.

52 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

Overview
1 Create the tank. 2 Bolt down the parts.

Add the air vents.

Add the supporting legs.

Add miscellaneous pieces.

Tutorials I 53

Section 3 Modeling & Deformations

This tutorial assumes that you are using the SOFTIMAGE|XSI selection model and the transformation manipulators. From the Select menu in the main command panel, make sure that both SOFTIMAGE|3D Selection Model and Extended Component Selection are off. From the Transform menu of the main command area, make sure that the Enable Transform Manipulators option is checked. Since this is a long tutorial, it has been split into many parts and intermediate scenes have been created.

Taking a Look at the Reference Image


1. Open MOD_e1_Beck_Mobile from the Scenes folder of the Tutorial_Project. Notice that a rotoscoped image was loaded as a reference image.

The rotoscoped image was locked in place with the correct proportion relative to the existing truck.

Rotoscope lock icon

Rotoscopy will be covered in more depth in a later tutorial.

54 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

Preparing the Interface


To get started, you need to make sure that the interface is set up properly to ensure a good workflow and easy access to your modeling tools.
Toolbar panel

2. Make sure the Model toolbar is displayed on the left of the main window. If the Model toolbar isnt displayed, follow these steps to display it: - First check the display switcher at the bottom left and make sure the toolbar panel is selected (see image on the left). If it isnt selected, switch to it by clicking its icon.

Model toolbar

- If necessary, switch from another toolbar to the Model toolbar by pressing 1 (at the top of the keyboard, not on the numeric keypad) or clicking on the toolbars title in the XSI main toolbar and choosing Model. 3. Make sure the construction mode, located also in the main toolbar is set to Modeling.. This ensures that each operation you will perform on any object will create an operator in the modeling region of the objects operator stack.

Construction mode

4. Access the layer control by clicking on the Key button in the lower right part of XSI. In the layer control turn off the View visibility for the BeckMobile layer. (the layer control area is situated at the bottom of the keying panel).

Tutorials I 55

Section 3 Modeling & Deformations

Creating the Tank


You will first model a tank following the proportions shown on the Rotoscope image. 5. Maximize the C viewport by clicking on its Resize icon (or press F12 while the pointer is over that viewport).
Resize icon

6. Zoom in (z) to center the rotoscoped image. 7. From the Model toolbar, choose Get > Primitive > Curve > Arc. 8. Rotate the arc 90 degrees on its local Y axis, then position it and scale it to fit the upper dome of the tank. Using the shift key in conjunction with rotating the manipulator will use fixed increments and make it easier to set the rotation value to 90 degrees.

Rotate the arc, position it and scale it to fit the upper dome of the tank.

9. With the arc still selected, choose Create > Poly. Mesh > Revolution Around Axis. 10. In the Revolution property editor, make the following changes: - In the Revolution Axis section, check the Local Axis box. - In the Subdivision section, change the Subdivision Type to Absolute. - Enter a value of 20 for U and 7 for V. 11. When you have made these changes, click the Delete (Freeze Op) button in the Inputs section at the top of the Revolution property editor. This will freeze the relationship between the new object and the generator and then delete the generator (the arc was the generator).

56 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

12. Press F12 to restore viewport C to its original size. 13. Middle-click the Resize icon of viewport C to resize the window horizontally and reveal viewport D. 14. In the D viewport, select the dome-like object and press f to frame it. 15. Click the Show menu (eye icon) and check Polygon Normals to view them.
visibility icon

Tutorials I 57

Section 3 Modeling & Deformations

The normal on each polygon of the object indicates the orientation of the surface and how light will bounce off of it. As you can see, the normals point inside the dome which makes the object look dark when you switch the viewport to Shade view. It was created this way because the direction of the original arc was in a clockwise direction, instead of counterclockwise.
Shade view

16. To fix the normals, select the object and choose Modify >Poly. Mesh > Invert Polygons. Prior to using the Delete (Freeze Op) option in the Inputs section of the Revolution property page, you could have inverted the curve to change its direction which would have the effect of inverting the normal orientation of the object. 17. To hide the normals again, middle-click the eye icon. Middle-clicking repeats the last command which, in this case, was to toggle Polygon Normals. 18. Maximize viewport C again. 19. Revert back to the Main Control Panel by clickin the MCP button. 20. Click the eye icon and make sure that PolyMesh Boundaries and Hard Edges is on. 21. On the Select panel, open the Filter list (click the tiny triangle) and choose Border Edge. 22. Rectangle-select the whole object. Only the border edges will be selected. 23. Choose Modify > Poly. Mesh > Extrude Along Axis (Ctrl+Shift+d). Enter a Length value of -3.1 and a Subdivs of 1. Close the property editor.

58 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

In the next set of steps, you will create an upper and lower section on the tank to give the impression that it is comprised of three parts that have been bolted together. 24. Choose Modify > Poly. Mesh >Split Edge Tool or use the ] shortcut key.

Tutorials I 59

Section 3 Modeling & Deformations

25. With the Split Edge tool activated, middle-click where you want to add a row of edges, using the rotoscoped image as a reference (as shown below left). The edges are added when you release the mouse button.

Use the Split Edge tool to add two rows of edges matching the image.

26. Repeat to add a second row of edges, as shown above right. 27. Press y and rectangle-select the new polygons you have just created as shown on the left. 28. In the same viewport, choose the User view and select the Shaded display. You might have to press f to frame the object in the viewport.

29. Duplicate the polygons by pressing Ctrl+d or choosing Edit > Duplicate/Instantiate > Duplicate Single from the Edit panel on the right. 30. Press x to activate the Scale tool.

60 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

31. Right-click on the object and activate Local manipulation.

Check the Local option

Place the cursor on the XZ plane of the manipulator.

32. Place the pointer on the XZ plane of the manipulator. You might have to orbit around a bit to avoid getting the other planes instead (i.e., XY or YZ). 33. Click and drag to scale the polygons in the XZ plane until you get an outer ring similar to the images above. There are other ways of choosing the desired transformation axes besides placing the pointer on a specific plane. For example, you could do this by clicking on the X and Z buttons on the Transform panel (using the control key); or you could Shift+double-click on the Y axis handle of the manipulator to deactivate it; or you could use the SI3D-style Transform and drag the mouse with the right and left mouse buttons pressed down. To set this last option, choose Transform > Transform Preferences and set Click Outside Manipulator to SI3D-style Transform under Tools Options. You are going to create the bottom of the tank by mirroring the top, but first you will move the objects center to define the plane of symmetry. 34. Press t (this is equivalent to clicking Point on the Select panel) and select the bottom row of points. 35. Choose Transform > Move Center to Vertices. The object center will move to the middle of the selected points (youll be able to see the center by activating it in the visibility options and by changing the viewport display to wireframe). 36. Press the spacebar to return to Object mode.
Tutorials I 61

Section 3 Modeling & Deformations

37. With the object still selected, choose Modify > Poly. Mesh > Symmetrize Polygons. On this property page, make the following changes: - Set Reference to Local. - Set the Plane Normal axis to Y. - Adjust the Offset value to match the length of the tank to the rotoscoped image. - Adjust the Distance value of the Weld Options to close the gap between the two parts. When the gap is closed and the neighboring points are welded, the blue boundary edges will disappear.

38. Press Enter to open the selected objects property page and name the object Tank.

62 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

Bolting Down the Tank Parts


At this point, if you wish, you can load the MOD_e1_BeckMobile_Tank_done scene from the Scenes folder of the Tutorial_Project which contains the completed tank object. You can use it as a starting scene for this next section. Now you need to model the bolts and place them on the rings of the tank.
Build the first bolt

39. From the Select menu in the main command panel, make sure that the Extended Component Selection is off. 40. Set viewport C to the Front view and press r to reset the view to the origin. Make sure the grid is displayed (press g if necessary). 41. Activate snapping to the grid (as shown on the left). 42. With no object selected, choose Modify > Poly. Mesh > Add/Edit Polygon Tool (or press n). 43. Create an octagonal shape by clicking on grid points in a counterclockwise direction. You should have a result similar as the image on the left. The guide arrows indicate how the polygon will be extended when you click. To avoid drawing a self-intersecting polygon (as shown by the guide arrows in the image below left), simply move the pointer across the edge you want to extend (below right). The Add/Edit Polygon tool always extends the last edge that the pointer crossed.

Incorrect, if you move the pointer like this you would create a self-intersecting polygon.

Move the pointer across the edge you want to extend

44. When you have finished, press Esc to exit the Add/Edge Polygon tool.

Tutorials I 63

Section 3 Modeling & Deformations

45. Deactivate snapping. 46. With the newly created polygon still selected, right-click on it and choose Extrude Along Axis. 47. In the property editor, set the Inset Amount to 0.2. Close the property editor. 48. Return to User view (middle-click the View menu). Frame the bolt object and orbit around it. One end of the bolt object is closed, the other end is still open. We must now close it. 49. Press n to reactivate the Add/Edit Polygon tool. 50. Add a polygon at the back of the object by clicking on the boundary edge at the top and then clicking on the boundary edge at the bottom. 51. Close up the face by clicking on the left and then the right edge. Press Esc to exit the Add/Edit Polygon tool.

Here is an alternative way of closing a hole: Using the Border Edge filter, select the boundary edges of the hole. Duplicate the edges (Ctrl+d). Right-click on the object and select Collapse Components.

64 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

Duplicate the original bolt to create many bolts

You will now duplicate the bolt object along a circle. 52. Return to the front view. 53. Get a primitive curve circle. 54. Increase the circle radius to make the circle big enough to fit 19 bolts. You may want to lock the circle property editor open so that you can adjust the size after you have duplicated the bolts. 55. Select the bolt. 56. Choose Modify > Poly. Mesh > Duplicate Polygons Along Curve. The duplicated bolts are offset from the center of the circle. This is normal. Think of the curve as a profile curve rather than a generator. Whether you duplicate polygons or objects, the duplication occurs at the elements current location and does not snap to the profile curve. 57. In the property editor, enter a value of 19 for Subdivs. Leave the other options at their default settings. 58. Notice that the last duplication sits on top of the original object. In the next few steps, you will use the Polygon Island filter to select and delete these unwanted polygons.
Delete the unwanted polygons

59. Using the polygon raycast selection tool (u key), click a polygon where there is no overlap. The entire set of connected polygons is selected. Press Delete to remove these selected polygons 60. Choose Polygon Island from the Filter list on the Select panel (see image below).

Click on the triangle to access the filters.

Use the raycast selection tool to select where there is no overlap and delete the unwanted polygons.

Tutorials I 65

Section 3 Modeling & Deformations

Adjust the center of the bolts object and freeze its modeling operators

61. Press the spacebar to activate Object mode and select the bolts object. Frame the object in the Front view. 62. Click the Show menu (eye icon) and check Center to see that the center of this object is not in the middle of the geometry. When an object is created, by default its center is located at the center of the 3D world (the origin) and not in the middle of the actual geometry. 63. Choose Transform > Move Center to Vertices to relocate the center to the middle of the geometry. 64. On the Edit panel, click Freeze M to freeze the modeling. This removes the operators that were in the modeling region of the objects operator stack. You can no longer re-open those property editors to change values, but the object will be lighter in memory and faster to update. 65. Rotate, scale, and translate the bolts object so it fits nicely on the upper ring of the tank to give the impression that the dome and cylinder parts are bolted together.

66. If the bolts are to big and dont fit on the ring, select all the vertices and scale them in Local mode with Uni on. Make sure that Transform > Transform Components Independently in Local Mode is NOT active. 67. If desired, you can delete the profile circle now that you have frozen the bolts. 68. Duplicate the bolts and put the second set on the bottom ring of the tank.

66 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

Adding the Air Vents


The tank needs an air vent to blow off the extra steam. 69. Select the tank object, then select some polygons, as shown below, with the polygon raycast selection tool (u key).

70. Right-click on the object to open the context menu and choose Subdivide Polygons. Leave the Subdivide Polygon property editor with the default settings. 71. To make the air vent, select four columns of polygons among the subdivided polygons (you can refer to the rotoscoped image to see what the air vent looks like). 72. Duplicate the polygons and translate them along their Y axis in Local mode to create indentations.

73. Delete the selected polygons to create the vent openings.

Tutorials I 67

Section 3 Modeling & Deformations

Marking Hard Edges


Since you will eventually subdivide the tank, you need to specify the areas that you dont want to be smoothed by the subdivision. In this case, these areas are on the outer rings and the air vents. 74. To easily select the complete ring of edges, press i for raycast edge selection and then Alt+middle-click on one of the edges as shown below to select the edge loop.

Alt+middle-click on one edge to select this row of edges.

75. Right-click on the object and choose Grow Selection, or press + (Shift+=, not + on the numerical keypad). 76. Grow the selection again, and then add the two adjacent edge loops to the selection by Shift+Alt+middle-click.

Grow the selection twice by pressing + (Shift+=).

Add another row of edges on the top and bottom of the ring as shown above (Shift+Alt+middle-click).

77. Once you have all the edges of the ring selected, choose Modify > Component > Mark Hard Edge/Vertex. Close the property editor. 78. Press + on the numeric keypad to increase the subdivisions of the tank. Notice how the subdee is smoothed everywhere except for the edges that were marked as hard edges. 79. Reduce the subdivisions by pressing on the numeric keypad. 80. Repeat the previous steps to mark the edges of the other ring as hard.

68 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

Adding the Legs to Stand On


You will now create the legs to support the tank. 81. Make sure the viewport is set to Shaded display. 82. Since the underside of the tank is a bit dark, click the Display menu and choose Display Options. In the Camera Display property editor, activate Enable Head Light (near the bottom of the Display Options tab). The headlight is a virtual light shining into the scene from the position of the camera. It is visible in any shaded OGL display mode (Shaded, Textured, Textured Decal, and so on), and when activated, temporarily disables the effect of all other scene lights for that particular camera. It is useful when you want to preview the shadowed parts of scene objects but this headlight is only for display purposes, it is not renderable.
Create the leg support structure

83. Press u to activate the raycast polygon selection tool and select the polygons on the underside of the lower ring of the tank using the following technique; hold down the Alt key, middle-click on one polygon and drag the cursor across its neighbor to select the entire ring of quad polygons in the direction of that polygon (see below).

Hold the Alt key down, middle-click one polygon and drag the cursor across its neighbor to select the entire ring of quad polygons in the direction indicated

84. Right-click on the object and choose Extract Polygons (keep). This creates a new object from the selected polygons but leaves the original polygons in place on the tank.

Tutorials I 69

Section 3 Modeling & Deformations

85. Freeze the new object by clicking Freeze M on the Edit panel. This breaks the relationship between the new object and the tank and prevents the new object from being affected if you later go back and modify the original polygons on the tank. 86. Choose Transform > Move Center to Vertices to place the objects center in the middle of its geometry, rather than at the scene origin. 87. Choose Modify > Poly. Mesh > Invert Polygons. 88. Select the outer edges of this new object (press i, Alt+middle-click on the edge) and press Ctrl+d to duplicate them. 89. Scale them up in XZ in Local mode. 90. Duplicate the edges again and translate them down a bit in the Y axis. 91. Duplicate the edges again and scale them down a little in XZ (as shown on the left). 92. Duplicate them one last time and scale them down in XZ again until they penetrate the tank. You should end up with something similar to the images below.

93. Select the polygons of the outer ring of the underside of the support object as shown on the left (press u, Alt+middle-click on one polygon, drag the cursor over its neighbor). 94. Make sure that Transform > Transform Components Independently in Local Mode is ON.

70 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

95. Rotate the polygons about their X axis in Local mode just by a small amount to give a bit of an angle to the bottom of the support object.

Build the legs

96. Select four equidistant polygons from which the legs will be generated, as shown on the left. 97. Right-click on the object and choose Inset Polygons from the context menu. 98. Set Length to 0.3 and Inset Amount to 0.06.

99. With the polygons still selected, right-click on the object and choose Extrude Along Axis. This command uses the same Extrude Op as is used by the Edit > Duplicate/Instantiate > Duplicate Multiple (Ctrl+Shift+d), but it uses different default values. - Set Length to 2.

Tutorials I 71

Section 3 Modeling & Deformations

- Set the Subdivs to 2. - On the Transform tab of the Extrude Op property editor, set Scaling X to 0.9.

100.With the polygons still selected, rotate them about their X axis in Local mode so that the feet lie flat on the ground as shown at left (make sure that Transform Components Independently in Local Mode is still active).
Give the legs some feet

101.Select the bottom outside polygon of each foot as shown below.

102.Extrude the four polygons (Ctrl+Shift+d) and on the Extrude tab of the Extrude Op property editor, set Subdivs to 2.

72 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

103.Adjust the Length value on the Extrude tab and the values on the Transform tab to get a result similar to the image below.

104.Grow the polygon selection ( Shift and +) until the feet are selected. 105.Right-click on the object and choose Local Subdivision Refinement. 106.In the Mesh Local Subdivision Op property editor, set Rule to the Doo-Sabin. The feet should now look like the foot in the image on the left.
Reinforce the legs

Since the tank is very heavy, you are going to reinforce the legs. 107.Select two facing polygons on two adjacent legs as shown below.

Tutorials I 73

Section 3 Modeling & Deformations

108.Right-click on the object and choose Bridge Polygons. 109.Select a horizontal edge on the new reinforcement part, then right-click on the object and choose Subdivide Edges (evenly). Set the following options: - Set Subdivisions to 6. - Turn Parallel Edge Loop on.

74 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

Add detail to the reinforcing beam

110.Select the polygons on the front and back sides of the reinforcement, right-click on the object and choose Inset Polygons.On the Extrude tab, make the following changes: - Set the value for Inset Amount to 0.08 - Turn Merge off.

111.With the inset polygons still selected, right-click on the object and choose Bridge Polygons.

112.Repeat the previous steps for the remaining legs.

Tutorials I 75

Section 3 Modeling & Deformations

Duplicating and Joining the Tanks by the Hip


You are now going to create an instance of the tank. 113.Make the bolts a child of the tank and the tank a child of the leg support object. 114.Select the top object in the hierarchy (the leg support). One way to do this quickly in a viewport is to press the spacebar and right-click on any object in the hierarchy this tree-selects the hierarchy that is, it selects the root of the objects hierarchy in branch mode. 115.Choose Create > Model > New Model. Give the new model a name. 116.Choose Edit > Duplicate/Instantiate > Instantiate Single or press Ctrl+i. 117.Move the tank instance beside the original tank.
Create an object to join the two tanks together

118.Get a primitive square and two primitive circles. Scale and position them between the two tanks as shown below.

119.With the square and circles selected, Freeze the geometry, then choose Create > Polymesh > Curves To Mesh. In the Curves To Mesh property editor, set the following options: - On the General tab, set Step Contour and Holes to 1. - On the Extrude tab, set Length to 0.5. - On the Bevel tab, set the Depth to 0.1 and the Height Scaling to 1.5. - Scroll further down on the Bevel tab to set the Profile Curve - Sampling Step to 1.

76 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

At the moment you still have access to the primitive square and circles. Any adjustments you make to these objects would update the generated mesh (that is, until you freeze it.) 120.Switch back to the General tab of the Curves To Mesh property editor and click Delete. 121.Choose Transform > Move Center to Vertices. 122.In the Top view, adjust the objects position along X so that it is centered between the tanks. 123.Select the side polygon (the one near the original tank). Duplicate and translate it towards the tank a bit, as shown on the left. 124.Select the front and back polygons of the newly created segment and extrude them by pressing Ctrl+Shift+d. Leave the settings at their defaults.

Tutorials I 77

Section 3 Modeling & Deformations

125.Select the polygons facing the original tank as shown below.

126.Choose Modify > Deform > Shrinkwrap. 127.Pick the original tank. Right-click to end the picking session and set the following options: - Activate Reverse. - Choose Parallel to Axes as the Projection type. - Choose Along Z for the Parallel to Axes option. 128.Select the polygons on the opposite side of the extrusion, as shown below.

Make sure you have deselected the previous polygon selection before selecting the opposite side.

78 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

129.Press . to repeat the shrinkwrap command (Dont forget to pick the tank and set the parameters correctly in the property page, check step 125 as a reference). 130.Pick the original tank again. Right-click to end the picking session and set the following options: - Reduce Amplitude to 0.7. - Activate Reverse. - Choose Parallel to Axes as the Projection type. - Activate Along Z in the Parallel to Axes options.
Make this object symmetrical

Now you need to copy the changes that were made on the left side to the right side. But you cant use shrinkwrap because the tank on the right side is an instanceit doesnt really have geometry. Instead, you will symmetrize the polygons. 131.Select the polygon on the other side of the joint object and delete it.

Polygon to delete before symmetrizing.

Tutorials I 79

Section 3 Modeling & Deformations

132.Select the polygons to symmetrize on the right side of the joint object.

133.Choose Modify > PolyMesh > Symmetrize Polygons and set the following options: - Change Reference to Local. - Change Plane Normal to Z Axis.

Adding the Pressure Meters and T-Joints


You will now add a pipe and pressure meters to the tank. 134.Make the Extras layer visible in the viewport (press 6 to open the Layer Control panel). 135.Select the Pipe_curve object and make sure the pipe curve is positioned as show below.

80 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

136.Get a primitive circle. Set its Radius to 0.12 and its Subdivisions to 8. 137.Choose Create > PolyMesh > Extrusion Along Curve and pick the Pipe_curve curve. 138.In the Extrusion Along Curve property editor, make the following changes: - Set the V span to 2. - Set the Geometry Subdivisions to 7. - Press Delete (Freezes Op) to delete the Pipe_curve and the circle generators. 139.Translate the pressure_gauge object in place at the end of the pipe as shown on the left.
Create a T-joint to connect the pipe to the tank

140.Set viewport D to display the Right view and reset it (press r) to go to the scene origin. Make sure the grid is visible (press g if necessary). 141.Set the view to Hidden line removal.
X = 0, Y = 0 in Right view

142.Activate Snap to Grid. 143.In the Model toolbar choose Create > Curve > Draw Linear. 144.Draw the curve profile as shown on the left. Make sure the profile is drawn away from the center of the view, as shown, and start drawing from the bottom, going upwards. Drawing in the other direction would require you to invert the normals of the resulting object. 145.From the Model toolbar choose Create > PolyMesh > Revolution Around Axis. - Set U span to 2. - Press Delete (Freezes Op) to delete the generator.

Tutorials I 81

Section 3 Modeling & Deformations

146.Duplicate the newly created object. 147.Use the open bracket ([) short cut key to activate the Knife Tool ( or Modify > Poly. Mesh > Knife tool). 148.With the grid snapping still active, draw a slice to cut the object in two, as shown on the left.
Using the knife tool.

149.With the knife tool still active, hold down right-click and choose Inspect Operator to open the Knife Tools property editor which is the Slice Polygons Op. 150.In the property editor, choose Delete Polys Below and close the property editor. 151.Freeze the objects modeling by clicking Freeze M on the Edit panel. 152.Rotate the new object 90 degrees clockwise (it is easier if you do this by pressing Shift key to rotate in increments of 15 degrees). 153.Make sure that the objects normals are facing outwards. Use the show normals option from the visibility menu. If they are inversed then choose Modify>Polymesh>Invert Polygons. 154.Select both cylinders and choose Create > Poly. Mesh > Boolean > Union. Depending on the licensing options of your copy of XSI, you may not have access to the Boolean feature. If this is the case, you can skip this section and import the tjoint object from the model folder of the project. From the top menu bar, choose File > Import > Model, then select the tjoint object and click OK.

82 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

155.In the Boolean property editor, click Delete. 156.Select the edges at the intersection where the two original pieces met, as shown below. You can use the raycast edge selection tool (press i) with Alt+middle-click and Shift+Alt+middle-click.

157.Right-click the object and choose Bevel Components. Set the following options: - On the General tab, set Distance to 2. - On the Rounding tab, set Nb Subdivs to 2.

Tutorials I 83

Section 3 Modeling & Deformations

158.Name the new object tjoint. If you wish, you can mark hard edges on the extremities of the tjoint object and then increases the subdivisions (press + on the numeric keypad). 159.Place the tjoint object along the pipe using the rotoscoped image as a reference (as shown below left). Select the points at one end and translate them so that the tjoint object fits over the pipe on the rotoscoped image (as shown below on the right).

Create clones of the tjoint object and fit them to the tank

In the next few steps, you will create clones of the tjoint object and place them along the pipe. Clones keep a link to the original (master) object. Any change you make to the geometry of the master object is reflected in all clones of it. However, transformations (scaling, rotation, translation) and any change you make directly to the clone affect only it, and not the master nor other clones. 160.With the tjoint object selected, choose Edit > Duplicate Instantiate > Clone Single. 161.Place the clone further up the pipe just above the original tjoint object (see next page). 162.Repeat the last two steps to create another clone and place it at the top of the tank to connect it with the pipe (as shown on next page). 163.Select the three T-joints and press Freeze M under the Edit panel. 164.Now choose Edit > Duplicate Instantiate > Duplicate Symmetry. Select the XY symmetry plane.

84 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

165.Move the duplicates so they fit along the pipe on the other side.

166.Clone the pressure_gauge object and place the clones at the end of the tjoint objects as shown below.

Tutorials I 85

Section 3 Modeling & Deformations

Modeling the Valve


The T-joints on top of the tanks need a valve to control the pressure.
Model the base of the valve

167.Get a polygon mesh cube. 168.Select the top polygon, duplicate it (Ctrl+d) and scale it down in both X and Z. 169.Duplicate the current polygon and translate it upwards as shown on the left image. 170.Repeat the last two steps so that the object looks like the one shown below.

171.Select the polygons around the side of the second layer (as shown on the left). 172.Right-click on the object and choose Dice Polygons. 173.Click on the Select Edge Loops button at the bottom of the Dice Polygons property editor.

86 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

174.Translate the selected edges out along their Y axes in Local mode until just before they reach the edge of the cube (as shown below).

175.Select all the polygons of the upper area (the cube-like shape on the top). 176.Right-click on the object and choose Subdivide Polygons. Leave the settings at their defaults. 177.With the polygons still selected, from the Model toolbar choose Modify > Deform > Smooth. Set the following values: Depending on the licensing options of your copy of XSI, you may not have access to the Smooth feature. If this is the case please skip this section. - Set the Strength to 4. - Set the Falloff Radius to 1. 178.Select the polygons on the top of the object. 179.Right-click on the object and choose Dissolve Components.
Flatten the top of the valve

In the next few steps, you will make the adjacent points all equal in height. 180.With the top polygon still selected, right-click on the object and choose Select Adjacent > Points. 181.Activate Transform > Collapse Points for Snapping/Absolute Translation. If this option is not activated, the points keep their relative distances in the next step. This function is a good trick for leveling the height of the points during a transformation, such as the next step.

Tutorials I 87

Section 3 Modeling & Deformations

182.Enter 6.5 in the Y translation numeric box and press Enter.

183.Deactivate Transform > Collapse Points for Snapping/Absolute Translation. 184.Press u to reactivate the Polygon selection filter.
Extend the valve handle upwards and give it a bit of a twist

185.Duplicate the polygon and scale it down a bit in both X and Z. 186.Duplicate it again and translate it up. 187.Press Ctrl+Shift+d to duplicate the top polygon multiple times. On the Transform tab of the Extrude Op property editor, set Rotation Y to 25. Leave the all the other options as default. 188.Duplicate the polygon and scale it up a bit in both X and Z. 189.Duplicate the polygon and translate it up just a bit in Y. 190.Grow the selection twice so that the selection now includes the side polygons and the polygons underneath (see below).

191.Apply another Smooth deformation to the selected polygons. Adjust the Strength until the cross-section is more circular (see above left). 192.Select the top polygon.

88 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

193.Press Ctrl+Shift+d to duplicate the top polygon multiple times. Enter the following values in the Extrude Op property editor: - On the Transform tab set the Z Rotation to 15. - On the Extrude tab, adjust the Length to obtain similar results to the ones shown on the left 194.Complete the object by using the previous tools to create the handle as shown below.

195.Select two rows of points in the middle of the handle.

Click Prop. Right-click to open the Proportional property editor.

196.Activate proportional mode by clicking Prop on the Transform panel, and open the Proportional property editor by right-clicking Prop.

Tutorials I 89

Section 3 Modeling & Deformations

197.Make sure the Transform > Transform Components Independently in Local Mode option is OFF. 198.Activate the Scale tool (press x), then increase the Distance Limit in the Proportional property editor so that the proportional scaling will affect the points as shown below (points are colored according to how strongly they will be affected). Finally, scale the points in Local mode to get a bulge in the handle. .

If the handle is to be animated, then it should be modeled separately. If necessary, you could extract the handle polygons to make a separate object.

90 SOFTIMAGE|XSI

Tutorial 3: Polygonal ModelingBeckMobile

199.Select the side edges of the base of the object and bevel them. - On the Rounding tab of the Bevel property editor, set the Nb Subdivs value to 1.

200.You can now subdivide the valve object. Dont forget to mark hard edges if needed. 201.Duplicate the valve and place copies where needed along the pipe.

Polygon Reduction
The object joining the two tanks is a little bit on the heavy side. In the next few steps, you will make it a little lighter. Depending on the licensing options of your copy of XSI, you may not have access to the Polygon Reduction feature. If this is the case please skip this section. 202.Select the object joining the two tanks. 203.Choose Modify > PolyMesh > Polygon Reduction. Set the following: - On the General tab of the Polygon Reduction Op property editor, set Ratio to 40. - In the Quad Preservation box on the General tab, check the Reduce parallel edge loops option.

Tutorials I 91

Section 3 Modeling & Deformations

Finishing Touches
204.Parent all the pieces in a logical hierarchy 205.Unhide the BeckMobile layer. 206.Position the tanks on the trucks rear platform. Congratulations! You are now ready to blow some steam and get the BeckMobile running! Conclusion This tutorial provided an overview of some of the polygon modeling tools available. There are many, many moretry experimenting on your own. For more information, see the Polygon Modeling guide.

92 SOFTIMAGE|XSI

Tutorial 4: DeformationGrooming Devourus

Tutorial 4: DeformationGrooming Devourus


Dr. Bunsens pet plant Devourus requires high maintenance! Before she starts snapping her jaws at you, it would be wise to treat her to a little grooming. Your objective is to use the modeling tools to give a more distinctive look to the pot, leaf, and stem.

This tutorial shows you how to: Apply various deformations. Use weight maps to modulate the amplitude of deformations. Control deformations using other objects: curves (deform by spine), lattices, and volume deformers. Use proportional modeling to adjust a points neighbors automatically as you move the point.

Tutorials I 93

Section 3 Modeling & Deformations

Overview
1 Modify the shape of the soil in the pot.

Give a funky shape to the pot.

Add deformations to the leaf.

Use a volume deform on the stem.

94 SOFTIMAGE|XSI

Tutorial 4: DeformationGrooming Devourus

Devourus Needs Her Grooming


Being the resident expert botanist/stylist that you are, you feel confident that Dr. Bunsens pet will spare your life after her treatment because you know what tools to use to get the best results. 1. Open MOD_e2_Grooming_Devourus from the Scenes folder of the Tutorial_Project. This tutorial assumes that you are using the SOFTIMAGE|XSI selection model. Make sure that both Select > SOFTIMAGE|3D Selection Model and Extended Component Selection are off.

Deforming the Soil


By moving vertices with proportional modeling, you will shape the soil in the pot into a bumpy mound. After that, you will add some bumps using the Push deformation, then add some roots using the Spine deformation, and finally add a touch of randomness to it all. 2. Access the layers panel by clicking the Key button at the bottom of the main control panel. 3. Uncheck Visibility for the Leaf, Stem, and Head layers to simplify your view of the scene while working on the pot. 4. For your convenience, the scene has been saved with predefined viewpoints. Click the second memo cam button of the camera viewport to retrieve a view with the pot framed. 5. Ensure your Construction Mode is set to Modeling. Throughout this tutorial, you will apply several operators for the purpose of creating the final physical shape of Devourus, rather than to animate or define shapes for Devourus. By applying these operators in Modeling mode, you can easily freeze these operators once you have finished to make the scene lighter and improve performance.
Make a mound in the pot
The Construction Mode is located in the XSI toolbar.

To create a mound at the base of Devourus stem, you will use proportional modeling to create an area of influence around the selected vertex (the stem). 6. Click on the MCP button to revert back to the main control panel. 7. In the main command area, click Prop to activate proportional modeling. 8. Right-click Prop to open the Proportional property editor.

Tutorials I 95

Section 3 Modeling & Deformations

9. Drag the Distance Limit slider to adjust the area of influence around the selected vertices. To see the current area of influence you need to have a vertex selected and the Translation tool active or you can move your cursor over a viewport and press the m key (tweak tool). You can also drag the left mouse button while pressing r to adjust the Distance Limit but only when a tool like Translation or Tweak is active. If neither of these tools is active, the r key will reset your viewport. 10. Select the object and then select a vertex in the middle of the surface representing the soil. It is easier to check that you have not also selected any points on the pot if you do this in a Wireframe view. 11. Activate the Translation tool and then activate only the Y axis in Global manipulation mode.

12. Translate the selected vertex to create a small mound in the middle of the pot.

As you translate the vertex, the highlighted points show the affected area and the falloff of the proportional effect.

13. You can modify the parameters of the Proportional operator after you have applied it. To do this, you must open the property editor for the operator that is already on the objectthe property editor that opens when you right-click Prop is the setup used for new operations. To open the property editor of the operator that has already been applied: - Click Selection on the Select panel. - Expand the MoveComponent operator.

96 SOFTIMAGE|XSI

Tutorial 4: DeformationGrooming Devourus

- Click the Proportional icon. 14. Select the Falloff Profile curve and change its shape by adjusting the handles of the two points defining the curve, or by adding an extra point by pressing i and clicking on the curve. The Falloff Profile defines the weight of the proportional effect depending on the distance from the selected vertex or vertices. You can also tweak the falloff without editing the profile curve by using the Falloff (Bias) slider.
Adding and editing a point on the falloff profile

Add some bumps to the soil

Next you will add some localized bumps using the Paint Push tool. This tool automatically creates a weight map on the selected vertices. Weight maps define the strength by which each area of points are affected by a deformationin this case, a Push deformation. To start, you will select the points to be affected. Although you can use Paint Push on an entire object, its useful to select points first because this creates a cluster and restricts the deformation to that cluster so that you cant accidentally deform other parts of the pot. 15. Press t or click Point in the Select panel to activate the point selection filter. 16. Select all the vertices that represent the soil. The Paint Select tool (F11) can help select these vertices quickly. When Paint Select is active, you can adjust the radius by pressing r while dragging the mouse with the middle mouse button. You can also adjust the size of your brush in the Brush Properties editor; to display Brush Properties, choose Get > Property > Map Paint Tools > Brush Properties or press Ctrl+w. Since it is difficult to select the vertices close to the sides of the pot without also selecting the points on the sides, select all the points as close as you can to the sides of the pot and then choose Select > Grow Selection to add adjacent points to the selection. 17. Choose Get > Property > Map Paint Tools > Paint Push Tool. 18. In the PushMap property editor, rename the push weight map to something like WM_Push_along_side. If you press enter after renaming the object the flower pot will revert back to its original color display. 19. Press W to activate the paint brush, 20. Set the three Map Color sliders to 255 to have a better view of the map values as you paint.

Tutorials I 97

Section 3 Modeling & Deformations

Set the Weight Value Range > Maximum to 0.25 because the brush you will use has a very low opacity setting. If you do not lower this range setting, you will not see your brush strokes clearly on the weight map. Leave the default values for the other parameters. Initially, the weight map is all black, indicating that the amplitude of the push deformation is zero everywhere. Just for fun, move the Base Weight slider and see what happens. Bring it back to 0 before continuing. 21. Open the Brush Properties editor (press Ctrl+w or choose Get > Properties > Map Paint Tool > Brush Properties) and set the brush radius to 1.5 and the opacity to 10%. While the Paint tool is active, you can also press r to set the radius. In addition, you can press e to adjust the opacity. The Paint tool also allows you to use the middle mouse button to set the radius, however, that does not work when using Proportional or Paint Select. 22. Click and drag to add irregular paint strokes on the soil. Each paint stroke adds a small amount of amplitude to the Push deformation in that area, resulting in a bump.

Notice how the pot soil now appears to have irregular bumps where weight has been painted onto the map.

When the Paint tool is active, moving the pointer over a 3D view activates the display of weight maps in that viewport. To display weight maps when the Paint tool is not active, change the viewports display type to Constant and turn on Weight Maps visibility (under the eye icon). If an object has more than one weight map, you may need to specify which one to display: select the object, choose Explore > Property Maps from the Select panel, and select the desired map from the list. XSI will always display and paint on the last weight map selected.

98 SOFTIMAGE|XSI

Tutorial 4: DeformationGrooming Devourus

Set down roots

You will now create the illusion that the base of the stem lies right beneath the surface of the soil using the Deform by Spine operator. 23. Unhide the stem layer using the Layer Control area (see step 2). 24. Return to the main control panel (MCP).
Snapping on Target Facets

25. Press the space bar to reactivate the Object selection filter, and branch-select the stem and move it up until its curved base lies directly under the mound. 26. On the Snap panel, activate snapping, deselect Snap to Points, and set the snapping target to Facets. 27. From the Model toolbar, choose Create > Curve > Draw Cubic by CVs. 28. Draw a curve that originates at the base of the root on the soil surface and winds around the pot a bit. As you click to place the curve points, notice how they automatically snap to the surface of the soil. When you have finished, press Esc or the space bar to activate the Select tool. 29. Select the pot again. You will apply the spine deformation to a cluster. Since the Push operation already created a cluster, you can reuse the same one. 30. On the Select panel, activate the Point and Cluster selection filters and then click any of the soil points to select the cluster to which it belongs. 31. With the cluster selected, choose Modify > Deform > by Spine. Pick the curve and right-click to finish the picking session. 32. In the Deform by Spine property editor, you can adjust the radius and amplitude of the spines influence on the surrounding vertices. If you press w to activate the Paint tool, you will see the influence as a weight map. Set Radius to 1.5. You can also paint to change the weight map manually if you want. 33. Select the curve.

Highlights show the weight of the spine curve on the soil points.

Tutorials I 99

Section 3 Modeling & Deformations

This may be a bit difficult because the curve is so close to the soil surface. If necessary, use the Curve selection filter on the Select panel to help.

34. Turn off snapping so that you can translate the curve freely. 35. Translate the curve along the global Y axis until the soil looks like there is a root beneath the soil. You can also adjust the curves points individually to your liking with the Tweak Component tool (press m or choose Modify > Component > Tweak Component Tool). Using the Move Point Tool is also an option).
Randomize the dirt

As a last refinement to the soil, add a Randomize deformation that will add bumps and valleys to the soil, making it look more natural. 36. Select the same cluster of soil vertices as before. Remember that the Curve selection filter may still be active, so you may need to activate the Object selection filter before you can select the pot or anything else. 37. Choose Modify > Deform > Randomize. 38. Set the Displacement in Y to 0.25. Set X and Z to 0.

Stylizing the Shape of the Pot


Now that Devourus feels more grounded, you will stylize her pot using a lattice and a twist. 39. Select the pot in Object mode and choose Get > Primitive > Lattice. 40. In the Lattice property editor, set the Y Subdivisions to 5 and set Interpolation to Curve for all three axes.

100 SOFTIMAGE|XSI

Tutorial 4: DeformationGrooming Devourus

41. Move some lattice points around using the tweak component tool (press m) and proportional modeling. You will need to increase the Distance Limit for the Proportional Modeling tool. Since the lattice has fewer points than the pot, it acts as a sort of high-level deformer that affects the pots general shape. Although not demonstrated here, another big advantage of a lattice is when using it to deform multiple objects, hierarchies, and groups. In this scenario, all objects respect their relative position.
Add a twist to the pot to make it funky

Although you could apply a Twist deformation directly on the pot, you can apply it on the lattice instead. 42. Select all the lattice points except the two bottom rows, and choose Modify > Deform > Twist. 43. In the Twist property editor, adjust the Angle to your liking.
Modify the previously applied operators

All the operations you have performed so far have been preserved in the Modeling region of the pots operator stack (construction history). Now you are going to go back in that stack and modify one of the operations you performed earlier. 44. Select the pot in object mode, open an explorer (press 8), and press e to isolate the pot using the Selection scope. 45. Click the Randomize operator icon under the Polygon Mesh icon. This opens the property editor of the Randomize operation done earlier. 46. Change any values and notice how the operator still maintains a relationship with the geometry.
Freeze the operator stack

A large operator stack on all your objects could slow down your computer. It is a good idea to periodically freeze the operator stack when you are confident that you will no longer need to adjust previously applied operators. 47. Select the pot and click Freeze M on the Edit panel. 48. You can now delete the lattice and the curve. After freezing, they no longer affect the pot because the modeling relation that existed is broken by freezing.

Tutorials I 101

Section 3 Modeling & Deformations

There are four regions in the operator stack, defined with special markers. The four regions are Modeling, Shape Modeling, Animation, and Secondary Shape Modeling. All the operators in this tutorial were created with the Construction Mode set to Modeling, so they will all appear under the Modeling marker. You can freeze all the Modeling operators by freezing the Modeling marker or you can freeze downwards from a specific operator by right-clicking the operator itself and choosing Freeze. That operator and all the operators below it disappear.
Smooth out the pots surface shape

Before finishing with the pot, smooth out the surface by increasing its subdivision level and see what it looks like. 49. Select the pot and then press + (plus) on the numeric keypad. Take a look at it from several different angles. 50. When you are done, press - (minus) on the numeric keypad to decrease the subdivision level again. For performance reasons, its often best to work at low subdivision levels and increase the subdivisions before the final render.

Deforming the Leaf


You will now make the leaf look more natural by bending and curving its surface so that its not just flat. 51. Access the Layer Control panel to hide the stem and pot layers and make the leaf layer visible. 52. Make the Leaf layer current. This is important because new objects are always added to the current layer. 53. Re-activate the main control panel (click on MCP). 54. Click the third memo cam button to frame the leaf (or select the leaf and press f to frame it).
Make the layer current by clicking on the little area on the left of the layer name

55. The leaf is quite dark, so make sure the viewport is set to Texture Decal display type. 56. With the leaf selected, choose Modify > Deform > Bulge. 57. Set Deform Along to the Y axis only. 58. Set Amplitude to 1.5.

102 SOFTIMAGE|XSI

Tutorial 4: DeformationGrooming Devourus

59. Select the profile curve and delete the last point by using the delete key button.

Applying a Bulge to the leaf.

60. Click and drag the remaining two points and their handles so that the profile curve has the general shape shown in the illustration on the left. Close the property editor.
Apply a wave effect to the leaf

Now you will apply a Wave operator to the outer edges of the leaf to give it a crinkly look. 61. Since you dont want the wave to affect the whole leaf, deselect it. 62. Choose Get > Primitive > Control Object > Wave. 63. With the wave object selected, choose Transform > Match Translation and pick the leaf. This quickly moves the wave to the position of the leaf s transformation center. 64. Translate the wave object to the middle of the leaf s geometry as shown on the left. 65. Choose Select > Edge Loop (around corners), pick the leaf object, and then select the two edges on the side of the leaf (top and bottom) as shown below. Once you have selected the first edge loop, press Shift and add the second edge loop to the selection.

Click these edges one after another.

66. With the top and bottom edge loops around the outside of the leaf selected, right-click with the pointer over the leaf to open a context menu and choose Select Adjacent > Points.

Tutorials I 103

Section 3 Modeling & Deformations

If you are using Extended Component Selection mode, Alt+right-click to open this context menu. Alternatively, you can always choose this command from the Select menu. 67. Right-click on the leaf and choose Grow Selection from the context menu. Again, this command is also available on the Select menu. 68. Activate the Point selection filter and deselect the points at the base of the leaf as shown at the left (remember that you can deselect the points by simply Ctrl+Shift-clicking). 69. Choose Modify > Deform > Wave and pick the wave object.
Deselect the points at the base.

70. Waves are an animated deformation. Scrub the timeline and notice how the wave ripples along the selected points. Move the playback cursor to a frame where the Amplitude of the Wave Op is close to 0.8. 71. You can visualize the relationship between the leaf and the wave object in the 3D views if you turn on Relations in the Show menu (eye icon) for a single viewport or in the top View menu for all viewports. 72. Scale the wave object down to 0.4 in both the X and Y axes. 73. Freeze the leaf (Freeze M) and delete the wave object. 74. Increase the subdivisions on the leaf and notice how much more realistic it is.

104 SOFTIMAGE|XSI

Tutorial 4: DeformationGrooming Devourus

Grooming the Neck


In the last part of this exercise, you will use a volume deformer to pull back the tips on the neck of the stem without affecting the center part. Volume deformations are similar to proportional modeling, but they use a spherical control object: the control object defines the affected points and can be clamped and unclamped to the objects geometry. 75. Access the Layer Control area again and make only the stem layer visible. Change the current layer to the Stem layer so that the volume deformation object is added to the stem layer.
Hide the unwanted polygons

To simplify the view and avoid selecting unwanted polygons, you will hide the polygons that you dont want to work on. 76. Select the polygons of the leafy part at the top of the stem these arent the ones you will be hiding, but they are easier to select quickly than the others. 77. In the MCP, choose Select > Invert Using Filter. All the previously unselected polygons become selected and vice versa. 78. Press h to hide the polygons that are not needed for this deformation. 79. Use Invert Using Filter again to reselect the neck polygons (middle-click the Select menu button to repeat the last-used command). 80. Frame the selected polygons in the viewport.
Deform by volume

Now you will get a volume deformer and use it to shape Devourus neck. 81. Choose Get > Primitive > Control Object > Volume Deform. 82. Translate the volume deformer around a bit to see how it affects the neck. Undo to return the neck to its undeformed state. If you do not see the Volume Deform object, it may be because your viewport is not set to display Control Objects or because your layer is set to something other than the Stem Layer. The Volume Deform object will be added to the layer that is current when the object is created. 83. Press Shift+v to detach the volume deformer (this can also be done using Modify > Component > Attach/Detach Volume Deform). Move the volume deformer around again and notice that it no longer deforms the neck. 84. Scale the volume deformer down a little and position it so that it fits around the neck, making sure the ends of the leaves still fit inside the volume deform object.
Tutorials I 105

Section 3 Modeling & Deformations

85. Reattach the volume deformer by pressing Shift+v again. 86. Open the volume deform property editor by choosing Modify > Component > Inspect Volume Deform. 87. Increase Start Damping and move the deformer around again to see the effect. The neck points inside the inner sphere follow the deformer completely, while the points between the inner and outer spheres follow with a falloff. You want the opposite effect, so undo the translation of the deformer. 88. You need to reverse the Falloff Profile so that the tips of the leaves move back and the center of the neck stays in place. Select the curve, right-click within the graph editor and choose Presets > Ease-in (0 -> 1). 89. Move the volume deformer towards the back of the neck. Now only the tips of the leaves follow. Adjust the Start Damping slider to alter the overall shape of the leaves.

90. Select the stem, and choose Display > Unhide All Polygons from the top menu (or press Ctrl+h). Conclusion In this tutorial, you saw several different techniques for deforming objects and used several different types of deformation. There are even more types of deformation available on the Modify > Deform menutry experimenting on your own. For more information, see the Modeling and Deformation Basics guide.

106 SOFTIMAGE|XSI

Section 4

Animation Basics

Tutorials I 107

Section 4 Animation Basics

Tutorial 5: Low Level Animation, Part 1 Snack!


In this tutorial, the Doctors pet plant, Devourus Maximus (Devourus for short), is trying to capture its dinner: a plump and juicy fly (okay, its actually a null). You will animate both the plants and the flys various movements using many of the low-level animation tools in SOFTIMAGE|XSI. These tools are often referred to as low-level tools because they allow you to get down to animating an object at its parameter level. These tools allow you to animate in simple ways, such as setting keys and modifying them. You will start off with some simple keying. In part 2 of this tutorial, you will redo some of the same animation, but this time using a combination of constraints, linked parameters, and expressions to create relationships. Once you get to know these tools, you will be able to decide which type of animation best suits your purpose. This tutorial shows you how to: Mark parameters and set keys on them. Work with keyable parameters in the keying panel. Edit the function curves in the animation editor. Set ghost images for viewing keyframes. Change the timing using the dopesheet.

108 SOFTIMAGE|XSI

Tutorial 5: Low Level Animation, Part 1 Snack!

Overview
1 Animate the plants mouth opening and closing using standard keying.

Display ghost images for the plants keyframes.

Adjust the timing of the plant striking using the animation editor and dopesheet.

Tutorials I 109

Section 4 Animation Basics

Animating with the Basic Tools


In Part 1 of this tutorial, you will use standard keying to animate the movement of the plants jaw. You will set keys in different ways and explore the concept of marking parameters. Then you will edit the resulting animation using the animation editor (function curves) and dopesheet. 1. Open ANI_e1_Snack from the Scenes folder of the Tutorial_Project.

Saving Some Keys


In XSI, you can save keys very quickly when youre transforming objects: you simply move, scale, or rotate the object as you like and then press the K key. You will try this out first, then you will discover more complex ways of keying.
Select this cube

2. Select the cube near the plants head. 3. On the Transform panel, click the t button to activate the Translate tool. Make sure all three axes (x, y, z) are active: if not, click the striped button below the t button. For the purpose of this section you will find it easier to work with the View manipulation mode (click the View button).
Click the t button to activate the Translate tool. Click this button to activate all axes. Click the View button to translate in this manipulation mode.

4. Make sure that the timeline is set to frame 1 (as shown on the left); if not, drag the red timeline cursor to this frame or press the Home key.
Timeline cursor

5. Move (translate) the cube to where you want it in space (the plant will follow) and press K to key its position. You can also set keys by using the key icon in the Animation panel. Youll do this a little later on when you rotate Devourus jaw bone. 6. Move the timeline cursor to another frame, move the cube into another position, and set another key in the same way. Continue translating and keying like this to get familiar with the keying process and timing. The results dont matter at this point.

Play button

7. When youre done, click the play button on the playback controls (below the timeline) to see your animation play through.

110 SOFTIMAGE|XSI

Tutorial 5: Low Level Animation, Part 1 Snack!

Marking and Keying the Parameters


Lock Marked Parameter icon

Marking parameters is a way of controlling exactly whats keyed so that you dont create extra function curves for your object. Although you may not have realized it, when you selected the translation parameters, XSI immediately marked all the axes, so only those three translation axes were keyed. To verify which parameters are marked, click the arrow button beside the marked parameter box at the bottom of the XSI window (as shown on the left). This displays the marked parameter list in which the marked parameters are displayed in yellow. The marked parameters are also displayed in yellow in the explorer and on related property pages. Activating a transformation tool removes any existing markings from other parameters, including other types of transformations. If you need to ensure that your marked parameters remain unaffected when using the transformation tools, click the Lock Marked Parameter icon (the little lock icon) beside the arrow button that opens the list.
Marking specific transformation axes

Marked parameter box

Click this to open the marked parameter list.

There are three basic ways in which you can mark a specific transformation axis: To mark a single axis automatically, make sure youre using correct manipulation mode: rotate in Add mode or translate in Par mode. These are the only two manipulation modes that transform in the same way that local animation is calculated in XSI: they both transform an object relative to its parent.
Enter jaw* here and the Jaw_Bone object is selected.

Explicitly mark whatever parameter you want in the marked parameter list, regardless of the manipulation mode. Activate the Automark Active Transform Axes option in the Transform menu. Then when you click a specific axis button on the Transform panel (such as the Rotations Z button), only that axis is marked, regardless of the current manipulation mode.
Rotate the plants jaw bone

Using the first transformation marking method, you will rotate the plants jaw bone on the Z axis in the Add manipulation mode. Rotating on the Z axis synchronizes it with the stems movement. 8. Open ANI_e1_Snack_Strike from the Scenes folder of the Tutorial_Project. Drag the timeline cursor back and forth (this is known as scrubbing) to see the existing animation. 9. Enter jaw* in the Selection text box (as shown on the left) to select the jaw bone.

Tutorials I 111

Section 4 Animation Basics

10. On the Transform panel, click only the z button of the Rotate (r) tool, then click the Add button to work in the Additive manipulation mode.

In the marked parameter list, note that only the Ori.Euler.Z (rotation in Z) parameter is marked. Euler is the type of rotation that is used.

Set keys with the keyframe icon

When the parameter that needs to be keyed is marked, you can go to a specific frame, modify that parameter, and key its values. In the previous section, you set the keyframe using the K key, but now you will try keying using the keyframe icon instead. This is just another way of doing the same thing in XSI.
Keyframe icon

11. Set the timeline to frame 10 and click the keyframe icon in the Animation panel at the bottom of the XSI window. This will set a key for the jaw bones current Z rotation value (the only parameter which is currently marked). The keyframe icon changes color to tell you the marked parameters state at the current frame (see below). These same color codes are used for the keyframe icon and the animation icon in property pages.
Gray indicates that the marked parameter has no keyframes set for it. Red indicates that the marked parameter has a keyframe at the current frame. Green indicates that the marked parameter has some keyframes, but the current frame isnt a keyframe. Yellow warns you that the marked parameters animation has been changed, but these changes have not been keyed yet. If you dont set a key, youll lose these changes as soon as you move to a different frame.

112 SOFTIMAGE|XSI

Tutorial 5: Low Level Animation, Part 1 Snack!

Setting Keys in the Keying Panel


There is another tool that can be used for setting keys: the keying panel. The keying panel lets you work efficiently because you display only the parameters you need for keying for the selected object. The parameters that are displayed in the keying panel are called keyable parameters. You will set up the keying panel for the jaw of Devourus. 12. Click the Clr button in the marked parameter controls to clear the marked parameters for the selected object. 13. Move the timeline cursor to frame 18. 14. Switch to the keying panel by clicking on the Key button at the bottom of the main command panel. The keying panel displays a list of the parameters that can be animated for the object. By default the objects Local Transform and Visibility options are displayed here.

Clears the marked parameters for the selected object.

Displays a menu for many animation tasks, including opening the Keyable Parameters Editor. You can click the animation icon to set a key for only that parameter.

Click the key icon at the top of the panel to key all the parameters in the keying panel. Name of the object that is currently selected. You can rename the object by typing in this text box.

Modify the parameter values in their fields.

Tutorials I 113

Section 4 Animation Basics

15. In the keying panel, set the value of the jaws Rotation Z parameter to -75 by either scrubbing in the Rotation Z field or typing the value in the field.

Scrub in the field by dragging the mouse to the left or right.

Click in the field and enter a value.

Drag across multiple fields to select adjacent fields, then enter a value in the active field to change all selected fields to this value at once.

16. Press the K key to set a key, but you will notice that no keys have been set. This is because the preference to set keys when you press K is on marked parameters, but you havent marked any parameters. Instead of marking parameters as you did previously, you will change the keying preference so that keyable parameters (the ones displayed in the keying panel) are automatically keyed. This is one of the advantages of using the keying panel: you dont have to mark parameters first. Once youve set which parameters to display in the keying panel, you know that only these parameters will be keyed when you press K or click the key icon. 17. In the Animation panel at the bottom of the XSI window, choose Animation > Save Key Command Mapping > On all keyable parameters.

114 SOFTIMAGE|XSI

Tutorial 5: Low Level Animation, Part 1 Snack!

18. When you press K now, you will notice that keyframes have been set on all the parameters in the keying panel even though you didnt mark any of them.

Now that you have a better idea of how the keying panel works, you will set it up to isolate only the parameters you want to key. Since the jaw bone will be animated only in rotation, you dont want any other parameters to be keyed. You will use the keyable parameters editor to hone down the list of parameters to be displayed in the keying panel. 19. At the top of the keying panel, choose Parameters > Keyable Parameters Editor. - In this editor, click in the check box next to the position parameters (posx, posy, posz) to deselect them.

Tutorials I 115

Section 4 Animation Basics

- For the scaling parameters (sclx, scly, sclz), select them and click the Remove button at the bottom of the list of keyable parameters.

Deselect the check boxes of the position parameters. Select the scaling parameters and click the Remove button. The keying panel should look like this when youre done.

Notice in the updated keying panel the color change for the parameters. Keyable parameters are in black and non-keyable ones are in green. Non-keyable means that theyre displayed in the keying panel but are not keyed automatically when you press K or click the key icon. To key them, you must first mark them.

20. Go to frame 26 and set the Rotation Z value in the keying panel to about 4 (so that the mouth snaps shut), and press K to set a key. Now only the rotation of the bone is keyed, leaving the translation (position) parameters with their current values.
Save keys with auto-keying
Auto key button

Auto-keying lets you automatically save keys on marked or modified parameters every time you change to another frame. 21. Click the auto button (as shown on the left) to activate autokeying. 22. Go to frame 35 and set the Rotation Z value to about -21 in the keying panel. The key icon turns red to indicate that this key was set at this frame. 23. Go to frame 45 and set the Rotation Z value to about 4. Because you have activated autokeying, this fifth keyframe is also saved automatically. 24. When youre finished, click the auto button again to deactivate this mode.

116 SOFTIMAGE|XSI

Tutorial 5: Low Level Animation, Part 1 Snack!

Always remember to turn autokeying off when youre finished! If you dont, all marked parameters or keyable are automatically keyed every time you move to another frame. You also need to be careful about dollying, orbiting, or framing objects in viewports while the autokey mode is on. If you are using a camera view or spotlight view, these operations move the camera or light and this movement is keyed automatically.

Making Ghost Images to See the Keyframes


A very useful tool that XSI provides is the ability to ghost the animation (also known as onionskinning). When ghosting mode is active, you can see the previous and subsequent key positions for an animated object. This can help you plan the timing of an animation and correct any problems as you go. Since you have already set a few keys for Devourus, try out the ghosting to see the animation. 25. In the viewport, activate Animation Ghosting in the display types menu.

26. In the Layer panel, below the keying panel, activate Ghosting for the Pot layer. 27. In the viewport, choose Display Options from the display types menu to set up the ghost images. In the Camera Display property editor that appears, click the Ghosting tab and make sure the Keys Before and Keys After in the Keyframe Options area are both set to a value of 1. This limits the display to only one ghost for keys before and one ghost for keys after the current frame.

Tutorials I 117

Section 4 Animation Basics

You can also display ghosts for any interval of Frames Before and Frames After the current frame using the parameters in the Frame Options area. In this case, you only want to see ghosts on keyframes, so set the Frames Before and Frames After both to 0.

You can change the colors of the ghost images, as well as make them more transparent by setting a lower Alpha value. The previous and next keys are displayed in red and blue respectively. The ghost images update when you scrub the timeline.

28. Scrub the timeline to see the viewport update with the ghosts of Devourus past and future. Not too scary, is it?

Adjusting the Keys in the Timeline


Looking at the keys youve just set, you will probably need to make a few adjustments to the timing of the plants movement to have the recoil motion start later, but keep the same speed. To adjust the timing quickly and easily, you can edit the keys directly in the timeline. By default, each key you have set so far appears on the timeline as a little red tick. 29. If you cant see the keys, right-click in the timeline and choose Show Keys > All (filters). 30. Set timelines end frame to 50. 31. Select the jaw bone if it is not already selected and you will see the keys you just saved for it appear in the timeline.

118 SOFTIMAGE|XSI

Tutorial 5: Low Level Animation, Part 1 Snack!

32. Press Shift and click on the key at frame 10. A region is created around it. 33. Middle-click on this region and drag the key from frame 10 to frame 16.
Notice how the display of the ghosts are affected by the change of position of the keyframe. This can give you a better indication of the ease in and ease out of the animation from one keyframe to another. Key at frame 10. Key at frame 16.

34. In the same way, drag the second keyframe from frame 18 to frame 24. 35. Make the striking motion happen over three frames by dragging the key from frame 26 to frame 27. The final timeline should look like this (dont worry about the keys at frames 35 and 45 for now):

Loop button

36. Play back the animation to verify the timing (click the loop button to loop the animation). 37. Set the timelines end frame back to 100 and turn off the Animation Ghosting in the viewport.
Click to keep locked on this object.

Editing the Function Curves in the Animation (Fcurve) Editor


38. With the jaw bone selected, press the 0 (zero) key or click the Animation button on the Animation panel at the bottom of the XSI window and choose Animation Editor. This opens the animation editor in a floating window with the Fcurve Editor active so that all the keys and function curves for this object displayed. 39. Make sure the lock icon is active in the animation editor to keep the information from refreshing if another object is selected.

Tutorials I 119

Section 4 Animation Basics

40. Select the RotZ parameter in the animation tree on the left side of the fcurve editor. 41. From the fcurve editors command bar, choose View > Selected Parameters. This isolates the parameter you want to work with. If the fcurve is not displayed in the editor, you can press F to frame it in the graph.
Icons are available on the toolbar of the animation editor for such commands, including View > Selected Parameters.

42. Choose Edit > Auto Snap to Frames (Discrete Time) to ensure that the key points on the function curve fall directly on a frame when you move them, and not on fractions. 43. With Rotation Z fcurve selected (it is white), click the Select Key icon on the command bar, then select the point on the function curve at frame 24. The point turns red and tangent handles are displayed for changing the fcurve slope at that point.
Select key

44. Change the number in the Value box in the command bar to -100. This opens the plants mouth (lower jaw) wider. You could also press the M key and move the point manually. 45. Press F to frame the curve in the fcurve graph, and you can also press X to zoom horizontally.

Enter a Value of -100 or Drag the point on frame 24 from here ... ... to here to make the jaw open wider.

Most of the keyboard shortcuts for viewing in the fcurve editor are the same as in the viewports, such as Z for zooming, F for framing, etc.

120 SOFTIMAGE|XSI

Tutorial 5: Low Level Animation, Part 1 Snack!

Reverts to original curve

By default, XSI saves a temporary copy of the fcurve (called a snapshot) in case you want to revert back to the original function curve. The snapshot curve appears in dark gray. To revert back to it, you can click the Swap Curves icon on the command bar (you can try it, but make sure to come back the -100 value).
Make the mouth open sooner and snap shut

Edits selected key point

46. At frame 16, click the key point so that you see its handle (tangent) that defines the slope of the curve between points. Click the Edit Key icon (or press Shift+E) and move the points handle down so that its in a vertical position. 47. Click the point at frame 24, then break the slope at that point by deselecting Keys > Unified Slope Orientation (or press the letter O key or click the Unified Slope Orientation icon in the fcurve editors command bar). 48. Drag the handle on the points right side until the slope drops, and extend the handle on the left side until it almost meets the handle of the first point. The final curve should look similar to the following image:

Unified slope orientation

Break the slope at the point. Move points handle down so that its vertical. Then drag its right handle up and the left handle across.

49. Play back the animation to see the effect of these changes.

Editing the Keys in the Dopesheet


You will now use the dopesheet for copying and pasting a block of animation (the recoil and strike motion). The dopesheet is well-suited for this type of overall animation task because the animation appears as distinct chunks, making it easier to see and move the animation as a block. You could perform the same task by modifying the function curves in the fcurve editor, but for a simple operation like this, function curves can seem more complicated to work with.

Tutorials I 121

Section 4 Animation Basics

50. Unlock the animation editor and add the cube to the selection (press Shift and select the cube). Lock the animation editor again. 51. Choose Editor > Dopesheet from the command bar in the animation editor.
Expands the track display

52. Click on the tiny arrow between the animation tree and the tracks (as shown on the left) to expand the tracks so they take up the whole width of the editor.
The top track is a summary track that represents the cumulation of all the other tracks below. Click Expand to see all the tracks.

Click here to toggle the activeness of the track.

The blocks of color represent keys. Red, blue, or green (for X, Y, or Z axes) equals a single key at the frame, while a purple block represents multiple keys at that frame.

53. Press the space bar to activate the Select tool (a little key icon appears beside the cursor). 54. You can move single keys in this dopesheet by simply clicking and dragging them. Do this for the key at frame 35 on the Jaw_bone track, as shown on the left, and move it to frame 40. Instead of moving individual keys, you will now use the Region tool to group all the keys and then you will copy and paste the whole animation a few times. 55. Press Q to activate the region tool (if it isnt already) and drag to select all the keyframes within a region (from frame 1 to 38) on the first track. Note that this region includes the keyframes that you set for both the jaw bones rotation and the translation of the cube.

122 SOFTIMAGE|XSI

Tutorial 5: Low Level Animation, Part 1 Snack!

The white border indicates the region which contains the frames you have currently selected.

56. Press Ctrl+C to copy the region. 57. Drag the region (click and drag on the small cross in the center of the region) so that it starts at frame 40, then press Ctrl+V to paste the keys into this empty region. Click anywhere outside of the tracks to deactivate the region. You can have the tracks in the dopesheet follow whats shown in the animation tree on the left. This can be useful when you have an objects tree expanded (click the Expand button on the command bar). To do this, choose Edit > Align tracks with tree view in the dopesheets command bar. Now when you expand nodes in the dopesheets tree, the tracks follow suit.

Tutorials I 123

Section 4 Animation Basics

Compressing the Animation Using Function Curves


You will now compress the animation using function curves instead of the dopesheet. Again, you could use the dopesheet for this type of operation, but function curves display the relationship between time and values in a way that is easier to understand. Curves can show a parameters change over time better than blocks of keys in the dopesheet. 58. Middle-click the Editor button in the animation editor to return to the fcurve editor. 59. In the animation editor toolbar, choose View > Animated Parameters, then press F to frame them. 60. Click the Select Curve icon, then rectangle-select all the fcurves. Press F to frame the curves.
Select curve Select region

61. Select the Region tool (or press Q as you did in the dopesheet) to select the points you pasted earlier (the second set of points starting at frame 40). 62. Drag the regions right handle to the left so that the last keys are at about frame 65. This compresses the animation which makes the second strike happen faster. Take a look at the animation and notice how it has sped up.

Drag this handle to the left to compress the animation, making it go faster.

124 SOFTIMAGE|XSI

Tutorial 5: Low Level Animation, Part 1 Snack!

Conclusion You have used most of the low-level animation tools in XSI to animate an object. Understanding animation at this level is key to using XSI in more sophisticated ways, as you will see later in the character animation and animation mixer tutorials. For more detailed information on the topics covered in this tutorial, see these chapters in the XSI Animation user guide: Chapter 2: Tasks for Any Type of Animation (marking parameters and ghosting) Chapter 4: Animating with Keys Chapter 1: Editing Keys in the Timeline Chapter 3: Editing Function Curves Chapter 4: Editing Animation in the Dopesheet

Tutorials I 125

Section 4 Animation Basics

Tutorial 6: Low Level Animation, Part 2 Auto-feeding!


Since the Doctors schedule is pretty hectic with many appointments, he has decided that he needs to automate the feeding of Devourus. This way, he wont come home to find a dead plant in his lab! In XSI, you have the power of setting up relationships between parameters (such as linking them, using constraints, etc.) which can help automate the animation process as the conditions in the scene change. Now youre going to try a similar animation as in the first part of this tutorial, but this time youll be using different tools (constraints, linked parameters, and expressions) to learn how to automate the animation process. You will also animate the fly (free lunch!) along a path. Using linked parameters and constraints provide a clear advantage when you eventually need to modify the timing of the flys animation or its position. Using these tools, you will animate Devourus so that it will change automatically when you alter the animation of the fly. This saves you the time and effort of changing all the animation manually. This tutorial shows you how to: Animate on a path. Use different types of constraints. Use linked, custom, and proxy parameters, and expressions to create relationships between parameters to automate the animation process.

126 SOFTIMAGE|XSI

Tutorial 6: Low Level Animation, Part 2 Auto-feeding!

Overview
1 Animate the fly along a path (curve). 2 Set up proxy parameters to facilitate keying.

Use the parameter connection editor to animate the plants movements with linked parameters. 4

Use an expression and wave to animate the tongue.

Tutorials I 127

Section 4 Animation Basics

Setting the Fly on a Path to Destruction

What will happen when the fly gets too close to Devourus?

Start off with the same scene as before, but you must first remove the existing animation on Devourus. 1. Open ANI_e1_Snack_Strike from the Scenes folder of the Tutorial_Project.
Opens Animation menu

2. Select both the cube and jaw bone. 3. From the Animation panel, click the Animation button and choose Remove Animation > from Transforms.
Set the fly on a path

The curve that will be the flys path is currently hidden, and to unhide it, you need to first select it. 4. Enter path* in the Selection text box, then press H to unhide the path (curve). Press A to frame all elements in the viewport. With the path displayed, youre ready to animate the fly along it. 5. Select the fly (which is actually a yellow null object and not that tasty) and choose Create > Path > Set Path from the Animate toolbar. 6. In the dialog box that appears, select the Linear option to have the fly move along the path at a constant speed. Leave the other options as they are and click OK. 7. Pick the curve that will be the flys flight path and close the Path Cns property editor that opens. The fly is now animated along the path, covering its length in 100 frames.

128 SOFTIMAGE|XSI

Tutorial 6: Low Level Animation, Part 2 Auto-feeding!

Constraining the Movements of Devourus Head


You can easily have Devourus constantly track the movement of its prey by constraining its head to the direction and position of the fly.
Constrain the heads direction to the fly

8. Enter neck in the Selection text box. This selects the neck bone which controls the heads movement. 9. Choose Constrain > Direction from the Constrain panel in the main command area and pick the fly. 10. In the Direction Constraints property editor, select Active on the Up Vector page to activate an up-vector constraint. This keeps the heads Y axis always pointing in the up direction, which prevents any undesirable rolling of the head. Leave the other options as they are and close the property editor. 11. Play back the animation and watch Devourus attentively follow every movement of the fly as it buzzes along its path.
Constrain the heads position to the fly

Now constrain the cubes position to the fly and blend its value to animate the recoil and striking movement of Devourus. 12. Select the cube and position (translate) the plant in a recoil position (as shown on the left). 13. Save a key for this movement at frame 1 so that you can blend the keyframed position of the plant with the position constraint. 14. Choose Constrain > Position from the Constrain panel and pick the fly. Notice how Devourus leaps toward the fly! This constrains the cubes center to the same position as the fly. 15. In the Position Constraints property editor, bring the value for the Blend Weight down to zero to move Devourus back into its original position (no blending). 16. Lock this property editor to keep it open for the next part where youll use the Blend Weight parameter.
Devourus in its recoil position.

Tutorials I 129

Section 4 Animation Basics

Creating a Custom Parameter Set


Since you want to animate both the cube and the jaw bone, its more convenient to bring their two parameters into the same property editor. You can do this by making a custom parameter set and then creating proxy and/or custom parameters for those two parameters. A proxy parameter is a linked copy of the original parameter which can be added to a custom parameter set. Because a proxy parameter is effectively a clone of the original parameter, anything you do to it (such as keying) has the same effect as if you did it with the original. A custom parameter is a parameter you create for a specific purpose. It can be connected to an existing parameter using expressions or linked parameters. 17. Open an explorer (press 8) and select the scene root. Choose Create > Parameter > New Custom Parameter Set from the Animate toolbar and name it Strike. This create a custom parameter set under the scene roots node.
Click this icon to open the custom parameter set.

18. In the explorer, click the custom parameter set icon (as shown on the left) to open the property editor. Lock this empty property editor to keep it open.
Create a proxy parameter

19. Drag the green animation icon beside the Blend Weight parameter in the Position Cns property editor and drop it into the custom parameter set. Release the mouse button when you see the cursor display a little arrow icon, just below the light gray header (as shown in the following illustration). You have just created a proxy parameter.
Drag Blend Weights animation icon to this gray area in the custom parameter sets property editor.

20. Adjust this new slider so that you can see the relationship between the proxy parameter and the original parameter, then set it back to 0, and close the Position Cns property editor. From now on, you will control the Blend Weight parameter using this proxy parameter.

130 SOFTIMAGE|XSI

Tutorial 6: Low Level Animation, Part 2 Auto-feeding!

Create a custom parameter

You will now do something slightly different for the jaw bone. Instead of bringing the actual parameter into the custom parameter set, you will create a custom parameter (slider) and connect the original parameter to it. You will animate the sliders value which will drive the jaws rotation. 21. Select the custom parameter set Strike in the explorer and choose Create > Parameter > New Custom Parameter or press Shift+P. 22. In the New Custom Parameter dialog box, name this custom parameter Jaw Rotation. Set the Value Range to a Minimum value of -80 and a Maximum value of 20. 23. Activate the UI Range sliders by clicking the Enable check box and set these sliders to the same settings, Minimum value of -80 and a Maximum value of 20. Leave the other options as they are and click OK. In the custom parameter set, you will notice that the Jaw Bone slider has been added but is not animating anything yet (drag the slider to check). You now need to set an expression that links the animation of the jaws rotation to the custom parameter.
Link it up in the parameter connection editor

24. Select the jaw bone and open its Local Transform property editor (press Ctrl+K). This property editor contains the transformation parameters which control this objects animation. 25. Right-click on the Rotation Z parameters animation icon and choose Parameter Connection Editor. You will create linked parameters in this editor.

The Driving Source is the parameter that drives the target parameters animation. In this case, it will be the custom slider called jaw rotation.

The Driven Target is already listed because the jaw bone was selected when you opened this editor. The jaws Rotation Z parameter will be the driven parameter.

Tutorials I 131

Section 4 Animation Basics

26. In the Select panel, click the Scene button and select the Strike custom parameter set in this explorer.

27. The parameter connection editor updates the driving source with this new selection. Lock the explorer for the driving source so that its not inadvertently updated with another object. 28. Select the Jaw Rotation in the Driving Source list and the Rotation Z (rotz) parameter in the Driven Target. This drives the jaws Z rotation with the animation of the Jaw Rotation slider. 29. Select Equal (=) Expression from the list at the bottom of the parameter connection editor, then click the Link button. This creates an expression that makes the rotation Z parameter value equal to the value of the Jaw_Rotation parameter.

Select Equal (=) Expression from this list, then click the Link button to create the connection between the selected parameters.

30. Open the Strike custom parameter set and change the value of the Jaw Rotation slider to see how this link works.

132 SOFTIMAGE|XSI

Tutorial 6: Low Level Animation, Part 2 Auto-feeding!

Linking Devourus Movement to the Flys Position


Now you will animate how close Devourus gets to the fly depending on how far the fly has travelled on its path. You will do this by linking the Blend Weight value of the cubes (plants) position constraint to the amount of path covered by the fly (a percentage of the paths length). You are linking the position of Devourus head relative to the percentage of the path that the fly has travelled, as opposed to directly keying the position of the head (as you did previously) 31. From the XSI main menu, choose File > Preferences. In the window that opens, click the Animation icon in the explorer to open the Animation Preferences property editor. 32. Set the Slope Orientation Constraint to Plateau. This will straighten the slope of the function curves between points that have the same value. Any dips between key points can cause unwanted animation. Close the preferences property editor. 33. Select the Strike custom parameter set and press Enter to open its property editor. Lock it to keep it open. 34. At frame 1, set the cubes proxy Blend Weight parameter in the custom parameter set to 0.16. But dont set a key yet! This value simply moves the plant closer to the fly. 35. Right-click the animation icon beside the cube Constraint Blend Weight slider and choose Parameter Connection Editor.

Update icon on the driven target side.

36. In the editor, click on the Update icon on the Driven Target side to update this list of parameters. You will notice the list is incomplete, so click the Driven Target button at the top of the editor and select All Nodes. Now you can select the customparamset.cube_constraint. You now have the driven target parameter selected, so lets get the driving source parameter: the path percentage of the fly. 37. In the viewport, select the fly on the path (the yellow null). The parameter connection editor should update the driving source. If not, simply click on the Update icon on that side.

Select the proper filter: All Nodes.

Tutorials I 133

Section 4 Animation Basics

38. The fly has a certain amount of parameters listed, but the one you need is not there yet. Click the Driving Source button at the top of the editor and select All Nodes, as you previously did for the Driven Target. 39. Lock the Driving Source explorer and scroll down the list until you find kine.Constraints. Expand this node and scroll to find and select pathcns.perc.
At this point, the parameter connection editor should look like this.

40. At the bottom of the parameter connection editor, click the Link button. A link is automatically created (the animation icon of the cubes blend weight slider has a little L to indicate this) so that each time the fly is at 0% of its path, Devourus head will be at its current position.
The animation icon displays the Link With function.

Set the relative values

Relative values are keys that map a particular value of the driving parameter to a particular value of the driven (linked) parameter. They are similar to regular keys that map a particular value to a particular frame. However, instead of the values being mapped over time, the linked parameters values are mapped in relation to the driving parameters values. 41. At frame 22, leave the proxy Blend Weight sliders value at 0.16, and click the Set Relative Values button in the parameter connection editor.

42. At frame 37, set the Blend Weight value to 0 and click Set Relative Values again. 43. At frame 43, set the Blend Weight value to 0.85 and set the relative value.

134 SOFTIMAGE|XSI

Tutorial 6: Low Level Animation, Part 2 Auto-feeding!

44. At frame 54, set the Blend Weight value to 0.16, and set the relative value. Once the link has been created between parameters, you can also set the relative value by right-clicking the linked parameters animation icon and choosing Set Relative Values. 45. Play back the animation in real time. If you like, you can set more relative values for when the fly passes in front of Devourus the second time around. When you set relative values, XSI creates a link function curve that you can access and edit like any other function curve. Right-click the animation icon of the linked parameter and choose Animation Editor.

Keying the Jaws Opening and Closing


You will now animate the opening and closing of Devourus jaw by simply saving keys on the Jaw Rotation custom parameter. 46. Set the timeline to frame 1, set the Jaw Rotation slider value to 0 to close its mouth, and click its animation icon to save a key. This icon turns red to indicate that a key exists at this frame. 47. Repeat this step by keying the following values at these frames: At frame 39, set Jaw Rotation to 0. At frame 41, set Jaw Rotation to -80 (opens mouth). At frame 43, set Jaw Rotation to 4 (snaps mouth shut). If you like, you can save more keys to animate the jaw for when the fly passes in front of Devourus the second time around.

Creating an Expression and a Wave to Wiggle Devourus Tongue


Using a Wave deform operator and an expression, you will animate Devourus tongue so that it wiggles whenever the fly gets within a certain distance of it. 48. From any toolbar, choose Get > Primitive > Control Object > Wave. Choose Planar as the Type of wave (like a ripple on water) and set Velocity to 80. This creates a wave control object that you will apply to the tongue. Close the Wave property editor.

Tutorials I 135

Section 4 Animation Basics

49. Scale the wave object to be 2 in X and 0.5 in Y to make a longer wave with less ripple. Then position it directly under the tongue as shown in the following illustration (youll need to both rotate and translate it).

Wave icon is placed below the tongue and scaled to match its length and width.

Parent the wave

Make the wave a child of the jaw bone so that it inherits the jaw bones animation: 50. Select the jaw bone and click the Parent button on the Constrain panel. Pick the wave control object as the child (left-click) and right-click to end Parenting mode. 51. Select the tongue and choose Deform > Deform > Wave from the Animate toolbar and pick the wave control object. Click the lock icon in the Wave Op property editor to keep it open so that you can keep editing the tongues animation.
Remove the ease-in and out from the animation

By default, the waves Amplitude function curve is a spline, which has an ease-in and ease-out to it. In this case, you dont want the speed to change so you must flatten the shape of this function curve. 52. In the Wave Op property editor, right-click the Amplitude parameters animation icon and choose Animation Editor. 53. Click the Remove Key icon in the animation editor (or press D or choose Keys > Delete Key Tool) and delete the first and last keys on the amplitude function curve so that it becomes a straight line. Close the animation editor.
Add keys Remove keys

136 SOFTIMAGE|XSI

Tutorial 6: Low Level Animation, Part 2 Auto-feeding!

Create an expression to mute the wave

54. Right-click the animation icon of the Mute parameter in the Wave Op property editor and choose Expression Editor. You want the wave effect to be activated when the fly gets within a distance of 48 Softimage units of the cube which is driving the position of Devourus head. 55. Click the Function button on the command bar in the expression editor and choose Conditions > Condition. A formula for the conditional statement appears in the editing panel.

The expression formula that you are building appears in the editing panel.

56. Replace the condition placeholder with the center distance function by selecting <cond> and choosing Function > Distance > Center to Center. The center distance function appears as ctr_dist. You now need to define the two elements for the Center to Center function. 57. Select <elem1> and enter the word cube. (with a period at the end of it). To enter the second objects name using the Object menu instead of just typing it, select <elem2>, click the Object button and select fly from the pop-up explorer. If the fly is within less than 48 Softimage units of the cube, then the mute should be deactivated; otherwise, it should be active. You will now build this part of the expression:

Tutorials I 137

Section 4 Animation Basics

58. Enter <=48 immediately after the end of the ctr_dist function: cond( ctr_dist( cube. , fly. ) <=48 , <true_expr> , <false_expr> ) This states that the condition to be met is if the distance between the center of the cube and the center of the fly is less than 48. 59. Replace <true_expr> by 0. This means that if the condition is met (distance is < 48), then the mute should be off (represented by the 0 value). 60. Replace <false_expr> by 1. This means that if the condition is not met (distance is >= 48), then the mute should be on (represented by the 1 value). 61. The final expression looks like this (note that the words cube and fly are each followed by a period): cond( ctr_dist( cube. , fly. ) <=48 , 0 , 1 ) 62. Click the Validate button in the expression editor. If the expression is valid, then click Apply. Close the expression editor when youre done. Take a look at the animation. Notice that the tongue starts wiggling (around frame 20) when the fly gets closer to the head (cube). If a scene is fairly complex, clicking the play button does not always give real-time playback because it is forced to display the animation for every frame. To see true real-time playback, click the All button below the timeline so that it toggles to RT (real time). When set to RT, XSI may skip some frames to achieve playback in real time. You can set the real-time playback speed in the Playback Options which you can open from the Playback menu. To view the frame rate in a viewport, make sure nothing is selected and press Ctrl+R+click.

Reversing the Direction of the Fly


Now you will reverse the direction of the fly by adding some points to the path percentage function curve. 63. Select the fly and expand its tree in the explorer to Kinematics > Constraints > PathCns. Right-click the Path %age parameters animation icon and choose Animation Editor.

138 SOFTIMAGE|XSI

Tutorial 6: Low Level Animation, Part 2 Auto-feeding!

64. Immediately after the first strike, reverse the direction of the fly by adding some points on the curve (click the Add Key icon or press I) so that the curve has the same shape as shown in the following illustration:

The animation of the strike movement of the plant is linked to the percentage of the path covered by the fly, so the timing of the strike motion adjusts automatically when you alter the flys path animation. The timing of the wave animation on Devouruss tongue also adjusts automatically because it is related to the distance between the head and the fly. The jaw bone animation was done with normal keyframe animation on the rotation Z parameter. This has not been altered to compensate for the change in the flys motion and would need to be adjusted manually. 65. Move the path curve away from but within reach of Devourus (what a tease!). You can also tag (press T) and move (press M) a few points on the curve to modify its shape. Notice how Devourus is still striking at the right position. This shows the advantage of animating the strike motion using the position constraint blending.

Tutorials I 139

Section 4 Animation Basics

Conclusion You have used most of the low-level animation tools in XSI to animate an object in both simple and complex ways. Understanding animation at this level is key to using XSI in more sophisticated ways, as you will see later in the character animation and animation mixer tutorials. For more detailed information on the topics covered in this tutorial, see these chapters in the XSI user guides: Chapter 5: Animating along Paths and Trajectories in the Animation user guide Chapter 6: Animating with Constraints in the Animation user guide Chapter 7: Linking Parameters in the Animation user guide Chapter 8: Animating with Expressions in the Animation user guide Chapter 3: Editing Function Curves in the Animation user guide Chapter 7: Custom and Proxy Parameters in the Customization guide

140 SOFTIMAGE|XSI

Section 5

Character Setup

Tutorials I 141

Section 5 Character Setup

Tutorial 7: Character SetupBecks Skeleton


Dr. Bunsen has been called a lot of things, mainly due to his unorthodox experiments, but spineless is not one of them! You will therefore create a skeleton (including a spine) and character rig for him and take his stamina to a new level.

This tutorial shows you how to: Create chains and put them in a hierarchy. Duplicate chains in symmetry. Create a spine. Create and constrain control objects to the skeleton as part of the setup. Create up vectors to help with arm and leg movements. Create shadows of the chain elements to make it easier to select them.

142 SOFTIMAGE|XSI

Tutorial 7: Character SetupBecks Skeleton

Overview
1 Create chains to build the characters skeleton. 2 Create the spine. 3 Create up vectors to preserve the orientation of the legs and arms.

Create control objects and constrain them to be part of the skeleton setup. 5 Create shadows of the bones and effectors for easy selection.

Tutorials I 143

Section 5 Character Setup

Creating a Skeleton for Dr. Beck Bunsen


The goal of this tutorial is to present one of the basic approaches to a character setup. XSI offers a selection of default skeletons and character rigs, but this tutorial will outline the steps you can use to build a characters skeleton from scratch. There are dozens of different ways to set up characters, but this is one basic setup that you can use for most typical bipedal animations. You should not start to set up a character until you have determined what kind of movement is required from your character. Dr. Beck Bunsen is not going to be doing any back flips or the like, so he doesnt require a complicated setup. However, you will need him to walk around his lab and do basic movements, so you will create a skeleton and control rig which will work well for these types of actions. 1. Open CHA_e1_Beck_Skeleton from the Scenes folder of the Tutorial_Project.
Make the geometry layer unselectable

To make it easier to work with only the skeleton, make the geometry layer unselectable. You will use this body model later as the envelope. 2. Click the Key tab at the bottom of the main command panel. In the Layers panel, deselect the Sel. box for the Geometry layer. When unselectable, the wireframe objects appear in dark gray. 3. Make the Skeleton layer current by clicking in the gray box beside the layer name.

Click on this part.

4. Click the MCP tab to display the main command panel again.

Creating the Legs and Feet


Start off with a leg! You should always use an orthographic view (Front, Top, Right) when drawing chains because they represent a specific plane, allowing you to align and place the bones more easily than in a perspective (Camera or User) view. 5. Make the Right view full screen by pressing F12 or clicking the viewports resizing icon in the upper-right corner. Zoom and pan (press z) to frame the leg in the viewport (remember that you cannot select the geometry).

144 SOFTIMAGE|XSI

Tutorial 7: Character SetupBecks Skeleton

When drawing a chain, XSI does not place the point until you release the mouse button. If you hold the mouse button down while moving the point, you can preview exactly how the chain will look. Make sure that you clearly define the knee angle in the correct directionan incorrect angle will make the leg bend the wrong way.
Draw the leg chain
Click first to make the root.

6. With the leg framed in the Right view, choose Create > Skeleton > Draw 2D Chain from the Animate toolbar. - Start the chain at the hip.

Then click to make the knee joint.

- Click to make a joint at the knee. - Click again at the ankle. - Middle-click to end this chain but keep the Draw 2D Chain command active.

Finally, click to create the effector.

The chains dont need to be exactly inside the model when you draw themyoull position and resize them in the next step.
Draw the foot chain

7. Still in the Right view with the Draw 2D Chain tool still active, click to start drawing a new chain: create a two-bone foot chain in the appropriate place, starting at the ankle. When you have finished, right-click to end chain-drawing mode. Use the illustration on the left as a reference to create the foot chain. 8. To reposition any chain element (root, bone, joint, effector), choose Create > Skeleton > Move Joint/Branch (or press Ctrl+j), and then drag the element you want to adjust. The bones attached to the element you are moving are resized to fit the new position.
Effector Toe joint Chain root

To constrain the movement to the X axis, press Shift while you drag; to snap the chain element to a grid, press Ctrl while you drag. 9. You can continue to select and manipulate any chain element until you deactivate the Move Joint tool by right-clicking or pressing Esc. 10. Select any element on the leg chain and press Ctrl+r to open the chains Kinematic Chain property editor.

Tutorials I 145

Section 5 Character Setup

11. In this property editor, bring the Inheritance Blend slider to zero (no blending) so that the legs effector can rotate independently of the last bone in the leg chain.

Position the leg and foot chains inside the model


Using the root as a reference for rotation makes it easier to rotate all the elements in place.

12. In a Front view, right-click on any element in the leg chain to select the entire chain hierarchy. 13. Add the foot chain to your selection (Shift+right-click on the foot chain) and then translate it so that it fits inside the leg model (as shown on the left). 14. You can rotate both chains simultaneously using the leg chains root as the object reference. To do this, right-click on the Ref button in the Transform panel, choose Pick New Reference, then pick the root of the leg chain.

Position the leg and foot chains inside the model.

To modify the speed of the mouse when performing transformations (scaling, rotation, and translation), choose File > Preferences and expand Tools > Transform in the explorer. Click the Increments tab and set the SRT Increments values (slow, medium, or fast).
Duplicate the leg and foot chains in symmetry

15. Branch-select (middle click) both the leg and foot chains if they are not already selected, and duplicate them in symmetry by choosing Create > Skeleton > Duplicate Symmetry.
Renaming objects right after creating them is a good habit to develop early on.

16. Select the YZ Plane of Symmetry in the dialog box and click OK. Adjust the new leg into position inside the model. You may need to rotate the leg and feet bones independently until they fit properly. 17. Rename the chain elements now, which can save you a lot of time later on. Develop the habit of renaming objects (especially chain elements, nulls, and clusters) as soon as you create them. Your boss will compliment you on your neatly labelled character!

146 SOFTIMAGE|XSI

Tutorial 7: Character SetupBecks Skeleton

Creating the Collar Bone, Arms, and Hands


You will create a complete collar bone, arm, hand, and finger setup, then duplicate it in all in symmetry to the other side of the body. Make sure you have both a Front and Top view open. Although you will be using the duplicate symmetry tool to create and mirror the collar, arm, and hand bones on the other side of the body, there is another option to create chains symmetrically. Click the Sym button in the Transform panel and then start to draw a chaina symmetrical duplicate of that chain is created simultaneously. 18. In the Front view, draw a single-bone chain for the collar bone, starting at the base of the neck. Middle-click to end the chain.

Make a single-bone chain starting at the base of the neck.

19. In the Top view, make a two-bone chain for an arm, starting at the shoulder, as shown in the following illustration.
Make a two-bone chain starting at the shoulder.

20. In the Front view, translate the arm chain and then rotate it slightly so that it is inside Becks arm.

Tutorials I 147

Section 5 Character Setup

21. Still in the Front view, create a single-bone chain for the hand, starting at the wrist, as shown in the following illustration.
Make a single-bone chain starting at the wrist.

Connect the arm and hand with parenting

22. Using either the explorer (press 8) or the Parent button on the Constrain panel, create the following hierarchies: - Make the hands root a child of the arms effector. - Make the arms root a child of the collar bones effector.
In the explorer, rename the roots of the chains with proper names.

Then drag and drop the hand root under the arm effector, and drag the arms root under the collar bones effector to make them children.

The end result looks like this.

Create the fingers

23. In the Front view, draw a three-bone middle finger chain in the hand (see left). 24. In the Top view, duplicate this chain four times for the other fingers and thumb (press the d shortcut key for the duplicate tool and click to place each duplicate).
Make a three-bone chain starting at the base of the fingers.

148 SOFTIMAGE|XSI

Tutorial 7: Character SetupBecks Skeleton

25. Rotate, scale, and translate each finger chain to fit in the hand model, as shown in the following illustration.

Rotate, scale, and translate each finger to fit into the hand. Rotate the thumb locally so that it bends naturally in the opposite direction that the fingers do. If the rotation icon doesnt appear around the root of the fingers, it might be because REF is still active in the Transform panel. Select another mode such as local.

26. Rename the fingers and make all of them the children of the hand effector. 27. Branchselect the collar-bone and shoulder chain and duplicate it with Create > Skeleton > Duplicate Symmetry (on the YZ plane). You might want to rename the chains of the new arm.

Tutorials I 149

Section 5 Character Setup

Giving Him Some Backbone ... and a Head


You will use a spine controller to create Becks backbone, then use standard bones for the neck and head.
Create the spine objects

28. Find the hips_control and chest_control objects in the explorer, select them and unhide them (press h). 29. Click the Key tab to open the Layer panel. In the layer control, hide the Geometry layer (deselect View ) because it will get too cluttered in the scene with the body. Leave the Layer panel open for now because you will need to see the geometry to place the control objects later.
Line up the chest control with the hips to create a straight spine.

30. Make sure the chest and hips line up (same orientation) so that a straight spine is created. You can turn on Center visibility using the View menu (eye icon) at the top of the viewport. 31. Choose Create > Skeleton > Create Spine. Pick the hips_control, then the chest_control object. 32. In the Spine Maker property editor that opens, enter 4 as the number of vertebrae and select the Implicit Vertebra option to have the vertebrae represented as implicit objects. Implicit objects are not rendered. The spine is created, as shown below.

The spine is attached between the control objects you selected and is composed of objects called vertebrae.

150 SOFTIMAGE|XSI

Tutorial 7: Character SetupBecks Skeleton

Give the spine a more natural curve

You can give the spine a more natural curve by moving the depth nulls which have been created by the Spine Maker tool (see left). The depth nulls are children of the two respective control objects that you selected to make the spine.
Create the neck, head, and jaw bones
chestDepth null

33. In the layer control box, select View again for the Geometry layer so that you can draw the chains in relation to the model. 34. Starting at the base of the neck, create a two-bone chain for the neck and head. The first bone will control the neck, the second bone will control the head (see below). 35. Starting at the end of the heads first bone, add another single-bone chain for the jaw. Make the jaw a child of the second bone that controls the head so the jaw will follow the head when it rotates.

hipDepth null

Make a single-bone chain for the jaw starting at the base of the head bone. Make a two-bone chain for the neck and head starting at the base of the neck.

Tutorials I 151

Section 5 Character Setup

Creating and Constraining Control Objects to the Skeleton


In addition to chains, control objects are also part of a skeleton setup. You will use such objects to control different parts of the character. They become part of the hierarchy when you constrain them to parts of the skeleton using different methods. When you set up a constraint, you usually do it with compensation, which means that you can preserve the offset between the objects that existed when you created the constraint. 36. Click the CnsComp button on the Constrain panel to activate the constraint compensation mode. You should get into the habit of deactivating the constraint compensate mode immediately after you assign constraints; however, you will be doing three constraints in a row that all use compensation so you can deactivate it after youre done with them all.
Constrain the neck and collar bones to the chest

37. Select the roots of the neck and collar bones and choose Constrain > Pose from the Constrain panel (see left). Pick the chest_control object. This makes these chain elements dependent on the chest_control object for all their transformations (scaling, rotation, and translation).
Constrain the hips

38. Select the hipDepth null and click the Cut button in the Constrain panel to unparent it from the hips_control. You need to do this because you want to create a constraint between these two objects. 39. Constrain the hipDepth null to the hips_control object using another Pose constraint.

Set a pose constraint from the hipDepth null to the hips_control object.

152 SOFTIMAGE|XSI

Tutorial 7: Character SetupBecks Skeleton

Constrain the leg effectors to the feet

40. Select one of the legs effectors, choose Constrain > Position and pick the corresponding foots root. 41. Repeat this step for the other leg/foot. 42. Click the CnsComp button again to deactivate the constraint compensation mode.
Create upper body, COG, and belly controls

43. Get an implicit cube to control the upper body movements, call it upperbody_Control, resize it, and place it at the bottom of the spine (see below). 44. Get a circle and place it around the hips, outside the upperbody and hips control objects. This will be the COG (center of gravity) control. This is usually the main control object to which others are parented.

Create a cube to control the upper body. Resize it and place it at the bottom of the spine. Create a circle to control the center of gravity (COG) and place it around the other control objects.

45. Get an implicit sphere and call it belly. Scale it down a little and place it where Bunsens stomach would be. This object will be used to animate the stomach area.

Create an implicit sphere to control the belly. Resize it and place it in front of the spine in the stomach area. What a paunch!

Tutorials I 153

Section 5 Character Setup

Parent the control objects

46. Either using the explorer or the Parent button on the Constrain panel, create the following hierarchies: - Make the chest_control a child of the upperbody_control cube. - Make the upperbody_control and hips_control objects children of the COG circle. - Make the belly sphere a child of vertebra1 (this is located under the SpineCurve).
Constrain the leg roots to clusters on the hip

Constraints in XSI are extremely powerful and can be applied to more than just the whole geometry of an object: they can also be used with clusters. You will use the Object to Cluster constraint to constrain the leg roots to clusters on the hip control object. The advantage of this constraint is that it lets you determine an exact position on the geometry at which you can constrain (instead of the center of the whole geometry when using other constraints) On the hips_control, there are some clusters that have already been created to speed up the following process. You can view the clusters by selecting the object and clicking the Clusters button in the Select panel to open its cluster folder.

47. Select a leg root and choose Constrain > Object to Cluster. Pick the hips_control object, then pick any vertices of the geometry. A little menu appears displaying all the clusters that belong to this object. Choose the point (pnt) cluster to which you want the leg root to be constrained. Use the constraint compensation mode if the leg root does not lie exactly on this cluster.

154 SOFTIMAGE|XSI

Tutorial 7: Character SetupBecks Skeleton

Choose the point cluster rather than the knot or subcurve clusters.

48. Repeat this step for the other leg root. Again, use the constraint compensation mode if necessary. To view the clusters on the hips, select Unselected Clusters from the View menu (click the eye icon) in the viewport. If the root of the leg chain is not aligned properly with the hip_control object, you can adjust its position using the Move Joint/Branch tool (press Ctrl+j). Remember to temporarily deactivate the chains effectors position constraint first (as shown below) or else the constraint will override the tool.

Tutorials I 155

Section 5 Character Setup

Bringing It All Together under a Parent Null


Now youll bring all the character elements under one null so that its easy to select and manage the whole character as one entity. 49. Get a null, call it Beck, and place it on the ground between the two feet of the character. 50. In the explorer, move all the chains (legs, arms, feet, head, etc.), the envelope, and the COG object under the Beck object.

Creating Up Vectors for the Legs and Arms


An up vector is a special constraint that controls the orientation of a chain when it is animated with inverse kinematics (translating the chains effector). Up vectors restrict the orientation of the chain to be on a certain plane, called the resolution plane. This plane is the only one in which the chain can move. You will use a few nulls as up-vector constraint objects for the leg chains and the arm chains.

Bring elements under the Beck node. Notice that the COG object contains the element of control of the rig.

These nulls are up-vector constraint objects. Chains resolution plane appears as a triangle.

Create up vectors for the legs

51. Get a primitive null, duplicate it, and position one null behind each leg (as shown above). 52. Select a thigh bone, choose Create > Skeleton > Chain Up Vector, and pick the corresponding null. The chains resolution plane appears as a triangle, showing in which plane the leg chain can move. To see the resolution plane of a chain in a viewport, press Shift+s in the viewport and select Chain Critical Zone on the Attributes tab in the camera visibility property editor.

156 SOFTIMAGE|XSI

Tutorial 7: Character SetupBecks Skeleton

Depending on the bones orientation, the leg may invert itself. If this happens, you could either move the nulls in front of the character (even though they usually go behind), or you could select the thigh bone, press F3, and click the Kinematic Joint icon in the pop-up explorer. On the Resolution Plane page, enter 180 in the Roll text box to rotate the leg 180 degrees on its X axis. 53. Select the null and adjust its height to realign the bone properly. 54. Repeat the three previous steps for the other leg. 55. Parent these up vector nulls to the COG object.
Create up vectors for the arms

56. Get two more nulls, place them behind the upper-arm bones and create up vectors for the arms the same way as you did for the legs. Again, youll see the chains resolution plane displayed as a triangle.

Null used for up vector constraint.

Chains resolution plane shown as a triangle.

57. Dont forget to parent the 2 up vectors of the arms under the COG.

Testing Out the Rig


A look at Becks final structure.

Try these different movements to test out the rig: Select the hips_control and rotate it on different axes. Result: the hip tilts and the lower spine bends. The rest of the body stays still.

Tutorials I 157

Section 5 Character Setup

Select the hips_control and translate it on different axes. Result: the spine deforms to follow the hips. Since the legs are attached to the hips, they follow the hips movements. Select the upperbody in branch mode and rotate it on different axes. Result: the whole upper body rotates while the lower body stays put. Select the chest_control and rotate it on different axes. Result: the spine deforms to follow the chest movement. The pivot point is the chest_control object. Select the chest_control in branch mode (middle click) and rotate it on different axes. Result: the spine deforms to follow the chest movement. The pivot point is the upperbody_control object. Select the root of one foot and move it up and down. Result: since the leg effector is constrained to the foots root, the whole leg lifts with the foot.

Making the Skeleton Easy to Select


Part of the skeleton setup process is to make it easy to select the correct element when youre animating. Shadows for chain elements are useful in this aspect: they are literally shadows of the bones, roots, and effectors that can be of different shapes and sizes to make it easier to identify them in the wireframe view and easier to select them. You can even scale and offset them so that they sit outside the bodys geometry to make them even more visible and easier to select. 58. Select both arm effectors and press Enter to open the effector property editor in multi-mode. Set the following options to change both effectors with the same values at the same time: - Under Chain End Effector > Primary Display, select None as the Icon. This makes no icon visible for the actual chain element (you can also change the shape of the actual chain elements). - Under Shadow Display, select Rings as the Icon. This creates a ring for each of the three axes around the effector. - Enter 2 for the Size in X, Y, and Z.

158 SOFTIMAGE|XSI

Tutorial 7: Character SetupBecks Skeleton

This makes the shadow rings stick outside the characters body geometry so that its easy to select them.

Shadow rings for each axis shown around hands effector. Notice how they poke outside the geometry so that its easy to select them.

59. Select the left upper-arm and forearm bones and press Enter to open the Kinematic Chain property editor in multi-mode. 60. Enter the following values: - Bone Display Icon: None (creates no icon for the actual bones) - Shadow Display Icon: Box (creates a box around each bone) - Position Z: 1 (moves each shadow above its bone so that it sits outside the body geometry)

Shadow boxes around each arm bone. Notice how they are raised above (offset) the geometry so that its easy to select them.

Tutorials I 159

Section 5 Character Setup

61. Do the same for the left upper-arm and forearm bones, but enter a Z Offset value of -1. If you like, create shadow objects for the rest of the main elements of the skeleton. Remember that the legs and arms will be animated in inverse kinematics (IK), which means that you need shadow icons for at least the two feet roots (the leg effectors are parented to the feet roots). Conclusion You have created a basic skeleton hierarchy and a rig that can be applied to other biped models. Depending on how you animate your character, you can adjust the rig or add more control objects for specific controls. For more information, see the following chapters in the XSI user guides: Chapter 6: Animating with Constraints in the Animation guide. Chapter 1: in the Character Animation guide. Chapter 3: Building Skeletons in the Character Animation guide. Chapter 5: Animating Characters in the Character Animation guide. Chapter 6: Character Rigging in the Character Animation guide.

160 SOFTIMAGE|XSI

Tutorial 8: Character SetupBecks Envelope

Tutorial 8: Character SetupBecks Envelope


With the skeleton done, all thats left to do is to envelope it. Enveloping is the process of deforming geometric objects by skeleton bones. You can then adjust how specific points are weighted to different bones to more finely control the way that the envelope geometry deforms.

This tutorial shows you how to: Create a group of deformers. Assign an envelope. Use the smooth tool. Reassign a cluster of vertices locally to different bones. Use the Paint tool to edit the envelope weighting. Create a symmetry mapping template for the envelope weights. Readjust the relative positions of the deformers and geometry and reset the reference pose. Add another bone to the envelope. Freeze the envelope operator. Apply a pose preset. Save a preset for the envelope weights. Set rotation limits on the bones.

Tutorials I 161

Section 5 Character Setup

Overview
1 Assign an envelope.

Reassign points locally and use the Smooth tool.

Paint the weights. 4 Create a symmetry mapping template to mirror weights.

Adjust a deformers reference pose and add another bone.

162 SOFTIMAGE|XSI

Tutorial 8: Character SetupBecks Envelope

Dr. Beck Bunsen Stretches the Envelope


In a previous tutorial, you created a skeleton rig for Dr. Beck Bunsen, so now you need to envelope him. Enveloping is the process of attaching deformers to an object so that they deform its shape, and then refining the deformation by adjusting how strongly specific points are weighted to individual deformers. Instead of continuing from your previous scene, open the starting scene provided for you. 1. Load the CHA_e2_Beck_envelope scene from the Scenes folder of the Tutorial database. 2. In the XSI toolbar, change the Construction Mode to Animation. It is better to create envelope operators in Animation mode because then the envelope operator will not be removed when you freeze the modeling or apply a shape key to your object.

Creating a Group of Deformers


When enveloping, its a good habit to put your deformers into a group. This saves you the effort of picking them one by one when setting the envelope, and if you ever need to re-envelope your character, you can be sure that you will use exactly the same set of deformers. In the following steps, youll select all the deformers and then create a group. 3. The vertebrae are similarly named, so its easy to select them by name. Enter vert* in the selection text box on the Select panel and press Enter. 4. Add the belly and hips_control objects to your selection. 5. Click the filter icon in the Selection panel (the tiny triangle on the button just above the selection text box) and choose the Bone filter. 6. Add all the bones to the selection by holding down the Shift key and rectangle selecting across the whole character. Because you are using the Bone filter, you can only select the bones. You should now have 55 objects selected (look at the selection text box to confirm this). The Upperbody, COG, and Chest_control objects are not deformers. They are used as control objects that affect the translation and/or rotation of the deformers and will be animated, but they do not directly deform the envelope. 7. Click Group on the Edit panel. 8. When the new groups property editor opens, name the group bones_and_other_deformers.

Tutorials I 163

Section 5 Character Setup

Assigning the Envelope to the Skeleton


You can now envelope Dr. Bunsens body to the deformer group. 9. Make sure that the geometry layer is selectable by choosing KEY panel > Layers and add a check mark in the Sel. column for the Geometry layer (if there isnt already one). 10. Check that you have Animation set as the Construction mode (if you omit this step, XSI prompts you when the envelope operator is applied, just click yes!). 11. Branch-select Becks head (the object named Body), all the geometries should be selected. If you try to do this in a viewport, first you will need to set the selection filter back to Object; otherwise, youll only be able to select bones. 12. In the Animate toolbar, choose Deform > Envelope > Set Envelope from the Animate toolbar. A picking session starts, prompting you to pick deformers. 13. In an explorer, pick the bones_and_other_deformers group. 14. When you right-click in a 3D view to end the picking, the Automatic Envelope Assign property editor opens. Leave the settings in this property page as they are and close it. The envelope is now attached to the skeleton (notice the bones and vertices are now colored)the colors are used to show which bone is influencing each point on the envelope. Some adjacent deformers may have similar colors. If this is the case, press Ctrl+e to open the weight editor, select one of the bones by clicking at the top of a column, then click its color swatch and modify the color (see left).

Saving the Characters Default Pose


Since you will be moving the character around to test the envelope, you need to be able to reset his pose to the reference pose (the position in which the envelope was originally set). However, the Deform > Envelope > Reset Actor command works only for the envelopes deformers; it does not apply to any control objects to which those deformers may be constrained. The solution is to save an action for all deformers and control objects. 15. Select the Store_Default_Stance group from the explorer. This group has already been created for you and it contains all the deformers and all the other control objects. 16. Choose Actions > Store > Transformations - Current Values from the Animate toolbar. 17. Enter Default_Stance_Beck as the Action Name and click OK. You will use this pose later on.

164 SOFTIMAGE|XSI

Tutorial 8: Character SetupBecks Envelope

Testing the Envelope


When an envelope is created, each point is automatically weighted to one or more bones. After that, you can adjust the weighting manually. The first step after assigning an envelope is to check for errors. You do this by posing the character in extreme positions so you can see right away if any points are assigned to the wrong bone. 18. Select the Left_foot shadow object. Note that you dont need to branch-select this object because the foot is controlled by a constraint rather than only a parent-child hierarchy. 19. Drag the foot in the Front view (as shown below) to see how the leg movement affects the pants. As you can see, some weighting adjustment is required around the inner leg of Becks pants.

Problem area

20. Select the Pants object and tag the points of the problem area (as shown below). 21. Choose Deform > Envelope > Reassign Locally and pick the bones that you want to influence these points: in this case, pick only the right femur bone (called rthigh). Right-click to end the picking.

Tag the offending points in the area you need to modify... ...then choose Reassign Locally and pick the bone that you want to influence the weighting for the tagged points.

Tutorials I 165

Section 5 Character Setup

22. Test the Pants envelope again. Sometimes, it is easier to specify which bone shouldnt have an influence on particular points, rather than specifying which bones should. In this case, using the weight editor is the best bet. You will use this technique to fix the same problem on the other pant leg (a bit later on in the tutorial, youll also see how you could have used the weight mirroring tool). 23. When you move the other leg, you will notice that the same problem occurs. Tag the points to be reweighted. 24. Press Ctrl+e to open the weight editor. This editor displays only the information for the selected points and their associated deformers. 25. Click the top of the rthigh column to select all the weights under this deformer.

After you click the rthigh column, the corresponding points are highlighted in the 3D views.

26. Click the Abs button at the top of the weight editor panel make sure that you will adjust the absolute values. 27. Enter 0 in the numeric field of the slider above the table of weights and press Enter. This specifies that the selected vertices will not be affected by rthigh. 28. Close the weight editor.

166 SOFTIMAGE|XSI

Tutorial 8: Character SetupBecks Envelope

The Smooth Tool


To explore how the Smooth tool works, you will be adjusting the weights of the Shirt envelope. This adjustment will control how the geometry deforms as other parts of the model move about.
When you click the Weight Panel button, all of these fields appear in the panel. If you do not have any deformers in your object, this panel will be empty.

29. Branch-select the left_hand shadow object. Unlike the foot, the hand has no constraint and relies only on the parent-child hierarchy for inheriting transformations. Therefore, it is important that you either select left_hand in branch or make sure that ChldComp is off on the Constraint panel. 30. Move the arm up and down.

Move the arm up and down and notice how the mesh does not deform smoothly around the armpit area.

You now need to add just a touch of the influence of the left arm bone (lbicep) to the points around the armpit. You can do this by painting weights using the weight panel to redistribute the influence that the bones have on the envelopes points. 31. Display the weight panel by pressing Ctrl+3 or clicking the third icon at the bottom of the left toolbar (see left). Notice that Local Reassign also appears on this panel. 32. Select the shirt and press w to activate the Paint tool. 33. Move the mouse pointer over the shirt and notice that the brush radius is indicated by a circle. Control the brush radius by pressing r and the middle mouse button, then drag the mouse right or left.
Weight Panel

34. At the top of the weight panel, activate Smooth. When you paint with this option the effect is to average out the differences in the weighting of neighboring vertices. 35. Because youre smoothing (rather than adding weight for a specific deformer) and the shirt is symmetrical, you can smooth it on both sides simultaneously so activate Sym on the Transform panel.

Tutorials I 167

Section 5 Character Setup

36. Paint a few strokes around the armpit area to smooth out the weighting and see the results. Notice that as you paint on one armpit, both armpits are affected.

Before the smooth painting, the divisions are more sharp.

After the smooth painting, the divisions are more blended and even.

Use the options in the Paint Tools section at the top of the Weight panel to help you paint. In addition to the Radius (which youve already adjusted interactively with the r key), you can also set the Opacity. Opacity controls the strength of each paint strokein this case, the amount of smoothing. You can control opacity interactively by pressing e while dragging the mouse. For even more brush properties, open the Brush Properties editor by pressing Ctrl+w or choosing Get > Property > Map Paint Tools > Brush Properties from any of the toolbars. 37. Move the arm again and notice how the sharp, angular deformation around the armpit area has lessened. Select the shirt geometry when you are done.

The Add Tool


You can use the Add mode of the Paint tool to add weight for any deformer. For example, this can be useful to add back weight if you have overdone the smoothing under the armpit. 38. Before you go any further, deactivate Sym on the Transform panel. If youre adding weight for lbicep, you dont want to add it on both sides of your character! 39. At the top of the weight panel under Paint Tools, activate Add. 40. Set Opacity to 10 percent. 41. With the Paint tool still active, press d or click Pick in the Deformers section of the weight panel. 42. In a viewport, pick a deformer whose weight you want to add, such as lbicep or a vertebra. You can also pick an active deformer by selecting it from the list in the Deformers section of the weight panel. You dont need to press d or click Pick first.

168 SOFTIMAGE|XSI

Tutorial 8: Character SetupBecks Envelope

43. Paint the area to add weight for the selected deformer. 44. Now that youve had a look at the Smooth and Add tools, you can try the other Paint modes: - Reveal will remove brush strokes to reveal the original, underlying weighting that was automatically set when the envelope was applied. - Erase removes weight for the active deformer. You need to be careful using Erase because it might leave some vertices not 100% assigned. - Abs sets the weight for the active deformer to the Opacity value.

The Smooth Operator


As an alternative to smoothing weights by painting stroke after stroke, you can apply a Smooth operator to selected points or even the whole envelope. In fact, many users apply a Smooth operator immediately after enveloping and then use other features to fix any remaining weight problems. Even if you have already smoothed out the shirt, you can still apply a Smooth operator to see how it works. 45. Branch-select the right_hand shadow object and move it down. 46. Select the Shirt envelope again and activate the Paint tool so you can see the weight colors (press w). 47. Click Apply Smooth in the Edit Tools section at the top of the weight panel and adjust the settings in the Smooth Envelope Weight Operator property editor as follows: - Set Neighborhood Depth to 4. Neighborhood Depth is similar to brush size when you smooth manually: it sets the size of the neighborhood to consider when smoothing. - Set Distance Profile Scaling to 3 and adjust the Distance Effect Profile (as shown in the illustration on the left). Distance Profile Scaling and Distance Effect Profile work together to control the falloff of the smooth effect. 48. Play around with different settings to see how they affect the envelope.

If you need to access the Smooth operator property editor later on, you can find it under the Envelope_Weights in the explorer.

Tutorials I 169

Section 5 Character Setup

Mirroring Weights
You can copy the weights from one side to the other using a mapping template. This is a great time saver (especially for hand and finger geometry) because you only need to focus on a single side of the character.
Edit the weights on one hand

Before you mirror weights, make some adjustments to the weights on the left hand. 49. Test the movement of the hand, checking for any unnatural movement in the envelope as you rotate the hand and finger bones. For example, you could rotate the hand and finger bones in their local Z axis to see how the connecting vertices move with the bones. 50. Fix the top of the hand to make sure it doesnt deform when the fingers bend. If there are some adjustments to be made, use the tools you have previously seen. A quick way to test the fingers is to branch select the first bone of a finger chain, then using Selection > choose Select Child Nodes. With all the chain selected, activate rotation in Add mode. Simply rotate them on the Z axis to see a beautiful progressive bend on them
Hand bone

170 SOFTIMAGE|XSI

Tutorial 8: Character SetupBecks Envelope

Reset Dr. Bunsen to his default pose

Once you are done with the weighting on one of the hands, you need to create a symmetry mapping template and mirror these weights over to the other hand. Before you do this, you need to return Dr. Bunsen to his default pose. 51. Select any part of Dr. Bunsen, click Explore on the Select panel, choose Mixers, deselect all and select Default_Stance_Beck (on the next page). This is the pose you stored earlier.

52. Press Ctrl+1 to exit the weight panel and return to the standard toolbars. If necessary, press 2 to open the Animate toolbar. 53. With the Default_Stance_Beck pose selected, choose Actions > Apply > Action from the Animate toolbar. If nothing happens, make sure that you have deselected all parts of Dr. Bunsen before you try to apply the pose. A reference pose is stored automatically when you apply an envelope. This means that you could also use Envelope > Reset Actor without needing to store a default pose manually first, but only if there were no animated control objects as part of the rig. However, in this case, there are some control objects such as the up vectors, chest_control, upperbody, and COG. Unlike Reset Actor, which considers only deformers, the action you stored includes the transformations of these control objects.
Create the symmetry mapping template

54. With the Body envelope selected, choose Deform > Envelope > Create Symmetry Mapping Template. When the Create Symmetry Mapping Template dialog box opens, click OK to accept the default values. The Symmetry Mapping Template property editor and the Symmetry Map property editor both open. 55. The Symmetry Mapping Template property editor displays the mapping rules between deformers on either side of the plane of symmetry (see below). You can keep these default values, so click Validate and close the property editor.

Tutorials I 171

Section 5 Character Setup

Once validated, the Symmetry Mapping Template property editor will show any errors in red. 56. After you close the Symmetry Mapping Template property editor, the Symmetry Map property editor should still be open. This property editor establishes the correspondence between points on Becks body. Should the hands not be perfectly symmetrical, you would need to adjust the symmetry maps tolerance. However, since Dr. Bunsen is symmetrical in the reference pose, you can close this property editor as well. 57. Now that you have rules to match corresponding deformers and a tolerance for matching corresponding points, tag the points on the left hand (the hand with the modified weights) and choose Deform > Envelope > Mirror Weights. The weights are transferred from the tagged points to the symmetrical points on the other side. 58. Select the hand and finger bones on the right side and rotate them to see whether the newly mirrored weights on the other side are adjusted in the same way as the finger bones on the left.

When both property editors open, the Symmetry Map property editor may be hidden behind the Symmetry Mapping Template property editor.

172 SOFTIMAGE|XSI

Tutorial 8: Character SetupBecks Envelope

After you have applied a symmetry map, if you want to continue painting weights you may need to reset the envelope weight map to be the current map because the current map would be the symmetry map. To set the envelope weight map as the current map, select Envelope_Weights under the objects Clusters node in an explorer. Another quick way to do this is using the Select panel: with the Body object selected, choose Explore > Property Maps and select Envelope_Weights from the pop-up explorer (see left).

Resetting the Reference Pose


The reference pose that was stored when you originally set the envelope determines the relative positions of the envelope and deformers for calculating the initial weights. It is also the pose to which the character returns when you choose Reset Actor. Sometimes it becomes necessary to adjust the reference pose, but you dont want to start again and have to redo all your envelope adjustmentsin such cases you can mute the envelope operator, change the reference pose manually and save the changes before reactivating the envelope operator. You are going to use this method to correct the position of the head bone. Before you adjust the reference pose, you need to return Dr. Bunsen to his default pose (stance) again. After all that painting and testing the envelope, its more than likely that Dr. Bunsen is in an awkward and uncomfortable position.
Prepare to adjust Dr. Bunsens reference pose

59. Return Dr. Bunsen to his Default_Stance_Beck pose as you did in steps 51 to 53. Now that Dr. Bunsen is back in his original reference pose, you will mute the envelope deformation to prevent the geometry from deforming while you adjust the head bones position.

Tutorials I 173

Section 5 Character Setup

60. With the Body geometry selected, press F3 to open a pop-up explorer.

Envelope Operator

61. Click the Envelope Operators icon to open its property editor and activate Mute. 62. Select the eyes and glasses objects and click Cut on the Edit panel. This unparents them from the head bone so that they will not be offset when you adjust the head bones position.
Change the pose

63. Select and rotate the head bone to place it properly inside the head. Notice that while the envelope is muted, the geometry will not be affected by the bone rotation.

If you unmute the envelope now, you will see the geometry change as if you had moved the bone normally. You need to make this adjustment part of the envelopes reference pose.

174 SOFTIMAGE|XSI

Tutorial 8: Character SetupBecks Envelope

Set the new pose as the reference pose

64. With the head bone selected choose Deform > Envelope > Set Reference Poses. You can now unmute the Body envelope operator. 65. Select the Body geometry and press f in a scene explorer to frame the selection. 66. Press F3 again, expand the Polygon Mesh node so that you see the Envelope Operator with the muted icon. 67. Right-click over the muted icon and turn off Mute in the pop-up menu. 68. Reparent the eyes and glasses to the head bone. After resetting the reference pose, you should save a new action for the default pose. Dont do it yet, however, because in the next section, youll add another deformer to the envelope. You can update the default pose then.

Adding a New Bone to the Envelope


In case you havent noticed yet, the jaw bone was omitted from the start scene. Lets help Dr. Bunsen express himself and add a deformer for his jaw. 69. In the Right view, create a new one-bone chain in the jaw area (see left). 70. Name the bone Jaw and parent its root to the head bone. 71. Select the head envelope (Body) and choose Deform > Envelope > Set Envelope. 72. Leave Automatically Reassign Envelope unchecked and click OK.
When you add the jaw bone, it looks like this.

leave Automatically Reassign Envelope unchecked.

Tutorials I 175

Section 5 Character Setup

73. Pick the chain root of the jaw bone with the middle mouse button and then right-click to end the picking session. 74. Before going any further, remember to add the jaw bone to the Store_Default_Stance group and store a new action for the default pose. You should also add it in the bones_and_other_deformers group in case you need to envelope the character again later. To add an object to a group, select the object, right-click the group name in the explorer, and choose Add to Group. Or even simpler, drag and drop the Jaw bone onto the groups. 75. The jaw bone has been added to the deformers list of the Body envelope, but no points have been weighted to it. You can now weight vertices to the jaw. Use any of the methods you have seen previously, for example: - Use the Reassign Locally command to assign selected points to the jaw and head bones. - Use the Paint tool to add weight for the jaw and then smooth the blend between the jaw and head bones. The vertices of the head around the eyes should be 100% weighted to the head bone. If not, the glasses and eyes will not be in sync with the surrounding envelope when you rotate the head bone. 76. Select the Store_Default_Stance group from the explorer and store a new Default_Stance_Beck action (see steps 15 to 17).

Using Action Poses to Test and Fix the Envelope


By testing with a variety of predefined body poses, you can make sure that your characters envelope will deform properly in any circumstance. This way, you can avoid any undesired surprises when you start to animate. As long as you use the same character skeleton rig and naming convention, you can reuse these poses by simply dragging and dropping them on your characters to test the weighting of the envelope. 77. With any part of Dr. Bunsen selected, click Explore on the Select panel, choose Mixers, and then select RunBeckRun_Preset. You will use this action to help you test your envelope.

176 SOFTIMAGE|XSI

Tutorial 8: Character SetupBecks Envelope

78. With the action selected, choose Actions > Apply > Action from the Animate toolbar. 79. Fix any weighting problems you see. 80. Reset the character to its default pose by applying the Default_Stance_Beck pose.

Freezing the Envelope Weights


When you are finally satisfied with your weighting, you should freeze the weights to improve the performance of your scene. 81. Select each enveloped geometry in turn (body, pants, shirt, and shoes) and choose Freeze Weights from the Weight panel. This will empty the envelope operator stack, which leaves only the current state of the geometry.

Saving the Envelope Weight Values


Once the weighting is completed and you are happy with it, you can save a preset. This is useful in many situations, for example, when an animator needs to start animating a character that hasnt been perfectly weighted yetwhoever is refining and completing the weighting can save a preset which can then be applied onto the animated character. 82. Select the shirt. 83. Open the weight editor by pressing Ctrl+e. 84. Choose File > Save Preset. Give it a name and save the preset where you want.
Test your envelope weight preset

85. With the shirt selected, choose Deform > Envelope > Remove Envelope. 86. Re-envelope the shirt (choose Deform > Envelope > Set Envelope and pick the bones_and_other_deformers group). Right-click to end the Pick session. At this point, the shirt is enveloped but is missing all the weight modifications you made. 87. With the shirt selected, open the weight editor. 88. Choose File > Load Preset and select your preset. The weighting is restored, with all the modifications that you made.

Tutorials I 177

Section 5 Character Setup

Setting Limits on the Legs Joint Rotation


Multi-select both feet chain roots represented by the green spheres...

Although your character is now perfectly weighted, you still have to set joint rotation limits to prevent the legs (or other joints) from bending in unnatural ways (unless your character is a contortionist!). 89. In the Right view, multi-select both feet roots (represented by green spheres on the heels). 90. Straighten the legs (translate on Y - in Global or View)) to the furthest extension that you want the leg to reach without making them snap completely. 91. Select the bones named lfemur and rfemur (which are actually tibias) and choose Create > Skeleton > Set Minimum Rotation Limit. Youll see a little icon appear around the knees. Make sure that the Chain Joint Rotation Limit visibility option is on to get visual feedback on the rotation limits. 92. Multi-select both feet roots again and bend the legs to the maximum bent position you want. 93. Select the shin bones again and choose Create > Skeleton > Set Maximum Rotation Limit. Now when you move the legs, you see that you cant rotate them past these limits. 94. You can set rotations limits for the foot and toe bones as well. Conclusion In this tutorial, you have learned how to create an envelope and how to modify the envelope weight settings to control how the envelope is deformed by the movement of the skeleton. Envelope weighting is a key step in the art of character animation. For more information, see Chapter 4: Envelopes in the Character Animation guide.

...extend and bend both legs at the same time to find the min/max knee angle...

...then select both shinbones to set their min/max rotation limits.

178 SOFTIMAGE|XSI

Tutorial 9: The Walk CycleBeck Takes a Stroll

Tutorial 9: The Walk CycleBeck Takes a Stroll


Now that you have completed Dr. Beck Bunsens skeleton and envelope, its time to get him moving! In addition to classic animation tools, such as keying and the animation editor, XSI provides other excellent tools to help you animate your characters. These include the synoptic view, marking sets, transformation setups, and the rotoscope viewall of which you will learn how to use in the following tutorial.

This tutorial shows you how to: Create a synoptic view to easily select objects. Add a transformation setup for objects to easily manipulate objects. Create and use marking sets for objects to easily key their parameters. Use the rotoscope feature to bring up a reference image for the walk animation. Use the animation editor to edit the animation function curves.

Tutorials I 179

Section 5 Character Setup

Overview
1 Create a synoptic view of the character. 2 Create marking sets and transformation setups. 3 Import and use a rotoscoped reference image of a walk cycle.

Position the character and key parameters using marking sets. 5 Refine the walk motion in the animation editor.

180 SOFTIMAGE|XSI

Tutorial 9: The Walk CycleBeck Takes a Stroll

Part I Setting Up the Scene Before Animating


One of the first things you notice when you start animating a character is how easy it is to select the wrong control object or key the wrong parameter. Before you start animating in this tutorial, you will set up the scene so that you can easily select and key the different elements of the character. You will create a synoptic view to make it easier to select parts of your character, create transformation setups which will make it easier to activate specific transformation parameters on an object, and create marking sets which will make it quicker to mark and to key specific parameters on an object. 1. Load the scene called ANI_e2_Stroll from the Tutorial Project database.

Creating a Synoptic View of Dr. Beck Bunsen


When you create a synoptic view of your character, you can use an image of your character and define hot spots on the image which correspond to commands that select certain scene elements. You can also include additional commands such as saving keys. The synoptic view uses the synoptic editor and the scripting engine to interact with XSI.
Take a picture of your character

You will use a render region of your character as the basic image for your synoptic page so you may want to make the character smaller in screen so that the synoptic page is not too large. 2. In the viewport, dolly out to make your character smaller on screen and press the q key to draw a render region around the character. If you want to simplify the view, you can temporarily toggle the visibility of the chains, nulls, curves and implicit geometry from the visibility menu (eye icon) in the viewport. To avoid getting a black background, you can also select the Render > Region > Show RGB & Alpha option from the Render toolbar. 3. From the main menu, choose View > General> Synoptic Editor. In the synoptic editor, choose File > Import Picture from Region. A browser appears in which you can save the render region as a file. 4. Save the image into the Synoptic folder under the Tutorial Project, naming it something like my_synoptic_image. This image is inserted into the synoptic editor. If youre running XSI on Linux, you must use lower-case letters for the name when saving your synoptic page.

Tutorials I 181

Section 5 Character Setup

Create a hot spot for Becks left hand

5. Click the Draw Rectangle Area tool in the command bar of the synoptic editor and draw a rectangle around Becks left hand. 6. In the Link With text box in the command bar, enter LHAND. This is only a metatag name used for referencingyou can type anything you want in this text box. 7. Unhide the skeleton layer. 8. Hide the render region (Shift+q) and branch-select the left_hand object (the rings) in the viewport. Display the render region again (Shift+q).
Middle-click the shadow rings around the hand to branch-select the hand.

9. You will see the command you have just executed in the command box in the bottom left corner of the interface. Copy this command by highlighting it and pressing Ctrl+c.

10. In the Synoptic Editor, click the Scripts button and paste the command line between the two script lines by pressing Ctrl+v. The example below shows how your finished script might look.

182 SOFTIMAGE|XSI

Tutorial 9: The Walk CycleBeck Takes a Stroll

11. Click the Page button to go back to the synoptic image. You could continue setting similar hotspots over the image for the other hand, feet, etc. You could also add more functions, such as keying specific bones and marked parameters, but one command is enough for now to show you the concept of setting up hot spots. Sometimes you might find it helps to enhance an image using a paint program before using it in a synoptic view. This can emphasis where the hotspots are and what the related scripts might do.
Assign the synoptic view to Dr. Bunsen

A synoptic page can be applied to a single node or to a branch selection: in this case you will apply the synoptic page to the entire Beck model. Once a synoptic view has been assigned to an object, you can open the synoptic view by selecting the object and pressing F3. 12. Save the synoptic view by choosing File > Save in the synoptic editor. Save the HTML page in the Tutorial Projects Synoptic folder, naming it something like my_synoptic_page. Close the Synoptic View Editor when youre done. 13. To apply this synoptic page to Beck, branch-select the Beck model (enter B:beck in the Selection text box in the main command area and press Enter). 14. Choose Get > Property > Synoptic from any toolbar. In the Synoptic property editor that opens, you can give the synoptic page a name, such as Beck. Click the Path browse button (...) to load the .htm synoptic file that you just saved and close the Synoptic property editor. 15. The synoptic view was applied to the branch-selected Beck model so you can select any element of the Beck model again and press F3 to open the synoptic page. Click the hotspot you have created for the left hand to test the link. 16. Make sure that chains, curves, and implicit geometry are visible in the viewport. A completed synoptic view has been created for you to use in this tutorial. This is the one you will be using for keying your animation in the walk section of this tutorial. You will see that the image used for the completed synoptic view has been enhanced with additional graphics to make it easier to use.
Completed synoptic page for you to use.

17. To see this completed synoptic page, select the COG object (the ring around Becks ample waist) and press F3.

Assigning a Transformation Setup to Objects for Easy Keying


When keying an object, there is a good chance that you will always animate an object using the same parameters. For example, you often key the rotation of toe bones in the Y direction, so it would be great if this rotation could always be automatically activated when selecting a toe bone. Well, this is possible if you create a transformation setup for it. You will do this now for the left hand.

Tutorials I 183

Section 5 Character Setup

18. In the viewport, select the left_hand object and choose Get > Property > Transform Setup. 19. Select Translate as the Tool, View as its Reference Mode, and all three X/Y/Z axes. Close the property editor. Whenever you select your object, you will now activate the transform setup options. In the Transform panel, youll see that the Translate tool is active for all axes in the View manipulation mode. The transformation setups for the rest of the objects in the Objects_to_keyframe group have already been created for your convenience. Arent we nice!

Creating Marking Sets for Quick Keying


Another useful tool to help make keying quick and easy is the marking set. This lets you set up which parameters of an object should be marked for keying. Once you create the marking property, its easy to activate the marking set so that you can key the parameters in it. 20. Node-select the left_hand object again and click the Clr button beside the marked parameter list in the lower right of the XSI window to make sure nothing is currently marked. 21. Press Ctrl+k to open the hands Local Transform property page and mark the Position X, Y, and Z parameters by Shift+clicking or Ctrl+clicking on each parameter name. The parameter name changes to a yellow color to show that the parameter is marked.

Clears any currently marked parameters

Mark each Position parameter

22. To create the marking set, press Ctrl+Shift+m or choose Animation > Parameters > Create Marking Set from the Animation panel at the bottom of the window. A marking set property appears under the left_hand object, as you can see in the explorer. Now to key a position, you would activate the hands marking set by pressing Ctrl+m or choosing Animation > Parameters > Activate Marking Set and pressing the k (keying) key. 23. Select the chest_control object, activate the marking set.

184 SOFTIMAGE|XSI

Tutorial 9: The Walk CycleBeck Takes a Stroll

24. To view what is currently marked, left-click the triangle in the marking area, bottom right of the interface. Notice that only the rotation parameters are marked.
Select Chest Control object

You also want to mark the translation parameters for this object, so mark both the rotation and translation parameters for the chest_control object and save a new marking set. This will replace the original marking set. Marking sets for the other skeleton objects have all been created for your convenience. Again, were just too darn nice. When you supra-select some objects, you will see that the correct parameters are already marked. Not all objects have been given a marking set; for example, you dont need to create marking sets for the arm and leg bones because their animation is driven by inverse kinematics (IK). When you use inverse kinematics, the position of the effector at the end of the chain determines the rotation values of the bones.
Other tips and tricks
You can create a new layer by clicking the Layers button. To make a layer current, click this little area beside the layer name.

Here are a few more tips that will help simplify the keying process: Since the resolution of the shoes is a bit high, select all polygons on the shoe except for the sole and hide them (press h). Using the layer control, make the body geometry unselectable again. Then create another unselectable layer and call it other_unselectable. Move the spine objects, such as the vertebrae, the HipDepth and ChestDepth nulls, and the SpineCurve, to that layer so they wont be picked by mistake. You can do this by selecting the objects, choosing Layers > New in the Layers panel, then renaming the layer.

Click the KEY tab to access the Layer panel.

Tutorials I 185

Section 5 Character Setup

Use a different color for the arm and leg bones on the left and right sides to make it easier to differentiate between them, especially in the Right view. You could use the same color scheme that the synoptic page uses: right side is red and left side is green. To do this, click the palette icon at the bottom of the toolbars to open the palette toolbar. Select a color in the palette, then pick the corresponding bones.

Click this icon or press Ctrl+4.

Select a color, then pick the bones.

Create six horizontal lines as a reference when positioning your character during the animation. Choose Create > Curve > Draw Linear from either the Model or Animate toolbars and draw three in the Front view and three in the Right view. For each set, position one at the head level, the other at the hips, and the last one on the ground.

Position lines at the head, the hips, and on the ground.

186 SOFTIMAGE|XSI

Tutorial 9: The Walk CycleBeck Takes a Stroll

Part II Making Dr. Bunsen Walk


Although hes not a baby anymore, Dr. Bunsen is taking his first steps. You will now see how all the preparation work youve done will make the animation fast and easy. To make him walk, you will: Use an animators walk cycle reference in a rotoscope view. Move the appropriate elements and key their parameters. Use the animation editor to adjust the function curves so that his walk is just right. Physically speaking, you can define a walking motion as letting oneself fall by leaning the upper body forward, then moving one foot ahead just in time to prevent falling over. As a result, a walk is a whole body movement, not just the legs and feet. Head, shoulders, hips, arms and hands are also involved. Emotionally speaking, a characters walk cycle always displays their mood and temperament. Sometimes the walk is a bit clumsy, sometimes in a hurry, or in a happy or depressed state of mind. What will Dr. Bunsen be like? You alone have the power to decide. Remember that when creating cyclical animation, you need to be careful to not repeat the motion identically each time. You might need to repeat the cycle a few times in a shot, but you must add some variations to erase the obvious cyclical pattern or it wont look natural. With all this in mind, lets do it!

Rotoscoping a Walk Reference Image


Weve provided a set of poses at different stages of a walk cycle as a visual reference. It breaks down the walk motion in time. You will use the rotoscope feature to bring the image into the background of a viewport. If you have already animated many walk cycles, you can probably create your animation without the use of this image.
Walk cycle reference image

25. Select the Right view in viewport B, maximize it, and choose Rotoscope from the viewports display type menu.

Tutorials I 187

Section 5 Character Setup

26. In the rotoscope property editor, choose New > New From File and select the walk_reference image from the Picture folder of the Tutorial_Project database. Close the property editor. 27. If desired, you can unclutter the view by pressing g to hide the grid. 28. By panning and zooming (press z), match as much as possible the size and hip position of the character to the first pose on the far right of the reference image.
Rotoscope lock

Once youve matched things up, lock the rotoscope image by clicking on the magnifying glass icon at the top of the viewport.

Keying the Walk Animation


Its finally time to animate Beck going for his stroll. Although he could walk very quickly or slowly, you will start out animating a full walk cycle (left and right steps) over the duration of approximately one second. The rotoscoped image represents one step only, which is half of the walk cycle. Each pose should be spaced out as follows: Pose 1 at frame 1 Pose 2 at frame 5 Pose 3 at frame 9 Pose 4 at frame 13 Pose 5 at frame 17

Use the synoptic page to select character elements

29. Set the timeline to frame 1. 30. Open the synoptic page by selecting the COG object and pressing F3. Within the synoptic page click on the COG button and notice that the transformation setup for the COG object is applied.

188 SOFTIMAGE|XSI

Tutorial 9: The Walk CycleBeck Takes a Stroll

Select and rotate the upper body. Select and position the COG. Select and place the feet. Relax the hands.

Select and rotate the feet and toes.

31. In the Right view, align Becks COG with the hips of the character in the reference image (shown in the illustration on the following page). Do not move the Beck parent null since it does not save its transformations. You will use this null to position the animated character in global space. Make sure that the ChldComp (child transform compensation) button on the Constrain panel is off. There are different buttons in the synoptic view for positioning the feet and for rotating the feet. Refer to the image above to make sure you pick the correct button. 32. In the Front view, branch-select the left hand and bring it down along side the body in a natural position. Adjust the up vector if necessary. Repeat this step for the right hand. 33. In the synoptic view, click the relaxed hand icon for both the right and left hands. The associated synoptic script applies a preset pose to the hand.
Use the synoptic page to position the elements

34. Back in the Right view, use the synoptic page to select different skeleton components and move them to match the first pose of the reference image. Match these skeleton elements using the following illustration as a guide:

Tutorials I 189

Section 5 Character Setup

- The position of the feet and hands. - The rotation of the feet and toes. - The rotation of the upper body. While it may be obvious, make sure to move the left arm forward when the left leg is behind, and vice versa! Lower the hips if the feet cant reach when you are trying to match them, but remember that the image is just a visual reference to help you position the character. The proportions of your character are slightly different to the proportions of the character in the reference image. You may want to temporarily hide the geometry layer so that you can clearly see the skeleton elements.

Hands

COG

Feet Drag the COG circle to match the pose, then position the feet and hands. The resulting position match of the character (envelope hidden) and the reference pose.

Key everything at once!

35. Once youre satisfied with Becks first pose, click the Key All button on the synoptic page. This command saves the marked parameters (in this case, transformation parameters) of all the objects belonging to the Objects_to_keyframe group (except for the hips_control and chest_control objects, which will be keyed independently later).

190 SOFTIMAGE|XSI

Tutorial 9: The Walk CycleBeck Takes a Stroll

You could have also done this manually by multi-selecting the objects, pressing Ctrl+m to activate their marking sets, and pressing k to set a keyframe for each of them. If you open the Synoptic Editor and load the Beck_synoptic_page, you can go into the script page to see what commands are executed with the Key All button.
Create the next pose

36. Set the timeline to frame 5. 37. Unlock the rotoscope image and pan the camera to position Beck close to the second pose on the reference image, then lock the image again. Match the foot that is on the ground from the first pose to the same foot on the next pose to avoid an undesired sliding effect. Make sure to keep the knee slightly bent when the foot is flat on the ground. Its important to realize that you are using the pan tool to move the camera over the next pose: you are not actually translating the character when you realign the camera view over the rotoscope image.

For the second position at frame 5, align Becks left heel to the green heel of the second reference pose.

Tutorials I 191

Section 5 Character Setup

38. Continue this process of positioning the character to match the rotoscope image and keying until you save all five poses. Make sure you dont forget to move to the next frame in the timeline before going on to the next pose! 39. When youre done with the one full step, complete the second step. You can match the character up with the other side of the body (black with red outline) in the same reference image, but skip pose 1. Associate the following poses at these frames: Pose 2 at frame 21 Pose 3 at frame 25 Pose 4 at frame 29 Pose 5 at frame 33

Using the Animation Editor to Adjust the Motion


Although youre finished the walk cycle, its not quite right yet. To make it better, you will clean up the function curves in the animation editor. If you like, you can load the ANI_e2_Stroll_Rough_Animation scene from the Tutorial project. This is an intermediate scene with a finished walk cycle, ready for you to clean up. 40. Select the COG object and press 0 (zero) to open the animation editor and display the fcurve for the COG object. Lock the animation editor by clicking the lock icon in its command bar. 41. Select the posy curve (translation on the Y axis), which represents the up and down motion for each step. Move the points on the curve at the crests and the ebb (low) points so that there is less of a difference between them. This smooths out Becks walk so that he doesnt bob up and down with each step.

192 SOFTIMAGE|XSI

Tutorial 9: The Walk CycleBeck Takes a Stroll

Click the lock icon to keep the animation editor from updating when you select another object. Click the update icon to update the animation editor when you select another object.

Reduce the difference between the highs of the curve and the lows. The ghost curve in gray shows the original curve before editing.

You can exaggerate the up and down motion if you want a more cartoon effect, as long as the legs dont abruptly extend. You can also slightly offset the posz curve (translation on the Z axis) to the left or right for interesting variations of the hip motion (hip anticipation or hip delay).
Eliminate sliding of the feet

Although you placed the feet correctly when you changed poses, there will always be a little bit of sliding of the feet. You will correct this now. 42. Select the left_foot. Keeping the lock icon active, click the update icon (beside the lock icon) in the animation editors command bar. This updates the editor to display the left foots curves. When the foot is on the ground it should not move horizontally (slide). Look at the Z axis (posz) curve: if it has a slope when the foot is down, then there will be some Z movement of the foot while it is on the ground. In the next steps, you will change the two adjacent keys defining that curve segment so they have the same value and slope. This means that the slope between the keys will be flat (a zero slope) and there will be no movement. 43. Select the first key and copy the value in the Value box in the animation editors command bar (highlight it and press Ctrl+c). 44. Select the next key and replace the value in the Value box with the value copied from the first key using Ctrl+v.

The foot slides because its posz curve is not flat.

Tutorials I 193

Section 5 Character Setup

45. Rectangle-select the two keys and choose Keys > Zero Slope Orientation in the animation editors command bar (or press Shift+0).

Slope between two keys shows that they have different values, resulting in some movement.

Keys with zero slope. A flat curve between points means that there is no movement; in this case, no sliding.

The same principle applies for the rotation of the feet and toes. Make sure they have no motion when they are supposed to be flat on the ground.

Saving Keys on Specific Elements


If you need to save keys on individual components, you can do this easily using the marking sets that you previously assigned to the rig components. This makes it easy to key only the parameters you want (which are the ones in the marking set).
Swing those hips ... a little

When the foot touches down on the ground, the hips should rotate a bit in the same direction to allow for the movement. The shoulders (upper body) should rotate in the opposite direction. For the poses which occurs on frames 5 and 21 (left and right foot), you will rotate the hips and chest in the appropriate directions. 46. Set the timeline to frame 5. 47. Set viewport B to display the Front view. 48. Select the hips_control object. Using the image on the left as a reference (character is facing you), rotate the hips slightly clockwise. 49. Press Ctrl+m to activate the marking set for the hips_control object. This marks the parameters in this set. Open the marked parameter list (see below) to see which parameters in the hips_control marking set are marked.
Stepping foot

194 SOFTIMAGE|XSI

Tutorial 9: The Walk CycleBeck Takes a Stroll

Indicates that the marking set is active.

Click to open the marked parameter list.

50. Press k to save a key for each of these marked parameters.


Rotate the upper body the other way

51. Select the chest_control object and activate the marking set (Ctrl+m). 52. Rotate the chest_control slightly in the counterclockwise direction (opposite of the hips) and press k to save a key for the marked parameters.
Do it again on the other side

53. Go to frame 21 where the other foot steps down. This time, reverse the rotation so that the hips rotate in a counterclockwise direction and the chest rotates clockwise. 54. Save a key for each of these positions (press k for each position).
Adjust the hands and COG if necessary

When you were rotating the hips and chest, you may have noticed that the arms and COG werent quite right and the arms may have extended abruptly. If this has happened, you may want to adjust the hand positions and the COG at frames 5 and 21. 55. Select the appropriate object (left_hand shown in the following illustration, for example) and activate its marking set (press Ctrl+m). Then make the adjustments and set keys (press k). To open a marking set property page, open an explorer and expand the objects tree, then click the orange Marking Set icon (it is a custom parameter set).

Tutorials I 195

Section 5 Character Setup

Left hand is adjusted. Its marking sets property editor is open for editing.

Conclusion Using many helpful tools to automate the process, you have animated a character in the most basic way: a walk cycle. Now that you understand the basics of character animation, you can use the rig and the tools you used in this tutorial to animate Dr. Bunsen in more sophisticated ways. Perhaps a little late-night dancing in his laboratory? For more information, see the following chapters in the XSI user guides: Chapter 2: Tasks for Any Type of Animation in the Animation guide (marking and marking sets) Chapter 4: Animating with Keys in the Animation guide Chapter 3: Editing Function Curves in the Animation guide Chapter 2: Tools for Making Character Animation Easier in the Character Animation guide (other useful tools for character animation) Chapter 5: Rotoscopy in the Interface and Tools guide Chapter 2: Transformations in the Transformations guide (transformation setups) Chapter 12: Synoptic Views in the Customization guide

196 SOFTIMAGE|XSI

Section 6

Advanced Animation

Tutorials I 197

Section 6 Advanced Animation

Tutorial 10: Introduction to the Animation MixerBeck is on the Move


The animation mixer works with the same logic that you would find in a nonlinear video editing system. Its a tool that gives you high-level control over animation by letting you position, cycle, scale, warp, bounce, and mix the weights of actions. The animation mixer uses actions, which are different types of animation segments stored in a package. You define (store) an action once and then you can apply it as many times as you like. You can create an entire library of actions, like walk cycles or poses, and copy them from one model to another. After you create an action, you load it as a clip onto a track in the animation mixer. In the mixer, you can sequence the actions, mix the weights of the actions against each other, or create compound actions that contain other actions. Now that Dr. Beck Bunsen has made his first steps, you will encourage him to go farther by using the animation mixer.

This tutorial shows you how to: Create an action source from keyframed animation. Create an action clip from the source in the mixer. Scale, cycle, and hold the action clip. Create transitions between action clips and mix their weights.

198 SOFTIMAGE|XSI

Tutorial 10: Introduction to the Animation MixerBeck is on the Move

Overview
1 Create an action source from the animation. 2 Load the source into the mixer to create an action clip.

4 3 Create transitions between the clips.

Mix the weights of the clips where they overlap in time.

Tutorials I 199

Section 6 Advanced Animation

Storing Transformations in an Action Source


You can think of actions as encapsulated animations. You can create actions for transformations, for marked parameters, or for animated parameters. For any of these options, you can store three types of actions: Current: the current static values to create unanimated poses. Fcurves: those parameters that are animated by keys. All Sources: those parameters that are animated in any way, including function curves, expressions, constraints, and so on.
Marking parameters for creating action sources

Creating actions based on marked parameters can increase performance because the actions dont contain unnecessary parameters. The list of parameters included in the action is also easier to manage when working with templates. When you transform an object, its transformation parameters are marked automatically, but you should always check the Marked Parameter list to make sure that the correct parameters are marked. You should always mark local transformations when storing actions. Actions that contain local transformations are easier to work with. Remember that Global always overrides Local! Before you store an action, always check that the marked parameter box shows local, not global. For example, kine.local.pos and not kine.global.pos. 1. Open ANI_e3_Beck_On_The_Move from the Scenes folder of the Tutorial_Project. Play back the scene to see the animation. Beck is walking, with the beginning and ending of the two steps on his left foot. You will store this walk cycle in an action source.

200 SOFTIMAGE|XSI

Tutorial 10: Introduction to the Animation MixerBeck is on the Move

2. Select the Animated_Objects group from the explorer. The group contains the animated skeleton and control objects that set Dr. Bunsen in motion.

3. Choose Actions > Store > Animated Parameters - Fcurves from the Animate toolbar. This stores an action source of all the parameters that are animated with function curves. In this case, you dont need to mark the parameters because you want to store the animation of all the parameters in this group.

4. In the Store Action dialog box, enter Walk in the Action Name field and click OK. - You are keeping the Remove Original Animation option selected because you want to deal only with actions in the animation mixer: this option will remove all the function curves from the character and store the animation in the new action source.

Tutorials I 201

Section 6 Advanced Animation

- Keeping the original animation on the character would be practical if, for example, you wanted to break down an animation into different actions, such as storing the arms animation in a separate action from the legs. - Although you could select Add Source as a Clip in the Mixer to automatically create an action clip, you will see in the next step how to do this manually. When you use the mixer later on your own, you will find this is a useful shortcut to save the process of loading sources into the mixer as soon as you create them. The animation is disconnected from the character and becomes a source in the action library under the models Mixer > Sources > Animation folder. In this case, the model is the Scene Root.

Loading the Action Source in the Mixer to Create a Clip


5. Open the animation mixer in any viewport or press Alt+0 to open it in a floating window. 6. Select any object that is a member of the Animated Objects group and click the Update icon in the mixers command bar. This opens the mixer of the model to which the currently selected object belongs (there is only one mixer per model). In this case, the Beck object belongs to the Scene Root model.

Beck object belongs to the Scene Root model.

202 SOFTIMAGE|XSI

Tutorial 10: Introduction to the Animation MixerBeck is on the Move

7. Position the mouse pointer near the start of the first track, then right-click and choose Insert Source. Pick the Walk source from the pop-up explorer. An action clip is created from the source and is placed on the track at the point where you clicked. The clip is represented by a green box. You can also drag an action source from the models Mixer > Sources > Animation folder in the explorer and drop it on an animation track in the mixer. 8. Enter 0 and 42 in the numeric boxes at the beginning and end of the mixers timeline and press Enter. The mixer scales its timeline to show only frames 0 to 42 (see below).
Enter 0 and 42 in the start and end boxes.

Click the animation track where you want a clip to start.

Action clip is created from the source.

9. Take a peek under the hood in the explorer to see what is put where in the models Mixer node.

Mixer filter.

Existing action sources.

Walk action source you created. Walk action clip on the mixers first track.

Tutorials I 203

Section 6 Advanced Animation

Move the clip on the track

10. Move the mouse pointer over the action clip. Take a look at its icon as you toggle the space bar. - The double arrow icon represents the manipulation mode (select and move the clip). - The arrow icon represents the selection mode (only select).
Manipulate mode Select mode

11. Click the Walk clip to select it in manipulation mode and drag it where you want on the animation track (such as to frame 0). To position a clip at a precise frame on the animation track, move the playback cursor to that frame, select the clip, and choose Edit > Start At Current Frame from the mixers command bar.
Loop the clips animation

12. Right-click the clip and choose Set In/Out Loop. This sets loop markers at the start and end frames of the clip so that only its frames of animation are played back. 13. Click the playback button to see the animation of Beck walking, just as he did before you stored an action source of this animation.

Manipulating the Action Clip in the Mixer


The mixer provides a nonlinear approach to animation. Not only can you move action clips in time, but you can also scale them to change the speed of the animation, cycle them to repeat animation, or hold an animation value for a certain length of time.
Scale the clip

14. Click in the middle of the right end of the clip so that an orange box appears. Drag the orange box to the right so that the clip is about double its original length. There are scale, cycle, and hold handles (orange boxes) at either end of a clip. 15. Set the in-out loop for the clip again and play the animation. Notice how Beck is moving half as quickly as when the clip was its original length. This is because the same animation is now being stretched over twice the number of frames.

204 SOFTIMAGE|XSI

Tutorial 10: Introduction to the Animation MixerBeck is on the Move

Cycle the clip

16. Click in the bottom-right corner of the clip so that an orange box appears, then drag that box to the right to add the same number of frames (at least) as the original clip has. This creates one cycle for the clip. Cycling basically repeats the whole motion and you can add as many cycles as you want, depending on how far you stretch the clip. 17. Delete the cycle by dragging the corner back to the left so that the clip returns to its original length.
Hold the values of the clips last frame

When you play back the animation, the mixer holds on to the last values registered in its buffer. When there are no clips playing at the current frame, the mixer will still display the values corresponding to the last frame played. 18. To test this out, scrub the playback cursor back and forth over the clip and then quickly move it past the clip to a blank area on the mixers track. Youll see the character stay stuck in a pose from one of the clip frames. Outside the clip, the mixer cannot determine the values of the parameters packaged in that clip, so it keeps the last values registered in the buffer. If you need to control your character beyond the length of the clip, you can hold the first or last frame of a clip over any number of frames. 19. Drag the upper-right corner of the clip so that an orange box appears and drag the orange box to the right for about 10 or 20 frames. Notice how the character updates to reflect the latest set of values. In this case, the hold option keeps the values of the last frame of the clip for the duration of the hold segment.
Reset the clip to its original state

20. Right-click the action clip and choose Time Properties or press Ctrl+t. 21. On the General page, bring the clip to the beginning of the timeline by entering 1 as the Start Offset. 22. Reset the clip to its original size by entering 1 as the Scale.

Tutorials I 205

Section 6 Advanced Animation

23. On the Extrapolation page, set Extrapolation After to No Contribution to remove any held values, cycles, or bounces from the clip.
Select No Contribution to remove any hold, cycle, or bounce from the clip.

24. Enter 1 in the scene timelines Start text box. Then position the mouse cursor over the mixer and press P to synchronize its Start value with that of the scenes timeline. In the mixer, an offset of 2 is added at the start and end of its timeline when synchronizing with the scenes timeline.

Enter 1 as the Start value for the scene. Then move the mouse over the mixer and press P to synchronize the mixer with the new setting of the timeline.

Creating Transitions between Action Clips


Transitions provide a way to blend the animation from one clip to another. You can create either Standard or Cardinal transitions, or use Bridge transitions for specific types of motions (youll use this in the advanced mixer tutorial later). A Standard transition is a good all-purpose transition. A Cardinal transition may provide a smoother transition with some types of animation. 25. Load the ANI_e3_Beck_On_The_Move_Pick scene from the Tutorial project. 26. Select any part of the character and press Alt+0 to open the animation mixer. The Walk clip has been added to the animation mixer for you. 27. Open a browser (or press 5) and open the Presets folder of the tutorial database.

206 SOFTIMAGE|XSI

Tutorial 10: Introduction to the Animation MixerBeck is on the Move

28. Drag and drop the Beck_Picking_Up preset on Track 1 in the mixer, then drag and drop the Beck_Walk_After_Picking_Up preset on Track 2. (Note that the first track is Track 0).

Line up the clips

29. Drag the playback cursor to two or three frames after the Walk clip and select the Beck_Picking_Up action clip. 30. From the mixer command bar, choose Edit > Start at Current Frame. The action clip is aligned so that it starts at the playback cursors position. 31. Move the Beck_Walk_After_Picking_Up clip so that it starts after the Beck_Picking_Up clip. The clips in the mixer should be arranged as in the image below.

Beck_Picking_Up Drag this clip to start 3 frames after the end of the previous one.

Tutorials I 207

Section 6 Advanced Animation

Scrub the animation and notice how Beck jumps from one position to the other as you move from one clip to the other. The Beck_Picking_Up action clip contains a static pose, which means that it has no animation. You will see how to create a static pose action clip a bit later in this tutorial.
Create a standard transition

32. From the mixer command bar, choose Mix > Standard Transition Tool and pick the clips in this order: Beck_Walk, then Beck_Picking_Up, and finally Beck_Walk_After_Picking_Up. Rightclick to end the transition picking mode. The standard transitions appear as purple bars above and between the clips. Scrub the animation and notice how much smoother the animation is between the clips.

The transition bars between the clips.

Align the clips again

33. Align the start of the Beck_Walk_After_Picking_Up action clip with the end of the Beck_Walk_Clip action clip. 34. Move and scale the Beck_Picking_Up action clip so it overlaps both clips as shown in the following image. Its timing will not be affected since it represents a static pose with no animation.

208 SOFTIMAGE|XSI

Tutorial 10: Introduction to the Animation MixerBeck is on the Move

With the clips aligned like this, you are using the static pose as a transitional clip between the walk clip and the picking_up clip.

35. Press Shift, select the first and last clip in the sequence, right-click one of the clips, and choose Set In/Out Loop to loop the animation from the first to last frame of the three clips. Play the animation and take a look at the results. If you want to create a smoother transition by using Cardinal transitions, you must first delete the existing standard transitions. To do this, right-click each purple transition bar and press Delete. Then press c to activate the Cardinal transition tool (or choose it from the Mix menu) and pick the clips in the same order as you did with the standard transitions.

Mixing the Weight of Action Clips


Mixing the weights of clips controls how much each clip contributes to the animation at a certain frame. Clips must overlap in time to be weighted against each other. You will create a static pose and change its weight so that it contributes to the animation in different amounts at different frames.
Save a static pose of Becks head rotation

Create a static pose on Becks head so that it tilts up as he kneels down. 36. Select Becks head bone (the rectangle that just slightly above his head). 37. Move the playback cursor to the frame where Beck is kneeling down (select a position at around frame 35 as shown in the following illustration).

Tutorials I 209

Section 6 Advanced Animation

38. Select only the Rotate Z button in the Transform panel (make sure you are in Add mode) and rotate the head so that it tilts up a bit (as shown in the illustration).
Select Becks head bone and rotate it in Z so that hes looking up in the kneeling position.

Dont forget to rotate in the Add mode.

39. Because transformations are marked automatically when you select them, you can choose the Actions > Store > Marked Parameters - Current Values command to store a static pose of the current rotation values. Name the static action source Heads_Up.
Mix the action clip weights

40. Load the newly created Heads_Up action on another track in the mixer. To mix the weights of different clips, their animation values must be driving the same objects. You can easily verify which objects are driven by a clip by choosing Clip > Select Driven Objects. 41. Select the Beck_Picking_Up clip and choose Clip > Select Driven Objects. Make sure that the head bone is one of the objects driven by the clip, which it should be. 42. Align the Heads_Up clip with the Beck_Picking_Up clip and make it the same length. The mixer now interpolates (averages) between the weights of the two clips to determine the Z rotation value for the head.

Align the Heads_Up clip with the Beck_Picking_Up clip.

210 SOFTIMAGE|XSI

Tutorial 10: Introduction to the Animation MixerBeck is on the Move

43. Click the s button at the left end of each track to solo each clip in turn. This lets you see each clips contribution individually to the heads rotation on Z. Deactivate the solo button for the tracks when youre done checking whats in the clip. 44. Scrub the playback cursor before and after the beginning of the Heads_Up clip. Notice how the head snaps into two different positions. 45. From the mixer command bar, make sure View > Weight Curves is activated. This displays red lines on each clip that indicate their weight value, which is 1 (100% weight) by default.
Weight slider

At the right end of each track, there is an animatable weight slider that lets you set and key different weights at different frames. 46. With the playback cursor at the beginning of the Heads_Up clip, drag the weight slider at the end of this clips track so that the weight value is 0 (zero). Click the green animation icon beside the weight slider to save an initial key of this weight value at this frame. 47. Move the playback cursor to the middle of the Heads_Up clip. Drag the weight slider up to 1 and click the animation icon again to save another key.
Move the playback cursor to the middle of the Heads-Up clip. Click to key a weight value of 1.

Animation icon

48. Finally, move the playback cursor to the last frame of the Heads_Up clip, bring the weight back to 0 and save another key. You have just created a weight curve that dictates how much influence the Heads_Up clip has for the duration of the clip. In this case, its an ease-in/ease-out weighting.

Tutorials I 211

Section 6 Advanced Animation

Play back to see the final animation and notice how his head rotates upwards as he kneels down.

The head rotation value defined by the Heads_Up clip is blended with the other clips. If you want Beck to tilt his head up even more, simply edit the weight curve you have just defined. 49. Right-click the Heads_Up clip and choose Animation Editor. 50. In the animation editor, increase the value of the middle point of the weight curve (simply move it up).

212 SOFTIMAGE|XSI

Tutorial 10: Introduction to the Animation MixerBeck is on the Move

Preset weights

In addition to weighting a clip manually, there are some preset weights of common curves that you may want to use. For example, to create the weight curve you just weighted manually, you could right-click on the Heads_Up clip and choose Preset Weights > Gaussian[0 > 1 > 0]. This sets the curve with these weight values.

Conclusion You have learned how to store action sources and create clips in the animation mixer so that they can be used for high-level animation. You used the animation mixer in many basic ways that allowed you to manipulate the animation in a nonlinear fashion. You also created transitions between clips and animated the weight of a clip to control its effect on the final animation. You were using the power of the mixer to combine different animation pieces together in meaningful ways. Now that youre familiar with the basics of using the mixer, you can go on to the advanced mixer tutorial. For more detailed information on the topics covered in this tutorial, see these chapters in the Nonlinear Animation XSI user guide. Chapter 1: Chapter 2: The Animation Mixer Chapter 3: Actions

Tutorials I 213

Section 6 Advanced Animation

Tutorial 11: Advanced Animation MixerBeck All Mixed Up!


If you completed the previous tutorial, you now have a taste of what the animation mixer can do. You will continue to use the mixer in this tutorial to offset your animation, to create different types of transition, to create cycles, and to modify the original animation in the action source. One of the strengths of the mixer is the flexibility it gives you to modify exactly what you want: You can modify the action clips on top of the original animation in the source, without altering the data in the source itself (such as when you create an offset) You can modify the animation in the source directly, which permanently changes the animation. You can bake the final animation result from your mixer to create a new action source. This produces a single source which reflects any modifications you made to the original clips and any transitions you created between the clips. You will continue to modify Becks animation, focusing on different types of walk cycles. This tutorial shows you how to: Create offsets on action clips in different ways. Bake the offset clip to create a new action source. Make permanent changes to action sources. Find an exact animation cycle within an action clip and create more cycles using it. Use a pose offset to create spatial continuity between two action clips. Create a bridge transition between two types of walk cycles. Change the gain of different animation frequencies to add variation to a walk cycle.

214 SOFTIMAGE|XSI

Tutorial 11: Advanced Animation MixerBeck All Mixed Up!

Overview
1 Offset a clips values. 2 Modify the original action source.

Cycle a clip with an offset.

4 5 Offset poses with the help of ghosting.

Bake all the changes into a new action source.

Create a bridge transition between clips.

Tutorials I 215

Section 6 Advanced Animation

Offsetting a Clips Values


The animation mixer works with all original fcurves that are packaged in a clip. The data from these fcurves can be modified in a non-destructive fashion, which means that you can go back to the original values at any time. In the following section, you will modify the transformation values of a component of the characters rig to adjust its motion. 1. Load the ANI_e4_Beck_Mixed_Up scene from the Tutorial Project folder.
Select the COG object.

2. Open the animation mixer, select any object on Beck, and click the Update icon in the mixers command bar to load Becks mixer. 3. In the mixer, youll see a walk cycle clip. Scrub the playback cursor over the action clip until one of Becks legs is fully straightened (such as the left leg at frame 11).
Set an offset map on Becks COG position

Select translation in Y in Global space and move the COG down.

In this extreme position, the leg snaps a bit. You can fix this problem by moving Becks body center down a little in global space and saving an offset for this new position. Remember that the parameter you are offsetting must be part of the clip or there is nothing to offset. Although youre moving the body center in global space, by default the offset will be on the local translation parameters, not global. 4. Select the COG object (ring around his hips) and select Translation Y in Global manipulation mode. Move the COG down a bit until the extended leg is a little bit bent. You need to have Child Transform Compensation turned off (ChldComp button in the Transform panel) so that the hierarchy beneath the COG will react properly.

Offset represented by a yellow bar on the clip.

5. Click the Offset Map button on the mixers command bar. You have just created an offset of the COGs Y position on top of the original animation, which is a type of clip effect. All clip effects indicate that the clips values have been changed from the original animation. A clip effect is represented by a yellow bar on top of the clip. 6. Scrub the playback cursor and notice how Becks COG remains lower for the entire length of the clip.

216 SOFTIMAGE|XSI

Tutorial 11: Advanced Animation MixerBeck All Mixed Up!

Change the offset values directly

The clip effect you created with this Offset Map command has modified the animation of the COG objects Y position. You will open a property page for the clip to see the way this data has been applied to the COG object. If you know the value you want to use for an offset, you can enter it directly in the clips Instanced Action property editor instead of using the Offset Map command. 7. Right-click the clip and choose Clip Properties. In the Instanced Action property editor that opens, click the Clip Item Information tab. 8. Click the Clip Effect column heading to sort the data in this column so that the following clip effect expression is displayed (you may need to resize the property editor to see the Clip Effect column).

Notice that an offset was created for the COG.kine.local.posy parameter. The word this (in the Clip Effect column) represents the value of the current frame, so the expression says that for whatever value is current, offset it with the specified number. A straightforward number without the this statement would override the current value with a constant value throughout the clip. 9. Enter a new offset value and watch the COG update in the viewport. Keep the clip property editor open for the next part.

Tutorials I 217

Section 6 Advanced Animation

Setting Offset Effect Keys


The previous section showed you how to create an offset that remained in effect throughout the clips duration. The following steps show you how to set offset keys on a parameter at different frames, creating an animated offset for the clip.
Create the offset effect

10. Select the clip and choose Effect > Create Offset Effect from the mixers command bar to create the offset effect.
Select the head bone and rotate it to any position on its Z axis.

When you do this, a function curve is created and all parameters in the clip (except the ones you have already offset) are assigned a this+(param) expression. Now you will animate the heads up and down movement and set keys on the offset values of the parameters involved: 11. Select the head bone and activate the Rotate Z axis in Add mode in the Transform panel. 12. Move the playback cursor so that its somewhere on the clip and rotate the head as you like. 13. Right-click the action clips yellow bar and choose Set Offset Key - Changed Parameters. This sets a key using only the parameter values that have changed since you created the offset effect. Go to other frames within the clips range and save as many keys as you like.

218 SOFTIMAGE|XSI

Tutorial 11: Advanced Animation MixerBeck All Mixed Up!

View the offset function curve

The function curve representing the offset is updated with the keys that you added. 14. To view the offset curve in the animation editor, select the clip and press 0. Expand the Action Clip node and select the head_rotz.param parameter. Frame the fcurve in the window by pressing f. Choose View > Selected Parameters in the animation editor to see only this parameters curve in the graph area (The View menu on the right above the fcurve section).

The fcurve that is created depends on how you animated the head and set offset keys. In this case, the fcurve represents the repeated motion of Becks nodding head.

15. Modify the shape of the fcurve to change the offset. Remember that the values in this fcurve represent the offset from the original animation, not the parameters actual values.
Delete all clip effects

16. Delete all the offsets (clip effects) you created by right-clicking the clips yellow bar and choosing Remove Effect. You can delete a clip effect at any time to restore the original animation. As mentioned before, all clip effects are saved on top of the clip and they do not alter the animation in the action source.

Tutorials I 219

Section 6 Advanced Animation

Permanently Modifying an Action Source


One of the big advantages of action clips is that you can modify them without affecting the original animation, but there are times when you want to change the animation contained in the source itself. When you do this, all clips that have been created from this source are updated with the new information, as well as any subsequent clips that you create from this source. Changing the sources animation is destructive, a one-way ticket kind of change. You should make a duplicate of the source before you change it so that you can go back to the original animation if you need to. Another way to save this information would be to save a scene so you could also reload it to restore the original animation values, but having a duplicate source is faster and easier.
Duplicate the action source first

Select Mixers Only from the Filter menu to show only the models Mixer nodes in the explorer.

17. In the explorer, select the Walk action source under the Scene Roots Mixer > Sources > Animation folder, as shown on the left. Select the Mixers Only filter in the explorer to quickly find the action sources. 18. Press Ctrl+d to create a duplicate. Rename the duplicated source by pressing F2 and entering a new name (such as Walk_original).
Select the Walk source, then press Ctrl+d to duplicate it.

This duplicate source contains all the original animation from the Walk source. You are now going to modify the curves of the Walk clip source in the mixer, which will permanently change the fcurves for the Walk source. If you need to get back to the original animation, you would need to load the Walk_original clip which you have just created.

220 SOFTIMAGE|XSI

Tutorial 11: Advanced Animation MixerBeck All Mixed Up!

Change the sources function curves

19. Right-click the action clip in the animation mixer and choose Source to open the Source property editor. 20. Click the Item Name column heading to sort the parameters alphabetically. 21. Select head.kine.local.rotz and click the Edit Source Data button to access the sources function curves. 22. When the animation editor opens, choose View > Selected Parameters (or press 9) to see only this parameters curve in the graph area. 23. Press n to activate the Select and Move Curve tool, then move the fcurve up and down. Notice how Becks head rotation is updated in the viewport. 24. Press f to frame the curve in the fcurve editor. You can also access the sources function curves via the explorer by opening the models Mixer > Sources > Animation folder and clicking the little running man icon beside the source you want to modify.
Add keys to the sources function curves
Select the rings around the left hand

In addition to directly modifying the sources function curves in the animation editor, you can also save keys on these fcurves by using the Action Key button in the animation mixer. 25. Bring the playback cursor to frame 21, where the left hand of the character is at its highest point. 26. In the viewport, branch-select the control icon rings around Becks left_hand. You can also enter B:left_hand in the Selection text box in the main command area. 27. Move the hand up a bit and click the Action Key button on the mixers command bar. 28. Go to frame 26, adjust the left_hand again as you like, and click the Action Key button again. You have just modified the sources fcurve directly by adding two keys on it. These new keys are now a permanent part of the clip source. If the source is used again to create another clip, the new clip would also contain these modifications.

Tutorials I 221

Section 6 Advanced Animation

Cycling an Action Clip


Cycling a clip is something you will probably do frequently using the mixer. However, when you cycle a clip that contains a character animated in space (such as Beck walking from point A to B), the character snaps back to its original position at the beginning of each cycle. Follow these next steps to learn how to find cycles, trim clips, and set cycle offsets.
Find the cycle

To cycle a clip properly, you must first find the exact cycle within the animation. To do this, you must select objects in the animation that have a cycle, although you dont need to use objects whose parameters are part of the clip. As long as the objects have a cycle in their animation, you will be able to use the Find Cycles command to identify the length of the cycle. In the case of Becks walk cycle, the thigh bones are useful for defining the overall back and forth movement. The feet bones could also be used, but they have their own intrinsic cycling motion and do not give as precise a result for larger motions. 29. Press Shift and select Becks two thigh bones. You may want to activate the Bone selection filter in the main command area to make them easier to select.
Use the Bone selection filter to select only bone objects.

Select the two thigh bones to use to calculate the cycle.

30. In the Transform panel, activate all the Rotation axes by clicking the r button. If necessary, click the striped box below the r button to activate all axes. Doing this marks the rotation parameters of the thigh bones, which the Find Cycle command uses to find the cycles in the clip.

222 SOFTIMAGE|XSI

Tutorial 11: Advanced Animation MixerBeck All Mixed Up!

31. Drag the playback cursor to the first frame of the clip (frame 1). Press Shift and add the clip to the current selection so that you now have the two thigh bones and the clip selected. 32. In the mixers command bar, choose Clip > Find Cycles. In the dialog box that opens, select Energy Analysis (rotations) as the Algorithm, leave the other parameters as they are, and click OK. This algorithm uses the rotation parameters that you have marked for the thigh bones to find the cycles in the clip. .

33. A message appears telling you the period and cycle frame, which is frame 34 in this case. Click OK to add a red marker at this frame.
Trim the clip

Now you need to trim the clip so that it ends on an exact cycle. 34. Select only the clip, move the playback cursor over the clips red marker ( at frame 33) and choose Clip > Trim After or press ] (right square bracket key) to trim the clip at this frame.

Tutorials I 223

Section 6 Advanced Animation

Add an offset to the clip

If you cycle the clip, you will notice that the character snaps back to its initial position in global space. You will now add an offset so that Beck can continue his forward motion instead of going back to the origin. 35. Ctrl+click the clip and drag the copy beside the original (you may need to press the space bar to switch to the select and move mode). Scrub the playback cursor to see that theres still a snap between the clips.
The clip on the right is a duplicate of the Walk clip.

36. Right-click the second clip and choose Clips Properties. Click the Clip Item Information tab and click the Destination column heading to sort the parameters alphabetically. In the viewport, we can calculate that Beck moves 46 Softimage units along his Z axis for the duration of the cycle. Since this is the amount of traveling done in one cycle, you need to add this value as an offset of 46 units to the next cycle and so on. The Beck.kine.local.posz parameter needs to be set for this effect. 37. Double-click the text box for the Beck.kine.local.posz parameter Clip Effect and enter the expression: this+46. This expression has the effect of adding 46 Softimage units to Becks current position in Z.

Scrub the playback cursor and notice how Beck is now keeping his forward motion from the first to the second clip.
Use an expression for cycling and cycle the clip

You could create further cycles by duplicating the clip in this way, offsetting each subsequent duplicate by a multiple of the original offset. It is far simpler, however, to create multiple cycles using a mathematical expression to determine the offset of each additional cycle. 38. Select and delete (press Delete) the second clip.
224 SOFTIMAGE|XSI

Tutorial 11: Advanced Animation MixerBeck All Mixed Up!

39. Right-click the first clip and choose Clips Properties. On the Clip Item Information page, enter the following expression in the Clip Effect cell beside the Beck.kine.local.posz parameter: this+(cid*46) The cid stands for the current cycles ID number. This expression tells XSI to add an offset for each cycle equal to the original value of 46 multiplied by the number of the cycle.
To cycle a clip simply hover the mouse on the right lower part of the clip until a yellow rectangle appears.Then just drag it out.

This means that the first cycle will have an offset of 46 (this+[1*46]), the second cycle will have an offset of 92 (this+[2*46]), and so on. 40. Cycle the clip as many times as you want (drag one of its lower corners) and watch Beck walk forward.

Baking the Clips Changes into a New Action Source


Although its great to modify action clips in a non-destructive way, there are times when you want to keep all these changes and create a new animation source. You will now create a new action source which will bake all the offset values applied on the action clip. To bake the animation information into a source, you use a command that is ironically called Freeze. You can freeze a single clip or multiple clips and any clip effects, offsets, or transitions are baked into a new source. When something in XSI is frozen, it takes on its current form. Normally, any modifications used to get to that point are frozen at their current settings and then removed. When you freeze a clip, however, you can choose whether to plot the information into a new source and leave the existing clip in the animation mixer, or to plot the animation into a new source, delete the existing clips, and replace them with the newly created source.

Tutorials I 225

Section 6 Advanced Animation

41. Select the Walk clip and choose Clip > Freeze to New Source. 42. In the dialog box that opens, enter Long_Walk as the Action Name, select Standard as the Kind of Fcurve, and click OK.

All the animation on this clip (the sources animation, the offset, and the cycle) is plotted to the new source. 43. Mute the track of the Walk clip (click m). Then right-click on an empty track, choose Insert Source and select the newly created Long_Walk source. Play back the animation to see that the same animation exists in this clip as in the Walk clip.

Apply the new action source to the model

When you create a new source, you can apply it back to the model from which it was created. You may sometimes want to do this to restore animation from a source back to a model if you removed the animation when you created an action source. In this case, you want to apply this new sources animation to Beck so that he walks in a new way. 44. Delete both clips in the mixer so no animation is driving Beck. 45. Select the Long_Walk action source in the explorer and choose Actions > Apply > Action from the Animate toolbar.

226 SOFTIMAGE|XSI

Tutorial 11: Advanced Animation MixerBeck All Mixed Up!

Becks animation is no longer controlled through the mixer. With the new source applied to him, he is controlled by his rig objects again. 46. To verify this, select any rig object (such as the Left_Hand) and press Ctrl+k to open its Local Transform property editor. The animation icons of the Position parameters indicate that they have keys (make sure you are in object selection filter).

Setting a Pose Offset


Pose offsets can help you align an object when you have transitions between clips. Pose offsets consider the whole transformation of an object in one shot (scaling, rotation, and translation), allowing you to easily offset the object in global space. To make the alignment of the objects easier, you can use ghosted images of the objects to see the animation contribution of each clip involved in the transition. You will use the pose offset and ghosting features to align Beck before creating a transition between two clips. 47. Load the ANI_e4_Beck_Mixed_Up_Skip scene from the Tutorial Project. 48. Open the animation mixer and load Becks mixer (select any part of Becks geometry and click the Update icon in the command bar). The mixer contains two action clips: a walk and a skip. 49. Scrub the playback cursor from one clip to the other. Notice how the two clips are offset in position and rotation. You could enter offset values for the second clips properties, but this trial-and-error method can be long and tedious. The following workflow is much faster and more visually intuitive.
Activate ghosting for the overlapping clips

50. Move the second clip to the second track and make it overlap the walk action clip by two frames, as shown on the left. Move the playback cursor to the first overlapping frame. 51. Activate ghosting by clicking the g button at the left end of the two tracks. 52. Then activate Mixer Ghosting in the viewports display menu. 53. In the viewports Visibility menu (click the eye icon), select Chains so that the skeleton objects are visible.
Activate Mixer Ghosting in the viewport.

Tutorials I 227

Section 6 Advanced Animation

54. In the viewport, you can now see ghosted images of Becks elements animated by the two clips. The red ghost represents the contribution of the first clip at the current frame, while the green ghost represents the contribution of the second clip. These colors are set under the g button to the left of the mixer

If ghosting is not displayed when you change viewports (such as the Top view as shown here), toggle the tracks ghosting button off and on again.
Set the pose offset

55. Right-click the second clip and choose Set Pose Offset. XSI creates a first offset of the characters position, rotation, and scaling (all transformations). An aqua-colored bar appears over the clip to indicate that it has a pose offset.

228 SOFTIMAGE|XSI

Tutorial 11: Advanced Animation MixerBeck All Mixed Up!

Align the second clips ghost with the first clips ghost

56. Right-click the second clip again and choose Edit Pose Effect. Using the Static Kinestate property editor that opens, you will align the animation from the second clip with that of the first clip. The Position and Rotation values in this property editor correspond to the first offset automatically created when you created the pose offset. With the help of the clips ghost objects, you will now align the second clips parameters with the first clips parameters. This will allow for a smooth transition and continuity between the clips. 57. In the Top view (remember to activate ghosting in that viewport), adjust the Rotation Y value in the Static Kinestate property editor until the orientation of the green ghost matches the red ghost. This should be a value of about -42. Although you are using the parameters in the Static Kinestate property editor to align the objects, you could also do this interactively using the tools in the Transform panel. 58. Adjust the Position X and Z values so that the green ghost gets as close to the red ghost as possible. As a goal, try to match the left feet positions. The final match-up should look something like this:

If the sliders are at their maximum, you can enter higher values in the text boxes.

Create a Cardinal transition between the clips

59. To create a smooth transition between the clips, first move the second clip so that it starts at frame 37.

Tutorials I 229

Section 6 Advanced Animation

Create a Cardinal transition between the two clips.

60. Choose Mix > Cardinal Transition Tool or press c to activate the Cardinal transition tool. Pick the first clip, then the second, and right-click to end the pick session. Scrub the playback cursor to see how the characters motion flows from one action to the other.

Creating a Bridge Transition


Unlike the standard and Cardinal transitions that create a single transition curve, the bridge transition creates a transition curve for each parameter that appears in the clips involved in the transition (for example, one curve for Rotate X, one for Rotate Y, one for Rotate Z, etc.). This results in a smoother transition that you can control more. For example, you can decide on the length of the transition with the cycled clips, which is difficult to achieve using the standard or Cardinal transitions. For example, you can add or remove cycles and the bridge transition calculates accordingly. Here are a few tips you should consider before using the bridge transition: Both clips need to overlap in time, with the From clip starting before the To clip. Only two clips can be used for a bridge transition. If you have another clip contributing to the animation at the same time as where you want to create the bridge transition, you should mute that track before creating the transition. The bridge transition is most effective when both clips contain cyclical animation, but there should be only one period in the cyclable action. For example, in a walk cycle, the same foot should only come back to its initial position once. Synchronize the movements between the actions for the best results. For example, the right foot touches the ground at approximately the same frame for both clips. Bridging does not handle a character with a forward motion. You should create a bridge transition to blend the two animations, then add the forward motion later. 61. Load the ANI_e4_Beck_Mixed_Up_Bridge scene from the Tutorial Project. 62. Open Becks mixer, which contains two clips: a walk cycle and a sneaky walk cycle. You may need to extend the timeline of the mixer to see both these clips. 63. Create three or four cycles at the end of the Walk Cycle clip.

Move the second clip over.

230 SOFTIMAGE|XSI

Tutorial 11: Advanced Animation MixerBeck All Mixed Up!

Add a reference marker to the clip

64. Solo the first track to see only its animation and move the playback cursor to the frame where the right foot is flat on the ground the second time (about frame 111).

Right foot is flat on the ground at frame 111.

65. Right-click the clip and choose Add Marker or select the clip and press Shift+m to add a reference marker at this frame.
Create and trim cycles for the second clip

66. Deactivate the solo on the first track and solo the second track so that only the animation of the second track is in use. 67. For the Sneaky Walk clip, create one cycle before and three cycles at the end of it. 68. Move the playback cursor to a similar place on the second clip where the right foot is flat on the ground and the leg is in a similar position as in the first clip where you set the marker. This should be around frame 140. You will now trim this clip so that Becks starting position is the same as where the first clips marker is set. 69. Right-click the Sneaky Walk clip and choose Time Properties, or select the clip and press Ctrl+t.

Tutorials I 231

Section 6 Advanced Animation

70. On the Extrapolation page, enter 0.7 in the Extrapolation Before - Cycles text box. This means that 30% of the clip will be trimmed, leaving the remaining 70%. In the Extrapolation After - Cycles text box, enter 3.

Create cycles before and after the Sneaky Walk clip and trim the clip using the Extrapolation values.

Create the bridge transition

71. Align the beginning of the second clip with the marker on the first clip (as shown on the left). Deactivate the solo for the second clips track. 72. Adjust the number of cycles on each clip, depending on how long you want the transition to last. Just make sure that the first clip is not longer than the second clip because you want to blend from the first walk clip to the sneaky walk clip.
Align the beginning of the second clip to the marker on the first clip.

73. Choose Mix > Bridge Transition Tool or press b to activate the transition tool. Pick the first clip, then the second, and right-click to end the picking mode.

232 SOFTIMAGE|XSI

Tutorial 11: Advanced Animation MixerBeck All Mixed Up!

It takes a little time to plot the transition. When its finished, an orange bar appears above the clips indicating the bridge transition.

74. Select both clips and set the in/out play loop by right-clicking and choosing this from the clip pop-up menu. 75. Click the All button in the playback panel to activate RT (real time) mode. Then play back the animation to verify the results.
Click to switch from All to RT (real time).

Breaking Animation Down into Frequencies


By breaking an animation down into its base frequencies, you can control each frequency gain (weight) individually, just like using an audio equalizer to control individual audio waveforms. The lower frequencies of an animation correspond to slower, more regular movements such as an arm slowly waving back and forth, while higher frequencies in animation correspond to quicker movements, such as fingers wiggling. You will use The Equalizer to break down and change a mid-level frequency to slightly adjust Becks walking style.

Affects highest frequencies.

Affects lowest frequencies. Affects all frequencies.

Tutorials I 233

Section 6 Advanced Animation

76. With both clips still selected, choose Clip > Equalize (this might take a few seconds). The Equalizer creates a compound clip on a new track and mutes the contributing clips.

Compound clip created by equalizing the two walk cycles.

77. The Equalizer dialog box, as shown previously, is displayed. Create a loop for the animation and drag each of the frequencys Gain sliders to see the effect of adjusting each their weights. 78. Bring the Gain 4 sliders value to -3 to change Becks walk. Equalizing is usually most effective on motion capture data since it can sample a wide range of frequencies in the animation. Keyed animation is often quite clean and straightforward so it has a smaller range of frequencies. Conclusion You have learned how to make changes to both clips (different types of offsets) and sources, allowing you to make both non-destructive and permanent changes to the animation. You have also learned how to create cycles and transitions in more sophisticated ways. For more detailed information on the topics covered in this tutorial, see these chapters in the Nonlinear Animation XSI user guide: Chapter 2: The Animation Mixer Chapter 3: Actions

234 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

Tutorial 12: Shape AnimationBeck is Making Faces


In SOFTIMAGE|XSI, all shape animation is done on clusters. This means that you can create different clusters on an object and create shape keys for each of them, or you can treat a complete object as one cluster and create shape keys for it. XSI uses different construction modes that let you use any deformation tool on any level of your character without any limitations. When you want to use a deformation on the base geometry, you switch to the Modeling mode, and when youre ready to set shape keys, you switch to the Shape Modeling mode. You can use different tools and techniques to create shape animation in XSI, such as the shape manager or the animation mixer. Any way you do it, shape animation uses the animation mixer under the hood to blend shapes together over time. While you dont need to use the mixer for doing shape animation, its important to understand its role. Finally, for the first time ever, you will hear the great Dr. Beck Bunsen speak! You will work with a short but potent sentence and break down all the phonemes with markers so that you can then sync it up with the shape animation. This tutorial shows you how to: Create and edit shapes in the shape manager. Select predefined shapes to deform the target head. Import an audio clip and break it down into phonemes with markers Key the shapes in the shape manager to create a facial animation sequence. Sync up the audio phonemes with the face shape phonemes using the dopesheet. Export the animation and the audio clip with the flipbook

Tutorials I 235

Section 6 Advanced Animation

Overview
1 Create shapes in the shape manager. 2 Create shapes on clusters. 3 Modify the base geometry in the Modeling construction mode.

Pick more shapes using other shape animation methods.

5 Import an audio clip into the mixer and use markers to break down the phonemes.

236 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

Overview contd

Animate the shapes at different weights to create a facial animation sequence. 7 Use the fcurve editor and the dopesheet to tweak the animation. Capture the animation and audio in the viewport and export it to a flipbook.

Tutorials I 237

Section 6 Advanced Animation

PART I: Saving Shape Keys


Dr. Bunsen is ready for is very first lip sync. For far too long, he has only been able to express himself through gestural movements. Now, you will help him express himself with facial expressions and speech.

Setting Up the Scene


1. Open ANI_e5_Making_Faces from the Scenes folder of the Tutorial_Project. The good doctor is displayed in the viewport. His geometry is already enveloped onto a very basic skeleton that will control the jaw movement. You will now start to prepare the different facial shapes and phonemes required for the tutorial.

Building Shapes with Construction Modes


One of the most important features of XSI is called the construction mode. This is something that you need to understand before you start shape animation, even though some things are done for you automatically. Construction modes let you choose for which type of operation a deformation operator (such as an envelope) being applied to your character will be used. Choosing the purpose of a deformation operator gives you more flexibility and better results because it allows you to separate which deformation should be applied for modeling, shapes, or enveloping: In Modeling mode, the deformation operator will be used to create an objects base shape. Whatever deformations are applied in this mode will become the base (or reference) for the shape keys. All shape keys you create in Shape Modeling mode are stored as the difference of point positions from this base. In Shape Modeling mode, the deformation operator will be used for saving shape keys (which is what you want to do here). In Animation mode, the deformation operator will be used for setting envelopes and animatable deforms. In Secondary Shape mode, the deformation operator will be used for saving keys in relation to animated envelope objects. In the explorer, you can see the markers for each construction mode region in the objects construction history. The construction mode list is located in the main menu bar at the top of the XSI window (see image on the left). Since you will be working in the shape manager, XSI automatically changes the construction mode from Modeling to Shape Modeling for you when you open the shape manager. Isnt that nice?

Under the object you can see the markers for the construction modes.

The construction mode list is in the main menu bar at the top of XSI.

238 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

Creating the Basic Expression


Sometimes youre angry, sometimes youre happy: the same applies to the good Doctor. You will start by creating some basic expressions for him. 2. Select the head of Dr. Bunsen. 3. From the Animate toolbar, choose Deform > Shape > Shape Manager to open the shape manager with the doctors head displayed in the shape viewer. Notice how the Construction Mode has changed from Modeling to Shape Modeling. 4. From the shape managers command bar, change the shape viewers display type from Wireframe to Textured.
Animate tab displays weight sliders for each shape, as well as commands and controls for keying. Shape Viewer displays the current state of the objects shape.

Shape list on the Create tab displays all shapes created for the selected object.

By default, a first Shape is created in the shape list on the Create tab. Since this shape is in a neutral pose (it copies the heads base shape), it will be a good start for generating new shapes. You will keep this one as a reference and simply make copies of it. 5. In the shape list, select the Shape in the Default group, if its not already selected. 6. To rename it, right-click the shape and choose Rename (or press F2), then name the shape Neutral. 7. Now click the Duplicate button in the shape manager command bar two times. Rename each of the new shapes to Happy and Mad.

Tutorials I 239

Section 6 Advanced Animation

Use the proportional tool to create the new shape

Now prepare some expressions for your character. Instead of moving each point individually, you may find it easier to use proportional modeling to deform the geometry. 8. Select the Happy shape in the shape list. 9. Press M to activate the Tweak tool and move your cursor over Dr. Bunsens face. 10. Click the Prop button in the Transform panel to activate proportional modeling. To make the translation of points even smoother, activate the Consider Neighborhood option in the Proportional property editor (right-click the Prop button). As you move a single point, you may notice that the area of influence of the proportional tool is rather small (this is indicated by points highlighted in red around your cursor). To increase the area, press R and middle-click and drag, or right-click the Prop button and set the Distance limit to 7 in the property page that opens. 11. In the shape viewer, dolly closer to the mouth and move the corners of the mouth upward to give him a smile. Do the same for the eyebrows by moving the middle point between the eyebrows. Look at the images on the left for some indication, but remember: you are the artist! Do whatever looks good. 12. When youre finished with the Happy shape, select the Mad shape in the list. Notice that the Mad shape remained untouched because it is a different shape. As you switch from one shape to another, you might find that the display of the geometry can become quite cluttered. You can turn off the View > Affected Points in the shape manager to keep things simpler. 13. Using the Tweak tool again, modify the geometry to make a mad expression: simply reverse the direction of the mouth corners and the midpoint between the eyebrows from the previous steps and hell look much grumpier. 14. Since a mad and sad expression are very close in terms of the facial muscles used, you will select the Mad shape and duplicate it, then rename the resulting Mad1 expression to Sad.

240 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

15. With the Sad shape selected, move the midpoint between the eyebrows upward.
From a mad expression, you can easily create a sad one by simply moving the eyebrows downward. These expressions are very simple, but you can create more elaborate ones if you like. Just make sure to always duplicate and rename the shape before you start changing it!

On the Animate tab, you can see that a slider has been created for each shape, representing its weight. By changing the sliders weight value, you will immediately see the effect on the doctors face in the shape viewer.

Now take a look at what you have created. 16. Switch from the Create tab in the shape manager to the Animate tab (as shown on the left) and test out the sliders that have been automatically created for each shapes weight.

Creating Clusters for Localized Expressions


All the shapes you have created so far affect the entire geometry of Dr. Bunsens head. Remember that shape animation is based on clusters, so what this means is that you have been working with one cluster that includes all points of the head. You can, however, create smaller clusters which help refine the look of an expression in a certain area of the face. You will now create a cluster of the points for the left eyebrow to create an inquisitive look. 17. Deselect all points on the heads geometry (if some were selected from the previous steps). 18. With the head selected, tag the points that make up the left eyebrow (press T, then F8 to activate the lasso selection). You can press the Ctrl key to modify the selection tool if you need to add or remove points from the selection. You must make sure that all the points you need to define a shape key are included in the cluster before you start. It is generally better to include a larger range of points than too few points.
Image is shown in wireframe to better illustrate the selected points.

Tag these points and make a cluster of them.

Tutorials I 241

Section 6 Advanced Animation

19. To create a cluster of these points, choose Edit > Cluster > New from selected points on the Create tab in the shape manager. 20. A placeholder for this new cluster is created in the shape list. Name this shape Inquisitive. 21. In the shape manager, make sure that View > Current cluster points is on. This displays the points (in light gray) that are affected by the current shape. Select another shape in the list (for example Mad) and notice how the cluster of point is different. 22. Select the Inquisitive shape, turn off the proportional modeling tool, press M and move the points so you create a raised eyebrow to make an inquisitive look.

23. Click the Animate tab in the shape manager and change the value of the slider for the Inquisitive shape. You can also change the values of the other sliders and see how the shapes interact with each other.

242 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

Modifying the Heads Base Geometry


This is where you can see the power of the construction modes in XSI. Lets say that the director of the animation stops by your office and asks you to make changes to the geometry of the character. Those changes would obviously need to be propagated throughout the shapes youve already created. Since the modifications to be made are of a modeling nature, all you need to do is change the construction mode to Modeling and make the changes. The modeling of the geometry is the reference that the shape animation uses; that is, the result of all the operators in the Modeling region of the construction history is what is used as the base geometry from which all shapes are created. This means that you dont need to save a default reference key as you did in versions of XSI previous to 4.0. Here is a little guide as to how you can successfully master the secrets of shape animation and construction modes: In the Modeling construction mode, create the character for your project. Switch to Animation construction mode and envelope the character onto a skeleton. Switch to Shape Modeling construction mode to create all the shape keys. Switch to Secondary Shape construction mode to create shape keys in relation to the animated envelope. Then whenever you need to make changes, as you are about to do in this case, switch to the proper construction mode and apply the changes. You will now change the original form of the heads geometry and have these changes ripple down throughout the existing shapes. 24. Minimize the shape manager to keep it open but out of the way for now by clicking the minimize icon in its upper-right corner. 25. In the menu bar at the top of the XSI window, change the construction mode from Shape Modeling to Modeling.

Tutorials I 243

Section 6 Advanced Animation

26. In the Front viewport, select the head in object mode, frame it in the viewport. You might want to switch to texture display and hide his glasses. 27. Using the Tweak tool and proportional modeling mode, make the eyebrow wider to change its shape. 28. Maximize the shape manager (XSI switches back to Shape Modeling mode) and move the sliders for the different shapes. Notice that the modification you made to the eyebrow is now propagated to each of the shapes.

The neutral shape

The neutral shape updated with a wider eyebrow.

The mad and inquisitive shapes are updated because they are offsets of the underlying geometry.

At this point, you can even subdivide polygons, extrude them, and apply any operator to the geometry. The shape manager will still work with all the shapes and give you perfect results, regardless of the modifications done to the geometry. Remember that if you try any of these things now, delete the operators after your experimentation so that the operators dont interfere with the rest of this tutorial. Although the head deformation has been an interesting experiment, Dr. Bunsen has decided that he doesnt need to have such a wide eyebrow and would like you to return his eyebrow to its former state. 29. With the head selected, click the Selection button on the MCP (main command panel). In the Modeling region in the explorer, select the Move Component node and delete it. Dr. Bunsens head goes back to its default shape.

244 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

Selecting Shape Keys for Vowels and Consonants


Now that the doctor has some expression, the next logical step is to create some mouth shapes to form the phonemes needed for his upcoming speech. A phoneme is the smallest unit of sound in a language. In this case, you need to make a mouth shape for each visibly different sound used by Dr. Bunsen in his speech. One way to do this is to make copies of shapes in the shape manager (as you did previously with the facial expressions) and modify them one by one to achieve the proper mouth forms for each phoneme. This ensures that you have only one shape-animated geometry in the scene, and that you can always change the base geometry of the head and have the change propagated to all its shapes. Another way to do this is to select shape keys. Selecting shape keys is sometimes call replacement animation or blend shapes. It has its roots in the stop motion animation field where animators would replace one head after another in front of the camera. This method of working then translated into the 3D world. Although this method may be fast once set up, it also has its disadvantages: you are creating more geometry than necessary, and you are not able to take advantage of the modeling construction mode in XSI to modify the master head and have the changes reflected in all shapes. Either way, its up to you to decide which method you like: XSI can do either. Because all the shapes have been set up for you in this tutorial (and to go faster), you will select a series of predefined shapes (shape key objects) to be applied to Dr. Bunsens head. However, when you will be doing your own characters shape animation, its recommended that you generate copies of the shape that you modify within the shape manager. Okay, time to set up the shapes. 30. Minimize the shape manager. 31. Switch back to the User viewport and click on the third memo cam to position Dr. Bunsen properly. 32. Click on the Key tab at the bottom of the MCP to switch panels.

Tutorials I 245

Section 6 Advanced Animation

33. In the Layer panel, make the Consonants and Vowels layers visible. These layers contain all the copies of Beck with the different phonemes required for doing lip sync.

It looks like a chorus of Dr. Bunsen look-alikes! Each of these heads will serve as shape keys for the phonemes.

Select the heads to create shape keys

34. Click the MCP tab to return to the main command panel. 35. Select the target Beck head (the original head), then choose Deform > Shape > Select Shape Key from the Animate toolbar and pick every single head. (You dont need to use the Ctrl or Shift key to add to the selection.) Right-click to end the picking session. 36. When a property page appears, do not enter a name yetyou will rename the shape keys later. If you enter a name in this property page, all the shapes will be renamed to this name and it will be impossible to identify each shape. Leave it blank and close the property page. The shapes have all been saved under the master head, and each one is now available in the shape manager. 37. On the Animate tab, press the Zero All button in the shape managers command bar. This sets the value of all the sliders to 0 so that youre starting with a clean slate.

246 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

38. Make sure the current frame in the timeline is set to frame 1, then set a key frame on all the sliders by clicking the key icon in the shape managers command bar. This sets a key for all the sliders at once.

You will now put some shapes into group to help you organize them more effectively. Creating groups is a good habit to get into, especially when you have many shapes on the same cluster. 39. On the Create tab in the shape manager, select any of the phoneme shapes and choose Edit > Create group. Drag and drop all the other phoneme shapes under the new group. Then rename the group by right-clicking its name, choosing Rename, and entering a name such as Phonemes. You might want to toggle off the View > Current cluster points in the shape manager in order to better see the shapes.

Breaking the Link between the Target Head and its Shape Key Heads
When you select shape keys, there is an option called Relational Select Shape Keys that is active by default. This option creates a modeling relationship between the target head (the original head to which you applied the shape keys) and each of the phonemes heads you selected as shape keys. This means that when you change the geometry of one of the shape key heads, it will be reflected on the target head. This is useful if you want to do modifications to any of the shape keys after you have selected them. Once you are happy with the modifications, you can break the link between the target head and the shape key heads. It is a good habit to end the modeling relationship after you have done your modification because that will make it faster to calculate the original head for shape animation. This is where you can see that having many heads isnt better than having one! Many shape key heads means more overhead compared to creating all the shapes for one head in the shape manager.

Tutorials I 247

Section 6 Advanced Animation

40. Select both the target head and the T phoneme head. Press F to frame them in the viewport.
Try positioning the heads in the way shown here it will make the next steps easier to do.

41. In the shape list in the shape manager, select the T phoneme shape key. 42. Press M and move some of the points at the corner of the mouth on the T head. You should see Becks target head being modified in the same way as you move these points.

Move a point above the upper lip on the T shape head. Notice how the target head is updated with the change because of the link that exists between the two heads.

248 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

43. With the target head (the real Dr. Bunsen) selected, open an explorer (press 8) and press F to frame the selection. Expand Polygon Mesh > Clusters > Shape cluster node, which is the node that contains all the shape keys for that cluster, then expand the T_ShapeKey node. You will find a Copy Shape operator beneath it that makes the link active between the target head and this shape key head. 44. Select T_ShapeKey in that cluster list and click the Freeze button in the Edit panel. You can now try to move a point on the T head. The link doesnt exist anymore, so no modifications are propagated anymore. By freezing the Copy Shape operator, you have broken the link between the target head and the shape key head, this means that the T head can be deleted. Looks like their relationship is over. 45. Save your scene at this point since everything is set up for the good doctor to speak.
Why is the target head slightly different from the phoneme head?

As you finish this section about selecting shape keys, you may have noticed that the neutral face of Beck in the shape manager and the geometry in the user view are not identical. In fact, the target Becks mouth is slightly open while the neutral faces is closed. Why is that? The reason is simple: even though the shape is driving the target head, Becks head has been applied as an envelope on a skeleton (check the Animation region in the construction history). The results you are seeing in the user view is the calculation of all the operators applied to the geometry. In the shape manager, however, you only see the results of the shape animation. To see the proper results in the shape manager, choose Edit > Display with animation deformations in the shape manager. In many cases, you will notice that a combination of shape animation and envelope deformation gives you greater control over a characters expression. In this case, a bone that rotates the jaw will prove itself worthy in the next section.
If you want to try moving his jaw now, enter Beck.bone2 in the Selection text box in the main command panel (MCP). Press C to activate the rotation tool and rotate on the Z axis: notice how Becks mouth opens and closes (make sure to activate Chains in the viewports visibility menu).

Select T_Shapekey, then click the Freeze button. This deletes the link between the target and shape key head.

A little rotation can bring a smile out of anyone!

Tutorials I 249

Section 6 Advanced Animation

PART II: Working with Audio


Setting Up Dr. Bunsens Face for Lip Synching
Now that you have the facial expressions and mouth shapes in place, lets get into some lip synching! To do this, you will first look at what is happening under the hood of XSI when you animate shapes. The shape mechanism of XSI is set by default to work in a mode known as the Mixed Weight mode. (However, if youre working in the shape manager, it switches to Blend Weight mode.) This mode creates a shape clip for each shape key you create and places each shape clip on a different track in the animation mixer, all within a compound shape clip. Each shape clip takes up the full length of the scene so that its easy to mix the weights of all the shapes for the entire scene length. Lets take a look at the mixer to understand this better. 46. In the Layer panel, turn off the Visibility of the Vowels and Consonants layers. You can also minimize the shape manager. 47. In the C or D viewport, change views to the Animation Mixer, if its not already there.
Update icon

48. Select Dr. Bunsens head and click the Update icon in the mixers command bar so that it refreshes with the heads mixer.
The animation mixer is empty except for two dark blue clips: these are compound clips, which are containers. Once you open the compound clip, you can see several lighter blue clips inside. Each of these clips corresponds to a shape youve created.

49. In the animation mixer, double-click on the dark blue compound clip called Shape_Cluster clip. The mixer expands the container to reveal the clips inside of it. You can also select the compound and open it from the mixer toolbar > Clip > Open compound (go in) Each shape clip corresponds to a shape that is listed in the shape manager.

250 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

As well, the weight slider at the end of each shape clips track is the same thing as the sliders for the shape weights on the Animate tab in the shape manager. Notice the key you had set previously in the shape manager appears beside each slider.

Breaking Down the Audio Track


Now that you have all the basic elements in place, its time to bring in an audio clip into the mixer and make Dr. Bunsen talk. The first thing you need to do is to break down the audio track into phonemes (specific sounds) so that you can synchronize it with the proper facial shapes. To do this, you will use markers on the audio clips. 50. Select Beck in the user viewport, and update the mixer. 51. In the mixer, press Shift+U twice to add two audio tracks. 52. Right-click the first audio track and choose Load Source From File. In the browser, go to the tutorial database, open the Audio folder, and select the Torrefaction.wav file. 53. Drag the audio clip on the audio track so that it starts at frame 1.

To make the clip appear larger in the mixer, you can press the S key to activate the vertical zoom tool. Left-click to pan, middle-click to zoom in vertically, and rightclick to zoom out vertically.

54. Play back the audio in real time (toggle the All button below the timeline so that its RT) to hear what Beck is saying in his maniacal voice: The torrefaction process is almost compleeeete.

Tutorials I 251

Section 6 Advanced Animation

You will probably notice that there is a small bump at the end of the audio clip. You will trim the audio clip so that the bump is not played in the scene. 55. Right-click on the audio clip and choose Time Properties (or press Ctrl+t). Set the Source Clipping Out value to 180. (If you cannot right-click the clip, it is because you still have the S key tool activejust press the space bar to toggle tools.) This trims the end of the clip so that it uses the audio source only up to frame 180. A good habit to form for doing lip-syncing is to lock down the audio clip once it is position on the mixer so that you avoid moving it by mistake. Simply right-click the clip and choose Toggle Lock.
Set the audio preferences

You know that you can drag the playback cursor in the timeline to scrub through the audio clip. And you know that you can play back in real time or play all frames. But sometimes you need to have a bit more control to be able to exactly identify the proper sound, as well as its start and end frame. In XSI, you have different audio preferences that can help you do this for lip synching. 56. Click the Playback button under the timeline (see left) and choose Playback/Audio Preferences to open the Interaction Preferences property editor. On the Playback and Audio page, set up the Scrubbing and Quick Loop options: - Set the Scrubbing > Alternate Scrub Mode to Play Vari Speed. This plays the audio at the same speed with which you scrub the playback cursor in the timeline. Because it is the alternate scrub mode, it only is activated when you press the Alt key while scrubbing. The Default Scrub Mode is still used when simply scrubbing. To test out variable-speed scrubbing, hold down the Alt key and scrub quickly on the timeline and then stop. The timeline slowly catches up to the position of the cursor and the speed of the audio playback is decelerated. Try out the other scrubbing modes to see what is your favorite method. - Select Enable Quick Loop Mode and set the Frames Before Cursor and Frames After Cursor sliders to 10 frames. To see how quick loop mode works, hold down the left mouse button somewhere on the timeline. The playback loops the 10 frames before and 10 frames after the position of the cursor. This is very useful for isolating an area of the audio clip that you want to hear over repeatedly to clearly identify where the wave starts and ends.

252 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

Break down the audio clip into sections with markers

57. Scrub the first part of the audio clip to find the start of the first word the (the TH sound should start at frame 17). 58. In the mixer, press M to activate the marker creation tool. Position the mouse cursor on top of the audio clip at the start of the TH sound and drag to the right to create a marker. Make sure that the marker is long enough to cover the TH. Release the mouse button to finish creating the marker. Right-click to exit the marker tool.

Position the mouse cursor on the clip and press M to activate the create marker tool. The name of the marker in the mixers source (what you see in the explorer). The name of the marker displayed in the mixer. Identifies to which group the marker belongs. In this case, its a phoneme.

Drag to the right to create the marker.

Right-click to deactivate the marker tool. Select the marker and press Enter to open its property editor.

59. Select the marker and press Enter to open the Marker property editor and make the following changes: - Change the Name and Value to TH. - Set the Marker Type to Phoneme. 60. Activate the marker tool again and create a marker for the E sound. 61. Open its property editor and change the following: - Change the Name and Value to E. - Set the Marker Type to Phoneme. - Set the Marker Display Level to 1 so that it sits below the TH marker.

The display level can help avoid markers from piling up on top of each other.

In this example the two markers were overlapping. You have set the marker display level to 1 for the E marker to solve this problem.

Tutorials I 253

Section 6 Advanced Animation

62. You can create markers for Emotions (marker type) as well. In the image below you can see we have created one call Serious. In our case you could replace it by a Mad emotion and put a Happy one at the end of the audio track. In any case set the Marker Display Level to 2. We will come back to the emotions later with the expression shapes created earlier on.

You can scale a marker by selecting it, then pressing Alt while you drag the end of the marker. Marker for an emotion called Serious.

You can duplicate a marker by pressing Ctrl while you drag a copy of the original marker to a new location.

You can also create markers to identify actions or emotions.

63. Continue to create markers as you progress along the audio clip. This may take a while, but you will end up with a complete breakdown for the lip sync when youre done. Remember that you can look at the finished scene for this tutorial to see how the audio clip is marked. Once the whole audio clip (or as much as you like) has been marked, you can move onto the shape animation.

254 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

Animating Dr. Bunsens Face


You will now mix the weight of each shape clip according to the breakdown you made of the audio track. You will bring everything together that you have prepared so far and see the results on Dr. Bunsen.
Open the animation editor to view the markers

64. Select the Dr. Bunsens head and maximize the shape manager. 65. In the shape manager, switch to the Animate tab and choose Animate > Animation Editor to open an animation editor in a floating window. The fcurve editor is active by default. 66. Drag and drop the audio clip from the mixer into the fcurve editors graph. This creates a waveform image of the audio clip in the background of the graph so that you can see the fcurves transposed on top of it.

When you try to drag and drop the audio clip into the fcurve editor, it may not work at first. This is because you may not have the correct selection tool active in the mixer. The animation mixer has two modes of interaction: selection tool or rectangle selection tool. You need to have the selection tool active to drag and drop the audio clip. Press the space bar to toggle between these two tools.

Tutorials I 255

Section 6 Advanced Animation

67. In the Fcurve editor, choose File > Preferences to open the Fcurve Editor Preferences property editor and click the Audio tab. Activate the options to Show Audio Markers, Show Labels, and Show Duration.

Customizing the waveform and markers in the fcurve editor

The Audio page contains many preferences that can help you organize the look of the waveform and its markers. For example, the Audio Waveform Display Area was set to 60 (percent) instead of 100. Because you have already created all the markers in the mixer, the waveform can be a bit smaller in the fcurve editor since it will be used only as a reference. The markers levels can also be set to a certain percentage of the display area. Even though some levels were set in the mixer, it is sometimes useful to be able to push the markers even lower in the fcurve editor to prevent overlapping with the waveform. Change the Min and Max value to see how the display is affected. Try this out, select an Emotion (Serious or Mad) marker in the animation mixer. Press Enter to open the Marker property editor and set the Marker Display Level to 4. Notice how the marker in the fcurve editor is now much lower than the others.

256 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

Keying the Shapes Weights


As you already know, on the Animate tab in the shape manager is a set of sliders for each shapes weight. Setting and keying the shapes weight here is the same thing as setting and keying the shapes weight in the animation mixer. In the mixer, you use the weight slider at the end of each shape clips track. The shape sliders in the shape manager are proxy parameters for the shape weights in the animation mixer. A proxy parameter is simply a clone of the original parameter.

The shape weight sliders in the shape manager are the same thing as the weight sliders you see beside the shape clips in the animation mixer.

While you could set and key the shape weights in the mixer, you will use the shape manager to do this. The advantage of having the shape sliders in the shape manager is that you can key all the sliders values simultaneously by clicking the keyframe icon only once. As well, when you change the sliders values, you can immediately see the results in the shape viewer.
You can click the keyframe icon at the top of the shape manager to set or remove keys for all sliders at once.

Tutorials I 257

Section 6 Advanced Animation

Either way, the basic process is the same for setting and keying shape weights: its up to you which tool you like to use.
Make the shape weight blending additive

Before you start keying the shape weight values, you should be aware that there is a setting in the animation mixer that lets you have proper control over the shapes. You will make sure that the Normalize option is off for blending shapes. With this option off, any shape clips that are overlapping in time (in this case, all the clips in the scene) are added together instead of averaged (normalized). This keeps the contribution from each shape clip distinct. 68. In the animation mixer, double click on the Shape_ClusterClip_source or select it, go in the mixer toolbar > Clip > Open Compound (Go in), once the compound has been expended, choose Mix > Shape Mixer Properties in the mixer toolbar and make sure that the Normalize option is off. Play with the sliders of the Shape Manager and toggle the normalize on and off to understand the difference between the two.
Deselect the Normalize option to have the shape clips added together instead of averaged. This keeps each shape clips deformation distinct.

Set an fcurve creation preference

Also, before you start keying, you need to set a preference for how an fcurve is created. Whenever a key is set, the fcurve editor creates a slope for the key to make the transition smoother. Because you made the shapes additive by deactivating the Normalize option, this means that you can go beyond the values of 0 and 1 for the shape weights to create extreme (and perhaps painful) shapes for Beck. However, it is very important to key the weights with values between 0 and 1 or else you will find that Beck will be transformed into very strange shapes, such as shown here. Ouch.
Here is an example of what can happen if the weighting is overshooting the minimum and maximum values. The shapes will be added together with negative values and might give results such as the one on the right.

You will set an fcurve preference that keeps the values between 0 and 1.

258 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

69. From the main menu, choose File > Preferences. In the view that appears, select Animation to open the Animation Preferences property page. 70. On this page, you will find several settings for curve creation. The one you want to use for this tutorial is the Slope Orientation Constraint > Plateau (Horizontal for local min & max). This limits the curves values to the range of 0 to 1. 71. On the same page, you also need to select the When Adding Keys Use > Current Preference Settings option so that all keys you create from this point on use these preferences.

Set the fcurve slope orientation to be Plateau and select Current Preference Settings so that these settings are the ones used when you add keys from this point on.

Close the property editor when youre done.

Tutorials I 259

Section 6 Advanced Animation

Set keys for the shapes weights

72. Make sure the shape manager is maximized and that the animation editor is close by, as shown in the image here.

Youre finally ready to set keys for the shapes weights according to the position of the markers. 73. Set the timeline to frame 17, make sure all sliders are at 0 (click Zero All in the shape managers command bar), then set a key for all the shapes. 74. Move the playback cursor in the timeline so that its in the center the TH marker. Since you will be working with weights, you will set the key when the playback cursor is in the center of the marker. This way, the weighting will ease in and out more evenly across the sound. You can always tweak it later if you like.

260 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

75. On the Animate tab in the shape manager, set the value of the TH shape weight to 1 (full weight). Then set a keyframe for all the shape weights by clicking the keyframe icon at the top of the shape manager. If the weight curves are not appearing in the fcurve editor, select Beck and press F in the Animation Editor to frame the selection. The fcurves will appear on top of the waveform.
1 Drag the playback cursor to the proper frame for the phoneme. 2 Set its shape weight value to 1 (full weight). 3 Set a key for all the shape weights in one shot by clicking the keyframe icon in the shape manager.

76. Move the timeline to the next phoneme displayed in the fcurve editor, E. You can see how easy it is to use the markers as a reference. In the middle of the E marker, change the value of the E shape weight to 1 and reduce the weight of the TH to 0. Set another key for all the shape weights, as you did previously.

Tutorials I 261

Section 6 Advanced Animation

At the next phoneme, set the value of the E shape weight slider to 1 ... ... and reduce the value of the TH shape weight to 0. Click the keyframe icon in the shape manager again.

77. Continue to set keys along the audio clips like this for all the markers youve created. 78. Play back the scene to look at how the shapes are being applied onto Beck. You might notice that the transition from one shape to another could do with some tweaking. You will now do this using the dopesheet to easily move keys around.
Display shape keys in the dopesheet

79. In the shape manager toolbar, choose Animate > Dopesheet to open it. Since the dopesheet displays all the parameters with animation, we will collapse it since we will be tweaking the position of the shape at a high level 80. In the Dopesheet toolbar, click the Collapse button. 81. Choose Edit > Preferences in the dopesheet to open its Preferences property editor and make the following changes: - In the Phoneme Key Setting area, select the Enable Phoneme Key Display option. - Set the Threshold to 0.98.

This means that only shape keys whose weight values are above 0.98 are displayed with their names on their keys on the dopesheet tracks.

262 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

Shape keys displayed on tracks in the dopesheet. Only shape keys with weight values more than 0.98 have their names displayed on their keys.

Move a shape key using the dopesheet

If you look around at frame 37, you should have set a key for the phoneme T (if not, you can select any other key you have set in this tutorial since it is just to illustrate the principal). You need to correct this by moving the key a few frames forward. 82. In the dopesheet, click on the key for the letter T and drag it to a later frame. You may need to zoom in to the dopesheet a bit (press S). As you can see, the dopesheet is the ideal tool for finessing the animation of the lip sync.

When you move the keyframe for the letter T, notice how the weight curve readjust themselves in the fcurve editor.

Once the animation is completed, you may want to experiment by shifting the audio one frame forward or backward. Because of the playback, the images in the viewport might be quicker than the audio; therefore, it sometimes helps to offset the animation to sharpen up the synchronization a bit. All you need to do is offset the audio clip in the mixer by one frame either way.

Tutorials I 263

Section 6 Advanced Animation

Exporting Your Masterpiece in a Flipbook


Now that Dr. Bunsens speech is ready, you might want him to do a little presentation. Create a flipbook for him by capturing the images in a viewport, and play it back in your favorite player. 83. Close all views and property editor that may be open, and maximize the viewport with Beck showing his most handsome profile. 84. In the viewport, click on the camera icon and choose Start Capture. 85. In the Capture Viewport property editor, select an Output path and file name for the flipbook images. Make sure that Record Audio Track is active. Change any other settings, such as Format and Size, to be as you like. Click OK when youre ready to run the capture.

When the capture is finished, the flipbook opens automatically in whatever media player you chose and plays back the lip sync you have done.

You can export the animation in the format of your choice.

264 SOFTIMAGE|XSI

Tutorial 12: Shape AnimationBeck is Making Faces

Conclusion You have seen how to create very basic shape animation by both creating shapes in the shape manager and by selecting shape keys from predefined shapes to be applied to a model. As a final step, you added an audio track in the mixer and synchronized the sound with the mouth shapes, then animated the shape weights in the shape manager. For more information, see the following chapters in the XSI user guides: Chapter 1: in the Shape Animation guide. Chapter 2: The Animation Mixer in the Nonlinear Animation guide. Chapter 4: Audio and Animation in the Nonlinear Animation guide. Chapter 3: Playing Animation in the Animation guide. Chapter 3: Editing Function Curves in the Animation guide. Chapter 4: Editing Animation in the Dopesheet in the Animation guide.

Tutorials I 265

Section 6 Advanced Animation

266 SOFTIMAGE|XSI

Section 7

Scripting

Tutorials I 267

Section 7 Scripting

Tutorial 13: ScriptingRepeating Commands


Anything that you can do interactively can also be done by writing scripts. Simple scripts are a sequence of commands, whereas more advanced scripts use a host language such as VBScript to combine SOFTIMAGE|XSI commands. Every time you perform any action, the equivalent scripting command appears in the command box at the bottom-left of the window. There you can examine the syntax for any action you perform. You can later retrieve these commands and use them to create simple scripts that automate repetitive tasks, or use them as building blocks in your own, more elaborate scripts. This tutorial shows you how to: Use the script editors command box to repeat commands from the history. Create a button for a custom command.
Opens the script editor

Command box

Using the Command History


1. Open the script editor by clicking on the scroll icon beside the Playback controls below the timeline.

History log

Editing pane

2. It will be easier to see whats going on if you start with a clean slate. If youve been working in SOFTIMAGE|XSI and already have commands in the history log, clear it by choosing Edit > Clear History Log from the script editor command bar.

268 SOFTIMAGE|XSI

Tutorial 13: ScriptingRepeating Commands

3. From any toolbar, choose Get > Primitive > Surface > Sphere to create a sphere. Notice how the command is instantly logged in the history pane of the script editor. 4. Translate the sphere in any direction. Notice how the Translate command is also logged. 5. If you just want to quickly repeat a single command, you dont need to use the script editor window. From the command box (at the extreme left below the timeline), click the arrowhead to show the list of recent commands. 6. Select the following line:
CreatePrim "Sphere", "NurbsSurface"
Arrowhead

Select command

7. Press Enter. Another primitive sphere is created.

Creating Custom Commands


If you want to repeat more than a single command, you need to create a script. In this section, youll create a custom command that runs a very basic scriptsimply repeating the commands to get and translate a sphere. You create custom commands by creating buttons on a custom toolbar either by dragging lines from the script editor or by dragging files from a browser. 8. Choose View> New CustomToolbar and leave the toolbar open. 9. Right-click inside the toolbar and choose Rename. Give a new name to the toolbar (the new name will appear the next time you get that toolbar). 10. In the history log, select the two lines that create and translate a sphere. They are similar to the following, but your parameter values for the Translate command will differ depending on how you translated the sphere.
CreatePrim "Sphere", "NurbsSurface" Translate , 8.350, 5.996, -0.600, siRelative, siView, siObj, siXYZ

Tutorials I 269

Section 7 Scripting

11. Drag and drop these two lines onto the toolbar. The Add Script Command dialog box opens. 12. For the Command/Button Name, type Quick Sphere. This is the name that will appear on the button in the toolbar. 13. For the Script Command Name, type QuickSphere. This is the name that will be logged in the command history. You can also call your script from other scripts using this name. 14. Click OK to close the Add Script Command dialog box. The new button is added to the toolbar. 15. Start a new scene, either by choosing File > New Scene or by pressing Ctrl+n. You do not need to save the old scene. 16. Click on the Quick Sphere button in the toolbar. Your custom command creates and translates a sphere. Close the toolbar. 17. Delete the sphere. 18. In the command box, type QuickSphere and press Enter to invoke your custom command.

Conclusion This tutorial showed the simplest form of scripting: repeating commands. By itself, this can be a great time-saver. However, it is also possible to do much more with scripting. The next tutorials explore some of these possibilities. For more information, see the Customization guide or the SDK documentation available online.

270 SOFTIMAGE|XSI

Tutorial 14: Scripts for Automating Tasks

Tutorial 14: Scripts for Automating Tasks


You can use scripts to automate virtually anything. For example, if you have a set of objects that must be modified in the same way, you can write a script that makes these modifications to each object you have selected. In this tutorial, youll write a script to toggle the viewport settings to automatically speed up screen redrawing. This tutorial goes one step beyond the copying and pasting scripting commands that was presented in the previous tutorial. Now you will learn how to use loops and variables in your scripts. This tutorial shows you how to: Modify the logged commands in the history so that they will work with any selected objects. Use commands from the VBScript language to create a for loop that cycles through the selected elements and performs actions on them.

Loading a Fragment of VBScript Code


1. Open any scene or start with a new scene and get several primitives. 2. Open the script editor. 3. Open the file Opt_Displ_templ.vbs from the Scripts folder of the Tutorial_Project. This loads a template containing the following lines:
set mySelList = Selection for each myElem in mySelList next
Selection is a collection of elements. Elem1 Elem2 Elem3

This fragment of code is a pattern that you will use repeatedly in scripting. The key commands are as follows: - Selection is a special keyword that refers to the collection of items that are currently selected. The first statement puts this collection in a user-defined variable called mySelList. - The second statement is the beginning of a for loop. Any commands between this line and the statement next are performed once for each item in mySelList. Within this block of code, you can refer to the current item by the user-defined variable myElem. - As the script stands now, there are no commands within the for loop yet. You are going to complete this script by inserting commands inside this loop.

Tutorials I 271

Section 7 Scripting

Optimizing the Selected Object for Interaction


To optimize interactions in the viewports, you must modify the selected object so that it appears shaded when it is static but appears as a bounding box when you orbit, pan, etc around it. 4. Select any object in the scene. 5. On any toolbar, choose Get > Property > Display. Set all the Interaction options to Bounding Box: - Selected - Interaction - Bounding Box - Unselected, Near - Interaction - Bounding Box - Unselected, Far - Interaction - Bounding Box - Leave all the other options set to Automatic. 6. Close the property editor. 7. In a viewport, turn off Override Object Properties option at the top of the display mode menu. When on, the viewport display setting overrides the display properties of any individual objects. This option must be off for your changes to have a visible effect. 8. Orbit in the viewport. Notice that the selected object turns into a bounding box when you change the view interactively, but the object is displayed according to the viewport display setting when the view is static.

Writing the Script


Big Brother is watching your every move! XSI has recorded the last set of steps, allowing you to copy and paste them into your script.
Copy the basic commands from the command history

9. In the script editor, notice that the actions you performed have been logged in the history pane. 10. Copy and paste (Ctrl+c and Ctrl+v) the AddProp and SetValue statements from the history pane into the editing pane. Insert them in the lines of space between the for each and next statements in the script. Indent them so you can spot them easily.
Modify the AddProp statement

Your script should look something like the image above, although the word cube will be the name of the object you used.

You will now modify these lines so that they work with whatever is currently selected instead of the specific objects that were selected when these lines were logged.

272 SOFTIMAGE|XSI

Tutorial 14: Scripts for Automating Tasks

11. Consult the online command reference to get help on the AddProp command. To do this, move the text cursor to anywhere inside the AddProp keyword, then press F1 or click the ? button. A browser opens, showing a reference page for the AddProp command. If you read the HTML page, youll notice that the default value of the InputObj parameter is the current selection. This means that if you leave this line as it is without specifying a value for InputObj, a local display property will be added to every item in the selection list every time the loop is executed. The loop is executed multiple times, once for each element in the mySelList. You dont want a local display property to be added to all of the elements each time the loop is executed, you only want to add the local display property to each element as it goes through the loop.You will fix this in the next step. 12. Add the following string to the end of the AddProp statement:
, myElem

It should now look like this:


AddProp "Display Property", myElem

This specifies that the display property should be added to the current myElem in the loop. Since the loop is executed only once for each myElem in mySelList, the display property will be added exactly once to each selected item.
Modify the SetValue statement

13. Remove the object name from each SetValue statement. Make sure you dont delete the double quote immediately before the object name nor the dot after it. For example:
SetValue ".display.intsel", 5

14. In each SetValue statement, insert the following string immediately before the first double quote character:
myElem &

For example, the first SetValue statement should look like:


SetValue myElem & ".display.intsel", 5

The ampersand (&) is the symbol for string concatenation in VBScript. This concatenates the current value of myElem with the literal string inside the double quotes. Each time the loop is executed, the value of myElem is the name of a different object in the selection list.

Tutorials I 273

Section 7 Scripting

Effectively, you have replaced the specific object name you deleted in the previous step with the names of each of the currently selected objects in turn, as they pass through the loop. Heres what your final script should look like:
set mySelList = Selection for each myElem in mySelList AddProp "Display Property", myElem SetValue myElem & ".display.intsel", 5 SetValue myElem & ".display.intunselnear", 5 SetValue myElem & ".display.intunselfar", 5 next Run the script

15. Make sure that no text is selected in the editing pane of the script editor. 16. Select some items in the viewport then click the Run button to run the script. The local display properties for all the selected objects are changed as though you had done it manually for each item. If anything text is selected in the editing pane of the script editor, only the highlighted text will be parsed and executed when you click the Run button or press F5. This is useful for trying out new commands or stepping through the execution of a script step-by-step to track down errors. 17. If desired, add this script to a toolbar as you did in the previous tutorial. Conclusion Scripting is a powerful and flexible tool for doing almost anything. In SOFTIMAGE|XSI, almost all features are available through scripting. You can either copy and paste commands from the history pane to automate repetitive tasks or write your own scripts completely from scratch. You are not limited to a specific scripting languageyou can use any scripting language that supports ActiveX, including VBScript, JScript, PerlScript, and Python ActiveX Scripting. For more information, see the Customization guide or the SDK documentation available online.

274 SOFTIMAGE|XSI

Tutorial 15: Building Custom Tools

Tutorial 15: Building Custom Tools


The power of scripting does not stop at simply repeating commands you have already logged using the interface. You can also write custom tools that do new things. Your tools can even prompt for input and invoke picking sessions. This tutorial shows you how to: Choose a task for a new tool. Plan how the tool will work. Validate the plan. Write the code; the script will use variables, subroutines, and arguments to accomplish its task. This tutorial assumes you have basic knowledge of scripting concepts.

Choosing a Task to Script


As you work in SOFTIMAGE|XSI, youll realize there are tasks you perform repetitively that could be consolidated into a single operation. This could be anything from creating a characters skeleton or loading primitives with specific settings, to saving files with a specified naming convention into a particular location on your hard disk drive. When designing a tool, you must first decide on its scope of responsibilities: you must decide what the tool does and does not do. For this tutorial, youll write a tool that realigns an object to match the scale, orientation, and position of another object chosen from the scene. Such a tool would be useful when performing modeling operations, setting keyframes, adjusting lights and cameras, and replacing child objects in hierarchies. Building tools for production is an art form in itself. You need to consider many aspects of the production, such as: What is the goal of the tool? What is the scope of its responsibilities? What information does the tool need to perform its duties? How will users interact with the tool? Can the tool work in a general environment? Can other existing tools perform the same duties with minimal overhead?

Tutorials I 275

Section 7 Scripting

The most important thing to consider is whether the benefits reaped from a tool outweigh the time and resources needed to create it. The next few sections explore these design decisions as they relate to the match tool.

Designing the Tool


Once you have decided what your tool is going to do, you must decide how it is going to do it. In this case, the tool must set the transformations of the selected objects to match another object. There are several possible ways to achieve this: Manually adjust the SRT values. Apply, then relax a constraint. Apply an expression. Set relative values with linked parameters. Set a keyframe, adjust the fcurve, and then remove the animation. Make a parent-child relationship and reset the childs local transformation values to match its parents transformations. There are many options, but which is the best? If the tool is to be used for modeling, then setting temporary keyframes or using linked parameters probably wont be very helpful, especially if the object already has animation. Expressions may override other constraints, keyframes, and operatorsunder certain circumstances that could ruin the scene. Applying then relaxing a constraint is a quick easy option often used in many 3D applications, but if the object already has a constraint, it may be difficult to remove it properly without destroying others already in place. The selected object could be made a child of the target, then have its SRT values zeroed out, forcing the object to cling to its parent but what if the selected object is already part of a hierarchy? That leaves the first option, adjusting SRT values, which allows modeling operations to be performed and objects to be adjusted without destroying other relations and elements in the scene (the keyframes can be set when necessary).

276 SOFTIMAGE|XSI

Tutorial 15: Building Custom Tools

Now that you have a good understanding of the options, you must decide how to define which object(s) to affect. There are a few options: Apply to all selected objects. Let users interactively pick objects one by one. Type in the names of the objects to be modified. The tool is meant to be a quick operation so asking users to interactively navigate through the scene and click on several objects may be a bit tedious. Also, if objects are very close together, it may be difficult to isolate the desired target. Likewise, typing the names of objects into a browser can take just as long. That leaves the first optionmodify the selected objects. For those who want to type the names of the objects, you can still use the name selection boxes on the Select panel to select the desired objects first. Next, you must decide how to define the target object to which the selection will be aligned. The selection list cant be used, because it contains the objects to be affected. The remaining options are: To pick a target interactively with the mouse. To type the targets name in a browser. Clearly, picking is more intuitive and interactive for working quickly.

Testing the Theory


At this point, you should have a rough idea of the steps your script must perform to achieve the desired result. Now you must test the methodology to see if it works. This can be done quickly by setting up some objects and manually performing the tasks within the interface. In this case, select an object and adjust its scale, orientation, and translation values to match that of a target object. 1. Get a primitive cube, sphere, and null. 2. Select the null and click the Parent button on the Constraint panel (main command area). Pick the cube with the left mouse button to make it a child of the null and click the right mouse button to exit parent mode. 3. Select the cube and translate it away from the origin to a random location. The cube will be the target.

Tutorials I 277

Section 7 Scripting

4. Look at the position coordinates of the cube on the Transform panel and take note of the values. 5. Select the sphere and enter the cubes position coordinates into the Translate boxes on the Transform panel so that its position matches the cube. Notice the sphere now resides in the same position as the cube. The theory works so far, but it must be tested under more complicated conditions. 6. Branchselect the null with the middle mouse button. 7. Rotate the null around its Y axis by 30 degrees. 8. Select the cube and again, take note of its position coordinates. 9. Select the sphere and copy the cubes position coordinates into the Transform panel, as you did before. Youll notice that this time the spheres position does not match the cube! This is because the cubes coordinates are shown in local space relative to its parent, the null. Also, the coordinates listed in the Transform panel are relative to the manipulation mode thats currently set. In this case, the default View mode displays local coordinates. To get around this problem you need to retrieve the global coordinates of the cube, which represent the objects position relative to the worlds origin. 10. Select the cube, click the Global button on the Transform panel, and take note of the cubes coordinates. 11. Select the sphere and copy the cubes position into the Transform panel. Thats more like it: the sphere and cube positions now match! This is an example of how various settings can affect how data is perceived and processed. When building tools, you must take such factors into account to obtain proper results. Many mistakes occur because of such errors during development. Before you start writing the code, examine one more situation that can affect how the tool works. 12. Select the sphere. 13. Constrain the sphere to the null by choosing Constraint > Position then clicking on the null. 14. As before, look up the cubes position and copy the values to the sphere. Notice that the sphere cannot be moved because it is constrained to the null. However, if you activate compensation mode using the CnsComp button on the Constraint panel, you can now move the sphere just as before. Remember to turn off compensation mode when finished, to keep the constraint with the new offset.

278 SOFTIMAGE|XSI

Tutorial 15: Building Custom Tools

For verification, repeat the alignment tests for rotation and scaling. Also, select the null hierarchy and try to match its coordinates to the sphere in both branch and node selection modes. Take note of the different results.

Writing the Code


By now, you should be convinced that the method for aligning objects is valid. Its time to start writing the script.
Add comments to your script code

One of the most important aspects of programming is to document what you are doing within the script itself. It lets anybody read your code and understand what you are attempting to do, including yourself when youve had to put the project on the shelf for an extended period of time and need to pick up from where you left off. Code documentation is usually achieved with commentslines of text directly above or to the side of a command explaining the intent and purpose at that point in the code. Without comments, scripts can be very difficult to follow, especially when they grow over several hundred lines long. 15. Open the script editor and type the heading of your script using comments as shown below:
'********************************************* ' ' Match v1.0 - My first script! ' ' This tool realigns selected scene objects ' to match a picked target. ' '*********************************************

In VBScript, anything that comes after the first apostrophe ( ' ) on a line is considered a comment. You can comment out an entire line as was done here or you can comment out the last portion of a line to provide information about a specific command you are using.

Tutorials I 279

Section 7 Scripting

Create subroutines

Up to this point, the focus has been on the design of the tool and how it should work. Now you must finalize the details and make it happen. Just as you addressed how to pick objects and manipulate them, we must take the same steps to create the functions that perform the operations. The general rule of thumb is to keep your code modular; that is, divide your code so that each routine or procedure performs a specific task. That way, code is minimized and can be reused by other functions or scripts. For this tool, you need modules to do the following: Get selected objects from the scene. Pick a target object interactively. Realign selected objects to match the picked target. Control overall program flow. The first thing to learn when programming with subprocedures is the use of the main routine. Its responsibility is to control the flow of the programthe glue that binds everything together. 16. Define a call to the main function by entering the following lines:
'Main Subprocedure call Match_main

This subprocedure call is within the global code of your script; that is, it is not contained within any other subprocedure. This line calls and executes the subprocedure called Match_main. However, at this point, you havent defined any procedure called Match_main yet. Thats the next step. Here it is assumed that you will be using one script file for one command, but remember if you store many commands in the same file that all global code will be executed when a procedure is called. 17. Define the skeleton of your main procedure by entering the following lines:
'Main Subprocedure call Match_main 'Main Subprocedure calling other functions sub Match_main end sub

280 SOFTIMAGE|XSI

Tutorial 15: Building Custom Tools

- The word main has been prefixed with the name of the tool to prevent confusion with commands native to XSI or other procedures that may have a main routine (its not mandatory, but it is good practice). - The sub statement defines the start of the procedure. - The end sub statement defines the end. - The code between these statements (often referred to as a block of code) is executed when the subprocedure is called. Youll add this code in later steps.
Define variables to store data

Youve defined the program structure, but now you need a means of storing and retrieving data for manipulation. Youll define variables to store data and write procedures to retrieve and manipulate them. Variables are areas of memory reserved for data and can vary in size. To realign the selected objects, you need to find out which objects are selected. SOFTIMAGE|XSI keeps track of the currently selected objects in the SelectionList. To retrieve its contents, use the GetValue command, which retrieves the value of a specified parameter in the project. 18. Retrieve the list of selected elements from the scene and store it in a variable, then print the variables contents to screen to verify results:
'Main Subprocedure call Match_main 'Main Subprocedure calling other functions sub Match_main 'Define a variable to store list of selected elements dim selected 'Retrieve the selected elements from the scene set selected = GetValue( "SelectionList" ) 'Display contents to the screen LogMessage "Selected items: " & selected, siInfo end sub

Tutorials I 281

Section 7 Scripting

The previous example illustrates another point: variables should be defined before they are used. In VBScript, this is accomplished with the dim statement. This is done for several reasons: - Code clarity - Faster execution - Fewer potential bugs In programming languages such as C and C++, variables must be defined before they are used. With looser untyped languages such as VBScript, variables can be defined anywhere or upon its first use. However, to prevent unwanted side effects, it is a good idea to get into the habit of defining variables before they are used. In VBScript, you can also use the following statement in the global code at the beginning of your script to force variables to be defined before they are used:
Option Explicit

The siInfo parameter of LogMessage command specifies the type of message displayed. In this case, youre displaying information as opposed to a warning (siWarning) or error message (siError). The LogMessage command could also be written with the GetValue command because GetValue returns data in the form of a string (text):
LogMessage GetValue( "SelectionList" ), siInfo Test the script

19. Select various objects in the scene and click Run to run the script. Watch how the results change with each selection in the history log. 20. Try running the script without anything selected. At this point, a question comes to mind: how do you know whether the selected elements are objects or whether anything is even selected? This is handled with the SIFilter command, which is a selection filter that allows you to retrieve elements that fit or do not fit specific criteria. Usually the criteria are based on object type. 21. Type SIFilter on a new line in the script editor, place the mouse cursor within the word, then press F1. The help page for the command opens. As you can see from the documentation, this command can filter out unwanted elements. Since you only want 3D objects, you will use it to filter out non-objects.

282 SOFTIMAGE|XSI

Tutorial 15: Building Custom Tools

22. Replace the GetValue() command with SIFilter() using the following parameters to filter out non-object types:
'Main Subprocedure call Match_main 'Main Subprocedure calling other functions sub Match_main 'Define a variable to store list of selected elements dim selected 'Retrieve the selected objects from the scene set selected = SIFilter( null, "sceneobject", true, siQuickSearch ) 'Is the selection valid? if typename(selected) = "Nothing" then LogMessage "Invalid selection : ", siError exit sub else LogMessage "Selected item(s) : " & selected, siInfo end if end sub

Notice that the variable selected (the returned result from the SIFilter command) is tested before the script will proceed any further. This is to prevent an error, or worse, a crash due to improper usage. Its also more efficient because you can exit the subprocedure if your criteria has not been met, and therefore you need not do any more work than necessary.
Pick sessions

The next task is to determine the target of the realign operation. As mentioned earlier, youll use an interactive pick session, which requires the user to navigate within the scene and click on the target. To keep your code modular, create a function just for this purpose. Make sure to define the function outside of your main routine. The function needs to start a pick session and return the picked object. 23. Use the PickElement command to enter the pick session and retrieve the values, and return nothing if no object is picked or if the session is cancelled.

Tutorials I 283

Section 7 Scripting

'******************************************************* ' Match_PickTarget() ' - Prompts user to pick an object ' - returns picked object or nothing if cancelled. '******************************************************* function Match_PickTarget() dim picktarget_button, picktarget_target ' You can't display messages inside of PickElement(), so do it now and hope there isn't a refresh call LogMessage "Pick target for selected object(s).", siInfo ' Launch a pick session PickElement "OBJECT", "Pick target", "Pick target", picktarget_target, picktarget_button ' If the user canceled, return an empty string and exit if (picktarget_button = 0) then set Match_PickTarget = Nothing ' Otherwise return the name of the picked element else set Match_PickTarget = picktarget_target end if end function

- The "OBJECT" filter is used in the PickElement command to make sure only objects can be selected. If the user clicks on another element type, it will be ignored until a proper object is picked. - The PickElement command returns two values: the variable picktarget_target stores the picked object and the variable picktarget_button stores the mouse button pressed (0 for right mouse button or Esc, 1 for left mouse button, 2 for middle mouse button). - The "Pick target" strings are messages that appear in the mouse line to assist users, as this is the only feedback theyll receive while the pick session is active. Notice that the two variables are prefixed with the name of the function. This is not necessary, but it is very useful for ensuring the clarity of your codeit is obvious at a glance what the scope of a variable is. It also avoids any potential name conflicts with global variables; global variables are defined in global code and can be used by any procedure.

284 SOFTIMAGE|XSI

Tutorial 15: Building Custom Tools

Once the pick session is finished, the mouse button is tested to see whether the user canceled or picked something. If the user canceled, then the function returns nothing; this is accomplished by using the VBScript keyword Nothing to dissociate the functions return value from any object. If the left or middle mouse button was used, then you know an object was picked so the function returns its name. Now that you have written the Match_PickTarget function, you need to call it from your main function:
'Main Subprocedure call Match_main 'Main Subprocedure calling other functions sub Match_main 'Define a variable to store list of selected elements dim selected, target 'Retrieve the selected objects from the scene set selected = SIFilter( null, "sceneobject", true, siQuickSearch ) 'Is the selection valid? if typename(selected) = "Nothing" then LogMessage "Invalid selection : ", siError exit sub else LogMessage "Selected item(s) : " & selected, siInfo end if 'Prompt to pick a target object set target = Match_PickTarget 'Did the user pick anything? if (typename(target) = "Nothing") then LogMessage "Match aborted.", siInfo exit sub end if end sub

Tutorials I 285

Section 7 Scripting

Notice also that the value returned by the Match_PickTarget function is tested before it is used. If it is empty, then the user must have canceled the pick session. If so, a message is displayed and the main routine exits.
Add arguments to process the data

Once it has been determined that a target has been picked, it is time to perform the realign operation. This will be done with a procedure and requires arguments to indicate which objects are to be matched to the target. Arguments allow data to pass from one routine to another and isolates it so the data isnt used out of context during program execution. For example, one argument can have the same name as another within the same script and it wont cause a problem. 24. Create a procedure to realign the selected objects according to the coordinates of the picked target. Again, make sure to define this procedure outside of any other procedure.
'**************************************************** ' Match_Position ' ' - Aligns the selection to the target '**************************************************** sub Match_Position( position_selected, position_target ) dim vector set vector = CreateObject("Sumatra\Scripting\Math\SIVector3") vector.x = GetValue(position_target & ".kine.global.pos.posx") vector.y = GetValue(position_target & ".kine.global.pos.posy") vector.z = GetValue(position_target & ".kine.global.pos.posz") Translate position_selected, vector.x, vector.y, vector.z, siAbsolute, siGlobal, siObj, siXYZ end sub

The process of aligning the various objects is quite simple. The Match_Position function simply extracts the global coordinates of the target object then applies them to the selected objects as transformations in global spacethe same as you did earlier with steps 1 through 14. The Match_Position function illustrates another new concept: data objects. An object is a collection of various data types (variables) that are attached as properties. Properties are used to simplify and organize data storage, instead of defining a collection of variables individually. This allows many values to be transported across functions with a single assignment operation rather than copying

286 SOFTIMAGE|XSI

Tutorial 15: Building Custom Tools

them one by one. In this example, the SIVector3 object stores the coordinates of the target object in its three properties x, y, and z. To access the properties of the object, use the dot notation as shown on the subsequent lines with the GetValue command.
Call the Match_Position function from the main routine

Now that the Match_Position is written, call it with the proper arguments from your main routine:
'Main Subprocedure call Match_main 'Main Subprocedure calling other functions sub Match_main 'Define a variable to store list of selected elements dim selected, target 'Retrieve the selected objects from the scene set selected = SIFilter( null, "sceneobject", true, siQuickSearch ) 'Is the selection valid? if typename(selected) = "Nothing" then LogMessage "Invalid selection : ", siError exit sub else LogMessage "Selected item(s) : " & selected, siInfo end if 'Prompt to pick a target object set target = Match_PickTarget 'Did the user pick anything? if (typename(target) = "Nothing") then LogMessage "Match aborted.", siInfo exit sub end if Match_Position selected, target end sub

Tutorials I 287

Section 7 Scripting

Further Work
To extend the capabilities of your script, you can write procedures to match the orientation and scaling as well. To build realign routines for the scale and orientation parameters, you need to substitute the pos parameters with ori.euler.rot (orientation) or scl (scale). Also, you need to substitute the Translate command with Rotate or Scale. Conclusion Scripting is a very powerful and often overlooked tool. Although you might think you need to know intricate math equations and formulas, this lesson shows that useful tools can be written with little or no math. Scripting is a method of telling SOFTIMAGE|XSI exactly what you want it to do. As you write more tools to simplify your workflow, you can focus on the higher level priorities of making your projects more polished and complete. For more information, see the Customization guide or the SDK documentation available online.

288 SOFTIMAGE|XSI

Index

Index
A
action clips bridge transition 230 creating 202 cycling 204, 222 equalizing (frequencies) 233 freezing (baking) into sources 225 ghosting for overlapped clips 227 holding frames 205 markers on 231 mixing weights 209 offsetting values 216 pose offset 227 scaling 204 transitions between 206 trimming 231 action sources adding keys to 221 applying animation from 226 freezing from action clips 225 loading in animation mixer 202 modifying function curves in 220 storing marked parameters 200 storing transformations 200 additive mixing for shapes 258 animation editing function curves in animation editor 119 editing in dopesheet 121 frequencies 233 high-level 198 keys 110 low-level 108

on paths 128 animation editor function curves and 119 animation mixer action clips in 202 audio clips in 251 using 198 applying animation from action source 226 audio clips in animation mixer 251 in flipbook 264 lip synching 250 markers on clips 253 playback preferences 252 waveform in fcurve editor 256 autokeying 116

B
beveling polygon mesh components 56 blend shapes 245 blending constraints with each other or animation 129, 133 branch selection 24 bridge transition in animation mixer 230 brush properties 97, 98 bulge deformation 102

C
chains applying envelope to 163, 164, 165 control rigs 158 drawing 145

duplicating in symmetry (mirroring) 146 inheriting rotation 146 limiting joint rotation 178 shadows for elements 158 up-vector constraints (up direction) 156 channel box (keying panel) 113 character animation rigs for controlling movement 152 walk cycle 188 cid (cycle ID) token for action clips 224 cloning 37 command box repeating commands 268 typing commands 270 command history, viewing 268 commands repeating 268 typing 270 See also custom commands, scripts, scripted operators constraints blending multiple 129, 133 compensation (offsetting) 152 direction 129 object to cluster 154 pose (scaling, orientation, and position) 152 position 129 up-vector for chains 156 construction history See modeling relations, operator stack construction modes 238 control rigs for character animation See rigs

custom commands creating 269 custom parameters creating 130 creating sets 130 cycles clips in animation mixer 222

D
deformations bulge 102 by lattice 100 by spine 99 by volume 105 push 97 randomize 100 wave 103 deformers adding to envelopes 175 direction constraints 129 dollying cameras 23 dopesheet editing keys in 121 shape phoneme keys 262 duplicating objects 27, 37 symmetrically 146

E
edge loops selecting 103 edges beveling 56 selecting edge loops 103 Envelope > Create Symmetry Mapping Template 171 Envelope > Mirror Weights 172 Envelope > Reassign Locally 165
Tutorials I 289

Index

Envelope > Reset Actor 164 Envelope > Set Envelope 164 Envelope > Set Reference Pose 175 envelopes about 161 adding deformers 175 for skeletons 163, 164, 165 freezing weights 177 mirroring weights 170 painting weights 168 presets 177 reassigning weight locally 165 reference poses 173 resetting reference poses 173 setting 164 smoothing weights 167, 169 symmetry 170 equalizing action clips 233 expressions creating 137

G
ghosting for overlapping clips in animation mixer 227 keyframes 117 groups creating 163 materials on 42 growing the selection 104

L
lattices 100 layers 32 linked parameters setting 133 loading scenes 21

O
object view 39 objects clones of 37 modifying multiple 47 offset effect for action clips 218 offset map for action clips 216 offsetting values in action clips 216 onion-skinning (ghosts) 117 opening scenes 21 operator stack freezing 50, 101 modifying operators 48, 101 orbiting with camera 23

M
magnet See proportional modeling main command area 22 marked parameters marking sets 184 storing in actions 200 transformations 111 markers in animation mixer 231 on audio clips 253 marking sets creating 184 materials on groups 42 memo cams 41 mirroring envelope weights 170 mixing action clips weights 209 Model toolbar 55 modeling relations about 101 viewing 104 moving points proportionally 95

H
hiding polygons 105 hierarchies chains in (skeletons) 148, 156

I
instances 41 instantiating models 42

K
keyable parameters 113 keyboard shortcuts activating tools with 23 keyframes adding to action sources 221 creating animation with 190 ghosted images 117 icon 112 setting 110 setting automatically with autokey 116 keying panel 113 keys in timeline 118 setting in keying panel 113

P
painting adding weight 168 brush properties 97, 98 deformation weights 95, 98 envelope weights 168 Push Paint 98 smoothing 167 panning the camera 23 parameter connection editor 133 parameters linking 133 parenting 28 in explorer 33 path animation 128

F
flipbook image and audio capture 264 framing elements in viewports 23 freezing envelope weights 177 operator stack 50, 101 freezing (baking) action clips into sources 225 frequencies of animation 233 function curves animation editor 119 editing 192
290 SOFTIMAGE|XSI

N
node selection 24

Index

polygon meshes beveling components 56 working with 52 polygons hiding 105 unhiding 106 pose offsets creating 227 position constraints 129 Project Manager 21 projects adding to list 21 properties 48 editing in property editors 46 property editors about 46 editing properties in 46 proportional modeling 95 proxy parameters creating 130 push deformation 97 Push Paint tool 97

rotations 30 limiting joint movement 178 rotoscopy importing images 187

S
scenes opening 21 script editor viewing command history in 268 scripts building custom tools 275 for automating tasks 271 repeating commands 268 selecting about 24 branches 24 edge loops 103 nodes 24 trees 24 shadows for chain elements 158 shape animation about 235 clusters 241 construction modes 238 mixing weights 258 proportional modeling 240 reference shape 243 selecting from predefined shapes 245 shape clips additive weighting 258 shape editor creating shapes 239 keying shape weights 257

R
randomize deformation 100 randomizing parameter values 43 redoing undone changes 23 reference planes transforming with 30 reference poses resetting 173 relations displaying in 3D views 104 rigs for character animation 152

shape keys base shape 243 modifying base geometry 243 phoneme keys in dopesheet 262 reference shape 243 selecting 245 setting weights for audio synching 257 synching with audio track 255 unlinking selected shape keys 247 shape weights keying in shape editor 257 shared materials See also materials on groups skeletons constraining control objects to 152 creating 144 rigs 152 spines 150 See also chains and envelopes smooth operator 169 smoothing envelope weights 167, 169 soft selection See proportional modeling spine deformations 99 spines for skeletons 150 subdivision surfaces 102 symmetry duplicating chains in 146 envelopes 170 synoptic views creating 181

T
timeline editing keys in 118 toolbars about 22, 23 adding buttons to 34 custom 34, 269 Model 55 tracking See also panning transform setup creating 183 transformations about 27 marking parameters 111 storing actions 200 transitions between clips in animation mixer 206 translations 27 tree selection 24

U
undoing changes 23 unhiding polygons 106 up vectors constraints for chains 156

V
viewing command history 268 viewports memo cams 41 visibility 33 volume deformations 105
Tutorials I 291

Index

W
walk cycles creating 179 foot sliding 193 wave deformation 103 waves animating 135 weight maps freezing 177 mirroring envelopes 170 painting 98 smoothing 167 weights envelope 161 mixing actions in animation mixer 209 workspace XSI 22

X
XSI workspace 22 XSI explorer 39

Z
zooming with cameras 23

292 SOFTIMAGE|XSI

You might also like