资源简介

将3DS文件导入到OpenGL中,并根据鼠标移动的位置动态调整相机的视角,实时的显示不同角度的三维场景。

资源截图

代码片段和文件信息

// 3ds.cpp: implementation of the C3ds class.
//
//////////////////////////////////////////////////////////////////////

#include “3ds.h“
#include 
#include “gamehead.h“
#include “Frustum.h“
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//#define INT_MAX 2147483647 
//#define INT_MIN 2147483647-1 
#define  FLT_MAX 3.402823466e+38F 
#define  FLT_MIN 1.175494351e-38F 
C3DS::C3DS()
{
// m_Model.numOfMaterials = 0;
// m_Model.numOfobjects = 0;
}

C3DS::~C3DS()
{
for(int i = 0;iject.size();i++)
{
if(m_Model.vobject[i].pVerts)
delete []m_Model.vobject[i].pVerts;
if(m_Model.vobject[i].pTexVerts)
delete []m_Model.vobject[i].pTexVerts;
if(m_Model.vobject[i].pFaces)
delete []m_Model.vobject[i].pFaces;
// if(m_Model.vobject[i].pNormals)
// delete []m_Model.vobject[i].pNormals;
}
}
void ReadString(FILE *filechar *str)
{
int i=0;char l_char;
do
{
fread (&l_char 1 1 file);
        str[i]=l_char;
i++;
    }while(l_char != ‘\0‘ && i<255);
}
bool C3DS::Load3DS ( char *p_filename)
{
t3DModel *pModel = &m_Model;
int i; //Index variable
FILE *l_file; //File pointer
t3Dobject *pObj;
unsigned short l_chunk_id; //Chunk identifier
unsigned int l_chunk_lenght; //Chunk lenght
unsigned short l_qty; //Number of elements in each chunk
unsigned short l_face_flags; //Flag that stores some face information
if ((l_file=fopen (p_filename “rb“))== NULL) return false; //Open the file
while (ftell (l_file) < filelength (fileno (l_file))) //Loop to scan the whole file 
{
fread (&l_chunk_id 2 1 l_file); //Read the chunk header
fread (&l_chunk_lenght 4 1 l_file); //Read the lenght of the chunk
switch (l_chunk_id)
        {
//----------------- MAIN3DS -----------------
// Description: Main chunk contains all the other chunks
// Chunk ID: 4d4d 
// Chunk Lenght: 0 + sub chunks
//-------------------------------------------
case 0x4d4d: 
break;    

//----------------- EDIT3DS -----------------
// Description: 3D Editor chunk objects layout info 
// Chunk ID: 3d3d (hex)
// Chunk Lenght: 0 + sub chunks
//-------------------------------------------
case 0x3d3d:
break;

//--------------- EDIT_object ---------------
// Description: object block info for each object
// Chunk ID: 4000 (hex)
// Chunk Lenght: len(object name) + sub chunks
//-------------------------------------------
case 0x4000: 
{
t3Dobject obj;
obj.numOfFaces = 0;
obj.numOfVerts = 0;
obj.numTexVertex = 0;
obj.pFaces = 0;
obj.pTexVerts = 0;
obj.pVerts = 0;
// memset(&obj0sizeof(t3Dobject));
ReadString(l_fileobj.strName);
pModel->vobject.push_back(obj);

}
break;

//--------------- OBJ_TRIMESH ---------------
// Descr

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      10025  2003-11-05 22:15  235235343\3ds.cpp

     文件       3100  2003-11-05 17:50  235235343\3ds.h

     文件     749898  2003-10-23 20:10  235235343\BRICK.bmp

     文件     245814  2003-10-23 17:15  235235343\brown-ma.bmp

     文件      16367  2003-11-05 22:17  235235343\Camera.cpp

     文件       3244  2003-11-05 22:17  235235343\Camera.h

     文件       1911  2003-11-05 22:12  235235343\DemoHouse.3DS

     文件      28996  2003-11-03 23:46  235235343\Frustum.cpp

     文件       2216  2003-11-03 23:27  235235343\Frustum.h

     文件       1668  2003-08-12 00:15  235235343\GameHead.h

     文件      14733  2003-11-02 14:00  235235343\GameWnd.cpp

     文件       1319  2003-11-05 17:38  235235343\GameWnd.h

     文件     107406  2003-10-23 20:13  235235343\greenLf.bmp

     文件       5075  2003-11-05 22:18  235235343\Load3DSDemo.dsp

     文件        545  2003-08-09 21:20  235235343\Load3DSDemo.dsw

     文件       1813  2003-11-05 22:20  235235343\Load3DSDemo.plg

     文件       1757  2003-10-24 23:42  235235343\main.cpp

     文件      16758  2003-06-12 18:19  235235343\Math.cpp

     文件       2644  2003-06-12 18:19  235235343\Math.h

     文件       1730  2003-11-05 22:18  235235343\Portal.plg

     文件       1020  2003-11-05 22:09  235235343\Scene.cpp

     文件        703  2003-11-05 22:17  235235343\Scene.h

     文件      15735  2003-11-05 22:15  235235343\Texture.cpp

     文件        934  2003-11-05 22:15  235235343\Texture.h

     文件       3132  2003-08-05 07:26  235235343\vector.cpp

     文件       1805  2003-10-23 10:19  235235343\Vector.h

     文件       2916  2004-10-04 21:33  235235343\Cn700.com.txt

     文件        223  2004-10-04 20:06  235235343\readme.htm

     文件       2470  2004-10-04 21:37  235235343\readme.txt

     目录          0  2004-11-14 15:11  235235343

............此处省略4个文件信息

评论

共有 条评论