美文网首页消零打卡专题
手绘视频工具架构设计

手绘视频工具架构设计

作者: 科研者 | 来源:发表于2021-09-12 10:40 被阅读0次

    目录

    内容

    1. 使用场景

    1. 课程人员提供包含 内容、排版、布局、绘制顺序等信息的文件,解析该文件 生成 手绘效果的视频 或 数据
      • 需要实现排版模块,比如文字的
      • 如果布局有变动,需要更改前端项目 和 重新生成手绘数据
    2. 课程人员配置 绘制顺序,前端人员将绘制顺序作为 标签属性 配置在需要被绘制的元素上,然后调用手绘引擎传递 元素 或 网页,手绘引擎生成 手绘效果的数据 或 视频;
      • 如果布局有变动,只更改前端项目

    2. 思路和原理

    2.1. 方案1

    1. 对文字、失量图、图片 生成路径
    2. 根据路径和时间 生成 位置点
    3. 根据位置点移动手势图片 和 绘制遮罩,这样便产生了 手写动作(通过移动手势图片) 和 内容被写出来的效果(通过绘制遮罩)

    2.2. 方案2

    1. 做一个或几个通用的手绘手势动画
    2. 对于文字,将手势动画沿着文字方向移动,对于矩形区域,将手势沿着特定的方向往复前行

    3. 整体结构与关系

    架构图
    • 内容:对外暴露接口,方便用户使用;提取输入内容
    • 路径:将内容转为路径
    • 渲染:将路径渲染为动画
    • Web展示:使用Web的机制展示动画
    • 导出视频:将动画转为视频

    4. 功能特性

    • 支持对 文本、失量图、位图 或 其它的东西 生成手绘效果
    • 支持某个已存在的元素生成手绘效果
    • 支持对整个网页生成手绘效果
    • 支持对网页中具有相应配置的元素生成手绘效果
    • 整个功能可放在前端执行,也可以后端负责解析路径,前端负责渲染
    • 如果使用后端解析路径、前端渲染的方式,则可以减少前端与后端传输数据的体积

    5. 内容

    内容模块对外暴露接口,方便用户使用;并提取用户输入的内容。

    用户可以提供以下内容:

    • 内容:直接提供要被绘制的内容,如:文本、失量图 等等
    • 元素:用户提供了 Dom元素 或 元素的选择器
    • 网页:用户提供了网页的地址,并且元素中包含绘制顺序信息

    6. 路径

    6.1. 文本

    文本的字体分为两类,一是位置字体 和 失量图 字体。

    • 位图字体:我们可以通过查询 字码 与 字体失量信息的表来获得对应字体的字的失量信息;
    • 失量字体:失量字体也可通过上术方法获取字体的失量信息,也可以通过读取字体文件直接获取失量信息;

    6.2. 失量图

    可通过相关工具读取失量图的信息,对于 SVG,即使没有相关路径提取库,也可自行解析并提取;

    6.3. 位图

    可以通过一些算法 或 工具 对位置生成轮廓路径

    6.4. 其它内容

    我们预置一些手绘手势的路径(如:从左下到右上的往运动路径),对所有未知的类型采用这种路径

    7. 渲染

    光有路径还不能直接做动画,因为动画是基于时间 和 位移序列,所以,我们还需要根据动画时间 和 路径 生成一系列 坐标点序列,然后根据这些坐标序列点生成动画。

    动画内容分布为两块:

    1. 手绘手势的运动动画
    2. 内容跟随手绘位置逐渐展示,这个可以通过绘制遮罩的方案

    8. 导出视频

    可对每个动画帧生成图片,然后通过一些工具(比如:FFmpeg)这些图片 合成视频

    相关文章

      网友评论

        本文标题:手绘视频工具架构设计

        本文链接:https://www.haomeiwen.com/subject/hkgzwltx.html