当前位置: 首页 > news >正文

了解 .mgJSON 文件

.mgJSON (Motion Graphics JSON)是一个基于标准 JSON 格式的文件扩展名,专门用于存储和交换与动态图形、动画和多媒体应用相关的数据。该格式支持静态和动态数据流,能够精确描述动画、物体变换、图形效果等。

.mgJSON 文件通过层级路径组织这些数据,能够精确定位到目标数据流,并允许对动态数据流进行详细描述和样本化。

一、静态与动态数据流

.mgJSON 文件中的数据可分为静态数据和动态数据两类。

1、静态数据流

静态数据流包含不随时间变化的数据,通常是对象的固定属性,如尺寸、位置、颜色、纹理等。

例如,在一个动画场景中,背景色、物体的初始位置和尺寸等可以存储为静态数据流。

2、动态数据流

动态数据流则表示随时间变化的数据,通常用于描述动画效果、物体的移动、旋转等。

动态数据流是.mgJSON 文件中的关键组成部分,它允许存储动画的关键帧数据、变换值、运动模糊、光照强度变化等信息。

二、层级路径和目标数据流

在.mgJSON 文件中,层级路径用于描述数据流的位置和嵌套关系。它类似于文件系统中的目录结构,指向目标数据流的特定位置。

1、层级路径

用于指定数据流的结构层级。

例如,文件中一个物体的位置信息可能通过路径 scene.objects[0].transform.position 来表示,指向场景中第一个物体的变换属性中的位置数据流。

2、目标数据流

层级路径最终指向的就是目标数据流。

它包含了该属性的实际值,例如 position 数据流中的坐标值 [x, y, z],表示物体在 3D 空间中的位置。

三、指定数据流的值

在.mgJSON 文件中,数据流的值可以是静态的或动态的。

静态数据流的值通常为单一的常量,如 true, false, 数字、字符串等。

而动态数据流的值则通常由一系列的样本(samples)组成,每个样本表示在某一时刻或时间区间的值。

例如,在动画过程中,物体的旋转角度可能随时间变化,这时其旋转角度的数据流就包含多个样本,每个样本对应一个时间点的旋转角度值。

{"object": {"transform": {"rotation": [{"time": 0, "value": 0},{"time": 1, "value": 45},{"time": 2, "value": 90}]}}
}

在此示例中,rotation 是一个动态数据流,包含了在时间点 0、1 和 2 时物体的旋转角度。

四、特定动态数据流的样本数量

动态数据流中的样本数量指的是该数据流记录的时间点数目。

样本数量是分析动态数据流时的重要指标,因为它决定了数据的精确度。

例如,一个平滑的动画可能需要较多的样本来表示物体的每一帧变化,而简短的动画则可能只需少量样本。

动态数据流的样本数量可能为 1 或多个样本。每个样本都有一个时间戳,表示该数据值在某个特定时间点的状态。

例如:

{"animation": {"position": [{"time": 0, "value": [0, 0, 0]},{"time": 1, "value": [10, 10, 10]},{"time": 2, "value": [20, 20, 20]}]}
}

上述代码表示一个三维物体的位置信息,随着时间的推移,物体的位置从 [0, 0, 0] 变到 [10, 10, 10],最终到达 [20, 20, 20]。这里的样本数量为 3。

五、特定动态数据流的样本时间

样本时间表示数据流的某个样本对应的时间点。

它通常以时间码或帧数的形式存在,标记该样本在动画时间线上的具体位置。样本时间对于动画制作至关重要,因为它确定了数据流在动画过程中发生变化的具体时刻。

例如:

{"object": {"transform": {"position": [{"time": 0.0, "value": [0, 0, 0]},{"time": 1.0, "value": [100, 50, 0]},{"time": 2.0, "value": [200, 100, 0]}]}}
}

在此例中,物体的位置变化发生在 time: 0.0, time: 1.0, 和 time: 2.0 时刻。

六、样本的时间跨度(开始时间和结束时间)

时间跨度是指样本之间的时间间隔。

在动态数据流中,多个样本可能代表一个动作或事件的不同阶段。在这些样本之间的时间跨度决定了动画的流畅度和速度。

1、开始时间

动态数据流中第一个样本的时间戳,通常是动画或变换的开始时刻。

2、结束时间

动态数据流中最后一个样本的时间戳,通常是动画或变换的结束时刻。

例如:

{"object": {"transform": {"position": [{"time": 0.0, "value": [0, 0, 0]},{"time": 5.0, "value": [50, 50, 0]},{"time": 10.0, "value": [100, 100, 0]}]}}
}

在此例中,位置数据流的时间跨度从 time: 0.0 到 time: 10.0,代表物体在这段时间内从 [0, 0, 0] 位置移动到 [100, 100, 0]。

七、特定动态数据流的样本值

每个样本值代表在该时间点的数据流的状态。在动画和物理模拟中,样本值通常是变量(如位置、旋转、缩放等)随时间变化的具体数值。

例如,物体的位置数据流样本值如下:

{"animation": {"position": [{"time": 0.0, "value": [0, 0, 0]},{"time": 1.0, "value": [10, 5, 0]},{"time": 2.0, "value": [20, 10, 0]}]}
}

在这个例子中,position 数据流的样本值表示物体在不同时间点的 3D 坐标。

八、小结

.mgJSON 文件是用于存储动态和静态数据流的结构化数据格式,广泛应用于图形、动画、游戏引擎等领域。

通过使用层级路径定位目标数据流,.mgJSON 文件可以精确描述对象的属性以及随时间变化的动态数据流。它提供了样本数量、样本时间、时间跨度等机制,使得动画和物体变换能够通过精细的时间控制得到精确表现,进而在多媒体制作中发挥重要作用。

8ccd1d75304950f991940c5dcf412a4b.jpeg

“点赞有美意,赞赏是鼓励”

相关文章:

了解 .mgJSON 文件

.mgJSON (Motion Graphics JSON)是一个基于标准 JSON 格式的文件扩展名,专门用于存储和交换与动态图形、动画和多媒体应用相关的数据。该格式支持静态和动态数据流,能够精确描述动画、物体变换、图形效果等。 .mgJSON 文件通过层级…...

django使用踩坑经历

DRF 使用drf获取序列化后的id visitor_serializer VisitorSaveSerializer(data{…}) if visitor_serializer.is_valid():visitor visitor_serializer.save() visitor_id visitor.pkpostgrepsql踩坑 django使用postgrepsql,使用聚合函数如:sum 等,被…...

【数据分享】1929-2024年全球站点的逐年最低气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标!说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2024年全球气象站点…...

Leetcode:2239

1,题目 2,思路 循环遍历满足条件就记录,最后返回结果值 3,代码 public class Leetcode2239 {public static void main(String[] args) {System.out.println(new Solution2239().findClosestNumber(new int[]{-4, -2, 1, 4, 8})…...

【FPGA】MIPS 12条整数指令【1】

目录 修改后的仿真结果 修改后的完整代码 实现bgtz、bltz、jalr 仿真结果(有问题) bltz------并未跳转,jCe? 原因是该条跳转语句判断的寄存器r7,在该时刻并未被赋值 代码(InstMem修改前) i…...

Halcon 3D基础知识及常用函数

一、基本概念 1、点云(Point Cloud) 点云是一组3D数据点,每个点由笛卡尔坐标系或其他坐标系中的一个三维坐标表示,它被认为是一组非结构化的三维点,象征着三维物体的几何形状。点云是一种简单、完整的数据结构&#…...

贵金属铟,钌,铱,钯铂铑回收工艺详解

Tulsimer CH-95S 是一款为了从工业废水中去除回收汞和贵金属而专门开发的螯合树脂。 Tulsimer CH-95S 是一款拥有聚乙烯异硫脲官能基的大孔树脂,这种树脂对汞有极高的选择性。它也选 择其他的贵金属,如黄金,铂金和其他铂金族金属。…...

AutoSAR CP RTE 规范核心内容简介以及BswScheduler工作原理解析

一、Autosar CP RTE规范核心内容简介 本规范详细介绍了AUTOSAR运行时环境(RTE)和基本软件调度器(BswScheduler)的软件规范。 研究背景 背景介绍: 这篇文章的研究背景是AUTOSAR(Automotive Open System Architecture…...

Python Pyside6 加Sqlite3 写一个 通用 进销存 系统 初型

图: 说明: 进销存管理系统说明文档 功能模块 1. 首页 显示关键业务数据商品总数供应商总数本月采购金额本月销售金额显示预警信息库存不足预警待付款采购单待收款销售单2. 商品管理 商品信息维护商品编码(唯一标识)商品名称规格型号单位分类进货价销售价库存数量预警…...

office 学习

Excel 视图 切片 通过视图进行数据分析 条形格式 函数 countif sumif sumifs 多条件 countifs 多条件...

【三维分割】Gaga:通过3D感知的 Memory Bank 分组任意高斯

文章目录 摘要一、引言二、主要方法2.1 3D-aware Memory Bank2.2 三维分割的渲染与下游应用 三、实验消融实验应用: Scene Manipulation 地址:https://www.gaga.gallery 标题:Gaga: Group Any Gaussians via 3D-aware Memory Bank 来源:加利福…...

期权懂|明日股指期货交割日该如何操作?

锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 明日股指期货交割日该如何操作? 一、需要确认股指期货交割日: 查查看明日是否为交割日,别忘了关注交易所公告,以免错过。 二、需要…...

大牙的2024年创作总结

文章目录 一、自动驾驶通讯协议的学习心得二、PyTorch框架应用的心得体会三、大规模语言模型(LLM)的研究心得四、神经网络架构与实战经验五、我的年度文章六、未来展望与个人成长 引言 2024年是我个人在深度学习和自动驾驶领域不断探索、实践并取得显著…...

AI软件栈:中间表示

概念 编译器通常可以分为前端、优化器和后端三个部分中间表示属于变异过程中表达源程序的方法,作为单独的表示语言。将不同的前端语言(例如C、python、Java等)描述转换为中间表示。优化器对中间表示进行转换和优化,输出新的中间表示。后端将优化后的中间表示转换为特定硬件…...

【PowerQuery专栏】PowerQuery的M语言函数Access数据库访问

Access是相对比较小型的文件型数据库,PowerQuery 进行Access数据库解析非常简单,直接使用Access.Database的函数可以实现数据库访问,函数包含如下参数,函数结果为Table表类型。 Access.Database(参数1 as binary,参数2 as record) as Table 参数1为数据库,数据类型为二进…...

C# OpenCvSharp 部署文档矫正,包括文档扭曲/模糊/阴影等情况

目录 说明 效果 模型 项目 代码 下载 参考 C# OpenCvSharp 部署文档矫正,包括文档扭曲/模糊/阴影等情况 说明 地址:https://github.com/RapidAI/RapidUnDistort 修正文档扭曲/模糊/阴影等情况,使用onnx模型简单轻量部署&#xff0c…...

go读取excel游戏配置

1.背景 游戏服务器,配置数据一般采用csv/excel来作为载体,这种方式,策划同学配置方便,服务器解析也方便。在jforgame框架里,我们使用以下的excel配置格式。 然后可以非常方便的进行数据检索,例如&#xff…...

特殊类设计

[本节目标] 掌握常见特殊类的设计方式 1.请设计一个类,不能被拷贝 拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 C98 将拷贝构…...

图像去雾数据集的下载和预处理操作

前言 目前,因为要做对比实验,收集了一下去雾数据集,并且建立了一个数据集的预处理工程。 这是以前我写的一个小仓库,我决定还是把它用起来,下面将展示下载的路径和数据处理的方法。 下面的代码均可以在此找到。Auo…...

【LeetCode】--- MySQL刷题集合

1.组合两个表(外连接) select p.firstName,p.lastName,a.city,a.state from Person p left join Address a on p.personId a.personId; 以左边表为基准,去连接右边的表。取两表的交集和左表的全集 2.第二高的薪水 (子查询、if…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...