3D制作魔方

从10号开始做这个东西,是一边学习一边做的,学了DXUT框架、拾取技术(DX提供的、别人写的算法和用外接球模拟)

先说一下还要改进的地方:

1、无论先点哪一个方块,都按照程序设定的去转

2、光照问题:转了之后变暗

3、内存泄露(这个找了很久都没找到,我估计是DXUT框架的,汗)

设计思路:

1、渲染:设定27个世界矩阵,逐个渲染,用一个mesh,改变世界矩阵

2、拾取:采用内接球,用外接球的话会有相交的部分,但内接球无法判断一些区域

3、旋转:严格符合十字架的点击才能旋转

            保存世界矩阵的一个副本,到旋转完90°的时候,用副本乘上90°的矩阵可以避免不完全旋转90°

            坐标改变是用DX提供的函数D3DXVec3TransformCoord()

4、用3DS MAX做模型时把box的中心移动原点,方便操作

技术上遇到的但还没掌握的技术:

1、没有看DXUT提供的camera类。DXUT有3个camera类

2、还没有找到DXUT框架中是在哪里初始化一个IDirect3DDevice9的指针的

3、没有理解回调函数

以后准备添加的功能: 

1、可以后退,就是退回上一步,这个用链式栈解决

2、随机弄乱魔方,让玩家做回原状 ,这个也是用链式栈,魔方的操作有18种,随机产生其中一种,然后添加到栈顶,这个可以利用第一种功能

3、提示功能。这个功能可以用来当做视频教学,一个一个出栈就行了 

4、记录时间,这个简单

5、添加局域网对战(世荣说过,现在只是想一下,还没学过网络) 

6、某女生玩家提出可以自选6中颜色 

文件下载:Magic_Cube.rar

原文地址:https://www.cnblogs.com/littlethank/p/1782640.html