模型坐标
在前言中,我在之前的文章中介绍了以下音视频直播技术:
音视频直播架构
Android下视频采集(Camera1)
Android下视频采集(Camera2)
Andriod下H264编码
Android下H264解码
Android下画中画的实现
接下来的几篇文章将介绍如何在Android下使用OpenGL进行渲染。
OpenGLES在Android下使用OpenGLES进行视频渲染。OpenGL(OpenGL for embedded systems)是嵌入式系统中使用的OpenGL。
OpenGL是一门庞大而专业的知识,完全掌握它需要大量的时间。而视频渲染只使用了很少一部分OpenGL知识,所以我们采取尽量学习的方法,可以让我们更专注于音视频直播技术。
但即便如此,我们还是要先恶补一些数据的基础知识。没有这些基础,我们就无法理解视频的渲染过程。
通常,图像渲染的过程需要三步矩阵变换才能在2D平面上显示三维图像,我们称之为MVP,即模型、视图和投影。
模型:将要显示的三维对象从模型坐标系更改为世界坐标系。
观察:将3D对象从世界坐标系变换到从人眼看到该对象的坐标系。
投影:将三维坐标系转换为2D坐标系。也就是说,3D物理是如何在2D平面上显示的。也就是我们通常所说的降维。
下面介绍一下实现MVP转换需要的数学知识。
矩阵表示三维图形中带有(x,y,z,w)的顶点,是齐次坐标。
我们都知道x和y分别是横轴和纵轴。
z代表深度,例如,根据右手坐标。离我们眼睛越远,深度越深,Z值越小。
增加w是为了矩阵的乘法。
所以我们在3D图形中只用4×4矩阵,可以变换顶点(x,y,z,w)。顶点变换采用矩阵左乘的方法,其公式如下:
矩阵的x顶点=变换后的顶点。
矩阵的左乘法
左手指向A,右手指向X,得到ax。将左手移到右边的数字B,右手移到下一个数字Y。以此类推,得到右边的结果。
矩阵的转换具有4×4矩阵,如下所示:
翻译矩阵
其中x,y,z是该点的位移增量。例如,如果您想将向量(10,10,10,1)沿X轴平移10个单位,您可以得到:
翻译操作
矩阵的缩放比例为4×4矩阵,如下所示:
缩放矩阵
如果你想在所有方向上把一个矢量放大2倍,你可以得到:
缩放操作
是不是很神奇?
矩阵的旋转矩阵是复杂的。用于绕X轴旋转的矩阵为:
绕x轴旋转。
用于绕y轴旋转的矩阵:
绕y轴旋转。
用于绕z轴旋转的矩阵:
绕y轴旋转。
累积矩阵变换之前已经学习了如何旋转、平移和缩放向量。将这些矩阵相乘可以将它们组合起来,例如:
transformed vector=translation matrix * rotation matrix * scale matrix * original vector;
这行代码首先执行缩放,然后旋转,最后平移。这就是矩阵乘法的工作原理。
另外,变换的顺序不同时,结果也不一样。所以,顺序不能乱。
矩阵的正投影矩阵也很复杂。我们这里直接给。你可以在网上查相关资料,自己推导这个矩阵:
正投影矩阵
以上总结介绍了三维图形中需要的一些基本的数学知识。OpenGL也是根据上面的数学知识来绘制的。当然,在编写OpenGL程序时,我们不需要直接写这些数学公式。OpenGL已经给我们提供了非常方便的函数,我们只需要调用它们就可以了。但是为了方便我们理解模式,这些基础知识还是很有必要的。
参考齐次坐标
了解OpenGL矩阵转换
[数]矩阵
希望大家观注我,谢谢!
视频渲染对电脑配置要求
众所周知,辛烷是最受欢迎的渲染引擎之一。此外,Octane是一个GPU渲染引擎,它使用一种方法来计算最终生成的图片,试图实现照片般的真实感。Octane是一个使用GPU技术的无偏渲染引擎,非常接近物理精度。一台好的PC对Octane的良好体验非常重要。你想知道如何为Octane用户选择最好的PC。在今天的文章中,赞奇云工作站将为您提供一些建议,帮助您选择最适合Octane用户的PC。
OctaneRender支持所有主要平台:
OctaneRender建议使用最新的CUDA 10驱动和支持计算能力3.0版或更高版本的NVIDIA显卡。此外,它至少需要8 GB的内存,我们认为您应该使用16 GB或更多。更实惠的Quadro和Tesla GPU通常比GeForce GPUs的帧率和渲染时间更慢。OctaneRender可以同时使用多种NVIDIA卡类型,在多GPU配置上可以完美扩展。用GPU渲染的主要优势是性能。GPU渲染的时候通常要快很多。可以参考Octane的GPU推荐:
但最后但同样重要的是,VRAM对于辛烷中的渲染是非常重要的。它可以帮助您更快地加载和处理场景。如果没有足够的VRAM,可以启用OctaneRender的核外功能。
由于OctaneRender不使用CPU进行渲染,因此不需要快速的多核CPU,但确实显著提高了场景加载速度。对于Octane来说,时钟速度对CPU性能的影响最大。核心的数量似乎一点也不重要。
CPU会影响Octane中渲染的性能。拥有大量的CPU内核对OctaneRender没有帮助,但高时钟速度有帮助。可以选择时钟频率3.0 GHz以上的CPU使用Octane进行渲染。您可以参考运行在OctaneBench上的至强W-2125和W-2195处理器上的1到4个Titan V卡的总得分:
以下是一些关于CPU的建议:
但是,根据您的具体项目,您将需要不同数量的RAM。对于OctaneRender,我们建议至少32GB或更高。辛烷等渲染引擎通常不会自己运行,所以你需要考虑同时运行的其他程序的内存需求。场景的复杂性将决定3D建模程序(如Cinema 4D、Maya或3ds Max)需要多少系统内存。
Octane已经很快了,需要有一个超快的SSD,会保存和加载非常大的文件。重要的一点是不会导致崩溃。通常,标准SSD(固态硬盘)足以完成您想要执行的大多数任务。在启动系统、运行应用程序和加载文件方面,固态硬盘比任何传统硬盘都要快得多。如果您的预算允许,拥有第二块固态硬盘也是一个非常好的主意,它可以用来存储您的活动项目,以进一步减少负载和节省时间。
最好的PC对于Octane的优秀体验非常重要。希望这些小技巧可以帮助你选择最适合渲染的PC。如果您的预算目前不足以购买一台功能强大的电脑。还有一种完全不用升级电脑的方式,就是赞奇云工作站,云设计,满足3d设计师对高性能电脑的需求。
为了更好地解决各行业设计场景中的各种问题,华为云联合赞奇推出了赞奇设计师云工作站,涵盖工业设计仿真、建筑设计、游戏设计、传媒、影视、元宇宙等多个领域。通过云工作站、软件中心、赞启超级云盘、云渲染等功能,整合打通了各行业设计业务全流程,提供一站式解决方案。它还有一个多区域覆盖的专业显卡。