重温了孔令德老师的《计算机图形学实验及课程设计(Visual C++版)(第2版)》这本教材,闲来无事便把“基本图元光栅扫描演示系统”、“递归动态球体演示系统”、“圆环动态纹理演示系统”、“动态光源演示系统”、“3DS家口演示系统”等五个课程设计项目进行了复现。废话不多说,上代码。源代码获取方式:1、手机打开“闲鱼”APP;2、选择搜索用户,输入关键字“家居小v”(搜索时没有双引号哈);3、选择你所需要的宝贝即可。
1、3D模型的加载
void CLoad3DS::ReadObjectData(long EndPos)//读取模型
{
int i,Total,MatIndex=0;
CObjects *Obj=new CObjects;//定义一个CObjects对象用来存放读出的EDIT_OBJECT块数据
ReadString(Obj->ObjName);//首先读出对象的名称,文件指针跳过该字符串
long CurrentPos=cFile.GetPosition();
while(cFile.GetPosition()<EndPos)
{
CChunk CurrentChunk=ReadChunkHead();
switch(CurrentChunk.ID)
{
case TRI_MESH:
break;
case TRI_VERTEX://读出顶点信息
Obj->NumOfVertex=ReadWord();//Obj中的顶点数目,占1个字
Obj->pVertex=new CP3[Obj->NumOfVertex];//分配数组空间
//3dmax坐标系方向与本设计定义的坐标系不同,需要调换y、z坐标值,3dmax坐标系 x向右,y轴向内&