从“1”开始3D编程
微软图形系统研发专家教你从“1”开始3D编程,透彻理解3D世界的数学几何原理,轻松掌握3D编程技能。

作者:徐星

丛书名:清华科技大讲堂

定价:49.8元

印次:1-1

ISBN:9787302548041

出版日期:2020.07.01

印刷日期:2020.06.28

图书责编:黄芝

图书分类:零售

电子书
在线购买
分享
内容简介
作者简介
前言序言
资源下载
查看详情 查看详情 查看详情

本书推导解释了3D世界的1的具体含义,包括3D编程最常使用的5个坐标1的意义。对于透视投影的3D坐标1,推导了用户使用的透视投影变换。原创性地提出了一个透视投影的一般模型。基于这个一般模型做了一些数学算法上的改进,得到了基于透视除法的透视投影。此外,也分析了模型视图变换,窗口变换,纹理映射等对3D世界的1的影响。对于正交投影,则分析了基于正交投影的Skia的顶点坐标,纹理坐标特点,一些高级的3D编程概念如光线追踪,延迟渲染,阴影纹理等。

徐星,2007年硕士毕业于武汉大学无线电物理专业,工作后专注在操作系统的图形基础框架的开发。目前就职于Intel公司,从事Chromium图形系统的研发工作,是Chromium committer。

前言 本书源起于十年前作者从事Android图形编程时,对3D图形系统单位1的思考。2010年,是各大手机品牌和手机设计厂商热火朝天地定制Android界面的一年。在这股界面定制浪潮中,出现了很多3D桌面。当时作者所在的团队负责优化一个开源的3D桌面。这个3D桌面是一个六棱柱,棱柱的每个侧面都贴上了应用程序的图标。为了优化这个3D桌面,我们短暂地学习了OpenGL接口,也学会了编写3D的“Hello World”程序,但是在计算六棱柱坐标的时候碰到了问题。利用几何知识计算六棱柱坐标很简单,但是在应用了透视投影、模型视图变换、视口变换之后,我们不知道3D桌面里的六棱柱坐标是怎么计算出来的。具体到3D图形编程,六棱柱的计算问题可以描述为: ①3D程序里面,用户输入的顶点纹理坐标的单位1是什么,是窗口上的一个像素吗?或者说,如何定义顶点坐标和各种变换,将3D场景输出到整个窗口?②透视投影使用的视景体和投影矩阵是怎么得到的?3D编程接口的书籍里面并不容易找到这个问题的答案。 直到几年后,作者开始研究学习Chromium图形系统,重新思考总结这个问题,才意识到,学习3D编程和学习一门编程语言是有区别的。 在学习一门新的语言,例如C/C++或者其他语言的时候,一般都能很快地去编写一个“Hello World”程序,甚至实现一些更加复杂的功能。而对于3D编程,作者的感受是,看了图形学的书,学习了OpenGL/Vulkan编程接口,但是真正实战编程的时候,却发现不会写,也很难理解他人源码的设计逻辑。学习3D编程和学习一门编程语言的区别在于,3D编程的难点不是接口和语言本身,而...

目录
荐语
查看详情 查看详情
目录

第1章3D程序分析方法

1.1输入顶点数据

1.1.1描述顶点

1.1.2传递顶点

1.1.3绑定顶点缓冲区

1.2输入MVP数据

1.3输入纹理

1.3.1创建并传递纹理

1.3.2绑定纹理

1.4输出帧缓冲

1.5数据处理过程

1.6TensorFlow JS的输入输出

1.7Vulkan的输入输出

1.8GL和Vulkan的线程模型

1.9源码下载和编译

小结

第2章3D图形学基础

2.1符号和约定

2.2向量的基本运算

2.3齐次坐标

2.3.14×4齐次矩阵

2.3.2平行线相交

2.4顶点、三角形、片元

2.5光栅化原语

2.6视景体

2.7光照模型

小结

第3章透视投影

3.1左右手坐标系

3.23D坐标和坐标系

3.33D流水线

3.4小孔成像

3.5模型变换和世界变换的意义

3.6透视投影的几何模型

3.6.1眼睛坐标到投影坐标

3.6.2投影坐标到NDC坐标——xy分量

3.6.3眼睛坐标到NDC坐标——xy分量

3.6.4眼睛坐标到NDC坐标——z分量

3.6.5裁剪

3.6.6透视投影的几何模型

3.6.7几何模型的算法分析

3.7透视投影的透视除法模型

3.7.1眼睛坐标到裁剪坐标——xy分量

3.7.2眼睛坐标到NDC坐标——zw分量

3.7.3透视除法

3.7.4裁剪

... 查看详情

本书推导解释了3D世界的1的具体含义,包括3D编程最常使用的5个坐标1的意义。对于透视投影的3D坐标1,推导了用户使用的透视投影变换。原创性地提出了一个透视投影的一般模型。基于这个一般模型做了一些数学算法上的改进,得到了基于透视除法的透视投影。此外,也分析了模型视图变换,窗口变换,纹理映射等对3D世界的1的影响。对于正交投影,则分析了基于正交投影的Skia的顶点坐标,纹理坐标特点,一些高级的3D编程概念如光线追踪,延迟渲染,阴影纹理等。 查看详情