学完FFmpeg OpenGL图像处理课程后,一定要做几个小项目去实践,慢慢就学精了。否则大半年不写就忘记了,下面分享我们内部一些练习小项目。
0 夯实数学基础,整理一套自己的向量,点乘,差乘,欧拉角,四元素,齐次坐标,矩阵,平移矩阵,旋转矩阵,缩放矩阵,逆矩阵数学,几何原理,观察者矩阵,正交投影,透视投影,法线贴图TBN矩阵,推导过程,深入理解图形变换管线。写一套简单可用的类似glm的自己的简化版数学库。这个是练基础内功。
1 模仿GPUImage, 做一个自己的版本的视频特效实时处理,录制的软件。支持多个特效叠加。
2 结合FFmpeg,导入视频,在视频帧上添加特效,支持视频裁剪。再输出。 这就是一个简易版的视频剪辑软件。结合mediacodec, avfoundation的硬件编码。
3 将引擎部分读取出来的场景数据编码,通过socket通讯发出去,对面实时解码渲染显示。
4 做一个简单的手机录屏,然后pc写一个客户端,实时显示出来。还可以加入反向控制手机。
以上4个简单的小项目都做出来了,就毕业了。毕业后,就能慢慢做一些独创性的东西,如果还做不出来,就返回去再学习,练习,死磕课程内容。
以上四个小练习,都是认真学习课程,都能做出来的,比较简单的练习。唯有实践,才能检验自己是否学到东西了。说简单它简单,但对于初学者,还是非常复杂的。
在超哥看来简单,但是大家能都完成做出来,其实已经是吊打绝大多数开发人员的高手了。
以上练习,大部分都在一个月之内都能完成。有的一两周。四个都做完以后,可以考虑一些进阶的内容课题。6 7 8需要时间更长一些。
5 OpenGL实时渲染光栅化阴影(非光线追踪)实现, 延迟渲染。这个相对容易,有现成的参考。
6 写一个软件,软件内置大量的3D原始简单的模型,以及特效。用户可以随意摆放,点选,移动,旋转这些模型,构建出复杂的场景。用户可以傻瓜化摆放模型位置,调整颜色。类似以下效果。用户可以傻瓜化调整比如水流,场景中人物走动参数。场景结果可以导出为渲染图片,还可以导出到blender,max,maya,unreal, unity3d.
7 深入研究FBXSDK, OpenGL渲染引擎加入自己实现的blendshapes。用人脸追踪算法驱动blendshapes动画。用OpenGL模仿苹果的人脸表情动画。
8 类似Blender,达芬奇 后期图片,视频特效节点编辑软件。用户可以傻瓜化合成各种特效。建议 Qt OpenGL mac/win版本, 然后在移植到iOS/android.
后面的就更加高手独孤求败阶段。仅供参考。
9 化妆软件,内置大量的3D女性模型,支持各种笔刷,在手机上给模型化妆。 其实就是一个简易傻瓜版的Substaincepainter. 主要用于女孩子学习化妆。支持表情动画,视频录制分享。
10 3D重建,根据用户照片,自动生成3D模型。自动绑定骨骼动画,表情动画。