PC Animation 开发手册1 动画开发概述

  PC Animation 动画,是用C编程语法调度绘图引擎实现的。动画文件中主要描述场景元素及其与时间的关系。用户只需熟悉C语言基本语法,就可开发动画文件。

一、PC Animation动画原理

  为了实现在PowerPoint等环境下的嵌入播放,数值动画播放软件采用两层结构,其上层为嵌入到其他软件中的ActiveX控件、或独立执行的播放器程序,而下层则是具体数值动画内容,包括场景绘制、动画组织和仿真计算部分。为了使场景绘制尽量公用,绘制接口和代码(演示动画绘制引擎)由上层程序提供。
  播放器程序及播放器ActiveX控件中包含了演示动画绘制引擎,提供绘制演示动画的常用绘图功能、包括基本形状、扩展形状、和标示符号(包括公式)的绘制代码,对外提供一个绘图接口。
  场景(动画文件.pca)被加载后,相关接口被连接;当播放场景文件时,参数的编辑值被传递给场景文件,并按当前帧号调用场景绘制函数。场景绘制函数中,通过绘图接口驱动演示动画绘制引擎绘制内容场景,并依据演示帧号和当前参数数值控制内容场景的变化。
  播放器和场景文件之间存在双向关联,播放器需要调用场景文件中的场景绘制代码、并获取场景文件中定义的场景参数信息;场景文件中需要使用播放器程序中提供的绘制引擎。因此,数值动画开发演示环境采用基于接口的层间关联设计。上层的播放控制层程序和下层的场景文件均提供预先规范好的接口的实现。当播放控制程序加载场景文件后,相关接口被连接,实现两部分程序的双向关联。

  软件架构及技术参见【PC Animation技术细节

一、动画文件

   动画文件是一组编译后的代码,文件名称后缀为”*.pca”。内含针对两种硬件平台(32位/64位)的代码,其结构如下:

图1 pca场景文件结构示意图

二、动画文件大致制作过程

图2 动画文件开发过程示意图

1)依据项目模板,建立源码项目,在源码项目中定制场景属性,动画源代码。
2)分别编译生成32位动画文件(.pca32)、64位动画文件(.pca64)
3) 用Packer工具打包制作成品动画文件(.pca)

三、动画文件开发包文件

   提供的动画开发包(rar压缩包),解压后,包含以下目录和文件:

图3 开发包文件目录

   各文件/目录项说明如下:

bin 目录为编译输出目录。编译后生成的.pca32、.pca64、.pca等文件在此目录。
include 目录开发接口定义文件(C语言头文件)
PCAScenesTemplate目录动画项目源码模板,新建场景项目时,以此目录为参考。
Scenes.sln 文件是Visual Studio开发环境的“解决方案”文件,打开此文件,即打开了整个源码方案,内含多个源码项目。一个动画,对应一个源码项目。
NewScene 2.0.exe 文件“新建”动画项目用小工具。
CopyScence 2.0.exe文件“复制并重命名”动画项目用小工具。
ClearIntermediate 2.0.exe 文件清除编译过程临时文件用小工具。
§7-3 气体分子速率分布 目录示例项目
§14-3 简谐振动与旋转矢量 目录示例项目

表1 开发包内文件、目录说明

   用Visual Studio 2015打开Scenes.sln,能看到,该“解决方案”已包含了3个源码项目。
其中,
   “PCAScenesTemplate”为源码模板,源文件在PCAScenesTemplate子目录下。
   “§7-3 气体分子速率分布”、” §14-3 简谐振动与旋转矢量”为两个示例动画源码。

图4 开发包VC解决方案

   可切换到“类视图”,查看示例源码结构。

四、动画源码项目结构

   以下,以“§14-3 简谐振动与旋转矢量”为例,说明源码结构.

图5 动画源码项目VC类视图

   每个场景项目,包含两个C++类: CPCAScenesApp和CScenes。
   CPCAScenesApp是Windows动态链接库(dll)的封装类,代码固定,无需更改。
   CScenes是动画的封装类。包含了动画的属性设定、绘制代码,开发动画,主要书写此类的两个成员函数。
   CScenes类中需要定制、编写的成员函数包括:

void CScenes::DrawScence(IDrawTools * pDraw,int nScence)场景(动画)绘制函数,使用传入的pDraw对象,绘制第nScence帧画面
例如:以(nScence, nScence)为坐标,绘制圆点,则播放时,该圆点沿45度斜线运动
CScenes::CScenes(void)对象构造函数,在此定制动画属性(大小、长度、坐标原点等),另若动画需要输入参数,在此定义参数。

表2 动画源码中CScenes类的主要成员函数

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注