PC Animation 开发手册3 动画开发接口

一、动画属性设置

   在CScence的构造函数中定义动画属性

   例如:

CScenes::CScenes(void)

{

    //画面坐标尺寸,单位是“像素点”

    m_sizeMovie=CSize(800,600);

   

    //总长度(帧数)

    m_nTotalFrame=200;

 

    //原点位置(按数学坐标,右上为正)

    m_ptOrigin.x=400;

    m_ptOrigin.y=300;

 

    //画面背景色

    m_clrBk=RGB(255,255,255);

 

}

二、动画交互参数设置

   在CScence类中添加成员变量

   在CScence的构造函数中向播放器声明需要链接那些变量。播放器将依据声明过的变量数目、属性,建立相应的按钮、输入框等。

   在CScence::DrawScence中,使用变量,依据变量的值,即使计算和绘制。

   举例:需要用户输入“起始角度”

   在CScence中增加m_fStartAngle变量

class CScenes:public CScenesBase

{


    …

    float m_fStartAngle;

};

   在CScence构造函数中向播放器开放该变量

CScenes::CScenes(void)

{

    …

    //定义参数: 变量,变量文字名称,默认值,下限值,上限值

    DefineParam(&m_fStartAngle,_T("初始夹角(π)"),0.15f,0.0f,2.0f);

   

}

   在CScence::DrawScence中使用变量值

   播放动画时,播放器会为m_ fStartAngle建立输入框,默认输入了0.15,用户可更改输入。在绘制动画时,要依据变量的数值,即时计算、绘制。

void CScenes::DrawScence(IDrawTools * pDraw,int nScence)

{

    …

    float newAngle=m_ fStartAngle+m_fWomega*(float)nScence;

    //绘制以newAngle为夹角的箭头….

 

}

三、动画的形成

   要形成动画,需要在DrawScence函数中,依据传入的nScence(帧数),自行计算、绘制相应画面。

   可以把nScence理解为时间值time,时间不同,所绘制的元素的位置不同。播放器以一定的周期调用DrawScence,而DrawScence中的代码按传输的time,重新绘制整个场景。

   DrawScence中完整描述各时刻画面,形成动画各帧。各帧画面在代码实现上,应尽量独立,避免前后依赖。(即仅有nScence和各交互参数,完整确定、绘制该帧画面,避免引用其他数据)。详见“4. 动画代码规范”。

四、绘图接口

   PC Animation 播放器提供了一个简洁的二维、三维图形绘制引擎。动画文件使用该引擎实现场景绘制。动画的实际绘制工作由绘制引擎实现,动画文件中关注的主要是场景、动画的组织。
   绘图引擎以课本线条插图为蓝本,只需要提供常见黑板手绘元素,不需要引入绘图能力更强的软件功能(如三维场景渲染)。例如:三维绘图,仅需要表达基本的三维透视关系,如下图所示:

   图1 绘图示例

   绘制接口提供的绘图功能包括以下几个方面:
   1) 当前绘图工具的选择。包括画笔、画刷、字体等等。
   2) 二维坐标系变换。
   3) 二维坐标系下基本图形的绘制。
   4) 三维坐标系变换
   5) 三维基本图像绘制
   6) 三维到二维之间的信息转换
   7) 位图操作
   8) 表达式绘制
   9) 扩展二维、三维图形的绘制
   矢量箭头、含标识的箭头、斜线标识的线段等等教学课程中常用的图形符号。

图2 物理元素示例

   绘图接口详情,请参见【PC Animation 绘图引擎

   绘图接口(绘图引擎)的定义,可查阅include目录下的Interface.h

五、位图的绘制

   可以在场景中使用小尺寸位图。

   需要将位图(.bmp)作为源码项目的资源。

   在CScence中定义CBitmap成员变量

   在CScence构造函数中加载位图资源

   在CScence::DrawScece中使用绘制位图

发表回复

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