图形引擎开发入门:基于Python语言
  • 推荐0
  • 收藏0
  • 浏览38

图形引擎开发入门:基于Python语言

  • 书  号:9787121495922
  • 出版日期:2025-03-01
  • 页  数:
  • 开  本:
  • 出版状态:上市销售
  • 维护人:博文小编
《图形引擎开发入门:基于Python语言》是一本讲解如何使用Python进行系统化图形引擎开发的图书。本书基于作者长期从事图形引擎开发工作的经验,结合简单易懂的Python语言和PyOpenGL模块,通过对引擎开发知识由浅入深的编排和讲解,让广大对图形学感兴趣的“小白”开发者一步一步地掌握图形引擎的开发流程和实现原理,并在这个过程中熟练掌握OpenGL,进而有能力基于各种开发语言进行图形引擎的开发工作。
《图形引擎开发入门:基于Python语言》结构紧凑、内容翔实、由浅入深,是读者学习、掌握图形引擎开发入门知识的重要参考书。
将Python与OpenGL巧妙结合,开辟图形引擎开发学习新路径
卞安,网名红孩儿,游戏行业知名引擎技术专家,一站式Python开发工具PyMe作者,多年从事游戏引擎和工具化产品的研发及运营工作。曾担任端游企业无限时空引擎总监、触控科技Cocos引擎产品总监、玩吧技术专家组组长。曾独立开发游戏引擎工具化软件《红孩儿工具箱》,并被知名企业投资;撰写了大量游戏引擎技术类文章,其中部分被官方媒体收录,被评为知名游戏引擎Cocos最有价值专家(CVP)及CSDN博客专家,在游戏行业和Python领域有一定的知名度,目前在CSDN担任InsCode AI IDE运营负责人。
随着游戏行业和数字化科技的飞速发展,图形引擎正在变得越来越重要,随之而来的是企业对图形引擎相关技术人员的需求持续增多和投入加大,图形学也越来越受到广大学生的关注。
市面上已经有许多图形引擎技术方案和工作岗位,涉及从C++、C#、JavaScript等开发语言,以及DirectX、OpenGL、Vulkan、Metal、WebGPU等底层技术,到Unity、Unreal、Cocos、LayaBox等众多令人眼花缭乱的商业产品的使用。对于有明确工作方向和研发目标的专业开发者来说,根据自身需要选择即可。但与丰富的知识库和工作机会相比,引擎技术巨大的学习成本和难度曲线,让许多初学者对图形引擎开发望而生畏,面对众多方案和开发语言无从下手,或者只停留在学习现有商业化引擎使用的表面。如果能有一套教材,带领图形引擎的学习者从图形引擎的内核理论入手,快速地领会引擎开发的基础概念,掌握流程经验,一定可以帮助他们更好地进行引擎的开发和使用。
Python简单易学,OpenGL应用广泛,恰好Python可以使用PyOpenGL模块来进行图形引擎开发。于是笔者尝试将两者结合,通过一系列案例将图形引擎开发的学习难度降低,方便广大图形学初学者进行学习。
本书内容体系
本书共分为11章,其中前3章主要介绍引擎和图形绘制的基础知识。第4章到第10章主要介绍图形引擎各功能模块的理论和开发。第11章主要介绍引擎框架的设计和性能优化。
第1章为图形引擎概述,主要介绍图形引擎的发展史和现状,并引出初学者的成长路线,通过一个Python图形实例引出Python图形开发环境的搭建,为后续的内容介绍奠定基础。
第2章为引擎开发理论入门,主要包括基本的OpenGL渲染流程、认识顶点与索引缓冲区、认识屏幕缓冲区、认识颜色与纹理、向量、矩阵与四元数、基本图形绘制等内容。
第3章为Shader入门与实践,介绍其基本语法和常用的2D、3D图效的实现方法,帮助开发者入门Shader,并上手实现一些简单的图效。
第4章为动画原理与实践,首先从最简单的帧动画引出插值动画和摄像机动画,然后对骨骼蒙皮动画的原理进行介绍,最后介绍如何通过动画的编程实践来实现动画效果。
第5章主要介绍模型原理与实践,掌握模型中涵盖的各个知识点,包括模型与材质、骨骼模型、动作的融合与混合,以及模型LOD的一般方法,其中还介绍了两个常用的模型格式OBJ和FBX,以及专门方便Python开发者使用的PyMe引擎模型文件PMM,最后综合本章知识介绍如何对模型观察工具软件进行开发。
第6章认识光和影主要介绍图形引擎学习中最重要的光和影技术,先介绍最常用的冯氏光照模型,然后介绍延迟光照和全局光照原理,并通过一个动态点光源编程实践来介绍掌握基础光照的方法。在影子生成技术上,从最简单的阴影贴图和面片影子到典型的ShadowMap都有所涉及,并介绍了体积阴影的原理。
第7章为粒子系统入门,首先介绍粒子系统原理和常见的一些粒子效果实现,然后综合本章知识讲解如何对粒子效果编辑器进行开发。
第8章为场景渲染入门,内容包括天空渲染、地表渲染、水面渲染、植被与建筑等,然后综合本章知识搭建了一个场景编辑器,实现对场景中各部分的编辑及场景的保存与加载。
第9章重点介绍画面后期效果,涉及渲染流程的编排,给出了一个BLOOM工程实践。
第10章为UI系统入门,在完成前面3D引擎部分的渲染后,重点对UI系统进行介绍。
第11章为图形引擎设计与优化,为开发者进行引擎性能优化提供参考。
本书读者对象
 对图形学感兴趣的大学生。
 对图形引擎开发感兴趣的工程师。
 对3D图形算法实践感兴趣的科研工作者。
 希望应用Python进行游戏开发的程序员。
关于附书资源和读者反馈
本书中的实例和实战代码可以通过扫描封底的二维码获取,代码全部基于Python 3.8运行通过。由于水平有限,书中内容与代码难免出现差错,如果发现问题,请发电子邮件至285421210@qq.com,以便在下一版中改进。
致谢
感谢电子工业出版社李淑丽老师的耐心指导。
感谢伴随《图形引擎开发入门:基于Python语言》从无到有一路走来的粉丝。
最后要感谢我家人的支持,使我可以在辞去工作后专心做自己喜欢的事,每天乐于码海泛舟。如果没有家人的支持,一切成功将无从谈起。

编者
2024年12月

目录

第1章 图形引擎概述 1
1.1 图形引擎发展史 1
1.1.1 卡马克时代 1
1.1.2 UE与Unity 2
1.1.3 国产引擎的发展 4
1.2 从Python编程开始 7
1.2.1 PyOpenGL开发环境搭建 7
1.2.2 引擎工具开发 11
第2章 引擎开发理论入门 13
2.1 基本的OpenGL渲染流程 13
2.1.1 认识渲染管线 13
2.1.2 图形编程过程原理 14
2.2 认识顶点与索引缓冲区 16
2.2.1 顶点——世界的起点 16
2.2.2 VBO、IBO和VAO 18
2.3 认识屏幕缓冲区 21
2.3.1 屏幕缓冲区 21
2.3.2 逻辑缓冲区 22
2.4 认识颜色与纹理 23
2.4.1 颜色与像素 23
2.4.2 纹理的本质 25
2.4.3 图片的使用 30
2.4.4 纹理混合 32
2.5 向量、矩阵与四元数 34
2.5.1 向量 34
2.5.2 矩阵基本运算 35
2.5.3 四元数 39
2.5.4 MVP矩阵与3D成像 39
2.6 认识摄像机 41
2.6.1 正交与投影 41
2.6.2 摄像机控制 42
2.7 基本图形绘制 43
2.7.1 绘制一个点 43
2.7.2 绘制一条线 45
2.7.3 绘制三角形与四边形 47
2.7.4 绘制一个立方体 50
第3章 Shader入门与实践 56
3.1 GLSL语法入门 56
3.1.1 GLSL基本流程 56
3.1.2 GLSL基本语法 57
3.2 GLSL 2D图效处理实践 63
3.2.1 基本颜色处理 63
3.2.2 过滤器效果 70
3.2.3 过渡变化效果 72
3.3 GLSL 3D图效处理实践 85
3.3.1 基本顶点动画 85
3.3.2 基本材质处理 93
3.3.3 简单雾效实现 102
第4章 动画原理与实践 111
4.1 动画的基本原理 111
4.1.1 序列帧动画 111
4.1.2 插值动画 113
4.1.3 摄像机动画 122
4.1.4 骨骼蒙皮动画 127
4.2 动画过程实践 130
第5章 模型原理与实践 138
5.1 认识模型 138
5.1.1 模型与材质 138
5.1.2 骨骼模型 143
5.1.3 动作的融合与混合 145
5.1.4 模型LOD 147
5.2 模型解析实践 148
5.2.1 加载OBJ模型 148
5.2.2 加载FBX模型 155
5.2.3 加载PMM模型 168
5.3 模型观察器 171
5.3.1 工具界面设计与实现 171
5.3.2 模型的加载处理 175
5.3.3 观察摄像机控制 178
5.3.4 模型材质编辑 180
5.3.5 骨骼与动画 184
第6章 认识光和影 186
6.1 光照原理入门 186
6.1.1 基础光照模型 186
6.1.2 延迟光照原理 194
6.2 光照编程实践 196
6.3 影子原理入门 202
6.3.1 面片影子 203
6.3.2 ShadowMap 204
6.3.3 体积阴影 206
6.4 影子编程实践 207
第7章 粒子系统入门 215
7.1 粒子系统原理 215
7.1.1 粒子的基本结构 215
7.1.2 粒子发射器 217
7.2 粒子系统编程实践 221
7.2.1 点精灵粒子:下雪啦! 221
7.2.2 模型粒子:彩球发射器 223
7.3 粒子编辑器入门 227
7.3.1 编辑器的界面实现 227
7.3.2 粒子效果编辑 233
7.3.3 效果加载与保存 235
第8章 场景渲染入门 238
8.1 天空渲染 238
8.1.1 天空盒 238
8.1.2 公告板云 240
8.1.3 场景雾的渲染 241
8.1.4 风、雨、雪 242
8.2 地表渲染 245
8.2.1 认识地表网格 245
8.2.2 高度图 252
8.2.3 多纹理混合 257
8.2.4 地表LOD 261
8.3 水面渲染 264
8.3.1 水体的生成 264
8.3.2 反射与折射 268
8.3.3 波浪动画 268
8.4 植被与建筑 271
8.4.1 草体渲染 272
8.4.2 树木与建筑 277
8.5 场景编辑器 288
8.5.1 编辑器的界面框架 288
8.5.2 地表编辑 290
8.5.3 模型摆放 299
8.5.4 特效摆放 302
8.5.5 环境设置 302
8.5.6 光照烘焙 302
8.5.7 场景保存与加载 303
第9章 画面后期效果 306
9.1 后期效果基本原理 306
9.2 一个BLOOM工程实践 308
第10章 UI系统入门 312
10.1 UI系统设计原理 312
10.1.1 基本控件设计 312
10.1.2 鼠标事件处理 323
10.1.3 复合控件设计 329
10.1.4 文字输入处理 335
10.2 UI系统编程实践 340
10.3 UI编辑器入门 344
10.3.1 编辑器界面设计 345
10.3.2 控件的创建 347
10.3.3 控件的选中与拖动 353
10.3.4 控件列表与属性编辑 357
10.3.5 界面保存与加载 364
第11章 图形引擎设计与优化 370
11.1 框架设计 370
11.2 无尽的优化 371
11.2.1 模型批次 371
11.2.2 顶点优化 373
11.2.3 纹理优化 373
11.2.4 渲染状态优化 374
11.2.5 Shader优化 374
11.2.6 计算压力优化 374
11.2.7 UI渲染优化 374
11.2.8 设计优化 375
附录A 小白的成长路线 376

读者评论