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

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

移动Web技术的春天来了?Facebook发布React Native,用JavaScript开发移动原生应用 开发不易!2015年移动应用开发趋势总结 .NET开发者必备的工具箱 热情不减!七款Swift应用开源项目推荐 如何给苹果提交Bug或功能需求? 深入钻研Augular两年 谈谈其究竟适用于哪些场合 唐巧:谈谈React Native 在Swift中,如何更优雅地处理网络返回数据? Spark生态系统解析及基于Redis的开源分布式服务Codis 阿里巴巴技术专家杨晓明:基于Hadoop技术进行地理空间分析 Bowery为什么放弃Node.js,转向Go? 《近匠》有了APM,用户快到碗里来——专访听云CTO Wood 联通WO+梦工厂唐敏:走进厦门 构建移动数字生态 HTML5 VS 原生,世界究竟是谁的? 完全开放 微软开源.NET Core的执行引擎CoreCLR Swift与Objective-C的兼容“黑魔法”:@objc和Dynamic 网络技术,从“数制”开始学起——跟随王达老师一步步学习 UPYUN CTO黄慧攀:UPYUN这些年,一段“刚好”的旅程 2015移动游戏重中之重:需成功把握1%付费用户的心 UNITE 2015 BEIJING 20大议题首爆 死路一条?智能硬件免费没有未来 APICloud推出“模块 Store” 公布APP创业 “Time to Market”战略 极路由加入海尔U+联盟 可跨品牌控制多款家居设备 《近匠》Amaze UI:做最懂中国程序员的开源HTML5框架 Testin CTO徐琨:要做测试领域的阿里云! TIOBE 2015年2月编程语言排行榜:JavaScript排名达历史最高点 机智云发布第二代GoKit开发板,兼容Arduino与Intel Edison 计算机视觉,让冰冷的机器看懂这个多彩的世界 昔日学霸反哺教育 打造教育领域今日头条 第三方DevOps实践报告发布 84%中国企业预将受益 《程序员必读之软件架构》作者Simon Brown:架构师与程序员的区别 求拓扑排序的所有可能序列?50分求教 java程序员? 请问有没有介绍五子棋算法的好网站?我要做一个和机器下的程序!大家帮忙 请问在编程中的例程,行程和过程的定义是什么?以及他们的区别。 该怎么使用 action() 与 mouseDrag()?请看我的程序问题在哪? DELPHI6.0中的最小化事件是什么 marry____不只怎么办了 (★如何初始化控件CMSFexGrid★) 各位兄弟,不知哪里可以查到所有常量的值? 怎么把帽号赋给一个变量?thank 为什么WinXP激活后就不能重装? 困惑--判断颜色是否相同??? (急急急)寻找:win2000/xp/nt/9x 的可安装文件开发包(IFS Kit),送大分 如何在DB2(V5.2)下面实现表的ID自动增加功能? 帖子结不了,在送300分~~~~~~~~~~ 请问oracle那些版本以上叫8i,常用的是哪个版本,有WINDOWS下使用的吗? 我看过的TOOLBAR 都是横着的,可是我现在想做一个竖立这的TOOLBAR 我该怎么做啊!我翻遍了 CODEGURU 可是没有一个这样的例子! 谁有什么好例子 多谢了!! error C2065: 'end1' : undeclared identifier 我怎么用CreateDialog 建立一个对话框呢! 谁有代码!!多谢!CreateDialog(hInst,LPCTSTR"ID_",hWnd,DlgProc); 送小分:怎样在一个对话框程序中产生一个HWND视窗? 在Windows 2000 Professional 下可以装VS.net吗? 关于文件上传问题 关于微软自己的控件下载问题!! 关于打包的问题 急求答案--请教高手:有关IIS与TOMCAT...... 请问有哪为知道,weblogic提供petstore例子,什么地方有详细说明?? 怎么样利用CHtmlViw将参数用POST的方式提交给WEB服务器 不明白.. 请问遇到连接错误该如何解决? pws的日志在什么地方? 在VBA中如何使用ClipBoard 哪里可以下载mastering delphi 6,或者其他有关delphi6的书籍。 vb和access的问题 C++Builder不支持tif或tiff格式怎么办? 为何我的TQuery为只读? 用Winsock传送文件如何判断一个文件已经传送完毕?(一定给分!) VC程序方法的请教。 请问如何禁用一个页面的cache 不好意思,怎么把引号赋给一个变量?thank 关于字体的保存,用序列化 关于oracle连接的一个简单问题 一个构件地址35分,快快来吧。 如何实现实时监测注册表的变化呢??????????? 如何锁定一个SQL SERVER的表? 哪里有Rose2000? MMGG Redhat7.2Ftp,硬盘安装问题求救! 请问怎样设置phpmyadmin带用户名和密码的登陆界面? 本来打算跳楼的,想想还是先来这试试...... 下面代码有什么用? 想问一下关于BDE和ADO组件的对应关系 就是这本《VC++技术内幕》……哎……我认了…… 高中英语常用固定短语RT越多越好, 作文:关于校园故事,我身边的友谊的600字作文 荷兰的花之国作文 求作文黑板上的记忆开头和结尾,中心是 友谊求作文黑板上的记忆开头和结尾,中心是 友谊 ,要点题点中心还有一个开头结尾,题目依旧是黑板上的记忆 中心是学习 作文父母的爱350字左右 关于校园故事,我身边的友谊的600字作文 友情的文章开头 英语中重要(常用)的固定短语英语的常用短语和固定搭配 列出一些 给我一片关于校园生活的作文(要叙事的,600字) 写中秋节晚上的作文(500字) 祝福读后感500字文章 350字关于大自然的作文 中秋寄语 500作文 祝福别人,作文500字以上 保护大自然的作文350字 中秋节的作文500字 短文《生命,生命》的阅读答案 保护大自然的作文一件事情的作文350字左右 以自信为话题的作文 生命·生命(阅读短文额.)“蜜蜂在我眼前消失了,我才觉察自己一直跪在地上.我继续跪了一段时间.”“我”为什么要继续跪一段时间呢?就这个额..呵呵..请务必回答. 发现自然的美 350字以上作文我要一篇4年级的作文,题为《发现自然的美》350字以上就行. 什么什么让生命更精彩作文 生命的高度阅读短文答案 社会调查报告(或时政小论文)2000字可以写调查家乡方面的,小弟不会写,发几篇参考吧 生命因爱更精彩600字作文 以“生命因读书而精彩”为话题作文1.600字左右 2.文体不限(诗歌除外) 3.急用 4.请给我文章,不要教我怎么写之类的. 2007时事政治论文1000字到2000字左右要找一篇2007年时事政治论文,就一件大事件展开讨论的形式 生命因什么什么更精彩作文怎没写 超越生命的爱 阅读短文!这是一个真实的故事.发生在西部的一个极度缺水的沙漠地区.这里每人每天的用水量严格地限定为3斤,这还得靠驻军从很远的地方运来.日常饮用、洗漱、洗菜、洗衣, 求最新时事政治论文 2000字左右.2010的九月或十月的最新时事论文. 求一篇关于友情的作文要有事情的,不要全是议论,而且要自己写的,网上没有的。要写出我们的友情多么深厚,最后我们的友情因为我们而不再存在的。 写一件在成长过程中懂得某个生活道理的作文400字今天就要道55555555555555555555555555555555555555555555555555555555555555555555 我想要一篇关于友情的作文800字(有叙事一篇) 初一生求用英语表达的成语作文哪篇成语都可以五六句左右就好 词语不要太难 =顺便在这个作文上做个阅读题 作文,写写你成长中懂得的某种道理600字. 我要叙事,写景,母爱,友谊,师生的作文,各一篇重点是在老师和叙事这一..两篇,希望这5篇作文是很好的,还很急用!我想在期末考试之前看看这一类的作文,谢谢 . 求一篇带着友谊出发的作文要点评哦. 成长过程总懂得的某种生活道理 800字六年级作文生活中,我们在一天天长大,渐渐懂得了孝敬父母和长辈,懂得了珍惜幸福.写一写成长过程总懂得的某种生活道理. 荷兰风景有小溪、有比喻句 800——1000字的作文 以“祝福我的祖国”为话题 有真实事例,以小见大也OK 我已经长大的作文350字 荷兰风光荷兰乡村风光说美一点 庆国庆,祝福我的祖国 为话题的作文1000字. 一千字以上 第一个是春节将至,商品的价格会有很大的变化,请做好调查,写一篇关于价格变化方第一个是春节将至,商品的价格会有很大的变化,请做好调查,写一篇关于价格变化方面的小论文,10 欧洲荷兰的自然风光有哪些 关于怎样理解课文的作文(小学的《卖火柴的小女孩》350字~400字) 求篇与服装有关的英语短文5000单词左右,只要与服装相关的什么都可以~如果连翻译一起给我更好··我会再+50分··真的很重要··我找了好久找不到 荷兰有哪些美丽的景色 求作文,350字左右,请以''这件事让我懂得【珍惜 】为题,急 初一的英语写介绍服装商店的作文只须很短,就几句话即可.不过告诉我服装店名应该怎么写?最好帮我写了.我课本的服装店名是:Huangxing Clothes Store SALE!Zig Zag's Clothes Store 我不知道怎么写自己 英语作文常用连词同上.带上中文. 谁知道关于环境的诗歌或散文,谁知道关于同学之间友谊的诗歌或散文30~100字之间,我着急用! 谁有关于时装的英语文章? 英语中常用连词有哪些? 回忆古诗《静夜思》,展开想象,写一篇文章 服装店英语 短文不要复制的! 英语常用的连词有哪些? 有关友谊的开头结尾,句子(好作文中,或自编,非诗句!)谢谢! 帮我找篇关于中国传统服饰的英语短文像介绍旗袍之类的,别太长. 常用英语连词
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn