开发者想要启动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编程对于笔者来说是个新词,文中出现了许多专业的词语,笔者也是抱着学习的态度进行翻译的,倘若你在这篇文章中发现了错误,或者认为翻译有误的地方,欢迎告之我,希望这篇文章对你有所帮助。
相关推荐
JavaScript设计模式_hy5
【Jupyter Notebook】机器学习项目:微额借款用户人品预测
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
该项目为基于Android Studio开发的Bilibili安卓客户端设计源码,包含908个文件,其中包含471个PNG图片文件、220个Java源文件、187个XML布局文件、12个JPG图片文件、3个Gradle构建脚本文件、3个属性文件以及少量其他类型文件。该源码适用于学习Android应用开发,特别是对Bilibili客户端感兴趣的开发者。
DeepSeek 部署详细方式 DeepSeek 是一款功能强大的智能数据搜索和分析平台,其部署过程需要一定的技术背景和准备工作。以下是 DeepSeek 部署的详细步骤,旨在帮助用户顺利完成平台的搭建和配置。 一、准备工作 硬件要求: 服务器:具备足够的计算能力和存储空间,推荐配置高性能 CPU、大容量内存和 SSD 固态硬盘。 网络:确保服务器能够访问互联网,并且网络带宽足够支持数据传输和访问需求。 软件要求: 操作系统:支持 Linux(如 Ubuntu、CentOS 等)或 Windows Server。 数据库:MySQL 或 PostgreSQL 等关系型数据库,用于存储 DeepSeek 的数据和配置信息。 Python 环境:安装 Python 3.x 版本,并配置好相关的 Python 包管理工具(如 pip)。 域名和 SSL 证书: 域名:用于访问 DeepSeek 的 Web 界面。 SSL 证书:确保数据传输的安全性,推荐使用 Let's Encrypt 等免费 SSL 证书。 二、安装步骤 环境配置: 在服务器上安装并配置好操作系统、数据库和 Python
双标图与矩阵乘法演示实例
一种RBAC权限模型基于shiro权限框架的通用权限管理模板,_hy4
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
[RUST]模块化QQ机器人框架(BasedRICQ)_hy4
《机器学习:软件工程方法与实现》Methodandimplementationofmachinelearnin_hy4
【官方】计算机职业英语一级考试样卷.pdf 【官方】全国机等级考试二级笔试样卷:存取(Access)数据库程序设计.pdf 【官方】全国计算机等级考试二级笔试样卷:C++语言程序设计.pdf 【官方】全国计算机等级考试二级笔试样卷:C语言程序设计.pdf 【官方】全国机等级考试二级笔试样卷:德尔菲(Delphi)语言程序设计.pdf 【官方】全国机等级考试二级笔试样卷:Java语言程序设计.pdf 【官方】全国机等级考试二级笔试样卷:视觉基础语言程序设计.pdf 【官方】全国机等级考试二级笔试样卷:视讯FoxPro数据库程序设计.pdf 【官方】全国计算机等级考试三级笔试样卷:PC技术,pdf 【官方】全国计算机等级考试三级笔试样卷:网络技术.pdf 【官方】全国计算机等级考试三级笔试样卷:信息管理技术,pdf 【官方】全国计算机等级考试四级笔试样卷:软件测试工程师.pdf 【官方】全国计算机等级考试四级笔试样卷:数据库工程师,pdf 【官方】全国计算机等级考试四级笔试样卷:数据库技术,pdf 【官方】全国计算机等级考试四级笔试样卷:网络工程师.pdf
《MATLAB 小白修炼手册:从入门到实战》全面介绍 MATLAB。先阐述 MATLAB 在多领域的重要地位,随后深入讲解基础语法,包括变量、数据类型、运算符、控制语句等。详细介绍矩阵与数组这一核心结构的创建、运算和操作,以及常用数学、统计、绘图函数和文件操作。通过数据处理、数学建模、图像处理等案例,展示如何将知识用于实际。最后总结学习内容,鼓励深入探索,还推荐了学习资源与交流渠道,助力读者从新手成长为 MATLAB 实战高手 。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
收录了「IT无知君」CSDN博客中涉及的Java项目源码,还有许多的开发工具类,都是我自己在用在不断维护的,需要请进!_hy4
【Vue+go】使用gin+gorm+jwt+casbin+vue组合实现的RBAC权限管理系统
该项目是针对.net课程的平时作业设计,包含96个文件,包括25个C#源代码文件、22个PNG图片文件、8个JSON数据文件、6个资源文件(.resx)、5个项目文件(.csproj)、5个配置文件(.config)、3个Markdown文档(.md)、3个图片文件(.jpg)、2个未分类文件(.v2和.suo)。这些资源共同构成了一个完整的课程作业集,旨在帮助学生巩固.net编程知识。
【go】用go语言实现消息中间件
【thinkphp】简单实现基于角色的权限控制,使用thinkphp5.0框架敏捷开发,实用的鉴权工具,rbac核心思路_pgj
微信公众号服务器开发脚手架_hy5
该平台是基于Vue框架构建的学科竞赛匹配与组建平台前端设计源码,包含44个文件,涵盖了18个Vue组件、11个TypeScript脚本、5个JSON配置文件、3个CSS样式文件、2个SVG图标、1个Git忽略规则、1个Markdown文档、1个HTML模板和1张JPG图片。项目以Vue、TypeScript、CSS和HTML为主要开发语言,旨在提供高效、易用的学科竞赛匹配与组建解决方案。