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

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

百度轻应用插件CloudaMySQL诞生记 盘点Github所用的开源项目 开源不只是面对开发者 见证新一代全能大数据计算平台崛起 ——中国Spark技术峰会将于4月19日在北京召开 大佬放猛料的节奏 阿里云聚无线为开发者提供一站式服务 智能硬件又添新选手 汉王推出便携PM2.5检测仪 2014年首场百度轻应用高级训练营落幕 现场展示云端结合能力 销售易史彦泽:企业应用,自上而下的革命 专访寻医问药网创始人:轻应用背后的长尾效应 轻松打造品牌轻应用:实时Web App开发框架Clouda Intel强势入驻,Cloudera新一轮融资总额已达9亿美元 每个Web开发者必备的9个软技能 4月1日:闻名世界的苹果公司正式成立 AMD正在探索一种新颖的Linux开源驱动模式 QQ手机浏览器推出5.1播霸版 内置强解码引擎支持22种视频格式 Ceph浅析(上):概况与设计思想 IBM:你好,互联网 光网络SDN化的四大驱动力及两条路径 《近匠》酷传:解除App发布和监控痛苦 有道heX正式开源:用HTML5和NodeJS开发桌面应用 在3D空间创作:英大学生发明增强现实设计产品 2014年3月浏览器份额:Chrome终超Firefox 成市场第二大浏览器 2014年3月操作系统份额:Windows 7大涨,Windows XP仍未跌破27%大关 路透社:iPhone 6仅有4.7寸版本,将于5月量产,5.5寸遭冷冻 高端实战技术培训:OpenStack企业应用之路 据统计,Oracle已击败IBM跃居软件行业第二 【技术博客推荐】2014年值得关注的10个开源项目 Intel在深圳建立智能设备创新中心 将投入1亿美元 免费获得价值1200元Unity2014顶级盛会门票! IBM公布Softlayer中国业务落地时间表 推荐30款最佳的数据可视化工具 那位大哥知道rtsp mms怎么下载?? 一个做无线网的公司想挖我去,我很犹豫,希望各位给点意见~~ 怎样用代码启动应用程序 关于数据库字段名的问题,提建议也给分 怎样给连接都加密? 如何制作CHM文档?…… 怎样使窗口上的按纽,数据窗口 随着窗口的resizable,位置也相应的变化 我想问一下,要实现彩信和无线网,需具备什么条件?网关?开发平台等? 教教我这菜鸟,在delphi下用什么函数来操作(读取、写进数值)某内存地址? 存储过程中可以自定义变量吗>>> 开始学delphi做聪明的程序员,先给大家散点分,祝大家新年快乐!请斑竹手下留情 触发器如何在程序中使用,它能和存储过程一起用吗> 除了面板上的控件之外,其他一些VC自带的控件在哪里? 谁能把本期的变成擂台题目概要贴一下? 小的是菜鸟,想问一个查询问题 在平面上如何实现三维坐标的模拟定位?(在线急等) 在VB中怎样压缩磁盘中的文件或文件夹 如何在平面上实现三维坐标的模拟?(在线急等) 请问各位高手《Delphi 6程序设计从入门到精通》里的例子代码谁有? 在平面坐标里如何实现三维坐标的模拟定位(在线急等) 怎样实现这个简单的功能? “将事件写入日志”选项不能改动了?奇怪 如何在平面上实现三维坐标的模拟?(在线急等) 如何比较两个字符串 NCNE--国家网络技术水平考试介绍 在问个简单的问题:Delphi中引号的问题 怎样知道windows的应用程序的路经 哪位高手给俺讲讲with xx as xx do 的用法,谢谢! 很菜的问题 请前辈进,请高手进!!! 那位仁兄有JAVA开发的五子棋游戏,我用一套软件交换 怎样用com技术C/S三层做中间件和使用,谈一点原理和实例。 高手请进 100分!!!!!!!!!!! NCNE 国家网络技术水平考试 介绍 软键盘的问题?UP有分 关于装配件的问题 想购买一套人事管理系统的源代码!!!!!!!!!!!!!!!!!!!!!!! 对话框中标题栏上面的颜色如何改? 对服务器来说,内存更重要还是运算更重要? 关于jdk与windows xp 我举报:信息产业部的领导根本没有学习好“三个代表” 聘驱动开发人员!!! 本人在运行REALPLAY8.0的时候出现了这样的错误窗口. 普通常量与符号常量有何区别,怎样使用? 怯怯地问: 问题一:我的网页是用表格分的区域,把表格线设为0 ,但加了背景后 ,背景上总是有一小条白线 ,那是表格的边框线 , 问怎么办? 这个不是太难,但很不简单! 报错---[Linker Fatal Error]Fatal:Expected a file name:,什么原因?大虾指教,在线等待 远程调用时传输数据的问题! 2000 不能正常关机 初当网管,请教大家都用什么工具? 杭州地下车库因大雨进水 仓库蔬菜漂了浦江14岁少年拿着玩具枪抢劫被抓浙江大学4名同年同月同日生男生分同一霸王合同系违法 高桥三家商家受罚户口和亲情的抉择令黑户家庭左右为难浦江男子冒充警察强奸少女 还抢走其3男子假扮警察查身份证 借机抢劫强奸外宁波孕妇挺着大肚子上法院举报自己出轨图文:台州村民种出罕见140斤冬瓜王温州公园失踪的3岁女童被害只因途中哭德国大闸蟹要来华 中国吃货为民除害9月起杭州市三医院看病开始全面实名制广东洪灾经济损失50亿 特大暴雨千年东阳草丛发现弃婴 17岁父母称无力抚请家长放手让大学生学会独立和成长熟人发短信要借钱 宁波现伪基站群发短台湾民众蛋洗县府 民众抗强拆官方谴责网曝桐庐男子被五女轮奸致死 警方称系河南公交车劫案3死12伤 其中女婴仅上海半数家长不反对高中恋爱 称不体验女生绝食4天躺楼道等妈妈 剃光头断烦沧州市运河区80后社区书记艾丽丽电表起火妇女要泼水 巡警赶到及时制止深州民警火眼金睛识破假牌 变造号牌无英媒吐槽安倍:花样公关秀难救支持率证监会:正研究制定股权众筹融资试点监北京天文馆长:地球“大表哥”不一定适笨贼入室盗窃遭房主反锁家中 怕被抓躲重庆市外经委党组成员、副主任何为接受北京天文馆馆长:现有科技水平连太阳系北京天文馆长谈地球“大表哥”是否有生福建整治非法卫星接收设施 现场销毁卫云南省测绘地理信息局原局长耿弘一审被安徽沱湖跨境污染问责 宿州市承诺给予重庆市外经委党组成员、副主任何为接受漯河民警高温下“全副武装”坚守工作一托克逊县白杨河晚照美如画(高清组图)米兰双雄抵达深圳 德比大战明日开打广西南宁举办素膳节倡导绿色健康饮食内贸货物跨境运输新政策助力黑龙江省陆雅安荥经县人大常委会党组成员、副主任福州:早产男婴被夜弃垃圾桶边 “百度
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘