資源簡介
將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)? {
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個文件信息
評論
共有 條評論