三维图形变换3D Transformation
- 格式:ppt
- 大小:7.83 MB
- 文档页数:115
西南科技大学毕业设计(论文)题目名称:基于Directx的三维图形立体变换的实现年级:2003级■本科□专科学生学号:20035247学生姓名:宋彦宾指导教师:蒋体钢学生单位:信息工程学院技术职称:副研究员学生专业:通信专业教师单位:信息工程学院西南科技大学教务处制基于Directx的三维图形立体变换的实现摘要:目前在世界上三维图形大量的被应用到日常生活中,它是许多媒体应用程序和游戏的主体部分,所以掌握最新的三维技术是很有必要的。
本文首先研究了利用C#和Directx9编程以及立体几何技术,数学变换和几何图形技术来制作三维立体图形的方法,掌握了利用API接口创建窗口实现消息传递以及对坐标系,缓存,矩阵坐标变换的知识。
其次,利用3DS Max创建三维立体图形,加载到所编写的三位图形立体变换程序中,并进行调试。
设计主要完成了对绘制出来的电视机的平移,旋转和缩放技术的处理,最后通过程序对图形进行渲染使其更具有可观性。
关键词:API;Visual C#.Net;Direct3D;3DS MaxThe Realization of Three-Dimensional Graph Three-Dimensional Transformation Based on DirectxAbstract:In the world of nowadays, the three -dimensional graphics are applying to daily life in a large number. It is the main part of the game and applications of many media. So, it's necessary to master the latest 3-D technology.Firstly, this thesis researches on using C # and the Directx9 programming as well as the three-dimensional geometric technology, the mathematical manipulation and the geometric figure technology to manufacture the three-dimensional graphics. Mastering the use of the API interfaces to create a window that can realize message transmission. Acquainting the knowledge on the coordinate system, the texture and the matrix coordinate transformation. Secondly, the 3D models of the system were created by 3dsmax, then prepared to load the stereo 3D graphics transformation process, and debugging. The translation, the rotation and scaling of TV which have mapped out were completed in this design. Finally, by embroidering in procedure, the graphics were more arresting.Key words:API, Visual C#.Net, Direct3D, 3DS Max目录第1章绪论 (1)1.1 三维技术的现状 (1)1.2 编程语言简介 (2)1.3 三维图形立体变换的设计分析 (2)1.3.1 设计需求分析 (2)1.3.2 设计性能要求 (2)第2章DirectX9.0技术 (3)2.1 DirectX9.0的概念 (3)2.1.1 Direct3D的构架 (3)2.1.2 设计规划 (4)2.2 DirectX 9.0函数简介 (5)2.2.1 窗口类的处理 (6)2.2.2 创建IDirect3D接口 (7)2.2.3 创建IDirect3DDevice界面 (8)2.2.4 开始渲染 (9)2.2.5 顶点属性与顶点格式 (10)2.2.6 顶点缓冲 (10)2.2.7 索引缓冲 (12)2.2.8 D3D中的图元简介 (13)2.2.9 向量 (14)2.2.10 矩阵的操作 (15)第3章主体程序的设计与实现 (19)3.1 三维图形立体变换的设计 (19)3.2 三维图形立体变换设计具体实现 (19)3.2.1 利用.X文件图像获取 (19)3.2.2 利用画点画线函数生成图像 (23)3.2.3 图像的缩放 (33)3.2.4 图像的旋转 (34)3.2.5 图像保存为.TXT文挡 (37)3.2.6 渲染功能实现 (38)3.2.7 光源和观察矩阵的实现 (39)3.2.8 键盘的控制 (39)3.3 程序运行的调试 (40)总结 (41)4.1 设计开发小结 (41)4.2 项目改进方向和未来展望 (41)致谢 (42)参考文献 (43)附录 (44)第1章绪论1.1 三维技术的现状在计算机屏幕上绘图的最基本单位是点,点构成线,线又构成多边形,还可以朝空间发展,构成立体图行,如正方体、立方体、锥体、球等。
深⼊理解CSS变形transform(3d)前⾯的话 本⽂将详细介绍关于transform变形3D的内容,但需以了解为基础。
3D变形涉及的属性主要是transform-origin、transform、transform-style、perspective、perspective-origin、backface-visibility坐标轴 在了解透视之前,⾸先要先了解坐标轴。
3D变形与2D变形最⼤的不同就在于其参考的坐标轴不同。
2D变形的坐标轴是平⾯的,只存在x轴和y轴,⽽3D变形的坐标轴则是x、y、z三条轴组成的⽴体空间,x轴正向、y轴正向、z轴正向分别朝向右、下和屏幕外透视 透视是transform变形3D中最重要的内容。
如果不设置透视,元素的3D变形效果将⽆法实现。
//下⾯以rotateX()旋转函数为例,rotateX(45deg)表⽰元素以X轴⽅向为轴沿顺时针旋转45⾓度//左图是⽆变形和透视样式的原始效果,中图是设置变形和透视样式的效果,右图是设置变形但未设置透视样式的效果 由以上三个图可说明,如果不设置透视,那么浏览器会将元素的3D变形操作投射垂直到2D视平⾯上,最终呈现出来的只是元素的宽⾼变化 要深⼊了解透视,需要了解观察者、被透视元素和变形元素这⼏个概念。
⾸先是变形元素,顾名思义,就是进⾏transform3D变形的元素,主要进⾏transform、transform-origin、backface-visibility等属性的设置 观察者是浏览器模拟出来的⽤来观察被透视元素的⼀个没有尺⼨的点,观察者发出视线,类似于⼀个点光源发出光线 被透视元素也就是被观察者观察的元素,根据属性设置的不同,它有可能是变形元素本⾝,也可能是它的⽗级或祖先元素(后⾯会详细介绍),主要进⾏perspective、perspective-origin等属性的设置透视距离 透视距离perspective是指观察者沿着平⾏于z轴的视线与屏幕之间的距离,简称视距perspective 值: none | <length> 初始值: none 应⽤于: ⾮inline元素(包括block、inline-block、table、table-cell等) 继承性: ⽆ [注意]透视perspective不可为0和负数,因为观察者与屏幕距离为0时或者在屏幕背⾯时是不可以观察到被透视元素的正⾯的 [注意]透视perspective不可取百分⽐,因为百分⽐需要相对的元素,但z轴并没有可相对的元素尺⼨【1】⼀般地,物体离得越远,显得越⼩。
实验三 3D图形变换一.实验目的:掌握3D图像的变换,了解多数的3D变换,平移,旋转等几何变换,还有投影变换等知识。
二.实验原理:3D图像的移动,比例变化,旋转等几何变换算法原理及各种投影变换算法原理。
三.实验步骤:一.建立MFC单文档程序,用来编写3D变换。
二.建立Mainframe,并设计,添加相应的ID及映射函数。
三.实验的主要代码:1、设计3维图形平移变换算法的实现程序;void CMyView::OnTranslation(){m_Select=SEL_TS;m_str="平移";CBaseClass my1; //构造新的CBaseClass对象int i,j;for ( i=1;i<=4;++i){for ( j=1;j<=4;++j)my1.A[i][j]=0;}my1.A[1][1]=1;my1.A[2][2]=1;my1.A[4][4]=1;my1.A[3][3]=1;my1.A[4][1]=20; //x轴方向上平移my1.A[4][2]=28; //y轴方向上平移my1.A[4][3]=28; //z轴方向上平移my1.Draw();}2、设计3维图形缩放变换算法的实现程序;void CMyView::OnScalingS(){m_Select=SEL_MO;m_str="整体变比";CBaseClass my1; //构造新的CBaseClass对象int i,j;for ( i=1;i<=4;++i){for ( j=1;j<=4;++j)my1.A[i][j]=0;}my1.A[1][1]=1;my1.A[2][2]=1;my1.A[3][3]=1;my1.A[4][4]=0.5;my1.Draw();}void CMyView::OnScalingXyz(){m_Select=SEL_MO;m_str="XYZ变比";CBaseClass my1; //构造新的CBaseClass对象int i,j;for ( i=1;i<=4;++i){for ( j=1;j<=4;++j)my1.A[i][j]=0;}my1.A[1][1]=2; //x轴方向上比例my1.A[2][2]=1; //y轴方向上比例my1.A[3][3]=2; //z轴方向上比例my1.A[4][4]=1;my1.Draw();}3、设计3维图形旋转变换算法的实现程序。
View MorphingStephen M.Seitz Charles R.Dyer算法设计小组翻译摘要(abstract)图像变形(Image morphing)技术可以在图像之间产生引人入胜的2D转变(transition)。
然而,物体姿势(pose)和观察者视点(viewpoint)的不同常常导致图像变形(image morphing)中很难被人工校正的不自然的扭曲。
这篇论文运用射影几何学的基本定律,介绍了在图像变形(Image morphing)方面的一些简单的拓展(extension)。
它能正确的解决3D射影照相机(3D projective camera)和场景变换(scene transformation)方面的一些问题。
这一被称为视觉变形(view morphing)的技术是这样工作的:首先对两张图片进行预处理(prewarping),然后计算出一个变形(morph),最后对插入的图片进行再处理(postwarping the interpolated images)。
由于不需要任何3D图形方面的知识,这项技术可能被应用于摄影、绘画和渲染的场景(rendered scenes)等方面。
这项技术综合了视角方面和图像结构方面的不同,还提供了大量的只需运用简单的图像变换(Image transformation)就可以做出的有趣3D效果。
附加关键词:变形morphing 图像变形image metamorphosis 视觉插值view interpolation 视觉合成view synthesis 图像扭曲image warping1简介(introduction)最近,为创造图像间平滑转变的变形技术(morphing technique)已经吸引许多人的兴趣。
这些技术结合图形和颜色上的2D插值(interpolation)来创造戏剧性的特殊效果。
变形(morphing)之所以这么吸引人是因为它产生的图像看上去惊人的生动,在视觉上十分令人信服。
基于仿射变换的三维到二维转换算法刘婧【摘要】Three-dimensional affine transformation formula and affine array fomula in three-dimensional coordi-nate system, giving a simple coordinate transformation formula are deduced and its algorithm is proved by QT class libraries based on C++ which could be applied to graphic adapter that imitates three dimension by two dimension, such as three-dimensional transformation imitation in flash and three-dimensional graphic transformation in GUI pro-gramming.%根据二维仿射变换公式推导了三维仿射变换公式,给出了三维坐标系中的仿射矩阵表示公式.同时提出了一种简单的三维到二维的坐标转换公式,并且使用基于C++的QT类库对这种算法进行了实现.这种算法可以应用于一些使用二维模拟三维的图形处理软件中,比如flash中的三维变换模拟和GUI编程中的三维图形变换等情况下.【期刊名称】《科学技术与工程》【年(卷),期】2011(011)027【总页数】4页(P6743-6746)【关键词】仿射变换;三维;C++;QT【作者】刘婧【作者单位】渭南师范学院,渭南714000【正文语种】中文【中图分类】TP391.75进行一些三维图形处理要用到三维图形的旋转、平移、拉伸等变换。
同时计算机屏幕又是一个二维的平面,如何简单地将三维图形表示在二维平面上。