WebGL笔记_绘制流程以及三维坐标变换(一)

WebGL绘制一个模型的步骤:
1、获取模型的顶点坐标
2、图元装配(即画相应的三角形面片)
3、光栅化(生成片元,绘制每个三角片上的像素点,染色、纹理映射都在此步)

这里写图片描述

顶点坐标处理

现实中最常见的三维模型,都是通过3D建模软件导出的文件,文件内容通常包括,模型的顶点格式,模型的顶点坐标,以及定点之间的映射关系。通常要经过以下过程,才能将模型文件所描述的三维模型绘制到二维的屏幕上。
这里写图片描述

相关坐标系介绍:

  • 本地坐标系:描述模型顶点的坐标系,一般都在模型的做下端,位置不是固定不变的。
  • 世界坐标系:描述每个模型在三维场景中位置的坐标系。
  • 视图坐标系:描述视点(可理解为眼睛或相机)的位置、上方向(正着看还是斜着看)、被观察者的位置。
  • 裁剪坐标:描述投影盒子的坐标系,例如:如果是正方形投影盒子,则需要确定6个面的位置。

WebGL中给出的绘制基本几何的api为:
WebGL通过gl.drawArrays()函数可以绘制一些基本图形,接收的参数如下 :

  • 点 (gl . POINTS)
  • 线段 (gl . LINES)
  • 线条 (gl . LINE_STRIP)
  • 回路 (gl . LINE_LOOP)
  • 三角形 (gl . TRIANGLES)
  • 三角带(gl . TRIANGLE_STRIP)
  • 三角扇(gl . TRIANGLE_FAN)
图元装配

一个复杂的模型,都是由一个个三角形画出来的。图元装配就是由顶点生成一个个的图元(即三角形)。也可以理解成是将一个三维模型的表面拆成一个个三角片,方便gpu进行光栅化。图元装配需要利用顶点着色器

这里写图片描述

顶点着色器工作流程:有多少个顶点,顶点着色器就执行多少次。
这里写图片描述

光栅化

图元生成完毕之后,我们需要给模型“上色”,也可以理解为给每个图元进行像素点装填上色。完成这部分工作的,是运行在GPU的“片元着色器”来完成。模型的质地(颜色、漫反射贴图等)、灯光等由片元着色器来计算。

这里写图片描述

片元着色器工作流程:有多少个像素点,片元着色器就执行多少次。

这里写图片描述

图元装配之前获取顶点所用到的矩阵:

1 . 基本变换矩阵(平移、伸缩、旋转)
(平移变换) 1 0 0 t x 0 1 0 t y 0 0 1 t z 0 0 0 1 \begin{matrix} 1 &0 &0 & t_x \\ 0 & 1 & 0 & t_y\\ 0 & 0&1& t_z\\ 0 & 0 & 0 & 1 \end{matrix} \tag{平移变换} 100001000010txtytz1()

(绕z轴旋转变换) c o s θ − s i n θ 0 0 s i n θ c o s θ 0 0 0 0 1 0 0 0 0 1 \begin{matrix} cos\theta &-sin\theta &0 & 0\\ sin\theta&cos\theta & 0 & 0\\ 0 & 0&1& 0\\ 0 & 0 & 0 & 1 \end{matrix} \tag{绕z轴旋转变换} cosθsinθ00sinθcosθ00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值