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

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

“BlackBerry 10移动应用开发大赛”应用推荐 Java程序优化的一些最佳实践 Heka:Go编写,来自Mozilla,高效、灵活的插件式数据挖掘工具 Anchora鲁为民:PaaS是我的兴趣 次世代IDE Light Table 0.4发布 带来众多更新和改进 别再设计易碎的Web API! LinkedIn:55人支持2700位员工,2亿用户的大数据分析 Brian Krzanich是谁?这位新CEO预示英特尔未来怎样? HTML5开发者心声:浏览器兼容性成最大问题 传微软6月下旬将发布第二代Surface 7到9英寸全有 Turbulenz:HTML5 2D和3D游戏引擎开源 携程开放平台总经理夏天:内容+高转化率成就开发者 直接拿来用!最火的Android开源项目(一) Qunar 谌振宇:旅游行业的移动化如何布局? 大数据分析“铁三角”: Teradata数据仓库、Teradata Aster与Hadoop Teradata专业服务:打造行业企业的“数据科学家” Xamarin Evolve 2013:竭尽全力让C#服务iOS与Android 史上最全!57个Web框架4轮横向对比 回顾银行数据的可用性和一致性历史 Qubole:托管在AWS平台上的Hive服务 自由操作系统 Debian 正式发布7.0版本 4月份浏览器份额:IE 8仍居第一,IE 10翻番 亚马逊正式在华推Android应用商店 收入3:7分账 不要男孩,只允许女生参加的四所编程学校 下一波App机会在哪里? JS1K 2013优胜作品公布 3D蜜蜂仅获亚军 专访:前新浪网架构师徐佳转行卖水果背后的故事 FBI密码挑战,你能解开吗? 从0到1只需一天:Twitter后PC时代物联网“敏捷”开发之路的探索 机械生物已经面世 只少个“大脑”而已 百度正式宣布3.7亿美元收购PPS视频业务 新买了一个摄像头,请问装个什么软件比较好 听说Delphi中的visibroker是开发版,如果作为商品软件必须购买license,是真的吗? 香农公式谁能解释解释? 怎样得到数据库服务器的某一数据库的所有用户名称和登录名列表 散分啦!恳请各位大虾帮忙~~ 联通CDMA手机短信与移动GSM手机短信指令有何区别? 关于类设计的问题 jsp中大文件上传问题! onchange在程序改变当前选项时无法触发? 如何将所绘制图形保留在窗口上? 消息机制??? 请教,如何做一个进度显示?希望(详细点)!拜托高手 一个关于属性页的问题 新手问题:SQL*PLUS出错! 一道调用传递引用的参数,实现两个字符串变量的交换的题目,帮帮忙! 离开 论坛 散分 关于php与frontpage之间的一些问题!! 离开 论坛 散分【二】 在ASP中生成SURFER对象时出现错误 离开 论坛 散分【三】 离开 论坛 散分【三】 急救! 如何操作磁卡读写器 Help,如何更改DataGrid控件选中那个单元格的背景色和前景色? 2000共享文件问题,请高手看一下,很古怪的! 朋友,你好! 离开 论坛 散分【四】 高手救命,简单数据库规划问题!!!价值50分!!! 想听听大家对 static 命名的函数、变量的用法 Access数据库传到服务器后,变为只读了?求助,白思不得其解 请问怎样取得PCM流 离开 论坛 散分【五】 打包,解包??? 离开 论坛 散分【六】 离开 论坛 散分【七】 求教SQL语句,高手、或刚入门的同道都进来讨论一哈 最初linux使用什么编译开发的? 离开 论坛 散分【八】 关于字符串截取问题 谁有FASTREPORT的注册版本 我急用!在线等待!谢谢! 离开 论坛 散分【九】 Application.messagebox和messagebox有什么区别呢? 水晶报表的两个小问题? 怎样向Foxpro表中添加float型数据? 离开 论坛 散分【十】 问一个和Session有关的问题,达人请进 在宏里把ie关闭。非常感谢 如何让window.showModalDialog的page提交数据到原来的父页面? 合租住房!! 有没有一个命令直接解开iso文件或提取里面的一个文件或文件夹 请给看看程序:AVI视频的读取和重建 一只蚊子来叮一个正在看报纸的老爷爷,老爷爷没去打蚊子,一会儿文字却死了,请问蚊子怎么死滴?" 小明的奶奶正在看报,一只蚊子想去叮她,奶奶的手和脚都没动,但那只蚊子却死了,为什么?求大神帮助 溺水原因主要有哪几种 两选.说下理由.1.The secretary always writes ______ black ink.A.in B.by2.That doesn't sound very frightening ,Paul,I've seen ______ .What did you like most about the film A.better B.worse3.---Have you been here long?--- _________.A.Not much B.No The boss often gets very angry变同意句 The boss often 3个空格写什么 Mr.Black often gets angry and shouts___the pupils in his class.A.at B.to C.on D.in原因? 短文填空.At weekends ,he often gets up e____and turns in the park n____his home.Then he goes to the b___and gets some money to buy some vegetables for his mother in the s______.He has lunch at home with his p____.In the afternoon,he often reads s Jim often gets up___than his sisterA.more early B.much more early C.earlier D.much more earlier 热水袋和冰袋为何不能装满 一位老奶奶坐在院子里乘凉一只蚊子叮在她脸上,她没动手蚊子死了.问蚊子怎么死的? 一只蚊子来叮一个正在看报纸的老爷爷,老爷爷没去打蚊子,一会儿蚊子却死了,请问蚊子怎么死的? 报告称中国留学生美国名校退学率达25美国海军基地发生枪击案 两人受伤凶手英国乔治小王子接受洗礼 现“豪华”皇美媒:中美日竞争转向拼经济 争亚洲“杭拟规定新建公园或学校操场修地下车库李肇星:最近去曾母暗沙宣示主权 泡了李娜打入总决赛排名进Top3 创亚洲美国上千民众走向街头 对NSA监控行美夫妻出租4个女儿给嫖客拍AV被控虐摩萨德特工的各种“不靠谱”美国情报机构或已监听默克尔电话长达十快递专用电动三轮车 行业标准将实施《财富》发布中国企业500强教学内容不得少于全程1/2深圳富安娜起诉梦洁精诚合作 再创辉煌汽车维修 也有质量保质期任何有良知的人都不会 同意澳领导人有反制拜鬼须魔高一尺道高一丈把夺命“黑汽修” 逐出市场南山荔秀服饰文化街区华丽“转身”世界杯赛一个月 醉驾人员翻一倍
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘