|
[em10] [em10] [em10]/类型
enum XformType_FLAG
{
Cx3d_No_Xform = 0,
Cx3d_Scale_Rotate_Xform = 1,
Cx3d_Scale_Xform = 2,
Cx3d_Rotate_Xform = 3,
Cx3d_All_Xform = 4
};
//网格类型
enum MeshType_FLAG
{
C3d_Format_Normal = 1,
C3d_Format_LightMap =2,
C3d_Format_CompleteMap=3
};
//阴影类型
enum CX3D_SHADOW_TYPE
{
CX3D_SHADOW_NONE=0,
CX3D_SHADOW_RECT=1,
CX3D_SHADOW_CIRCLE=2
};
//摄像机类
struct SCx3dCamera
{
SCx3dCamera() : Position(0.0f, 0.0f, 0.0f), Target(0.0f, 0.0f, 1.0f), CamFov(80.0f),Active(false)
{};
char CamName[128];
core::vector3df Position;
core::vector3df Target;
f32 CamFov;
bool Active;
};
//灯光类
struct SCx3dLight
{
SCx3dLight() : ParentID(-1) {};
video::SLight LightData;
char LightName[128];
s32 ParentID;
};
//节点类
struct SCx3dNode
{
SCx3dNode() : Position(0.0f, 0.0f, 0.0f), Rotation(0.0f, 0.0f, 0.0f), Scale(1.0f, 1.0f, 1.0f),NodeType(0),ShadowType(CX3D_SHADOW_NONE)
{};
char NodeName[128];
core::vector3df Position;
core::vector3df Rotation;
core::vector3df Scale;
s32 MeshID;
int MaterialCount;
int NodeType;
CX3D_SHADOW_TYPE ShadowType;
};
//头文件结构
typedef struct Cx3dFileStruct
{
unsigned long Flag;
char TypeName[10];
unsigned char Version;
int NodeCount;
int CameraCount;
int LightCount;
//int MaterialCount;
int MeshCount;
char BackImage[260];
XformType_FLAG XformType;
}Cx3dFileHead;
//网格数据
struct SMeshGroup
{
SMeshGroup() : MeshID(0),BufferCount(0){};
s32 MeshID;
int BufferCount;
};
//网格结构
typedef struct Cx3dMeshStruct
{
int VertCount;
int IndexCount;
MeshType_FLAG MeshType;
}Cx3dMeshHead;
//3d文件结构
typedef struct C3dbFileStruct
{
unsigned long Flag;
char TypeName[9];
unsigned char Version;
int BufCount;
}C3dFileHead;
//顶点索引
typedef struct VertIndexStruct
{
int VertCount;
int IndexCount;
MeshType_FLAG MeshType;
//增加的
}VertIndexCount;
//////////////////////////////////////////////////////////////////////////
class CVRLoad
{
public:
CVRLoad();
FILE *m_file;
Cx3dFileHead *headfile;
//virtual ~CVRLoad();
////显示3d模型
//void show3d(char *filename);
////初始换数据
//void init(char *filename,int j);
//装入数据
void import(char *strname);
void Init(char *filename,int i);
////从文件中创建贴图
//void createtex();
////读取一个字符
//int getstring(char * pbuff);
////读下一个快
//void readchunk(tChunk * pchunk);
////继续读取下一个快
//void readnextchunk();
////读取下一个快对象
//void readnextobjchunk();
////读取下一个材质
//void readnextmatchunn();
////读取颜色
//void readcolor(SMaterialCx *matrix,tChunk * pchunk);
////读取对象顶点
//void readvertex(VertIndexStruct *pobject,tChunk * prechunk);
////读取对象面的信息
//void readvertexindex();
////读对象纹理坐标
//void readvcoord();
////读取对象的材质名称
//void readobjmat();
////读取法向量
//void computenormal();
////关闭文件释放空间
//void clean();
};
这是一个文件的信息,怎么读取该文件和显示啊,谢谢咯哦,各位大侠,还有就是有没有读取文件的资料啊,谢谢了啊!!!! |
|