• 大小: 5.82MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-25
  • 语言: 其他
  • 标签: 路灯  

资源简介

opengl写的,导入3DS路灯,有灯光光韵效果,很真实,很漂亮。

资源截图

代码片段和文件信息

#include “3ds.h“
#include “Texture.h“

// 构造函数
C3DSModel::C3DSModel()
{
// 初始化文件指针
m_FilePtr = NULL;

// 定义一个默认的材质(灰色)
tMaterial defaultMat;
defaultMat.isTexMat = false;
strcpy(defaultMat.matName.string “5DG_Default“);
defaultMat.color[0] = 192;
defaultMat.color[1] = 192;
defaultMat.color[2] = 192;
m_3DModel.pMaterials.push_back(defaultMat);

// 初始化保存3DS模型的结构体
m_3DModel.numOfMaterials = 1;
m_3DModel.numOfobjects = 0;
}

// 析构函数
C3DSModel::~C3DSModel()
{
m_3DModel.pMaterials.clear();
m_3DModel.pobject.clear();
}

// 载入3ds文件
BOOL C3DSModel::Load(char *strFileName)
{
char strMessage[128] = {0};
tChunk chunk = {0};

// 打开文件
m_FilePtr = fopen(strFileName“rb“);

// 如果文件打开失败
if (!m_FilePtr)
{
sprintf(strMessage “3DS文件 %s 不存在!“ strFileName);
MessageBox(NULL strMessage “Error“ MB_OK);
return false;
}

// 读取3ds文件的第一个Chunk
ReadChunk(&chunk);

// 检查是否是3ds文件
if (chunk.ID != PRIMARY)
{
sprintf(strMessage “读取文件 %s 失败!“ strFileName);
MessageBox(NULL strMessage “Error“ MB_OK);
fclose(m_FilePtr);
return false;
}

// 开始读取3ds文件
ReadPrimary(chunk.length-6);

// 计算每个顶点的法线量
ComputeNormals();

// 关闭打开的文件
fclose(m_FilePtr);
m_FilePtr = NULL;

// 对有纹理的材质载入该纹理
for (int i=0; i {
if (m_3DModel.pMaterials[i].isTexMat)
{
if (!BuildTexture(m_3DModel.pMaterials[i].mapName.string m_3DModel.pMaterials[i].texureId))
{
// 纹理载入失败
sprintf(strMessage “3DS纹理文件载入失败: %s !“ m_3DModel.pMaterials[i].mapName.string);
MessageBox(NULL strMessage “Error“ MB_OK);
}
}
}

return true;
}

// 从文件中读取1个字节
BYTE C3DSModel::ReadByte(void)
{
BYTE result = 0;
fread(&result 1 1 m_FilePtr);
return result;
}

// 从文件中读取2个字节
WORD C3DSModel::ReadWord(void)
{
return ReadByte() + (ReadByte()<<8);
}

// 从文件中读取4个字节
UINT C3DSModel::ReadUint(void)
{
return ReadWord() + (ReadWord()<<16);
}

// 从文件中读取浮点数
float C3DSModel::ReadFloat(void)
{
float result;
fread(&result sizeof(float) 1 m_FilePtr);
return result;
}

// 从文件中读取字符串(返回字符串长度)
UINT C3DSModel::ReadString(STRING *pStr)
{
int n=0;
while ((pStr->string[n++]=ReadByte()) != 0)
;
return n;
}

// 读取3ds的一个Chunk信息
void C3DSModel::ReadChunk(tChunk *pChunk)
{
fread(&pChunk->ID 1 2 m_FilePtr);
fread(&pChunk->length 1 4 m_FilePtr);
}

// 读取3ds文件主要Chunk
UINT C3DSModel::ReadPrimary(UINT n)
{
UINT count = 0; // 该Chunk内容已读取的字节计数
tChunk chunk = {0}; // 用以保存子Chunk的内容
while (count < n)
{
ReadChunk(&chunk);
switch (chunk.ID)
{
case PRIM_EDIT:
ReadEdit(chunk.length-6);
break;
//case PRIM_KEY:
// ReadKeyframe(chunk.length-6);
// break;
default:
fseek(m_FilePtr chunk.length-6 SEEK_CUR);
break;
}
count += chunk.length;
}
return count;
}

// 读取3ds物体主编辑Chunk
UINT C3DSModel::ReadEdit(UINT n)
{
UINT count = 0;
tChunk chunk = {0};
while

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

     文件        514  2009-04-24 10:12  路灯\121.dsw

     文件        240  2009-04-24 19:27  路灯\121.plg

     文件     444799  2009-04-02 16:45  路灯\robot.3ds

     文件       3883  2009-04-24 10:27  路灯\121.dsp

     文件       3377  2009-04-24 19:15  路灯\fasd.dsp

     文件      24123  2009-04-24 20:27  路灯\fasd.cpp

     文件        892  2009-04-24 19:15  路灯\fasd.plg

     文件     509952  2009-04-24 20:27  路灯\121.exe

     文件      48640  2009-04-24 19:27  路灯\121.opt

     文件      48640  2009-04-24 19:32  路灯\fasd.opt

     文件    7982080  2009-04-24 19:32  路灯\fasd.ncb

     文件       4817  2009-04-24 19:32  路灯\fasd.vcproj

    ..A..H.      8192  2009-04-24 19:32  路灯\fasd.suo

     文件       1427  2009-04-24 19:32  路灯\fasd.vcproj.496DD1411957409.Administrator.user

     文件    8858624  2009-04-24 20:27  路灯\121.ncb

     文件       5630  2009-04-24 19:44  路灯\121.vcproj

     文件        876  2009-04-24 19:32  路灯\121.sln

    ..A..H.      9216  2009-04-24 20:27  路灯\121.suo

     文件       1427  2009-04-24 20:27  路灯\121.vcproj.496DD1411957409.Administrator.user

     文件       4781  2009-04-02 16:45  路灯\3ds.h

     文件      13724  2009-04-02 16:45  路灯\3ds.cpp

     文件     721964  2009-04-24 18:40  路灯\Gundam.3ds

     文件     140288  2009-04-24 19:27  路灯\Debug\vc60.idb

     文件      77824  2009-04-24 19:25  路灯\Debug\vc60.pdb

     文件      79630  2009-04-24 20:27  路灯\Debug\fasd.obj

     文件     360912  2009-04-24 20:27  路灯\Debug\121.ilk

     文件       7690  2009-04-24 20:27  路灯\Debug\BuildLog.htm

     文件       2048  2009-04-24 19:32  路灯\Debug\fasd.exe.embed.manifest

     文件     576512  2009-04-24 20:27  路灯\Debug\vc90.idb

     文件     249856  2009-04-24 20:27  路灯\Debug\vc90.pdb

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

评论

共有 条评论