📄 3dsftk.h
字号:
ulong3ds curframe;
} kfkeyinfo3ds;
typedef struct {
byte3ds use;
ulong3ds begin;
ulong3ds end;
} kfsegment3ds;
typedef struct
{
kfkeyinfo3ds anim;
kfsegment3ds seg;
} kfsets3ds;
typedef struct {
char3ds name[11]; /* Name of camera object */
char3ds parent[22]; /* Name of parent object */
ushort3ds flags1; /* flags field from node header -fixup later */
ushort3ds flags2; /* flags2 field from node header -fixup later */
ulong3ds npkeys; /* Number of camera position keys */
ushort3ds npflag; /* Loop control flag for camera position keys */
keyheader3ds *pkeys; /* Spline values for camera position keys */
point3ds *pos; /* Camera position keys */
ulong3ds nfkeys; /* Number of camera FOV keys */
ushort3ds nfflag; /* Loop control flag for camera FOV keys */
keyheader3ds *fkeys; /* Spline values for camera FOV keys */
float3ds *fov; /* Camera FOV keys */
ulong3ds nrkeys; /* Number of camera roll keys */
ushort3ds nrflag; /* Loop control flag for camera roll keys */
keyheader3ds *rkeys; /* Spline values for camera roll keys */
float3ds *roll; /* Camera roll keys */
char3ds tparent[22]; /* Index of parent object for target */
ulong3ds ntkeys; /* Number of target position keys */
ushort3ds ntflag; /* Loop control flag for target position keys */
keyheader3ds *tkeys; /* Spline values for target position keys */
point3ds *tpos; /* Target position keys */
ushort3ds tflags1; /* flags field from target node header */
ushort3ds tflags2; /* flags field from target node header */
} kfcamera3ds;
/* kfambient3ds - Ambient light animation */
typedef struct {
ushort3ds flags1; /* flags field from node header -fixup later */
ushort3ds flags2; /* flags2 field from node header -fixup later */
ulong3ds nckeys; /* Number of color keys */
ushort3ds ncflag; /* Loop control flag for color keys */
keyheader3ds *ckeys; /* Spline values for position keys */
fcolor3ds *color; /* Color keys */
} kfambient3ds;
/* Used By ObjectMotion3ds */
typedef struct {
char3ds name[11]; /* Name of mesh */
char3ds parent[22]; /* Name of parent object */
ushort3ds flags1; /* flags field from node header */
ushort3ds flags2; /* flags2 field from node header */
point3ds pivot; /* Object pivot point */
char3ds instance[11]; /* Object instance name */
point3ds boundmin; /* Minimum bounding box point for dummy objects */
point3ds boundmax; /* Maximum bounding box point for dummy objects */
ulong3ds npkeys; /* Number of position keys */
short3ds npflag; /* Loop control flag for position keys */
keyheader3ds *pkeys; /* Spline values for position keys */
point3ds *pos; /* Mesh position keys */
ulong3ds nrkeys; /* Number of rotation keys */
short3ds nrflag; /* Loop control flag for rotation keys */
keyheader3ds *rkeys; /* Spline values for rotation keys */
kfrotkey3ds *rot; /* Rotation keys */
ulong3ds nskeys; /* Number of scaling keys */
short3ds nsflag; /* Loop control flag for scaling keys */
keyheader3ds *skeys; /* Spline values for scaling */
point3ds *scale; /* Mesh scaling keys */
ulong3ds nmkeys; /* Number of morph keys */
short3ds nmflag; /* Loop control flag for morph keys */
keyheader3ds *mkeys; /* Spline values for morph keys */
kfmorphkey3ds *morph; /* Morph keys */
ulong3ds nhkeys; /* Number of hide keys */
short3ds nhflag; /* Loop control flag for hide keys */
keyheader3ds *hkeys; /* Spline values for hide keys */
float3ds msangle; /* Morph smoothing group angle */
} kfmesh3ds;
/* Used By OmnilightMotion3ds */
typedef struct {
char3ds name[11]; /* Name of the light object node */
char3ds parent[22]; /* Name of the parent object */
ushort3ds flags1; /* flags field from node header -fixup later */
ushort3ds flags2; /* flags2 field from node header -fixup later */
ulong3ds npkeys; /* Number of position keys */
ushort3ds npflag; /* Loop control flag for position keys */
keyheader3ds *pkeys; /* Spline values for position keys */
point3ds *pos; /* Position keys */
ulong3ds nckeys; /* Number of color keys */
ushort3ds ncflag; /* Loop control flag for color keys */
keyheader3ds *ckeys; /* Spline values for position keys */
fcolor3ds *color; /* Color keys */
} kfomni3ds;
typedef struct {
char3ds name[11]; /* Name of camera object */
char3ds parent[22]; /* Parent name */
ushort3ds flags1; /* flags field from node header -fixup later */
ushort3ds flags2; /* flags2 field from node header -fixup later */
#ifdef broken
short3ds visable; /* Flags to control visability */
#endif
ulong3ds npkeys; /* Number of light position keys */
ushort3ds npflag; /* Loop control flag for position keys */
keyheader3ds *pkeys; /* Spline values for light position keys */
point3ds *pos; /* Light position keys */
ulong3ds nckeys; /* Number of color keys */
ushort3ds ncflag; /* Loop control flag color keys */
keyheader3ds *ckeys; /* Spline values for color keys */
fcolor3ds *color; /* Color keys */
ulong3ds nhkeys; /* Number of hotspot angle keys */
ushort3ds nhflag; /* Loop control flag for hotspot angle keys */
keyheader3ds *hkeys; /* Spline values for hotspot angle keys */
float3ds *hot; /* Hotspot angle keys */
ulong3ds nfkeys; /* Number of falloff angle keys */
ushort3ds nfflag; /* Loop control flag for falloff angle keys */
keyheader3ds *fkeys; /* Spline values for falloff angle keys */
float3ds *fall; /* Falloff angle keys */
ulong3ds nrkeys; /* Number of light roll keys */
ushort3ds nrflag; /* Loop control flag for light roll keys */
keyheader3ds *rkeys; /* Spline values for light roll keys */
float3ds *roll; /* Light roll keys */
char3ds tparent[22]; /* Name of target's parent object */
ulong3ds ntkeys; /* Number of target position keys */
ushort3ds ntflag; /* Loop control flag for target position keys */
keyheader3ds *tkeys; /* Spline values for target position keys */
point3ds *tpos; /* Target position keys */
ushort3ds tflags1; /* flags field from target node header */
ushort3ds tflags2; /* flags field from target node header */
} kfspot3ds;
typedef struct {
long3ds size;
void3ds *data;
} xdataraw3ds;
/*----------------------------------------
Constants for commonly used structures
--------------------------------------*/
/* 3DS File Toolkit revision level. Future revisions will increment this
integer number */
static const long3ds __FTKRevisionLevel3ds = FTKRevisionLevel3ds;
/* Flags used by the flag field of the mesh3ds structure */
static const ushort3ds FaceCAVisable3ds = 0x0001; /* Flags the CA edge as visable */
static const ushort3ds FaceBCVisable3ds = 0x0002; /* Flags the BC edge as visable */
static const ushort3ds FaceABVisable3ds = 0x0004; /* Flags the AB edge as visable */
static const ushort3ds FaceUWrap3ds = 0x0008; /* Flags the face as being at
a texture coord u wrap
seam */
static const ushort3ds FaceVWrap3ds = 0x0010; /* Flags the face as being at
a texture coord v wrap
seam */
/* Flags used by the rflags field of the keyheader3ds structure */
static const ushort3ds KeyUsesTension3ds = 0x01;
static const ushort3ds KeyUsesCont3ds = 0x02;
static const ushort3ds KeyUsesBias3ds = 0x04;
static const ushort3ds KeyUsesEaseTo3ds = 0x08;
static const ushort3ds KeyUsesEaseFrom3ds= 0x10;
/* Flags used by the track flags field */
static const ushort3ds TrackSingle3ds = 0x0000;
static const ushort3ds TrackLoops3ds = 0x0003;
static const ushort3ds TrackRepeats3ds = 0x0002;
static const ushort3ds TrackLockX3ds = 0x0008;
static const ushort3ds TrackLockY3ds = 0x0010;
static const ushort3ds TrackLockZ3ds = 0x0020;
static const ushort3ds TrackNoLinkX3ds = 0x0100;
static const ushort3ds TrackNoLinkY3ds = 0x0200;
static const ushort3ds TrackNoLinkZ3ds = 0x0400;
/* Basic structure default contents for ease of initialization */
static const point3ds DefPoint3ds = {0.0F, 0.0F, 0.0F};
static const textvert3ds DefTextVert3ds = {0.0F, 0.0F};
static const face3ds DefFace3ds = {0, 1, 2, 0};
static const trackheader3ds DefTrackHeader3ds = {0, 0, 0, 1};
static const keyheader3ds DefKeyHeader3ds = {0, 0, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F};
/* Last toolkit error */
extern byte3ds ftkerr3ds; /* True3ds if error is pending */
extern byte3ds ignoreftkerr3ds; /* True3ds if errors are being ignored by toolkit */
/* Fog flags */
static const ulong3ds LayerFogBgnd = 0x100000;
static const ulong3ds NoFalloff = 0x0;
static const ulong3ds TopFalloff = 0x2;
static const ulong3ds BottomFalloff = 0x1;
/* Flags for initflags parameter */
static const ushort3ds InitNoExtras3ds = 0x0000;
static const ushort3ds InitVertexArray3ds = 0x0001;
static const ushort3ds InitTextArray3ds = 0x0002;
static const ushort3ds InitFaceArray3ds = 0x0004;
static const ushort3ds InitMatArray3ds = 0x0008;
static const ushort3ds InitSmoothArray3ds = 0x0010;
static const ushort3ds InitProcData3ds = 0x0020;
static const ushort3ds InitVFlagArray3ds = 0x0040;
/* Smoothing group flags used in the smootharray field of the mesh3ds structure */
static const ulong3ds Smooth01Group3ds = 0x00000001;
static const ulong3ds Smooth02Group3ds = 0x00000002;
static const ulong3ds Smooth03Group3ds = 0x00000004;
static const ulong3ds Smooth04Group3ds = 0x00000008;
static const ulong3ds Smooth05Group3ds = 0x00000010;
static const ulong3ds Smooth06Group3ds = 0x00000020;
static const ulong3ds Smooth07Group3ds = 0x00000030;
static const ulong3ds Smooth08Group3ds = 0x00000080;
static const ulong3ds Smooth09Group3ds = 0x00000100;
static const ulong3ds Smooth10Group3ds = 0x00000200;
static const ulong3ds Smooth11Group3ds = 0x00000400;
static const ulong3ds Smooth12Group3ds = 0x00000800;
static const ulong3ds Smooth13Group3ds = 0x00001000;
static const ulong3ds Smooth14Group3ds = 0x00002000;
static const ulong3ds Smooth15Group3ds = 0x00004000;
static const ulong3ds Smooth16Group3ds = 0x00008000;
static const ulong3ds Smooth17Group3ds = 0x00010000;
static const ulong3ds Smooth18Group3ds = 0x00020000;
static const ulong3ds Smooth19Group3ds = 0x00040000;
static const ulong3ds Smooth20Group3ds = 0x00080000;
static const ulong3ds Smooth21Group3ds = 0x00100000;
static const ulong3ds Smooth22Group3ds = 0x00200000;
static const ulong3ds Smooth23Group3ds = 0x00400000;
static const ulong3ds Smooth24Group3ds = 0x00800000;
static const ulong3ds Smooth25Group3ds = 0x01000000;
static const ulong3ds Smooth26Group3ds = 0x02000000;
static const ulong3ds Smooth27Group3ds = 0x04000000;
static const ulong3ds Smooth28Group3ds = 0x08000000;
static const ulong3ds Smooth29Group3ds = 0x10000000;
static const ulong3ds Smooth30Group3ds = 0x20000000;
static const ulong3ds Smooth31Group3ds = 0x40000000;
static const ulong3ds Smooth32Group3ds = 0x80000000;
static const char3ds *DummyName3ds = "$$$DUMMY";
/* Flag settings for kfmesh3ds, kfomni3ds, kfcamera3ds, kfambient, and kfspot3ds */
/* For the flags field */
static const ushort3ds KfNodeOff3ds = 1<<3;
static const ushort3ds KfHideNode3ds = 1<<11;
static const ushort3ds KfFastNode3ds = 1<<12;
/* For the flags2 field */
static const ushort3ds KfNodeHasPath3ds = 1;
static const ushort3ds KfNodeAutoSmooth3ds = 1<<1;
static const ushort3ds KfNodeFrozen3ds = 1<<2;
static const ushort3ds KfMotionBlur3ds = 1<<4;
static const ushort3ds KfBlurBranch3ds = 1<<5;
static const ushort3ds KfMorphMtl3ds = 1<<6;
static const ushort3ds KfMorphOb = 1<<7;
typedef enum
{
LightTarget,
CameraTarget
} targettype3ds;
static const long3ds TerseDump3ds = 0; /* Just the chunk headers */
static const long3ds MediumDump3ds = 1; /* Selected bits of data (usually not array dumps) */
static const long3ds MaximumDump3ds = 2; /* Everything */
/* Priv */ void PushErrList3ds(errorid3ds id);
/* Priv */ const char3ds *ErrCodeToString3ds(errorid3ds err);
void DumpErrList3ds(FILE *outfile);
void ClearErrList3ds();
const ErrRec3ds *ReturnErrorList3ds();
/* Functions to use with namelist3ds structures */
void InitNameList3ds(namelist3ds **chunk, ulong3ds count);
void ReleaseNameList3ds(namelist3ds **chunk);
void AddToNameList3ds(namelist3ds **list, char3ds *name);
/* File control functions */
file3ds *OpenFile3ds(const char3ds *filename, const char *attrib);
void CloseAllFiles3ds();
void CloseFile3ds(file3ds *file);
/* Database functions */
void InitDatabase3ds(database3ds **db);
void ReleaseDatabase3ds(database3ds **db);
void CreateDatabase3ds(file3ds *file, database3ds *db);
void CreateNewDatabase3ds(database3ds *db, dbtype3ds type);
dbtype3ds GetDatabaseType3ds(database3ds *db);
void CopyDatabase3ds(database3ds *idb, database3ds *odb);
void DisconnectDatabase3ds(database3ds *db);
void WriteDatabase3ds(file3ds *file, database3ds *db);
void InitViewport3ds(viewport3ds **vp);
void ReleaseViewport3ds(viewport3ds **vp);
void GetViewport3ds(database3ds *db, viewport3ds **vp);
void PutViewport3ds(database3ds *db, viewport3ds *vp);
void CopyViewport3ds(database3ds *destdb, database3ds *srcdb);
void InitMeshSet3ds(meshset3ds **);
void ReleaseMeshSet3ds(meshset3ds **);
void GetMeshSet3ds(database3ds *, meshset3ds **);
void PutMeshSet3ds(database3ds *db, meshset3ds *settings);
void CopyMeshSet3ds(database3ds *destdb, database3ds *srcdb);
void InitAtmosphere3ds(atmosphere3ds **atmo);
void ReleaseAtmosphere3ds(atmosphere3ds **atmo);
void GetAtmosphere3ds(database3ds *db, atmosphere3ds **atmo);
void PutAtmosphere3ds(database3ds *db, atmosphere3ds *atmo);
void CopyAtmosphere3ds(database3ds *destdb, database3ds *srcdb);
void InitBackground3ds(background3ds **bgnd);
void ReleaseBackground3ds(background3ds **bgnd);
void GetBackground3ds(database3ds *db, background3ds **bgnd);
void PutBackground3ds(database3ds *db, background3ds *bgnd);
void CopyBackground3ds(database3ds *destdb, database3ds *srcdb);
short3ds AddMaterial3ds(const material3ds *mat);
void InitBitmap3ds(bitmap3ds *map);
short3ds InitMaterial3ds(material3ds **mat);
void ReleaseMaterial3ds(material3ds **mat);
u
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -