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

开始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

一周热点: Twitter的下一代分布式数据库Manhattan 专访微软陆奇:大转型中最难的是文化的改变 【CTO俱乐部走进腾讯】问题征集进行中 颠覆移动营销世界的女王Yunha Kim为女性CEO正名 Google揭露“仙女座”虚拟网络,及分散和集中架构之辩 DHTMLX Touch:开源的HTML5和JavaScript框架 Supercell下一城:《海岛奇兵》续写芬兰手游传奇 开发者盛宴 2014 Unity亚洲开发者大会盛大开幕 微软全球中国云业务总经理:云落地中国的最大难题 PTVS 2.1 Beta版发布 Visual Studio的Python工具 【走近院士】李兰娟:云计算与大数据将成为医疗改革利器 迭代不等于学习,聚类分析也不等于机器学习 Office大肆杀戮,已攻下Chrome Web Store Bug都补好了?Google发布Android 4.4.3更新 微软被传收购Xamarin 强势推进移动新战略 挑战传统金融业务 Facebook进军移动支付领域 亚马逊AWS需解决的五项问题 腾讯自曝:大数据平台的秘密 继Cloudera之后,MapR宣布对Spark的完全支持 企业实施商务智能的6个致命错误 《近匠》HBuilder:如何用JS调用几十万原生API? littleBits新推Cloud Module,普通人也能DIY智能硬件 如何创建浮动式标签模式? Office 365正式落地中国——移动为先,云为先 .NET Native:C++的性能 C#的产能? Arduino联合创始人Tom Igoe:创客,因何而创 【走近院士】高文:多媒体大数据的影响及面临的挑战 微软SQL Server 2014三大新特性:集成内存OLTP、BI和混合云搭建 Linux将会统治桌面端的7个原因 Intel首席科学家Randolph Wang:详解Edison AMD Mantle再添新作,引发下代GPU架构猜想 java 线程,对当前线程(非主线程)调用sleep,为什么主线程(窗口)也没反应了 各位大虾帮忙呀,哪位把下面的文字翻译成准确的英文,200分相赠!!!决不食言!!! 请教:PHP下的事件处理方法 如何通过ASCII码区分全角与半角字符?急! 触发器???:(拜托各位大哥大姐,大叔大伯! 字符串替换函数是什么? 送分 那位大虾帮我翻译一下 急 分不够可以加 为了忘却的纪念! 急急急急急!!!!!!!!!!,Band里的内容过长,如何让它自动的分页??? oicq的窗口title怎么为空了?如何得到句柄? session问题! 用dbgrideh控件,如何实现汇总结果的打印 有关ATL的最基础问题 怎样监控icmp包?用自编的程序 急急急急急!!!!!!!!!!,Band里的内容过长,如何让它自动的分页??? 使对话框最小化渐变到托盘区。 各位高手!!我用的是win2000工作组模式,为什么我能访问别人,而别人不能访问我呢??? 有关文件的读写问题。 大家讨论一下内存分配、释放的问题 关于在jsp中运用sqlserver的小问题!!! 怎么样可以将session的存活期限设置成“永远不死”?? 送分题,如何取得一个表的所有字段名? 那里可以下载Wrox系列书的英文版? 无法启动sqlserver的问题. DELPHI中dbgird的语句问题 关于控制动态产生Checkbox,并进行动态控问题 BCB中使用MSComm控件,无法定义动态数组变量,该怎么办?--急啊!在线等待 战神----巴蒂 两个问题! 用ADO访问DBASE数据库 百分求救:关于COM方法的reference参数不返回值的问题 请教各位高手 如何将程序中不同的查询结果写入报表? 怎样自编程序监控icmp包,应该截获什么消息,还是用别的方法? java本地化的问题(各位帮帮我!) 一个关于类型转换的菜鸟问题!! 招聘 Jpeg中FFd9可以有几个? ?????不同窗口中多个参数传递的问题,在线等待中........ 关于 EmbeddedWb 的Mshtml_tlb, SHDocVw_tlb 问题! 各位大虾 帮我翻译一下 急 悲... DBGrid为什么没有数据集记录失去焦点事件? 怎样手动和在程序中更改SEQUENCE的当前值? 怎么结贴子,什么叫FAQ? 关于“软件蓝领”的3个疑惑。 在函数中以引用方式调用结构的问题?给我能给的最高分100 怎样实现随机打印一个数据表的几个子段? 大家看看,这个功能如何实现? 怎样编一个程序读取服务器上的时间? VC工程不能正常打开? 登鹳雀楼这首诗描,写了”什么情景写了 登鹳雀楼描写了怎样的情景 急求基于51单片机和DS18B20的数字温度计设计要proteus原理图能仿真和汇编程序,466851514谢了 下列实例中,用做功的方法改变内能的是A滑冰时,冰刀与冰面间摩擦出现一道痕迹;B水泥路面在阳光下被晒得发烫;C喝酒后,人的身体会发热;D放在炉火中的铁块被烧得发红【请说明分析原因 登鹳雀楼描写的情景 在proteus上仿真数字温度计为什么能测到温度?用DS18B20是怎么做到的?温度是怎么在仿真软件中传进去的?我的意思是,温度是怎么传到仿真软件中去的从而测到温度? 高镍合金镜架好吗? 登鹳雀楼描写了什么情景 乌鸦为什么只叫三声?拜托各位大神 高镍合金眼镜框与钛合金谁好? 双效溴化锂在运行中无溶液,冷剂泵停是怎么一回事在运行中是高发突然无溶液,过后冷剂泵突然停。稀释运行高发又有液位。今天双效溴化锂在运行中蒸发温度突然上升,冷水也突然上升。 【化学】向硫酸铜溶液中加入铁钉会发生反应吗?如果会,写出化学方程式. 某人 经常叫你去死吧 代表是什么? 电磁波传递的最大能量是 多少?多少功率 我想问几个关于内能概念的问题1液体蒸发一定吸热吗2选正确的 A.水在蒸发过程中,水分子间的相互作用力由不能忽略变到可以忽略不计,说明分子势能减小了. B.水在蒸发过程中,需要克服分子 郑州货架,仓储货架,超市货架,钛合金货架哪有卖的?我想在我们这里卖货架,找一个长期供货的货架厂 电磁波能不能传递 能量 环保寄语尽量是自己写的,急用. 如果有人叫你滚,叫你去死,骂你,你会怎么样?四个假设:朋友、兄弟、死党、恋人 电磁波就是一种能量,还是在传递能量?电磁波示意图是人想象出来解释电磁波的吗?我们老师说“像这样的波,它是一个点在上下不断移动,所以看起来像波动,它本身没动,是在传递能量. 保护环境的寄语,长一点的,快最好是一小段话 高镍合金Alloy 600(INCONCEL 600)的密度是多少? 什么叫绝热过程?绝热过程的功和内能如何计算? 关于保护环境的家长寄语写作文要附带100字家长寄语,如若哪位才子能回答,我非常感谢. 第一句中的“依”字在登鹳雀楼中的表达作用是什么现在就要用的. 登鹳雀楼这首诗描写了什么情景 夏天这么热,该怎么活?拜托各位大神热死人了,该怎么办啊?那么大的太阳!烦啊! 《登鹳雀楼》中的“依”的表达作用? 登鹳雀楼这首诗,描写了什么样的景象 用一根棒分别敲击鼓皮紧张的甲鼓和鼓皮松弛的乙鼓,则甲鼓发出的声音比乙鼓发出的用一根棒分别敲击鼓皮紧张的甲鼓和鼓皮松弛的乙鼓,则甲鼓发出的声音比乙鼓发出的声音()A频率高 振 请高手解答,求正负48V直流漏电报警器在电路中的接线方法和工作原理,最好有原理图yangquanli817@163.com 关于合外力做功等于动能改变的问题我举个例子啊,比如有物体A和物体B,A在B上面,A,B间不光滑,B与地面间光滑,有力F拉动B移动一段时间.A由于摩擦力的作用在B上滑动,B足够长,以地面为参考系A,B 对于一定质量的气体,下列说法正确的是——A.温度升高,内能一定增大.B.温度升高,分子热运动的平均动能一定增大.C.温度增大,内能一定减小.(答案是AB,我不知道A为什么对,请给予解答,感激涕 警报器的原理图,ne555芯片的 高中物理题关于外力做功与物体动能变化的关系(1)质量为m的物体,在一恒定拉力F作用下,以速度v1开始沿水平面运动,经位移s后速度增加到v2,已知物体育水平面的摩擦力恒为f,现在你能否根 电动机带动水泵将水抽到高处是什么能转化为什么能? 假设水装在绝对真空杯中,会不会以电磁波的形式向外释放能量(电磁波传播不需要介质) 从什么的乌鸦那里,我学会了什么的品质 电动机对水泵做了7×105 J的功,水泵把5×103 kg的水送到10 m高处,求:水泵的机械效率. 电磁波只是能量传递的一种形式,不是一种实体,这句话对吗?还是说电磁波本身就是能量的一种?还有,光子是只由能量构成的能量团?还是一个实体粒子,只是它承载能的"容器"? 乌鸦象征什么品质象征什么品质(不是和平,长寿) 电动机对水泵做了8×105 J的总功,水泵把5×103 kg的水送到10 m高处,计算:(1)水泵完成的有用功是多少?(2)水泵的机械效率是多少? 曲高和寡中的高是什么意思是选音调高,声音高昂还是选高雅难懂呢?注意从物理角度! 硫酸铜溶液和铁钉发生化学反应后产生的新物质叫什么? 电动机带动水泵将水抽到高处是 能转换为 电炉丝通电发热 改变内能(热传递还是做功)? 曲高和寡的高是什么意思A响度大B音色好C音调高D曲调难度大 铁钉放在硫酸铜溶液中的化学方程式 硫酸铜溶液是 () 浸入铁钉会发生化学反应,,会看到 (),并产生( ). “曲高和寡”是什么意思? 一粒10g的子弹以400m/s的速度水平射入置于光滑水平桌面上的质量为1kg的木块后又从木块中穿出,木块从桌边滑出后着地点与桌边的水平距离为1.4m.已知桌面的高为0.8m,设损失的机械能全部化为 敲鼓时,鼓声的响度跟鼓皮的( )有关. 绝热可逆压缩过程的功如何计算? 关于内能的描述今天我的老师说内能是描述物体的,不能说一个分子的内能是多少。不能说一个分子的内能是多少那能说几个分子的内能是多少吗?假设1 mol的水内的水分子的确切数目为A个 在4.4克CO2中,所含有的二氧化碳分子的物质的量是多少? 你让我去死?你啥意思啊?拜托各位大神 曲高和寡的意思要求1.意思2.简短,五行差不多3.要有用4.要清楚和实用5.好的追加212(我全部了)现在先不给 一个质量为20kg的绝热汽缸竖直放置,绝热活塞的质量为5kg,面积为0.1m2,处于静止状态的封闭气体高度为50cm.现在活塞上方加一个15kg的物体,待稳定后,被封闭气体的高度变为40cm.求在这个过程中气 登鹳雀楼这首诗描写了什么的情景 每种物质都有一个固定的化学式这种说法正确吗? 夏天,有一打满气的自行车轮胎,若将手放于气门嘴口,突然将气门打开,则手的感觉是?为什么?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘