墨水数据
ink model将数字墨水内容保存在笔划数据库(一种数据库)中,其中包含笔划实例的集合 (参见图1)。 图1:墨水笔划
后续章节提供更多详细信息。
Geometry
墨水笔划的几何图形通过其笔划来表示。
Stroke
笔划定义为以下内容的组合:
- 一系列数据点形式的Catmull-Rom spline (必选项),包括每点转换数据*(可选项)*
- 关于如何可视化样条的渲染配置*(可选项)*
- 对原始输入数据(SensorData实例)的引用,即,路径来源*(可选项)*
说明:
- 当将一个笔划实例添加到笔划数据库中,便认为它是不可变的。 笔划实例根据第8.2节“Protocol Buffers序列化方案”使用protobuf message Stroke.进行序列化
Catmull-Rom spline在笔划范围内使用下列属性定义:
- splineTs, splineTf - 样条开始和结束参数
- spline - 样条数据点序列
- color - 颜色值序列(每条样条数据点,如果提供的话,该序列的长度必须等于样条点数)
- perPointTransform - 变换矩阵序列(每条样条数据点,如果提供的话,该序列的长度必须等于样条点数)
笔划可能保留其来源原始输入数据框架的信息。 该关系使用下列属性编码:
- sensorData - 对SensorData实例的引用,由SensorData数据库提供
- sensorDataOffset - 原始输入数据框架中的点索引,映射到第一个点Catmull-Rom spline
- sensorDataMapping - 原始输入数据框架中的索引数组,映射到Catmull-Rom spline的每一个点(如果提供的话,该数组的长度必须等于样条点数)
笔划还可能包含附加信息,通过定义样式属性,描述样条应如何可视化,详细信息请参见下文的“渲染”章节。
Rendering
笔划实例可能包含插值方式以及平台特定渲染引擎渲染方式的信息。 该附加配置使用笔划的样式属性来定义。
Style
样式是PathPointProperties配置、刷子的引用、随机数发生器种子值和渲染方法类型的组合。 设置样式属性,可覆盖特定笔划点属性、颜色分量和/或矩阵变换分量。 通常,应使用带PathPointProperties配置的样式来定义恒定路径分量。
说明: 样式实例根据第8.2节“Protocol Buffers序列化方案”使用protobuf message Style.进行序列化
实例: 带每点颜色数据的笔划以及带α值的样式将导致笔划使用常数α值渲染。
PathPointProperties
简单数据模型,可能包含大小、颜色分量和矩阵变换分量。
说明: PathPointProperties实例根据第8.2节“Protocol Buffers序列化方案”使用protobuf message PathPointProperties.进行序列化
关于笔划如何使用渲染方法类型(renderModeURI)、刷子的引用、渲染和光栅化配置进行渲染的信息集成在样式中。 ink model在刷子数据库(一个包含实例集合的数据库)中保留所有可用的渲染配置。 下列定义适用:
Brush
路径渲染阶段使用的渲染/光栅化配置。根据类分级结构,刷子应被认为是抽象类,具体归类为下列类:
- VectorBrush - 允许根据大小和之后的合并结果,对每个插值点应用特定的多边形,将插值Catmull-Rom样条渲染为矢量样条的一种配置。
- RasterBrush - 允许根据其大小,对每个插值点应用特定的子画面,将插值Catmull-Rom样条渲染为光栅图像。
说明:
VectorBrush实例根据第8.2节“Protocol Buffers序列化方案”使用protobuf message VectorBrush.进行序列化 RasterBrush实例根据第8.2节“Protocol Buffers序列化方案”使用protobuf message RasterBrush 进行序列化。 在重复消息域Brushes.vectorBrushes和Brushes.rasterBrushes中,刷子数据库使用protobuf message Brushes序列化其下层刷子实例集。