《图形引擎开发入门:基于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月