📄 3dsimport_load.hxx
字号:
/*
* 3D Studio object reader
*/
#ifndef _3DSLOAD_H
#define _3DSLOAD_H
typedef unsigned char byte;
typedef unsigned short word;
typedef unsigned long dword;
typedef float float32;
typedef struct
{
word p0,p1,p2;
word flags;
// ...
} H3dsFace;
typedef struct
{
union { float32 x; dword ix; };
union { float32 y; dword iy; };
union { float32 z; dword iz; };
// ...
} H3dsVert;
typedef struct
{
union { float32 u; dword iu; };
union { float32 v; dword iv; };
// ...
} H3dsMap;
typedef struct
{
int faces; // number of faces in facelist
int verts; // number of vertices in vertlist
int maps; // number of mapping coordinates in maplist
int matrix; // 1 if transformation matrix is loaded
H3dsFace * facelist;
H3dsVert * vertlist;
H3dsMap * maplist;
float32 TraMatrix[3*4]; // 3*3 rotation matrix, 3*1 translation matrix
char name[16]; // object name, zero terminated
// This vertice don't really belong here in the loader structure.
// It is only used in the converter to hold the centre point
// for this mesh object.
H3dsVert centre;
} H3dsMeshObj;
typedef struct
{
int meshobjs; // number of meshobjects in meshobjlist
H3dsMeshObj * meshobjlist;
// Same comment as above. This vertice holds the centre point of
// all objects in the scene.
H3dsVert centre;
} H3dsScene;
#ifdef __cplusplus
extern "C" {
#endif
/*
* H3dsScene * HRead3dsScene(void * ptr, int what, dword size);
*
* ptr - pointer to either a FILE structure or a memory buffer
* what - 0 if 3DS-data from file, 1 if 3DS-data from memory buffer
* size - size in bytes of 3DS data
*
* Note! If you load from file, you must open the file in binary
* mode and determine the size of the 3DS-data (i.e. the filesize)
* upon calling this function. The filepointer is assumed to be
* at the wery start of the 3DS-data (i.e. start of file if it's a
* .3DS-file). The file is not closed by the function.
*
* The function returns a pointer to a H3dsScene structure wich holds
* all data for each object. This structure can be freed with the
* HFree3dsScene() function.
*
* In case of error the function frees all allocated memory and returns 0.
* The goal has been to make the functions well behaved and to not cause
* any crashes in an error situation.
*/
H3dsScene * HRead3dsScene(void * ptr, int what, dword size);
void HFree3dsScene(H3dsScene * scene);
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -