www.pudn.com > 3DEDITOR.rar > IMPEXP3DS.H
#define MASTER_SCALE 0x100
#define M3DMAGIC 0x4d4d
#define M3D_VERSION 0x0002
#define COLOR_24 0x0011
#define INT_PERCENTAGE 0x0030
#define MDATA 0x3d3d
#define MAT_ENTRY 0xafff
#define MAT_NAME 0xa000
#define MAT_AMBIENT 0xa010
#define MAT_DIFFUSE 0xa020
#define MAT_SPECULAR 0xa030
#define MAT_SHININESS 0xa040
#define MAT_SHININESS_STRENGTH 0xa041
#define MAT_TRANSPARENCY 0xa050
#define MAT_TRANSPARENCY_FALLOFF 0xa052
#define MAT_REFLECT_BLUR 0xa053
#define MAT_SELF_ILLUM 0xa084
#define MAT_SHADING 0xa100
#define MAT_MAP_TEXTURE1 0xa200
#define MAT_MAP_SPECULAR 0xa204
#define MAT_MAP_OPACITY 0xa210
#define MAT_MAP_REFLECTION 0xa220
#define MAT_MAP_BUMP 0xa230
#define MAT_MAP_TEXTURE2 0xa33a
#define MAT_MAP_SHININESS 0xa33c
#define MAT_MAP_SELFILLUM 0xa33d
#define MESH_VERSION 0x3d3e
#define MAPP_FILENAME 0xa300
#define MAPP_OPTIONS 0xa351
#define MAPP_FILTERING 0xa353
#define MAPP_U_SCALE 0xa354
#define MAPP_V_SCALE 0xa356
#define MAPP_U_OFFSET 0xa358
#define MAPP_V_OFFSET 0xa35a
#define MAPP_ROTATION 0xa35C
#define NAMED_OBJECT 0x4000
#define N_TRI_OBJECT 0x4100
#define POINT_ARRAY 0x4110
#define FACE_ARRAY 0x4120
#define MSH_MAT_GROUP 0x4130
#define TEXT_COORD 0x4140
#define SMOOTH_GROUP 0x4150
#define LOCAL_AXIS 0x4160
#define N_CAM_OBJECT 0x4700
#define N_DIRECT_LIGHT 0x4600
#define DL_SPOTLIGHT 0x4610
#define SizeofChunk 6
class export3ds
{
public:
FILE *m_fp;
export3ds(char *, float, material *, int);
~export3ds(void);
void WriteNamedObject(
char *, float *, float *,
unsigned short, unsigned short *,
unsigned short, unsigned short *,
int, material *,float *);
void close(camera *, int, light *, int);
private:
long MDATA_size, MDATA_bpatch;
long M3DMAGIC_size, M3DMAGIC_bpatch;
void WriteString(char *);
void WriteUShort(unsigned short);
void WriteULong(unsigned long);
void WriteLong(long);
void WriteByte(char);
void WriteShort(short);
void WriteFloat(float);
void WriteUByte(unsigned char);
long WriteChunk(unsigned short, long);
long WritePatch(long, long);
void WriteMData_Ini(material *, int);
long WriteMData_Fim();
long WriteMeshVersion(long);
long WriteMatEntries(material *, int);
long WriteChunkString(unsigned short, char *);
long WriteChunkMapping(unsigned short, struct mapping *);
long WriteColor(float [3]);
long WriteTriObject(
float *, float *, unsigned short,
unsigned short *, unsigned short,
unsigned short *, int, material *,float *);
long WritePointArray(float *, unsigned short);
long WriteFaceArray(
unsigned short *, unsigned short, unsigned short *,
int, material *);
long WriteMaterial(unsigned short *, int, material *);
long WriteTextCoord(float *, unsigned short);
long WriteO();
long WriteMasterScale();
long WriteMData_Fim(camera *camlib, int ncamlib, light *lightlib, int nlights);
long WriteLights(light *lightlib, int nlights);
long WriteCameras(camera *camlib, int ncamlib);
long WriteCamObject(camera c);
long WriteLightObject(light l);
};
class import3ds
{
FILE *fp;
char *chunk;
int chunklen;
unsigned short chunkid;
int filepos,nmat;
material *matlib;
float masterscale,scale;
virtual void object3d(char *name,int nv,int nf,int ntc,float *local_axis)
{ ; };
virtual void vertex3(float *vec)
{ ; };
virtual void text_coord(float *uv)
{ ; };
virtual void face3(unsigned short *fa)
{ ; };
virtual void camera(char *name, float *pos, float *target, float bank, float lens)
{ ; };
virtual void pointlight(char *name, float *pos,float *color)
{ ; };
virtual void spotlight(char *name, float *pos,float *target,float *color,float hotspot,float falloff)
{ ; };
virtual void face_material(material *mat,int nf,unsigned short *faces)
{ ; };
virtual int object_name(char *name)
{ return 1; };
int read_chunk();
void jump_chunk();
void load_chunk();
void load_object();
void load_string(char *str);
void load_light(char *objname);
void load_mesh(char *objname);
void load_mapping(struct mapping *mat);
void load_material();
public:
import3ds()
{
chunk=0; chunklen=0; nmat=0; matlib=0; masterscale=1.0f; scale=1.0; filepos=0;
};
~import3ds()
{
if (chunk) delete chunk;
if (matlib) delete matlib;
};
int import(char *name,float scalefactor);
};