随笔 - 386  文章 - 23 评论 - 15 阅读 - 16万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

12 2010 档案
处理模型——找到对应一个方向的旋转角
摘要:问题 通过绘制模型前设置世界矩阵(见前一个教程)时,你可以在场景的任意位置放置模型。当你将模型从A点移至B点,你需要确保它转向正确的方向。 这个旋转角通常通过一个自然的方式获取,例如,当处理一个包含旋转的世界矩阵。但是,如果你只是存储模型的前一个位置和当前位置的方法移动模型的话,那么必须手动旋转这个模型。 解决方案 你需要首先计算模型运动的方向。从这个方向的X轴和Z轴开始,很容易找到这个角度。 工... 阅读全文
posted @ 2010-12-08 14:06 AlexCheng 阅读(556) 评论(0) 推荐(0) 编辑
处理模型——对不同对象设置不同的世界矩阵,组合世界矩阵
摘要:问题 你想在绘制模型之前独立地移动、旋转并/或缩放它们。 解决方案 你可以设置对象的世界矩阵实现这个功能,而矩阵是可以存储任何变换(平移、旋转或缩放等操作)的对象。你可以简单地使用XNA框架提供的基本方法创建一个变换矩阵: Matrix.CreateTranslation Matrix.CreateScale Matrix.CreateRotationX-Y-Z 第一个... 阅读全文
posted @ 2010-12-08 14:04 AlexCheng 阅读(462) 评论(0) 推荐(0) 编辑
处理模型——使用BasicEffect类载入模型
摘要:问题 因为手动定义一个复杂3D对象的所有点几乎是不可能的,所以这些3D对象应该是由艺术家在3D建模程序中制作,模型可以保存为一个文件。你想从文件加载模型并在场景中绘制这个模型。 解决方案 XNA Framework已经包含了所需方法。XNA提供了一个默认的Model素材管道可以从.x和.fbx文件加载模型。如教程3-1的图片所示,你只需将模型拖动到Solution Explorer的Content... 阅读全文
posted @ 2010-12-08 14:00 AlexCheng 阅读(304) 评论(0) 推荐(0) 编辑
处理2D图像和纹理——投影纹理
摘要:创建一面镜子:投影纹理 问题 你想在场景中创建一面镜子。例如,在一个赛车游戏中创建一面后视镜。你也可以使用这个技术创建一个反射贴图。 解决方案 首先需要将镜子中看到的场景绘制到一张纹理中。然后,绘制相机中见到的场景(包括空镜子),最后将这张纹理贴在镜子上。 要绘制从镜中看起来的场景,你需要定义第二个相机,叫做镜像相机(mirror camera)。你可以通过镜像第一个普通相机的Position,T... 阅读全文
posted @ 2010-12-08 13:57 AlexCheng 阅读(502) 评论(0) 推荐(0) 编辑
处理2D图像和纹理——创建一个3D爆炸效果,简单的粒子系统
摘要:问题 你想在3D世界中创建一个漂亮的3D爆炸效果。 解决方案 你可以通过混合大量的小火焰图像(叫做粒子)创建一个爆炸效果,,如图3-22所示。注意一个单独的粒子很暗,但是,如果你添加大量的粒子,就会获得一个漂亮的爆炸效果。 图3-22 单个爆炸粒子 在爆炸的开始阶段,所有粒子都位于爆炸的初始位置,因为所有图像的颜色都叠加在了一起,所以会形成一个明亮的火球,绘制粒子时你需要使用additive b... 阅读全文
posted @ 2010-12-04 14:22 AlexCheng 阅读(645) 评论(0) 推荐(0) 编辑
处理2D图像和纹理——Billboarding:在3D世界绘制2D图像使它们总是面向相机
摘要:问题 要使画面给人留下深刻印象,一个3D世界需要包含许多物体,特别是处理室外场景时。例如,如果没有绘制成百上千棵树,树林看起来就会显得不真实。但是,以3D模型的形式绘制几百颗树是不可能的,因为这样做会极大地拖慢应用程序。 你也可以使用少量的billboarding(译者注:billboard可以翻译为公告板,广告牌),例如,绘制激光束或子弹。这通常和一个粒子引擎组合在一起(见教程3-12)。 ... 阅读全文
posted @ 2010-12-04 14:17 AlexCheng 阅读(692) 评论(0) 推荐(0) 编辑
处理2D图像和纹理——扩展图像内容处理器:灰度变换和处理器参数
摘要:扩展图像内容处理器:灰度变换和处理器参数 问题 你想扩展图像处理器用来处理每个独立像素的颜色。你还想从XNA主项目中改变处理器的参数。 解决方案 在前面的教程中,你知道了如何扩展内容处理器,让你可以处理并改变独立像素的值。 在Processor类中声明的所有公共变量都可以在素材的属性面板中设置。 工作原理 开始的初始化步骤已经在教程3-9中解释过了。复制下列代码让你可以处理图像文件中... 阅读全文
posted @ 2010-12-04 14:11 AlexCheng 阅读(321) 评论(0) 推荐(0) 编辑
处理2D图像和纹理——扩展图像内容处理器
摘要:扩展图像内容处理器 问题 你想扩展默认的图像内容导入器控制像素,或者你想学习内容管道(content pipeline)。 解决方案 因为XNA已经提供了一个内容导入器将一个图像文件作为源并最终将它创建为一个Texture2D对象,你要做的只是扩展这个内容导入器。本教程中,你可以调用PixelBitmapContent辅助类的ReplaceColor方法,它是由内容管道框架提供的。 注意:如果你只... 阅读全文
posted @ 2010-12-04 13:35 AlexCheng 阅读(465) 评论(0) 推荐(0) 编辑
处理2D图像和纹理——将场景绘制到纹理
摘要:将场景绘制到纹理 问题 你想将屏幕上的内容保存在一个纹理文件中,这样可以实现屏幕截图,或者将场景绘制到一个纹理,而这个纹理用于深度贴图/折射贴图或作为post-processing effect的输入。 解决方案 最简单的方法是使用device. ResolveBackBuffer方法,这个方法将当前后备缓冲中的内容写入到一个纹理中。如果你只想将场景绘制到一个纹理,或指定大小的纹理,你需要使用de... 阅读全文
posted @ 2010-12-04 13:26 AlexCheng 阅读(582) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示