OpenGL ES

梳理 Opengl ES 3.0 (三)顶点坐标变换

先来个宏观上的理解:(其实这块逻辑是个标准流程,而且其他地方介绍的也很多了,这里简单提下。)

坐标转换,其实是不同坐标系之间的变换,一个渲染顶点,要想让它呈现在屏幕上的某个位置,是需要让这个顶点经过一个个坐标系的变换来进行的,每经过一个坐标系,它的坐标就会使用矩阵来执行变化一次,最终变化成为屏幕上的位置。

梳理 Opengl ES 3.0 (三)顶点坐标变换

第一个Object Coordinates,这个比较好理解,就是模型的局部坐标系。这种坐标一般是美术建模的时候就会设定的,当然使用程序代码绘制出来的坐标自然是代码指定的。

比方说,一个坦克,美术在设计时,模型的几何中心点就作为了整个模型的坐标原点,那么炮管上某个顶点的位置就是相对于几何中心的一个偏移,假定为(0,1,1)。

学习OpenGL ES之粒子效果

本文将为大家介绍如何使用Billboards构建一个简单的粒子系统。粒子系统可在做到一些单纯的几何体无法做到的特效,它有很多变种和配置项,譬如制作下雪场景,技能特效,灰尘飞扬的效果等等。本文的例子中只是实现了一个简单的受重力影响的粒子效果,下面是效果图。

学习OpenGL ES之粒子效果

粒子的基本属性

本文中每个粒子就是一个billboard,我创建了新的类Particle来表示粒子,它主要负责粒子的渲染和行为更新。一个完善的粒子系统有很多配置项来控制粒子的属性,这里我列举了粒子的几个基本属性。这里粒子是直接继承Billboard,这样我就可以用最少的三角形来表示一个粒子了,无论你从哪个角度看这个粒子,它始终都面朝摄像机。

@interface Particle: Billboard
@property (assign, nonatomic) float life;

学习OpenGL ES之Billboards

本文将介绍3D游戏中一种常见的技术Billboards,又可以称为公告板技术。形象的来说,就好像一个人举着牌子,无论你从哪个方向看向牌子,那个人都会把牌子朝着你的方向旋转,你永远只能看到牌子的正面。在3D游戏中,可以用来制作npc头上的名字或是任务标记,用来制作较远处的树木,路灯也是可以的。本文的例子制作的就是基于公告板的树木。下面是运行效果。不过树木属于比较特殊的公告板,它只能绕着垂直轴旋转,后面会详细介绍这一点。

学习OpenGL ES之Billboards

原理

公告板技术主要利用一个正方形网格,根据当前的摄像机变换信息,调整至面向摄像机的位置。这里我们主要利用摄像机向上和向右的两个向量来调整正方形网格的点。

学习OpenGL ES之物理引擎

前言

本文将介绍3D物理引擎Bullet的基本使用方式以及如何将之前的OpenGL渲染代码和Bullet相结合,制造一个符合物理运动规则的虚拟3D场景。下面是效果图。

学习OpenGL ES之物理引擎

Bullet

Bullet是一个开源的物理引擎,使用C++编写,可以前往它的Github地址查看它的最新源代码。最新的Bullet是Bullet3,不过本文并没有采用新的版本,而是使用的Bullet2的代码。例子中通过源代码集成的方式集成Bullet,将核心代码直接拷贝到iOS项目中。

集成Bullet

首先clone Bullet的源代码。将下面的部分拷贝到iOS项目中。

学习OpenGL ES之教你制作迷雾

前言

本文将为大家介绍一种常见的3D技术-雾(fog)。雾可以让你看不清远处的物体,除了模拟真实环境中的雾效果以外,还可以用来遮挡修饰远处细节精度比较低的模型,让它们看起来没那么粗糙。本文将介绍雾的三种基本实现方式。代码主要集中在Shader中。我们开始吧。

原理

雾效果的制作并不需要额外的几何体或者是粒子发射器,当然如果可以配合一些粒子效果会更好。雾的实现主要依赖于修改已有模型的颜色,根据渲染的顶点与观察者的距离,将雾的颜色与当前颜色混合。下面是2次exp计算模型的效果图,可以先感受一下。地形和天空都是 上一篇文章使用的。

学习OpenGL ES之教你制作迷雾

学习OpenGL ES之教你实现SkyBox

不知道大家是否还记得基于CubeMap的反射效果里介绍的CubeMap,本文将使用CubeMap来制作3D游戏中的一个经典技术,天空盒(SkyBox)。老规矩,先来看下效果图。效果中的地形模型在前面的文章中已经介绍过了。没看过的可以点此查看

学习OpenGL ES之教你实现SkyBox

原理

SkyBox正如其名,它是基于正方体模型的渲染技术。将6个方向拍下来的天空图片分别贴在正方体的对应面上,从内部观察正方体,就可以得到一个密闭的天空环境了。下面是一张典型的SkyBox贴图。

学习OpenGL ES之教你造一面镜子

前言

基于CubeMap的反射效果一文中,介绍到如何使用CubeMap让物体反射环境的光,从而制造逼真的3D效果。本文将介绍另一种反射效果的制作,模拟真实平面镜的反射。反射效果是实时的,而且可以反射任何3D模型。下面是一张比较丑的效果图,例子里面设置的灯光比较暗,导出gif后效果不好,最好还是下载例子自己运行看的比较清楚。

学习OpenGL ES之教你造一面镜子

原理

我将使用高中关于镜面反射的物理知识来作为实现镜面效果的理论基石。下面是2D下的关于镜面反射的一张图。

学习OpenGL ES之教你造一面镜子

学习OpenGL ES之基于CubeMap的反射效果

本文将为大家介绍如何使用CubeMap制作反射效果,反射效果可以让材质具备光滑的质感,比如汽车的烤漆,就非常适合使用反射效果。先上2张效果图。我使用的是Blender内置的猴头模型进行的渲染测试。

学习OpenGL ES之基于CubeMap的反射效果学习OpenGL ES之基于CubeMap的反射效果

Cube Map

学习OpenGL ES之ShadowMap(二)

本文将为大家解决上一篇文章《学习OpenGL ES之ShadowMap(一)》留下来的问题。

Shadow acne

在上一篇文末,我们看到了有问题的阴影效果,我们常把这种问题称为Shadow acne,在不该出现阴影的地方出现了亮暗相间的条纹。我们通过下面这张图解释产生问题的原因。

学习OpenGL ES之ShadowMap(二)

学习OpenGL ES之ShadowMap(一)

本文将为大家介绍3D实时阴影技术ShadowMap,又称为阴影贴图技术。下面是效果图。

学习OpenGL ES之ShadowMap(一)

学习OpenGL ES之ShadowMap(一)

原理介绍

我们在了解ShadowMap这项技术之前,先来了解一下什么是阴影。在现实生活中,阴影伴随着光而生。下面这张图演示了在平行光下,影子是如何形成的。

同步内容
--电子创新网--
粤ICP备12070055号