计算机类:DELPHI    Android    PB    c#    VF    VC    .NET    PHP    ASP    JSP    VB
  机械类: 工艺夹具    机电一体    电子通信    模具设计    数控编程    机械制造
  土木建筑类: 路桥工程    园林工程    给水排水    水利工程    结构设计    建筑设计
机械制造 数控编程模具设计 电子通信 机电一体 工艺夹具
返回首页

三维俄罗斯方块程序毕业设计

时间:2012-12-09 14:55来源:毕业设计论文网 作者:坤哥毕业设计 点击: 购买指南 在线支付
由于3D游戏能创造更加真实、绚丽、壮观的虚拟世界,带给玩家更真实、强烈的视觉冲击,因此早期的很多二维游戏在如今多姿多彩的三维游戏中已经黯然失色,如果能给在早期的二维游戏中加入三维和更多的游戏元素,便能给它带来更多新鲜活力。 电脑游戏目前正朝着

    由于3D游戏能创造更加真实、绚丽、壮观的虚拟世界,带给玩家更真实、强烈的视觉冲击,因此早期的很多二维游戏在如今多姿多彩的三维游戏中已经黯然失色,如果能给在早期的二维游戏中加入三维和更多的游戏元素,便能给它带来更多新鲜活力。
 
电脑游戏目前正朝着三维空间、智能化、网络化等多方向发展。
 
俄罗斯方块是电脑游戏发展史中早期的最经典游戏之一。不过,以往常见的俄罗斯方块游戏为二维平面上的,本课题则要求制作一个在三维空间中的俄罗斯方块游戏,其中的方块都要是三维的立体形状积木,空间视角也应有三维感觉,单机版即可。
 
本课题在进行游戏设计时,应尽可能加入更多的游戏元素,以增加游戏的可玩性,并运用现有的一些三维图形显示技术,增加游戏的视觉效果。
 
这次课题设计是对三维游戏开发的一次初步尝试,希望能通过这次设计熟悉三维游戏的开发方法、流程和技术,也能进一步提高自己在三维图形开发上的技术能力。
 
目    录
1 绪论 5
1.1 课题背景及目的 5
1.2 国内外研究状况 6
1.3 论文构成及研究内容 8
2 系统分析 9
2.1 应解决的问题 9
2.2 实现环境与技术 9
2.3 系统性能需求 10
2.4 系统功能需求 10
3 系统设计思想与总体设计 10
3.1 游戏控制设计 10
3.1.1 按键设定 11
3.1.2 视角控制 11
3.1.3 移动及形变控制 11
3.2 程序功能设计 12
3.2.1 方块的构造 12
3.2.2 方块的碰撞检测 15
3.2.3 方块的变形 15
4 图像渲染技术简介 17
4.1 顶点及像素着色器 17
4.1.1 顶点及像素着色器简介 17
4.1.2 顶点及像素着色器的运用 18
4.2 3D粒子系统 20
4.2.1 3D粒子系统介绍 20
4.2.2 3D粒子系统应用 21
5 系统实现 28
5.1 系统基本功能实现 28
5.2 环境映射贴图 30
5.3 飘雪场景实现 31
6 实验结果 32
结论 35
致谢 35
参考文献 36
 
.1 系统基本功能实现
视角的控制:
在DirectX 3D中,有一个视矩阵是用来控制视角,称为视矩阵,要改变视角,就需要变换这个视矩阵。程序中,定义了一个Camera类有四个向量变量,分别为 D3DXVECTOR3 _right;
D3DXVECTOR3 _up;
D3DXVECTOR3 _look;
D3DXVECTOR3 _pos;
这四个向量是用来构造视矩阵的要素,其中_pos表示摄像头的位置,_look表示摄像头指向的方向,_up为摄像头向上的方向,right向量与_look和_up垂直,是它们的叉积。
通过调用Camera类的getViewMatrix函数可以构造出视矩阵,函数如下:
void Camera :: getViewMatrix (D3DXMATRIX* V)
{
// 保证视空间坐标系相互垂直
D3DXVec3Normalize(&_look, &_look);// zaxis
D3DXVec3Cross(&_right, &_up, &_look);// xaxis
D3DXVec3Normalize(&_right, &_right);
 
D3DXVec3Cross(&_up, &_look, &_right);// yaxis 
D3DXVec3Normalize(&_up, &_up);
 
// 构造view matrix:
float x = -D3DXVec3Dot(&_right, &_pos);
float y = -D3DXVec3Dot(&_up, &_pos);
float z = -D3DXVec3Dot(&_look, &_pos);
 
(*V)(0,0) = _right.x; (*V)(0, 1) = _up.x; (*V)(0, 2) = _look.x;
(*V)(0, 3) = 0;
(*V)(1,0) = _right.y; (*V)(1, 1) = _up.y; (*V)(1, 2) = _look.y; (*V)(1, 3) = 0.0f;
(*V)(2,0) = _right.z; (*V)(2, 1) = _up.z; (*V)(2, 2) = _look.z; (*V)(2, 3) = 0.0f;
(*V)(3,0) = x;        (*V)(3, 1) = y;     (*V)(3, 2) = z;       (*V)(3, 3) = 1.0f;
}
我们转变视角,只需要对那四个向量做相应的变换就可以了。
在程序中,视角的控制被限制绕y轴以90度为单位做旋转变换,为此在程序Camera类中定义了一个函数rotate实现摄像头绕向量v 旋转角度angle,如下:
void Camera:: rotate(D3DXVECTOR3* v, float angle)
{
D3DXMATRIX T;
D3DXMatrixRotationAxis(&T, v, angle);//构造旋转矩阵
D3DXVec3TransformCoord(&_right,&_right, &T); //对向量做旋转操作
D3DXVec3TransformCoord(&_up,&_up, &T);
D3DXVec3TransformCoord(&_look,&_look, &T);
D3DXVec3TransformCoord(&_pos,&_pos, &T);
}
旋转视角只需三步:
1. 调用函数Camera:: rotate(D3DXVECTOR3* v, float angle),     v = D3DXVECTOR3(0,1.0f,0),即Y轴,angle为D3DX_PI/2的倍数。
2. 调用函数Camera :: getViewMatrix (D3DXMATRIX* V)得到视矩阵V。
3. g_pD3DDevice->SetTransform(D3DTS_VIEW, &V);
 
 
 
 
 
以上是部分资料介绍, 需要完整的请联系客服购买. QQ咨询 购买指南 在线支付
毕业设计论文购买流程:
1.在坤哥毕业设计找到您想要的毕业设计论文,记住毕业设计的名称。
2.联系在线客服,将您的毕业设计论文名称发送给客服,客服如果不在线给客服留言或者留下您的联系电话。
3.与客服确认您所要的毕业设计。为了保证毕业设计的可用性,我们承诺每个地区只出售一次,购买前请主动告知您的地区位置。
4.付款,可通过本站商家验证的支付宝,也可通过银行转账等方式。
5.付款之后通知客服,客服核实后将您所要的设计按照您的要求发送于您。
6.毕业设计或论文使用过程遇到任何问题请联系客人服,我们会在第一时间帮您解决。
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
推荐内容