In character studio, in crowd animation with non-bipedal motion synthesis, a state is a particular property or set of properties of a delegate's animation; for example, the period during which it is pitched upwards and is decelerating. After determining the delegate's state, the motion synthesis engine chooses a motion clip for animating the object, or character, linked to the delegate; for example, a bird. When preparing a simulation that uses motion synthesis, you use the ClipState dialog to define states and associate states with motion clips.
You can define a state with any combination of these properties: speed, acceleration, pitch, pitch velocity, and heading velocity (plus a script). For each active property, you can specify a range or a unique value that triggers the clip for its respective state.
When you use a range, be sure to set the Min setting lower than the Max setting. For example, when using a negative range such as –180 to –10, enter the number with the larger absolute value (–180) as the Min setting.
You can see the delegates' actual ranges and average values for all properties after synthesizing the clips.
The dialog has several panels, described in the topics that follow.
You can enable and disable each state property individually. For example, you can tell the motion synthesis to consider only speed and pitch when analyzing delegate motion. For each of a state's active properties, you can designate a range of values between which a state can be activated.
Alternatively, you can specify a single, unique motion value to be used when a state is active, such as a speed of 50 units per frame. In addition, you specify the In and Out values of the parameter as it approaches and then passes through that unique value. These values are analogous to the tangents of a curve. For each, you can pick Anything, Decreasing, Increasing, or Constant. For example, an animation of an object that has just landed after flying might have a Unique speed value of 0.0 (the object isn't moving laterally), a decreasing In value (the object decelerated before landing) and a constant Out value (the object remains stationary). Taking off, on the other hand, would have an increasing Out value.
If you don't specify state parameters, the state is a default state. For example, if you want the motion synthesis engine to choose random motion clips for an object, and you don’t care about what the speed or pitch is, you create default states, and the synthesis engine will randomly pick which clip is active.
character studio can create states automatically if you turn on Create State on the Synthesis dialog Motion Clips panel. You can use this feature if you created a creature that contains lateral motion as well as looping motion.
If you turn on all the options in the Motion Clips panel Remove Local group, then character studio creates a state that reflects the actual heading, speed, and acceleration of your creature. When a delegate approaches the heading and speed contained in this state, it triggers the appropriate motion clip. This method prevents sliding feet when animating multi-legged creatures.
To have delegate speed considered for motion synthesis, turn on Use Speed, choose Range or Unique, and then make the appropriate settings.
To have delegate acceleration considered for motion synthesis, turn on Use Acceleration, choose Range or Unique, and then make the appropriate settings.
To have delegate pitch considered for motion synthesis, turn on Use Pitch, choose Range or Unique, and then make the appropriate settings.
To have delegate pitch velocity considered for motion synthesis, turn on Use Pitch Velocity, choose Range or Unique, and then make the appropriate settings.
To have delegate heading velocity considered for motion synthesis, turn on Use Heading Velocity, choose Range or Unique, and then make the appropriate settings.
The script state option lets you create a MAXScript script that takes two parameters: node and time. The script typically tests one or more values, and then returns 1 if the condition (the result of the test) is true or 0 if it’s false. This result determines whether or not the state is to be activated.