`
huobengluantiao8
  • 浏览: 1077227 次
文章分类
社区版块
存档分类
最新评论

开始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编程对于笔者来说是个新词,文中出现了许多专业的词语,笔者也是抱着学习的态度进行翻译的,倘若你在这篇文章中发现了错误,或者认为翻译有误的地方,欢迎告之我,希望这篇文章对你有所帮助。

0
0
分享到:
评论

相关推荐

    3d游戏编程入门经典

    总的来说,《3D游戏编程入门经典》会引导你从零开始,逐步掌握3D游戏开发的各个方面,包括图形编程、游戏引擎使用、编程基础、音频处理、网络编程以及游戏设计原则。通过这本书的学习,你将能够独立开发出自己的3D...

    3D游戏编程大师技巧光盘源码

    在3D游戏编程领域,掌握大师级别的技巧是每个游戏开发者追求的目标。"3D游戏编程大师技巧光盘源码"是一份宝贵的资源,它包含了实现高级3D游戏功能的源代码,可以帮助程序员深入理解游戏引擎的工作原理,提升自己的...

    3D游戏编程大师技巧(上、下册).pdf

    3D游戏编程大师技巧, 新手学3d引擎必备。

    3D游戏编程大师技巧]英文版.pdf

    《3D游戏编程大师技巧:高级3D图形与光栅化》是一本深入探讨3D游戏编程技术的专业书籍,由 André LaMothe 编写,Sams Publishing 出版。本书于2003年首次出版,国际标准书号为0-672-31835-0,是3D游戏开发领域的...

    3DMax脚本编程

    3DMax脚本编程,是3DMax从事人员必备教材,本书详细系统地介绍3DMax脚本编程方法。

    《3D游戏编程-肖永亮》源代码

    本书是一本独具匠心的计算机三维编程教程,展现了韩国优秀的游戏编程技术的内涵。书中涉及到比较深入的数学、物理和计算机编程的...本书适用于从事3D游戏编程的人员,以及对3D游戏编程感兴趣的读者朋友。本书的源代码!

    Unity3d脚本编程 使用C#语言开发跨平台游戏

    Unity3d脚本编程 使用C#语言开发跨平台游戏,适用于新手,本书全面系统地介绍了基于C#的Unity 3D跨平台开发,涉及Unity 3D 跨平台原理分析、Unity 3D 和Mono 的结合,以及在游戏脚本编程中使用C#语言

    DirectX9.0+3D游戏开发编程基础(PDF+源码)

    本资源包含一本关于DirectX9.0和3D游戏开发的编程书籍的PDF版本以及配套的源码,对于初学者来说是一个很好的学习平台。 首先,我们要了解DirectX9.0的主要组成部分: 1. Direct3D:这是DirectX中的核心部分,用于...

    3DMAX高级编程

    用脚本语言进行编程,用脚本制作动画。

    Unity3D人工智能编程

    Unity3D人工智能编程教程包含源代码经过调试完美运行的人工智能

    Direct3D中的2D编程中文版+源码

    Direct3D中的2D编程中文版+源码

    3D游戏编程大师技巧.pdf

    3D游戏编程大师技巧pdf

    vc++ 编程宝典(十年典藏版) 书后光盘源代码

    十年典藏版更是集合了多年的教学经验和实际项目案例,旨在帮助读者深入理解VC++编程的核心概念,并提升实际编程能力。这本书的光盘源代码包含了大量实例和练习,有助于读者将理论知识与实际操作相结合,从而更好地...

    C++游戏编程入门.pdf

    一本好的C++游戏编程入门教材,应该从C++语言的基础语法开始讲解,逐步引导读者掌握面向对象编程、模板、异常处理等高级特性。随后,教材会介绍游戏开发的基本概念,如游戏循环、碰撞检测、粒子系统、动画和音频处理...

    DirectX游戏编程(VB源码)3D玩具赛车游戏

    DirectX游戏编程是计算机科学领域中的一个重要分支,它主要涉及使用Microsoft的DirectX API来创建交互式的图形应用程序,特别是游戏。在这个特殊的项目中,我们关注的是一个基于VB(Visual Basic)语言开发的3D玩具...

    Unity3D 游戏开发 PDF完整版

    本书适合具备一定编程基础的人员阅读,特别是对那些想要快速入门Unity3D游戏开发的人来说是一本必备的指南。通过本书的阅读和实践,读者不仅可以学会Unity的基本使用,还能通过实例巩固知识点,提高开发能力。 ...

    手把手教你架构3D游戏引擎_姜雪伟_高清PDF扫描版

    以及在已编写引擎的基础上开发游戏,全书共分10章,主要内容包括游戏引擎简介、数学知识、材质和光照、固定流水线、游戏引擎架构、3D引擎底层封装、3D引擎封装、游戏设计实现、地图编辑器、3D可编程流水线。...

    WINDOWS高级编程指南.pdf

    《WINDOWS高级编程指南》是Jeffrey Richter所著,深入探讨了32位Windows平台的高级编程技术。该书是编程领域的经典之作,特别适合于熟悉Windows编程但希望更深入理解其高级概念的读者,如内存管理、消息处理、动态...

    突破JavaScript编程实例五十讲

    本书用详尽的实例全面介绍了使用JavaScript进行各种客户端编程的过程和应用。全书共分10篇,主要包括JavaScript的时间日期类、文本、鼠标、图片、页面等特效、页面技巧与页面游戏、导航菜单、Cookie和JavaScript的...

    MFC 编程入门教程55篇完整版.pdf

    VS2010/MFC 编程入门之二十三(常用控件:按钮控件的编程实例) VS2010/MFC 编程入门之二十四(常用控件:列表框控件ListBox) VS2010/MFC 编程入门之二十五(常用控件:组合框控件Combo Box) VS2010/MFC 编程入门...

Global site tag (gtag.js) - Google Analytics