说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

开始3D编程前需注意的十件事

HTML文档下载 WORD文档下载 PDF文档下载
作者Vasily Tserekh是名3D编程爱好者,文中他分享了创建3D编程必做的十件事,有了这些向导,无论你是采用哪种语言或者是何种引擎,即使成不了专家但至少也会让你告别“小白”。

原文作者 Vasily Tserekh是名3D编程爱好者,他发表了一篇博文《 Ten Things to Achieve When Starting 3D Programming》文中他分享了创建3D编程必做的十件事。

开发者想要启动3D编程也并非是件易事,它不仅需要许多新技术,而且还需要根据不同的项目来选择编程语言从而设置正确的3D软件模型。

3D编程语言提供了一种更加容易的编写3D应用程序的方法,因为你使用的是一种专门为3D游戏设计的脚本语言来编写DirectX界面。这种语言不受3D引擎速度和自由度的影响,并且避免了使用“真正”编程语言带来的问题。

一起来看下文中提及的这10件事,有了这些向导,无论你是采用哪种语言或者是何种引擎,即使成不了专家但至少也会让你告别“小白”。

#1:构建自定义图形初始化功能

现今有关3D引擎和平台种类繁多。记得以前,必须通过所有的Windows功能来初始化OpenGL并且你还要学会如何通过管理窗口句柄和资源加载。在开展新项目时了解项目是如何进行内部管理的,这一点非常重要。我的建议是查看NEHE教程,它是用C语言编写的图形初始化功能,在第一章节还介绍了Windows APIs。此外,你还可以查看C++等价函数,网上有许多相关的示例,比如C#、Java、Python等都可以查看。

#2:创建自己的摄像机功能

你可以从互联网上复制或者粘贴摄像机代码,虽然使用起来并不会有什么问题,但你完全可以创建一款属于自己的相机,这就需要从头开始了解向量处理、转换矩阵、角度转换等。

首先你应该从FPS (First Person Shooter) 相机编码开始,如果你想要创建自己的一款游戏,我建议你不要急着使用它,先了解下 Virtual camera system这篇文章,根据自己的需求找到最适合您的相机类型。

#3:了解初级3D概念

当我开始接触3D概念时,我听说许多新名词比如anti-aliasing(反走样),anisotropic filtering(各向异性筛选,occlusion testing(闭塞实验),z-buffer(Z缓存),alpha testing(alpha测试),shader language(渲染语言),bump mapping(凹凸纹理映射)等。如果你是一名游戏玩家,当你为游戏配置图形设置时,这些名词也许对你来说并不感到陌生。

#4:学习向量和矩阵

很多开发者常会忽略这一点,我强烈建议为了正确的管理相机,光线追踪,地形追踪(terrain following)等,你应该好好了解这方面信息。此外,你还应该学习最小三角原理(minimum trigonometry basis)。

#5:为3D模型加载程序编码

我建议先从.OBJ file或者.STL  file开始,这是因为它们拥有同样的ASCII格式表示法。等你熟悉掌握后再转换到其复杂的格式比如:.3DS.。基于此,你不仅可以了解3D模型是如何保存的,还能绘制出其原始模式:triangles(三角),紧接着你就会明白如何绘制出图形引擎。

#6:使用碰撞算法(collision algorithm

绘制是一回事,而管理又是另外一回事。在虚拟的3D领域里,没有什么物理定律,因此你需要创建它们。如果你想要创建一个对象而又不想穿过这堵墙,那么你必须创建一个内部的几何表示法,使用所有的运算法,点击查看更多信息。

#7:执行迷你型的粒子引擎

当我发现火、烟雾、亮光以及其他一些令人惊艳的效果时我感到很失望。这些效果在粒子引擎打造的3D游戏中常会见到,而这些粒子本质上附在相机的表层纹理上。你添加的粒子越多,呈现出的效果越逼真,但是性能则相对较弱。我的第一个粒子引擎是为了制作火箭烟雾,起初我并没有看粒子引擎方面的教程。之后我才意识到,我已经彻底改造了轮子。但说实话我很乐意这样做。

#8:学习最基本的3D软件模型

为了在应用中使用更改的3D模型,你至少应该知道操作流程比如转换,缩放、旋转、变形,导出其他格式并且制作简单的模型。我曾做过一些软件模型,这里我强烈建议使用3D Max或Maya。

#9:加载和播放动画

在3D中想要加载并正确播放动画是比较困难的事情。我不得不给3D max .XAF文件采用反向工程( reverse engineering)。我必须去学习新的东西比如bone hierarchy,matrix interpolation(矩阵插值)等等。看到自己的模型在移动,我想这是件非常可喜的事情。我建议从动画机器人开始,这是因为该模型类似动物和人都需要另一种技术叫做Skinning。

#10:为2D自定义图形用户界面(GUI)编码

当我开始XNA编程时,我被迫创建自己的GUI,这是因为XNA无法兼容任何Windows控件。由此给我两点启示:一是,创建自己的自定义GUI控件;另一个则是理解概念,包括事件处理和事件追踪(事件捕捉)。这并不简单,最难的控件是我设置的列表框(listbox),但一旦当你完成创建后,你可以在任何地方使用。


图片来源于网络

网友Bigcoder在博客上发表了有关3D编程四个境界,笔者总结了以下几点:

  • 第一阶段:初学者阶段。这个阶段主要是熟悉3D图形学的基本原理和基本API的使用。
  • 第二阶段:进阶阶段。有人会选择直接学引擎,开发游戏;有人则会选择先学场景管理和高级渲染。
  • 第三阶段:3D成熟阶段。了解硬件的资源管理方式,结合自己的需求,解决资源的不当占用和带宽的随意浪费的情况。深入熟悉硬件,彻底了解显卡流水线的特性,充分利用流水线的特性进行优化,这个阶段是最煎熬的阶段,也是最开心的阶段。
  • 第四阶段:达人阶段。寻求解决方案,这个阶段技术已经不是唯一追求目的了,还有很多很多其他的方面他会关注。因为他的目的是让整个社会承认他的价值,只有技术是不够的。

看看你属于哪个阶段吧?

PS:也许3D模型我们并不陌生,但是3D编程对于笔者来说是个新词,文中出现了许多专业的词语,笔者也是抱着学习的态度进行翻译的,倘若你在这篇文章中发现了错误,或者认为翻译有误的地方,欢迎告之我,希望这篇文章对你有所帮助。

英文出自:Gamedev

Google Glass从X labs“毕业”,更换项目负责人 不进化,则消亡——互联网时代企业管理的十项实践 RedMonk 2015年1月编程语言排行榜:进击的Swift! 微信开放JS SDK,这场web巨变意味着什么? 盘点一些iOS开发技巧:Swift和Objective-C 2014年,那些“颜值”爆表的UI动画 《近匠》爱加密:谁说iOS应用不需要保护? SwiftColorArt:开源易用的Swift图片类库 人气爆棚 干货满满 中国电信天翼开放平台开放日圆满落幕 必须Mark!43个优秀的Swift开源项目推荐 治拖延、疗懒癌!安利12款提高工作效率工具 把ES6带进Node社区 Io.js 1.0.0正式发布 Java 2014:10个最热门、最具争议性的话题 回顾:2014年最流行前端开发框架对比评测 实例讲解SQL注入攻击 调试大规模服务器集群的五大策略 .NET编译平台Rosly将迁移到Github Wasai虚拟现实头盔与体验馆发布:虚拟现实的线下经济 订票系统不再瘫痪 阿里云确认与12306合作 Apple前工程师Warren Moore:Swift中Metal使用初体验 手把手教学:详解Swift中的iOS设计模式 见微知著,那些触动人心的应用细节设计(一) 设计优秀API七大要诀 需求 细节 BI项目成功的五大要素 BI项目成功的五大要诀 最受程序员欢迎的公司榜单发布:2015 IT人才招聘趋势分析 Swift中的指针操作及使用 Android性能优化典范 专访Google涂鸦首席设计师Ryan Germick:为什么世界需要Doodle? 不炒作就会死!小米乐视生态布局的那些爱恨情仇 100个iOS开发/设计面试题汇总,你将如何作答? 如何获取DropDownlist的SelectedItem.Text? lirun(笨笨狗)请进来领分 怎么得到数据库中的id值。 有点痛,不知道是什么病,大家帮忙看看 GOOGLE被中国"冷处理" 请介绍一本好一点的Winsock函数编程的书,电子书或者纸书都可以 关于全局CDatabase; mysqldump备份数据库时总是出错? 谁有http://211.100.6.72的源代码最好有附带的数据库连接说明。200 在2000server上安装oracle的问题,求教! 怎样深层理解delphi的类变量 数据库中日期范围怎么比较? 如何将Access的数据导入SQL-server 散分了,高手请进---.net不能够bug ???怎样在Delphi中对导出到Excel文件单元格进行划线???? 在VB中如何进行程序的数据输入有效性验证? 请上次回答我NT问题的同志进来拿分,上次只给了100 如何学winzip那样,在弹出菜单中增加一个新的项目 英国有好点的软件公司吗? 高分求救水晶报表问题? 从数据库中取最新的第10~第20条纪录的sql语句如何写啊?各位大侠帮忙啊 记录集问题 sco unix下可以运行tcpdump吗? 无法启动X,出现cound not init font path element unix:7100,removing from list...could not open default font 'fixed' 请问是否可以在VC++下编写一个声音程序,如何编写?(只要能发出一个或两个音符就可以了) 程序员今年还可以报吗? 在flash里面,用什麼命令,可以把gif變成矢量圖?? 怎么用TC编写一个显示320*240的16色位图的程序? 用什么函数可以得到msflexgrid的行号(row的值)? 请朋友们帮忙推荐几本PB8的关于B/S和三层结构编程的书 网上邻居的问题! 在ASP.NET中,控件好像不能被设置成控件数组,请高手回答 Word文章被锁定了! 非常奇怪的数据连接问题 乐晕了,散分! 数据库问题 韩国公司展示防性侵袭的贞操内裤(图文) asp+oracle中关于字符串相加的问题。 各位大哥,我对sybase很陌生,有几个简单的问题想请教,很急,在线等待!!! 有msdn的请进! 杭州程序员一个月多少钱啊 网上邻居求救啊 有没有DOM方面的资料呀 VC的Maximize Speed优化到底优化了什么? 动态建表 向各位高人求救 页面转移的问题,轻松拿分 问一个困扰我很长很长时间的问题(关于类库的)!! 名词解释!!!! vb程序打包,第一次!!!问题啊!!!?????(第二次提问!!!!) java的WEB应用中是否能够调用其他本地的客户端 ? 肠炎病人身体脱水后必须采取静脉注射生理盐水为什么复习生物是的问题,谢谢··肠炎病人身体脱水后必须采取静脉注射生理盐水是因为( ) A 生理盐水有利于组织细胞利用 B 生理盐 高中政治如何理解唯物辩证法的辩证否定观?它要求我们应该怎样做如何理解唯物辩证法的辩证否定观?它要求我们应该怎样做 化学平衡题中的恒容和恒压的区别,在平衡时两者导致什么不变?变量又是什么? 患了肠胃炎的病人,医生往往要给他注射生理盐水,是为了( )A 维持体内水分的代谢平衡 B 维持体内水和无机盐的代谢平衡 C 维持体内无机盐的代谢平衡 D 调节体内血糖的浓度 可持续发展观的主要要求(政治题)可持续发展观的主要要求是什么?(政治题)不确定的请不要回答,要求权威回答,谢谢.这是一道政治题,请按照政治题的答题格式答题,按照政治课本的要求 电烙铁可以焊比较精密的电路吗!我mp4 usb 接口脱焊想DIY 不知一把电烙铁能否搞定,我怕搞短路!我坚决不找维修人员.DIY 一向是我的态度:: KMnO4氧化kI实验中H2So4的作用 世界上最大的洲是亚洲最小的洲是大洋洲亚洲的面积比大洋洲面积的4倍还多812万平方千米大洋州的面积是多少 没有烙铁怎么焊接 有什么 东方小故事 亚洲的面积比大洋洲面积的4倍还多812万平方米千米问大洋洲的面积是多少万平方千米 人体产生的代谢废物为什么必须及时排出体外急急急急急急急急急急急急急急急急急急急急急急 有关08年我国发生过的重大事件作文,如四川地震、北京奥运会、北京残奥会及神舟七号发射成功 亚洲的面积比大洋洲面积的四倍还多812万平方千米求大洋洲(简单方程) 八大行星内有水分的星球 铁离子、亚铁离子、氯离子、氢离子、硫酸根离子是否能共存?为什么?在线等… 人体中有多少必需元素,多少微量元素,失去平衡会得什么疾病? 世界上最大洲是亚洲亚洲是面积比大洋洲面积的4倍还多812万平方千米,大洋洲的面 铝有那些性质(要求设计实验证明,说清实验现象) 东方时事评论2010年8月20日 世界上最大的洲是亚洲,亚洲的面积比大洋洲的面积的4倍还多812万平方千米,大洋洲的面积是多少万平方千米要算数方法 方程我会 学完方程把算术方法忘了 汽轮机水冲击的危害有哪些如题,汽轮机水冲击的危害主要有哪些呢 墙里一共二根线,以前是单独控制一个灯的,现在想换成五孔带开关插座,开关控制灯,插座独立使用问了一下人,说不能这接,只能要么控制灯,要反就插座,不能两全其美,如果能怎么接, 为什么真空高汽机做功能力强 汽轮机发生水冲击时,有哪些象征? 羧酸A(分子式为C5H10O2)可由醇B氧化得到,A和B可以生成酯C.符合这些条件的酯只有四种.请写出结构简式 问一个字~上下结构的,上面有两个“目”下面一个“空”,大家有谁知道叫什么吗~同上~字典真的没有查到目目空 简述汽轮机发生水冲击的象征? 分子式为C5H10O2的酯共有几种如果,先拿出一个官能团酯基,剩C4H10,先碳链异构共2种,然后官能团异构,总共只有4种。这种思路对不对啊? 请问你有制作恒温烙铁的电路图吗?24伏的 CAO2+K2SO4+KI=?应该会有碘生成求具体方程式 化学式为C5H10O2羧酸A可由醇B氧化得到,A和B可生成酯C(相对分子质量为172),符合此条件的酯有几种希望写得详细点儿 为什么最近频频发地震?是不是世界末日要到来了? 我应该装多大的漏电保护器和空气开关?我家电表是2.5(10)A,电线是4平方毫米单股铜线.室内线分为两路:一路接有电磁炉(最大1900W)、电饭煲(650W)、洗衣机(450W)、冰箱(100W)、电视(120W)计3220W;另 KI溶液与H2SO4酸化的H2O2反应的方程式 八大行星中,离地球最近的行星是什么? 当正常人体感觉到冷时,通过神经和体液调节,可使:当正常人体感觉到冷时,通过神经和体液调节,可使 A.促甲状腺激素分泌减少 B.汗腺分泌量增加 C.皮肤毛细血管血流速度加快 D.有机物氧化分 化学式为C5H10O2的羧酸A可由醇B氧化剂得到,A和B可生成酯C(相对分子质量为172)化学式为C5H10O2羧酸A可由醇B氧化得到,A和B可生成酯C(相对分子质量为172),符合此条件的酯有几种?A.1种 B.2种 八大行星中离地球轨道最近的两颗行星是( )和( ). [关于物质的量浓度]V L Fe2(SO4)3 溶液中含a g 硫酸根离子V L Fe2(SO4)3 溶液中含a g 硫酸根离子,取此溶液 V/2,用水稀释成V /L ,则稀释后的溶液的 三价铁离子 的 物质的量浓度为 ( )A.a/576 mol/L B.125a/ 硫酸根离子和H离子和Cl离子和次氯酸根离子能共存吗 八大行星中体积最大的是什么星球 V 升Fe2(SO4)3溶液中汗Fe3+ m 克,则溶液中硫酸根离子的物质的量浓度为? 急!求各位高手 [例1]下图是一种分子式为C4H8O2的有机物的红外光谱谱图,则该有机物的结构简式为:红外光谱谱图 怎么看 化学平衡的移动如何理解 急性肠胃炎患者严重脱水是,为什么要注射生理盐水是为了维持身体什么的代谢平衡 在强酸溶液中亚铁离子,典离子,硝酸根离子和次氯酸根离子能不能大量共存 怎么理解化学平衡移动? 烘箱实验的原理和目地是什么 人体大量饮入生理盐水,尿量怎样变化,为什么会这样?机制是什么? 汽轮机除了用水蒸汽外还可以用其他低沸点液体吗? 得了急性肠胃炎为什么要通过静脉注射生理盐水? 快速注射生理盐水后尿量的变化 图中那个电路图我要用电路板和电烙铁把它焊出来,第一次做,请问那几个地该接哪里啊?这个我只要用几根导线把芯片和电阻电容电感连接起来就行了吧?求指导, 要做一个土壤微生物实验,如何取其土样? 大量饮用清水,大量静脉注射生理盐水,大量静滴甘露醇,尿量分别有何变化,为什么? 如图所示的四个电路中,R为电烙铁,为了使电烙铁在不焊接时烙铁头不致过热,但又 急性肠胃炎的患者严重脱水时,为什么要注射0.9%的生理盐水A维持体内蛋白质代谢平衡 B维持体内水代谢平衡C维持体内糖类代谢平衡 D维持体内盐代谢平衡 太阳系八大行星中,体积最大的行星是 关与化学平衡的恒压与恒容的区别,细致,需要非常细致的讲解,麻烦了.谢谢.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘