Surfaces: Basis Lists

Element type: miSCENE_BASIS_LIST
Data type: miBasis_list[ ]
Sizes: int no_bases, int no_scalars
Defaults: all nulls
enum miBasis_type {
        miBASIS_NONE = 0,               /* for internal use */
        miBASIS_BEZIER,
        miBASIS_BSPLINE,
        miBASIS_CARDINAL,
        miBASIS_MATRIX,
        miBASIS_TAYLOR
};

typedef struct {
        miGeoIndex      no_bases;
        miGeoIndex      no_scalars;
        miBasis         bases[1];
} miBasis_list;

typedef struct miBasis {
        enum miBasis_type type;
        miGeoIndex      degree;         /* undefined for Cardinal */
        miGeoIndex      stepsize;       /* only for miBASIS_MATRIX */
        miGeoIndex      value_idx;      /* index into the basis scalar list */
} miBasis;

A translator must provide: type, degree; if the type is basis matrix, also stepsize and value_idx.

no_bases specifies the number of bases in the basis list.

no_scalars specifies the number of scalars that follow the basis list. Scalars are used for basis matrix bases, which require degree^2 scalars for a matrix defining the basis. The first scalar in the list has index 0.

bases is the basis array. It is actually allocated larger.

type is one of miBASIS_BEZIER, miBASIS_BSPLINE, miBASIS_CARDINAL, miBASIS_MATRIX, and miBASIS_TAYLOR.

degree is the degree of the basis.

stepsize is used for basis matrix bases only.

For an explanation, see the description of bases in the mental ray User Manual.

Copyright © 1986-2010 by mental images GmbH