Class IBezPoint3Key

3DS Max Plug-In SDK

Class IBezPoint3Key

See Also: Class IKey, Class Point3.

class IBezPoint3Key : public IKey

Description:

This class stores a Bezier Point3 key.

The value of the intan and outtan values of IBezPoint3Key returned from GetKey is actually the tangent of the angle that is spanned between the horizontal axis and the tangent. In order to get the actual handle of the tangent it is important to know that the horizontal (time) distance from the handle to the key value is dependent on the previous (for intan) or next (for outtan) point. The horizontal distance is basically a third of the total distance between the current key and the previous (or next) key :

Control *c = node->GetTMController()->GetPositionController();

dt = (c->GetKeyTime(PreviousIdx)-c->GetKeyTime(CurrentIdx)) / 3.0f;

since the value in IBezPoint3Key pos_key.intan.x is the tan(alpha), you can easily get the vertical location of the handle by calculating :

tan(alpha) = pos_key.intan.x = dy/dt -> dy = pos_key.intan.x * dt

dt is the horizontal coordinate of the tangent handle relative to the key value.

dy is the vertical coordinate of the tangent handle relative to the key value.

Data Members:

public:

Point3 intan;

The incoming tangent vector. This can be thought of as the tangent handle of a 3D spline. The value is relative to val.

Point3 outtan;

The outgoing tangent vector. This can be thought of as the tangent handle of a 3D spline. The value is relative to val.

Point3 val;

The value of the key.

Point3 inLength;

The in length of the horizontal handle.

Point3 outLength;

The out length of the horizontal handle.