# NNSG3dJntAnmResult

## Syntax

    #include <nnsys/g3d/anm.h>

    typedef enum
    {
        NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE      = 0x00000001,
        NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO       = 0x00000002,
        NNS_G3D_JNTANM_RESULTFLAG_TRANS_ZERO     = 0x00000004,
        NNS_G3D_JNTANM_RESULTFLAG_SCALEEX0_ONE   = 0x00000008,
        NNS_G3D_JNTANM_RESULTFLAG_SCALEEX1_ONE   = 0x00000010,
        NNS_G3D_JNTANM_RESULTFLAG_MAYA_SSC       = 0x00000020
    }
    NNSG3dJntAnmResultFlag;

    typedef struct NNSG3dJntAnmResult_
    {
        NNSG3dJntAnmResultFlag flag;
        VecFx32                scale;
        VecFx32                scaleEx0;
        VecFx32                scaleEx1;
        MtxFx33                rot;
        VecFx32                trans;
    }
    NNSG3dJntAnmResult;

## Description

The `NNSG3dJntAnmResult` structure stores information relating to the joint's position, direction, and scale. GD3 uses the information stored in this structure to send commands to the Geometry Engine. The structure is created and used during the execution of the `NNSi_G3dFuncSbc_NODEDESC` function (i.e., when it is called during the SBC's NODEDESC command process).
To implement joint animation, the `NNSi_G3dFuncSbc_NODEDESC` function acts internally to set the data stored in this structure in accordance with the animation data.
By setting a callback in `NNS_G3D_SBC_NODEDESC`, the joint's position, direction and scale can be controlled from the user program by accessing the `NNSG3dJntAnmResult` structure via the `NNSG3dRS` structure.

`NNSG3dJntAnmResult` Structure Members | Description
--- | ---
flag | The flag of type `NNSG3dJntAnmResultFlag`.
scale | Scale by which joint is multiplied.
scaleEx0 | Auxiliary scale value. The meaning of this value differs depending on the CG tool. This value normally is not manipulated.
scaleEx1 | Auxiliary scale value. The meaning of this value differs depending on the CG tool. This value normally is not manipulated.
rot | Joint's 3x3 rotation matrix.
trans | Joint's parallel transform component.

`NNSG3dMatAnmResultFlag` Values | Description
--- | ---
`NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE` | When this flag is set, the value stored in `scale` is disabled. All scale components are treated as if `FX32_ONE` has been entered.
`NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO` | When this flag is set, the value stored in `rot` is disabled. The rotation matrix is treated as a unit matrix.
`NNS_G3D_JNTANM_RESULTFLAG_TRANS_ZERO` | When this flag is set, the value stored in `trans` is disabled. All parallel transform components are treated as if `0` has been entered.
`NNS_G3D_JNTANM_RESULTFLAG_SCALEEX0_ONE` | When this flag is set, `scaleEx0` is disabled. All components are treated as `FX32_ONE`.
`NNS_G3D_JNTANM_RESULTFLAG_SCALEEX1_ONE` | When this flag is set, the value stored in `scaleEx1` is disabled. All components are treated as `FX32_ONE`.
`NNS_G3D_JNTANM_RESULTFLAG_MAYA_SSC` | When this flag is set, this joint is multiplied by Maya's Segment Scale Compensate.

## See Also

Kernel, Rendering Engine

## Revision History

2004/10/13 Initial version.

CONFIDENTIAL