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

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

老外看中国:移动应用UI设计的十大精髓 HTML5正名记:两家机构的博弈与一种标准的诞生 电池技术为何停滞不前?革新技术尚未出现 如何设计优雅的移动游戏? 前方高能!盘点2014年最颠覆三观的智能硬件 俄罗斯当局封杀GitHub,理由是教唆自杀 裁员110人、关闭工作室,Rovio重组求出路! 全Swift开发、代码开源!有钳的Firefox for iOS 详解开源游戏开发框架HaxePunk的主要特性 《程序员》杂志休刊通知 2014 TOP50最具价值CTO获奖名单揭晓! TIOBE 2014年12月编程语言排行榜:R和Swift成为年度语言候选者 免费增值应用正在“杀死”游戏开发者? 直接Mark!开源的DevOps开发工具箱 Apache Mesos联合创始人Benjamin Hindman:谈分布式应用现状 直觉不靠谱!使用移动应用分析的七个巧妙方法 屏蔽、挖角与丑闻,Uber的“创收神器”泡沫 蚁视科技发布会:三大产品与四大概念技术 盘点VS2015 预览版的5个新特性 低能的“智能” 你就是明星,第一届IBM RockStar正式启动! Kubernetes:Google分布式容器技术初体验 方法可以复制 AngularJS资源集合 那些年,微信走过的开放之路 从YunOS话阿里移动互联网云生态布局 Mobile First!苹果联合IBM发布10款企业级App iOS8.1.1越狱又惹急苹果!扒一扒黑客与苹果的斗争史! Firefox.html:用HTML重现Firefox UI Qt 5.4正式发布!引入WP,支持HTML5混合开发 2014智能硬件盘点第二弹!这次咱走暖心的 聚合数据资产,推动产业创新——2014中关村大数据日看大数据变现 下面这段代码是做什么用的 用C语言怎样在命令行编程方式下实现对用户输入文件路径正确的判断?谢谢 干这一行的找个工作与找个对象哪个容易,谈谈你的经历。 有关拼音查询的问题 能给出标准SQL书写事务的SQL语句吗?请给个例子。 个人的邮箱大小为什么不变? 如何在视图上添加自定义的背景! SQLServer2000的问题 关于核新安全代理客户端的问题 如何把Memo里的某些内容替换? 大虾,救救我,程序打包! 一个工作者线程怎样向创建它的主线程发送消息?::SendMessag第一个参数怎样写? 关于com中的dc,componet的结构设计???? 如何确定图形中画线问题 在下面的程序里如何避免警告? 小弟有一些关于用ATL开发组件来封装asp网页的问题来请教各位高手!!! 简单 关于Qmail的webmail问题!急!!! 将数据导入到Excel文件中的源程序 快快快,紧急!!!!!!!!! Vb+Sql server OLAP Server 的问题,win98如何支持更新立方体? 能否安装Oracle Application Server 的问题.(欢迎参加) 请问在word2000其中一个文档关闭前后各触发什么事件?其中的参数怎样写? 高手们,能讲一下BCB的事件机制么? 讨厌,我的问题都到什么地方去了嘛~ 请帮我看一下这段代码,错在哪里?真快弄晕我了!!!! 如何抓取VB中FORM最小化事件 怎么样得到cpu的二级缓存信息? 我是新手 吉他和小提琴哪个好? 请教:如何在jsp中使用存储过程 关于串口的问题(好低级我就是不会) 有关mfc的问题 请问题在win2000p下用delphi6连sql server 2000 personal要加什么补丁? 一个奇怪的问题---应用程序为什么还出错? 怎样知道文件被哪个程序在使用? java web start实例代码COPY不了,怎么办? PowerBuilder 7.0的数据军定义在存储过程中 SQL SERVER 2000: [DBNMPNTW]拒绝纺问 从visio上考的公式,贴在word上是红叉,怎么办? 请教!!!!急阿!!关于DataGrid 大家来帮帮忙! Access中有象MS SQL Server中sysobjects一样的系统表吗? 请问delphi 里面那个控件可以控制每一行字符的颜色 有没有中文版的msdn呢 关于类的序列化的问题 怎样使用非标准的WINDOWS的ActiveX控件?非常急的问题!!! 为什么回出现这样的错误? 能否告之广州的房价? 消息处理程序? 请问如何检测一个字符串数字的有效范围?请高手大哥们帮个忙。 电动车17-20ah电瓶10a放电放多长时间 轻质杠杆每小格的长度相等,O为杠杆的支点,当在杠杆左端悬挂重物M,在支点右边的A出悬挂钩码时,杠杆水平平衡,现将重物M浸没在水中,则需将钩码改挂在B处,才能使杠杆水平平衡,求重物M的密 如图甲所示,用OA,OB,AB三根轻质绝缘绳悬挂两个质量均为m的小球,两小球带等量同种电荷,三根绳子处于拉伸状态,它们构成一个正三角形,吃装置悬挂在O点,开始时装置自然下垂,现用绝缘体对小 12v17ah电动车电池用10a放电时间是多少 如图,在△AOB中,∠AOB=90°,OA=OB=6.C为OB上一点,射线CD⊥OB交AB于点D,OC=2.点P从点A出发以每秒√2个单位长度 一个平行四边形,如果高增加3cm,底不变,则面积增加15平方厘米;如果底增加4cm,高不变,则面积增加12平方厘米求平行四边形原来的面积 不用方程 在△ABC中,∠C=90°,若三角形内有一点O,使得△AOB,△OAC和△OBC的面积相等,则(OA^2+OB^2):OC^2=好像要用勾股 一道初三物理作图题,急!如图,是广场上一只氢气球被风吹的情况,用细绳系于地面上,请作出氢气球受细绳拉力的示意图. 如图,三个小球a、b、c分别用三根绝缘细线悬挂在同一点O,细线的长度关系为oa=ob 如图O是△ABC内任一点 A' B' C'分别是OA OB OC的中点 △A'B'C'与△ABC相似吗 为什么 初三物理 作图题谢谢 质量m,带电量+q小球用绝缘细线悬于o点,它在A、B之间来回摆动,OA、OB与竖直方向OC的夹角为a如果一竖直向上,大小为E电场是在小球从A点摆到最低点C时突然加上去的,则当小球运动到B点时线的拉 如图,O为三角形ABC内一点,点A’,B’,C'在线段OA,OB,OC上,且三角形OA'B'相似于三角形OAB,三角形OB‘C’相似于三角形OBC.三角形O A 'C'与三角形OAC相似吗?为什么? 平面内有三个向量OA,OB ,OC 其中向量OA与向量OB 的夹角为120度,向量OA与...平面内有三个向量OA,OB ,OC 其中向量OA与向量OB 的夹角为120度,向量OA与向量OC的夹角为30度,平面内有三个向量OA,OB ,OC 其中 已知向量oa=(0,1)ob=(1,3)oc=(m,n)若ab//ac,则实数m=?OC是m,m不好意思阿 如图,点O是△ABC内的一点,OA=OB=OC,则∠1+∠2+∠3=()度 (3分)如图,四边形ABCD是一个正方形.⑴请你在平面内找到一个点O,并连接OA、OB、OC使得到△OAB、△BOC、△COD、△OAD都是等腰三角形.⑵这样的点,你能找到多少个?⑶试写出你找到的等腰三角形的 怎样把蓄电池电压4V变成8V 如图,O是△ABC内任一点,A'B'C'分别是OA,OB,OC的中点,△A'B'C'与△ABC相似吗?为什么? 等腰三角形ABC的顶点为A(-1,2),又AC的斜率为根号3,B(-3,2)求AC、BC及∠A的平分线所在直线的方程 为什么用直流稳压稳流电源给锂电池充电电压会变化,调到16.8V充电时降到15.4V随着充电的增加,输出在上升 电动车蓄电池放电时间不够是什么原因是初充电后就发现的 等腰三角形ABC的顶点为A(-1,2),又AC的斜率为根号3,B(-3,2)求AC、BC及∠A的平分线所在直线的方程 电解水对电压电压的最低要求是什么 电压高对电解有什么影响,还有电流呢. 等腰三角形ABC的顶点为A(-1,2),又AC的斜率为3^(1/3),点B的坐标为(-3,2),求A 有一个长方形的长减少4cm,宽增加4cm.或长增加6cm,宽减少2cm,面积都不变,求长和宽 英语翻译 一个平行四边形,高不变,底增4cm,面积增24cm2,底不变,高增3cm,面积加15cm2.原平行四边形的面积是多少 在一张长32cm,宽24cm的长方形纸上能剪出多少个直径4cm的圆?剩下的面积是多少? 已知直角坐标系内两点A(根号3,0)和B(0,1),以线段AB为边作等边△ABC,求顶点C的坐标 如图,OA的方向是北偏东15°,OB的方向是北偏西40°. (1)若∠AOC=∠AOB,则OC的方向是_______________; 如图,OA的方向是北偏东15°,OB的方向是北偏西40°. (1)若∠AOC=∠AOB,则OC的方向是_______________; 一长10Cm的长方形,若长增加4cm,则面积增加24cm,原长方形的周长是多少厘米? 如图,已知直角坐标系内两点A(3根号3,0)和B(0,3),以线段AB 为边做等边三角形ABC 求定点C的座标 一块平行四边形的地,底长80M,在平面图上画4cm.要用3cm表示它的高,求这块地的实际面积. 一个长方形的长增加4cm,宽减少1cm,面积保持不变:这个长方形的长减少2cm,宽增加1cm ,面积仍保持不变,求这个长方形的面积. 电动车电瓶加蒸馏水后,放电时间变短了,是怎么回事情? 21.如图,OA的方向是北偏东15度,OB的方向是北偏西40度.(1)若角AOC=角AOB,则OC的方向是()(2)若OD是OB的反向延长线,则OD的方向是()(3)在(2)的条件下,角BOD可看作OB绕点O按逆时针方向转 一个长方形的长增加4cm,宽减少1cm,面积不变,长减少2cm,宽增加1cm,面积仍不变,求长方形的的面积. 如图所示,杆0A长为0.5米,O端用铰链铰于竖直墙面,杆中B处有一制动闸,0B为0.2米,闸厚d为0.04米,轮子C的半径R为0.2米,闸与轮间动摩擦因数μ为0.5.飞轮顺时针转动时,要对轮施加力矩(力×力臂)1000牛 一个平行四边形,如果底增加3cm,高不变,面积增加12cm mp3电池电压为什么4v 一道初中物理有关杠杆的题目一根2米长的粗细不均匀的木棒,若支点在距细端1.5米处恰好平衡,若在距粗端1.5米处支持它,则要在细端加98牛的力,求木棒重多少?(要过程!!!!!!!!!!) 如图,射线OA是北偏东35°方向,射线OB是北偏西65°方向,则∠AOC=?∠AOB=? 请问7号电池那么大形状的电池,是否有7.4V电压的? 在等腰三角形ABC中,AB=AC,CG是AB的高,取一直角三角板,将其直角顶点E放在AB与AC上,使其一直角边与AB或AC重合,另一直角边交BC于点D,过点D做一腰的垂线,垂足为F.(1)当点D在边BC上时,求证:DE+DF=CG 如图 所示,用输出电压为1.4V,输出电流为100mA的充电器对内阻为2Ω的镍氢电池充电.下列说法正确的是(   )A.电能转化为化学能的功率为0.12W B.充电器消耗的电功率为0.12WC.充电时,电池消 快易充电池电压2. 在三角形ABC中,角C=90度,AC=BC=2,将一块三角板的直角顶点放在斜边AB的中点P处,将此三角形绕点P旋转,三角板的两直角边分别交射线AC、CB于点D、点E,图①、②、③是旋转得到的三种图形.(1)观 如图,OA的方向是北偏东15°,OB的方向是北偏西40度. 1若∠AOC=∠AOB,则OC的方向是2OD是OB的反向延长线,OD的方向是?3若OE是平角∠BOD的平分线,用方位角表示OE的方向.4在123的条件下,求∠COE 2.1V的电压能对2.4V的电池充电吗? 等腰三角形ABC,AB=AC,角BAC=120度,P为BC的中点,小慧拿着含30度角的透明三角板,使30度的顶点落在点P,那第3题2小题呢 如图,重力不记的杠杆OAB,可绕O点在竖直平面内转动.重力为100N的物体挂在OA的中点处.已知OA=40cm,AB=30cm,OA⊥AB,杠杆与转动轴间的摩擦忽略不记.要使杠杆平衡,且OA段处於水平位置,那麼作用於B端 如图所示,物体m重为30N,用oc绳提起,OC能承受的最大拉力为20根号 3 N.现用一水平力作用于C点,使OC偏如图所示,物体m重为30N,用oc绳提起, OC能承受的最大拉力为20根号 3 N.现用一水平力作用于C点 已知向量OA=(3,-4),OB=(6,-3),OC=(5-x,-3-y)(其中O为坐标原点) (1)若A,B,C三点共线...已知向量OA=(3,-4),OB=(6,-3),OC=(5-x,-3-y)(其中O为坐标原点) (1)若A,B,C三点共线,求y关于x的表达式 (2)若△ABC是以角B.为.直角的 “紧旋自行车的各种紧固螺丝,这是通过增大压力来增大摩擦”这句话没什么不对?什么是“紧固螺丝”这句话不对。我想知道为什么? 物重30N用OC绳悬挂在O点,OC绳能承受的最大拉力为20√3N再用一绳系住OC绳的A点BA绳能承受的最大拉力为30N现用水平拉力拉BA,可以把OA绳拉到与竖直方向成多大角度? 电动车电池怎么放电?10A 12A 20A 的放电都有什么区别啊?电动车电池怎么放电?10A 12A 20A 22A 的放电都有什么区别啊,放电的时候放电仪怎么调试?电流和电压分别是分别是多少?欠电压保护又怎么弄 设向量OA=(1,-2),向量OB=(a,-1),向量OC=(-b,0),a>0,b>0,O为坐标原点,若A,B,C三点共线,则a+2b最小值是多少 质量为m、带电量为+q的小球用一绝缘细线悬于O点,开始时它在AB之间来回摆动,OA、OB与竖直方向OC的夹角均为 .如果当它摆动到B点时突然施加一竖直向上的、大小为E=mg/q的匀强电场.则此时线中
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘