草庐IT

媒体应用视频超分AI神器!360P视频一键转换HD

作为多媒体应用的开发者,你是否想为媒体播放器快速开发创新AI功能?例如:在播放低画质视频过程中对其进行逐帧超分让满屏飘飞的弹幕自动绕过画面的主体人物HMSCore6.0.0开放的多媒体管线服务(AVPipelineKit),帮助媒体应用开发者降低创新功能的开发难度。通过定义插件的标准接口和数据流在插件之间的流转方式,开发者只需要按照标准接口完成插件开发,就可以迅速构建出新型的媒体场景。多媒体管线服务(AVPipelineKit)定义了一套插件标准接口,且已经内置了对插件的数据流管理、线程管理、内存管理、消息管理等,开发者只需要实现插件的核心处理逻辑即可,无需关注线程同异步、流控、音视频同步等逻

媒体应用视频超分AI神器!360P视频一键转换HD

作为多媒体应用的开发者,你是否想为媒体播放器快速开发创新AI功能?例如:在播放低画质视频过程中对其进行逐帧超分让满屏飘飞的弹幕自动绕过画面的主体人物HMSCore6.0.0开放的多媒体管线服务(AVPipelineKit),帮助媒体应用开发者降低创新功能的开发难度。通过定义插件的标准接口和数据流在插件之间的流转方式,开发者只需要按照标准接口完成插件开发,就可以迅速构建出新型的媒体场景。多媒体管线服务(AVPipelineKit)定义了一套插件标准接口,且已经内置了对插件的数据流管理、线程管理、内存管理、消息管理等,开发者只需要实现插件的核心处理逻辑即可,无需关注线程同异步、流控、音视频同步等逻

[CG从零开始] 3. 安装 pyassimp 库加载模型文件

assimp是一个开源的模型加载库,支持非常多的格式,还有许多语言的binding,这里我们选用assimp的python的binding来加载模型文件。不过社区主要是在维护assimp的C++代码,对于这些binding可能更新的不够及时,比如python版本的就存在一些问题。assimp的源码1.安装pyassimp官方的编译的指南,有些坑还是需要踩一下。pyassimp只是assimp的一个wrapper,所以计算上还必须有assimp的库才行,还是免不了要去编译assimp。这里推荐采用vcpkg的进行管理,windows上需要装一下visualstudio,mac需要装一下xcode

[CG从零开始] 3. 安装 pyassimp 库加载模型文件

assimp是一个开源的模型加载库,支持非常多的格式,还有许多语言的binding,这里我们选用assimp的python的binding来加载模型文件。不过社区主要是在维护assimp的C++代码,对于这些binding可能更新的不够及时,比如python版本的就存在一些问题。assimp的源码1.安装pyassimp官方的编译的指南,有些坑还是需要踩一下。pyassimp只是assimp的一个wrapper,所以计算上还必须有assimp的库才行,还是免不了要去编译assimp。这里推荐采用vcpkg的进行管理,windows上需要装一下visualstudio,mac需要装一下xcode

[CG从零开始] 6. 加载一个柴犬模型学习UV贴图

在第5篇文章中,我们成功加载了fbx模型,并且做了MVP变换,将立方体按照透视投影渲染了出来。但是当时只是随机给顶点颜色,并且默认fbx文件里只有一个mesh,这次我们来加载一个柴犬模型,并且给模型贴图,模型可以从sketchfab下载。本文没有涉及到理论解释,更多的是代码实践。完整代码在https://github.com/MangoWAY/CGLearner/tree/v0.3tagv0.31.创建纹理,加载图片我们来封装一个Texture类用来加载图片,创建、bind纹理,加载图片我用的是pillow库。fromOpenGLimportGLasglfromPILimportImageim

[CG从零开始] 6. 加载一个柴犬模型学习UV贴图

在第5篇文章中,我们成功加载了fbx模型,并且做了MVP变换,将立方体按照透视投影渲染了出来。但是当时只是随机给顶点颜色,并且默认fbx文件里只有一个mesh,这次我们来加载一个柴犬模型,并且给模型贴图,模型可以从sketchfab下载。本文没有涉及到理论解释,更多的是代码实践。完整代码在https://github.com/MangoWAY/CGLearner/tree/v0.3tagv0.31.创建纹理,加载图片我们来封装一个Texture类用来加载图片,创建、bind纹理,加载图片我用的是pillow库。fromOpenGLimportGLasglfromPILimportImageim

[CG从零开始] 5. 搞清 MVP 矩阵理论 + 实践

在4中成功绘制了三角形以后,下面我们来加载一个fbx文件,然后构建MVP变换(model-view-projection)。简单介绍一下:从我们拿到模型(主要是网格信息)文件开始,模型网格(Mesh)里记录模型的顶点位置信息,比方说(-1,1,1)点,那么这个点是相对于这个模型的(0,0,0)点来说的,这和我们在制作模型的时候有关,例如我可以让这个(0,0,0)点位于模型的中心也可以是底部。接着我们需要通过放置许多的模型来构建整个场景,为了描述每个物体的位姿(位置和姿态),我们需要一个世界原点,然后所有物体的位姿信息都是相对于这个世界原点的。如果用过游戏引擎或者DCC软件的话,一般每个物体都会

[CG从零开始] 5. 搞清 MVP 矩阵理论 + 实践

在4中成功绘制了三角形以后,下面我们来加载一个fbx文件,然后构建MVP变换(model-view-projection)。简单介绍一下:从我们拿到模型(主要是网格信息)文件开始,模型网格(Mesh)里记录模型的顶点位置信息,比方说(-1,1,1)点,那么这个点是相对于这个模型的(0,0,0)点来说的,这和我们在制作模型的时候有关,例如我可以让这个(0,0,0)点位于模型的中心也可以是底部。接着我们需要通过放置许多的模型来构建整个场景,为了描述每个物体的位姿(位置和姿态),我们需要一个世界原点,然后所有物体的位姿信息都是相对于这个世界原点的。如果用过游戏引擎或者DCC软件的话,一般每个物体都会

[CG从零开始] 4. pyopengl 绘制一个正方形

在做了1~3的基础工作后,我们的开发环境基本OK了,我们可以开始尝试利用pyopengl来进行绘制了。本文主要有三个部分利用glfw封装窗口类,并打开窗口;封装shader类,进行编译、链接、使用;封装VAO、VBO、EBO完成主函数进行绘制完整的代码在仓库(tag:v0.1)https://github.com/MangoWAY/CGLearner/tree/v0.11.利用glfw封装窗口类为了显示我们绘制的内容,打开窗口是必不可少的操作,因此我们来简单封装一个窗口类,便于我们后续的学习、调用。我们设置opengl的版本,向前兼容和配置(这俩在macOS必须配置),这些其实可以不用太关心,

[CG从零开始] 4. pyopengl 绘制一个正方形

在做了1~3的基础工作后,我们的开发环境基本OK了,我们可以开始尝试利用pyopengl来进行绘制了。本文主要有三个部分利用glfw封装窗口类,并打开窗口;封装shader类,进行编译、链接、使用;封装VAO、VBO、EBO完成主函数进行绘制完整的代码在仓库(tag:v0.1)https://github.com/MangoWAY/CGLearner/tree/v0.11.利用glfw封装窗口类为了显示我们绘制的内容,打开窗口是必不可少的操作,因此我们来简单封装一个窗口类,便于我们后续的学习、调用。我们设置opengl的版本,向前兼容和配置(这俩在macOS必须配置),这些其实可以不用太关心,