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

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

独家:前RIM大中华区总经理刘征宇,加入Appconomy 用一个API搞定一切 Segment.io为移动开发者提供便利的分析数据分发服务 TIOBE 6月编程语言排行榜:JavaScript回归前十 《Kingdom Rush Frontiers》上线后 迅速抢占27个国家游戏榜首 移动周报:85后程序员,iOS开源项目,细数7天大事件! Instagram:从Redis到Cassandra 成本节省1/4 乐元素CTO凌聪访谈:游戏引擎技术选型之王道 iOS 7的新设计并非止于外表 WWDC 2013大会10大启示:正向开发者支付大量现金 云计算大会微软专场成功举办 Windows Azure公众预览版上线 IBM全球大裁员 在美国裁员已经开始 动动鼠标,决定“中国十大优秀开源项目”的归属 为改善Flickr 雅虎收购拍照应用开发商GhostBird 让你轻松学习新代码库的六个步骤 RESTful API 设计最佳实践 谷歌11亿美元豪购Waze原因:获取数据 争本地广告市场 为什么大家都要疯狂吐槽iOS 7的扁平化设计? 伟大的程序员是天生的,不是造就的 比Hive高效7倍 Facebook推新一代查询引擎Presto 未来的存储系统设计——PMC技术交流会举行 第五届中国云计算大会PPT尝鲜:十位专家分享的架构实践 “DIY”可穿戴设备:索尼开放智能手表固件 在微软的八个月里,我学到了这些 谷歌实习生每月都拿$6000,你呢? 【第五届中国云计算大会】由瓦特变比特输出,新疆要做中亚云服务中心 应用程序扩展性实现的十宗罪 图文:看谷歌实习生的惬意生活 为移动而设计:交互设计篇 小米游戏中心月度报告:极品、神庙、找你妹 中科院:常温下的液态金属电路3D打印机 细数IE10里的HTML5特性 如何在resin中设置wap服务器功能 大家帮忙!! 什么时候用DataGrid,什么时候用DataList? 怎么样从数据库里取得某字段的值??? 昆腾的硬盘修理找谁啊?急,UP有分........ www.webmatrixhosting.net免费空间中FTP文件上传问题 Apache 2.0.43 +Tomcat 4.1.24+mod_jk2-2.0.43.dll整合问题出现:The servlet container is temporary unavailable or being upgraded 我装的Delphi7好像丢了一个文件:Proxies.pas,哪位好心人给我一个? 人,真脆弱! 开水房追女之呕心沥血计划 (超暴笑) 孤独 急!!Image对象如何设置成为透明的???Thanks! 【憋的慌】大头、阳光呢!!! 关于FLASHMX的遮罩问题 一个问题,想不通! 【憋的慌】死水、一辉呢!!! 急!!!急!!!怎么在建表时使用一个时间函数??就是指出加这条这条文件的时间?? 【憋的慌】蓝心、风呢!!! 怎么获得一个应用程序的图标,比如我用进程ID,获得其主模块,然后怎么办! 【憋的慌】冰冰、贝贝呢!!! 我获得一个服务,可以检验综的状态什么的,可我想获得除了这个以后的东西比如:.... 【憋的慌】珊珊艾、CoolSlob呢!!! 关于adodc控件删除的求救 【憋的慌】冰儿、江风呢!!! 关于Apache wuxuan、kingzai、jemmylau各位版主,请问怎样才能得更多的可用分?我看有些人有几千分,真不解。 提示问题!菜鸟问题马上送分 请问哪有php安装程序下载? [散分]探望qxjavajava 使用gdiplus.lib出现下面的错误? 讨论MVC--Model这块的实现方法(不用EJB的情况)??还有那里有可以自动生成DAO和VO的比较不错的工具吗? 关于网络传销 关于个人bean的问题!!!! windows 2003 server 下为什么不能装sql的任何版本 挑战性问题:ToolBar为何在客户区?而MainFrameWnd的在非客户区?(高分) 一个奇怪的问题 再搞不定我要自杀啦。。。。。。。 求助!测试数据库的师傅来看一下啊(adodc 对象编程) 请问,图书怎样分类,分哪些类比较科学? 推荐几个比较好的C++的论坛吧 谁能帮我一下! 请大家帮助 给50分!!!!!!! 为水源200多位水友鸣不平,鄙视某人。。。 请教各位高手(菜鸟) 怎样把我的dll加到0x80000000以上地址? 200分谁知道,CRecordSet怎么样管理两个表 如何互相调用文件????????? 关于vc的sourcesafer的一个问题 带有滚动条的子窗口是出现但是没有用,各位高手请帮帮忙?我等着 请问,哪个系统比较好啊??? 来CSDN一年,最后半年都只在水园逛,几乎不来答题为什么我会这么无聊?谁能救救我 替米考星,替米考星厂家,替米考星价格?以及应用? 以人为本 什么短语 这是个什么姓氏【razzaq】是个中东地区的姓氏么?我一个新认识的朋友的姓氏,他是英国人.我只是想了解些,我觉得这不像常规的英文姓氏. How does your cousin spend her holiday?(用they换your cousin)改写 谁对兽药原料—甲磺酸加替沙星比较了解?帮忙介绍一下,谢谢! “人命关天”这个词 体现了以人为本吗 she began practicing her guitar skills for several hours each day,__when her fingers began tobleed.A.stop only B.stopped only C.only to stop D.only stopping答案为什么是D?C怎么错了? 氨苄西林钠原料药,兽用级,生物快车兽药原料直销处的产品怎么样? 以人为本,这个词有没有国外习惯性的翻译? family当家人讲时是可数还是不可数的? 我最喜欢的动物是袋鼠【两种】英译汉 生活中你有什么发现?快. 详细解释下family什么时候可数,什么时候不可数,families是指什么 兽药招商怎么做 幼蛇如何过冬?急要精心篇的. 洗浴所说的大保健什么意思 candy的英语文章 我做实验缺昆虫在哪里可以买的到 是鳞翅目夜蛾科的 斜纹夜蛾 求大神 eat,amy,an,doesn,it,ice-cream.连词成句 用50N的水平向右的力把质量为3千克的木块压在竖直墙上,这时木块正顺着墙壁面竖直向下匀速运动………请给出比较明白的解析,尽快,用50N的水平向右的力把质量为3千克的木块压在竖直墙上, I ( ) usethe chopsticks.But I'd like ( ).怎么填 Jenny is too fat,____ she doesn't eat ice-cream.A.and B.butC.so D.then选哪个? The Dragon Boat Festivai是什么意思?我急,能不能快点! some people don't like lettuce ( ) hamburgers为什么括号中试in而不是with 放鸽子比喻什么 元稹 闻乐天左降江州司马 小松鼠采了一些蘑菇,它们的含水量为99%,稍经晾晒,质量减轻了5千克,因此含水量下降到98%,晾晒后蘑菇重多少千克? 被放鸽子是什么意思? -What's the date today?-It's June 16.-Already?Then it's Dragon Boat Festival today.Already意思 一家松鼠,采了一篮蘑菇,小松鼠采了比4分之1多15个比3分之1少4个,小松鼠采了几个? 什么叫放鸽子?假如说你约了她,却因为有事情打了电话给他,跟他说,他又同意了叫放鸽子吗?(他还没出门) 世界上主要哪些国家和地区的人们信奉伊斯兰教 给直翅目,等翅目,半翅目,同翅目,鞘翅目,鳞翅目,膜翅目写一个双项式检索表 “放鸽子”是什么意思啊? “阿拉伯人的世界”在哪里 borrow photo of the fashion show 中文 仿照 山中访友 中的拟人句描写山中的一个景物 现在世界信奉伊斯兰教的人约有多少? the fashion show is well w__ seeing 填什么? “放鸽子”是指啥意思? (三字经)中与不耻下问有关联的是哪句话 I think the fashion show is good 否定句 怎样锻炼自己成为有恒心有毅力的人怎么都是方框啊 一群孩子在乘坐旋转木马,奇奇在旋转木马上玩的很高兴,他提出下面的问题:“如果把我前面的小朋友的个数的三分之一加上在我后面的小朋友的个数的四分之三正好是乘坐旋转木马小朋友 英语翻译Connections between local charitable efforts and amazing ways to impact change.这是完整的一句话 他是个很有毅力的人 英语怎么说 为什么坐在旋转木马上的小孩处于加速状态 和()可() ()不()席 ()高()重 成语快 1 怎样成为一个有恒心、有毅力的人?怎样做,才能改变自己的懒散? a slice of tomato(es)中tomato有没有复数形式 我有一个全波整流电路输出电压是127伏 电磁阀线圈电阻是530欧我算的电流是0.22安功率约28瓦 求详细回答,如何才能成为一个有毅力有恒心的人? 求以“以人为本”为话题的600字作文今天下午就要,好的话,再加50分 I usually do my homework and sometime help Mum (w ) housework. How does your friends go to school?中哪里错误 I would like to buy a kilo of biscuits.(用a kilo of biscuits提问)_______ would you like to ______? Mum and I 和 I and Mum 哪个写法是对的 从3件外观相同的物品中找1件物品(质量比其它两件轻),至少要用天平秤几次才能找出来? “以人为本”这个词出自哪里? Before bedtime,my mum usually watches TV,my dad usually__and__,but he never__.填空 中国周边外交发力 区域影响力再提升手机通信遭窥视?默克尔向奥巴马要说法巴基斯坦总理:赶快停止无人机空袭!肯尼迪刺客婚戒将拍卖白宫网页万人请愿辱华节目被删除李肇星:国内一大企业家在欧洲浪费粮食美军史上首艘超级航母以1美分贱卖尸检报告排除阿拉法特钋中毒 不排除其沙特威胁将疏远美国 分析称美地缘政治印度德里频发未成年人性侵案 作案者为星巴克CEO辩解在中国高定价 称报道伊朗暂停提炼20%纯度铀浓缩 距武器星巴克CEO:对中国媒体抱怨咖啡售价世界最高大的狗在美国去世 存活年龄为土耳其选择中国导弹,有人欢喜有人忧阿拉法特死因排除钋中毒 不排除其他毒李肇星:国内某大企业家在欧洲浪费粮食租金高,房源少,常搬家 租房住咋就这四部门:国家工作人员强奸猥亵未成年人北京大气污染听证会:\"停车3分钟须长沙贫困村举债千万建楼 8名工作人员汉婚礼汉宴礼带游客玩“穿越”相关链接无标题轻生男子18楼跳下瞬间被抓住 身体悬7年,他抓了 300多个小偷交通拥堵闹心啊文明环保谢谢啊一路上比演技比眼力比耐心杭州限制“一人多车”受质疑广东高州在建石拱桥坍塌奋斗的青春最美丽“挑战清末乡试第一名”决出胜负郑州小伙五一乘地铁迎新娘“宝宝”收益下降银行理财逆袭有钱不还 20个老赖上黑名单停车不去停车场,都停草坪上河南:驴友攀爬野山跌下百米悬崖身亡河南中牟为建文化遗产基地拆坏原有文物“在这大时代里,就该自己创造自己!”莫怜旧时花枝败但求自由花常开两车相撞夺走五条人命三星被判赔苹果逾1亿美元
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘