一种三维曲线的动画展示方法和装置
技术领域
本发明涉及广播电视新媒体技术领域,尤其涉及一种三维曲线的动画展示方法和装置。
背景技术
目前在广播电视新媒体领域,如演播室的互动播报,政府会议报告,以及博物馆、科技馆和展厅的互动展示等,大量的应用到数据、图像等的三维呈现技术。由于硬件条件和软件实现方法的差异,现有技术中如何更好的实现图形、图像、视频、文档等的三维呈现,是我们面临的主要技术问题。
发明内容
本发明的目的是针对上述技术问题,提出一种三维曲线的动画展示方法和装置。采用本发明的技术方案,能够综合应用各种控件,将演播室的播报内容、博物馆或科技馆等展览内容综合直观地呈现在观众面前,提供更好的视觉效果和用户体验。
本发明主要思想在于基于微软新一代图形系统WPF(Windows Presentation Foundation)提供的新一代多媒体交互用户图形界面框架,通过WPF提供的统一编程模型、语言和框架, 利用DirectX(Direct eXtension, 微软创建的多媒体编程接口)技术中硬件加速的功能来运行矢量图形、图像、视频、文档、三维界面和动画等控件,使软件界面能够呈现三维效果,通过坐标轴、曲线节点和梯度曲线等三维模型对各种对象进行互动展现,极大的增强视觉效果。
本发明的技术方案通过旋转坐标轴,拖动拉伸节点,切换曲线展示形态与应用形成全方位的互动,可以根据用户数据的更新实时动态生成多条曲线,实现所见即所得的数据配置和软件部署,在各个行业都有非常广泛的应用。
根据本发明的一方面,提供了一种三维曲线的动画展示方法,包括步骤:
A、初始化一个坐标系,确定所述坐标系的原点和刻度区间值,在所述坐标系上标注预置的不少于一个的数据点;
B、计算所述数据点之间的过渡连接点的坐标值,依次连接所述各过渡连接点,得到所述数据点之间的曲线连接线;
C、利用三维渲染引擎将所述曲线连接线渲染为位图;
D、预置线段表面的材质,设置所述数据点对应的纹理坐标,将所述材质映射到所述曲线连接线的三维立体模型网格的三角形上;
E、对所述动画线段增加光源动画。
上述技术方案中,优选地,所述坐标系是直角坐标系。
上述技术方案中,优选地,所述步骤B具体为:利用如下公式计算过渡连接点坐标值
y=(Y1/X1)*(n*Δx)+b
其中,Y1/X1为起始数据点与过渡连接点相连接的直线的斜率,b为截距,n为横坐标分为的段数,每段步长是Δx。
根据本发明的另一方面,还提供了一种三维曲线的动画展示装置,包括坐标系生成单元、曲线连接单元、连接线渲染单元、材质映射单元和光源单元,其中
所述坐标系生成单元,用于初始化一个坐标系,确定所述坐标系的原点和刻度区间值,在所述坐标系上标注预置的不少于一个的数据点;
所述曲线连接单元,用于计算所述数据点之间的过渡连接点的坐标值,依次连接所述各过渡连接点,得到所述数据点之间的曲线连接线;
所述连接线渲染单元,用于利用三维渲染引擎将所述曲线连接线渲染为位图;
所述材质映射单元,用于预置线段表面的材质,设置所述数据点对应的纹理坐标,将所述材质映射到所述曲线连接线的三维立体模型网格的三角形上;
所述光源单元,用于对所述动画线段增加光源动画。
本发明通过三维坐标系控制Y轴来展现曲线图不同的角度,通过拖拽动态控制节点,利用动画形式生成每一个曲线段,并通过渲染等技术手段使曲线段具备丰富的色彩、光泽、表面、材质等等外观质感,以及巧妙而错综复杂的内部结构和时空动态的运动关系,在视觉表现上完全优于二维界面,真正实现了三维取代二维、“立体”取代“平面”、“虚拟”模拟“现实”的展示,极大的提升了展示效果和用户体验。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明三维曲线的动画展示方法具体实施方式的流程图。
图2是本发明三维曲线的动画展示方法具体实施方式中坐标系生成示意图。
图3是本发明三维曲线的动画展示方法具体实施方式中数据点标注示意图。
图4是本发明三维曲线的动画展示方法具体实施方式中线段函数示意图。
图5是本发明三维曲线的动画展示方法具体实施方式中曲线连接示意图。
图6是本发明三维曲线的动画展示方法具体实施方式中三维界面实现示意图。
图7是本发明三维曲线的动画展示方法具体实施方式中三维物体表面渲染示意图。
图8是本发明三维曲线的动画展示方法具体实施方式中坐标映射示意图。
图9是本发明三维曲线的动画展示装置具体实施方式的结构示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
本发明中的三维曲线的实现是使用WPF技术中的三维呈现技术实现三维曲线的动态呈现,在本具体实施方式中,要在直角坐标系中展示A、B、C和D四个数据点的三维动画曲线连接过程,如图1所示,具体包括以下步骤:
步骤101、初始化一个坐标系,确定所述坐标系的原点和刻度区间值,在所述坐标系上标注预置的A、B、C和D四个数据点。
具体来说,如图2所示,首先要设置坐标系,为使数据的展示更加清晰直观,该坐标系可以只设定显示第一象限。根据用户输入的展示数据数值范围,对坐标系进行初始化可以把数值转换为X轴和Y轴上的坐标点。一般来讲刻度区间值是一个衡量量即ΔX和ΔY,起始坐标点为(0,0),刻度线的位置就可以通过刻度的个数和区间值计算出来。然后在所述坐标系上标注各数据点。根据数据点的横坐标和纵坐标值,将各数据点在坐标系中标注出来。
步骤102、利用下述公式计算所述数据点之间的过渡数据点的坐标值。
y=(Y1/X1)*(n*Δx),其中,k为两个数据点相连接的直线的斜率,b为截距,依次连接所述各过渡数据点。
具体的说,如图3所示,为了增加线段出现动画,必须计算出A->B->C-D过程中经历过的所有点,一个个点的连接过程就实现了动画连线。由于用户输入的数值只能转化为A、B、C、D等这样坐标系中孤立的点,画出线段简单说就是连接起点和终点,如A->B->C->D。不难看出,如图4所示,每个数据点之间的线段都是由一次函数生成的,即y=kx+b。 其中K是直线的斜率即tanθ,通过Y1/X1可以求得,因为线段从原点开始,b值为0,。
如图5所示,假设把从原点到A点的横坐标分为n段(O->A之间分为n个点),每段步长是Δx,则可以通过一次函数表达式y=(Y1/X1)*(n*Δx)求出从原点到A点每段的纵坐标,这样一条线段上的n个点的横纵坐标都可以计算出来,接下来用连点函数按O->1->2->...n->A连接起来实现了线段动画。设置计时器,连接好O->A的所有点后,用同样方法实现A->B, B->C, C->D的线段动画,至此一条完整的曲线边生成完毕。
步骤103、利用三维渲染引擎将所述曲线连接线渲染为位图。
如图6所示,首先描述一下实现三维界面的基础,生成三维图形的基本思想是能得到一个物体的三维立体模型(Model)。由于我们的屏幕只有二维,因而我们定义了一个用于给物体拍照的照相机(Camera)。拍到的照片其实是物体到一个平坦表面的投影。这个投影由三维渲染引擎渲染成位图。引擎通过计算所有光源对三维空间中物体的投影面反射的光量,来决定位图中每个像素点的颜色。
物体的每一个表面都有一种材质(Material)和一个画刷(Brush)。材质定义了一个具体角度的光的反射量,而画刷定义了表面的颜色。画刷可以是一种单纯的颜色,也可以是渐变的,甚至可以是一幅图片,这些称为纹理(Texture)。在三维图形的世界里,因为三角形是用来描述平面最小的几何体,所有物体都被描述成为一系列三角形的集合。在场景中,渲染引擎可以计算出每一个三角形的颜色,取决于它的材质和它与光线的角度。
如图7所示,三维物体的一个表面称为一个网格(mesh)。一个网格被定义为许多三维点。这些点称为顶点(vertices)。这些顶点通过环绕方式连接起来来形成三角形。每一个三角形有个正面和反面,只有正面才会被渲染。三角形的正面可以通过点的环绕顺序来确定。WPF采用逆时针的环绕方式即右手定则。
步骤104、预置线段表面的材质,设置所述数据点对应的纹理坐标,将所述材质映射到所述动画线段的三维立体模型网格的三角形上。
一般来讲,材质可以定义为一张图,如前面讲的坐标系在二维和三维度中不同,并且三角形的法线(右手定则)决定着可视面,如图8所示,当材质映射到组成三维模型网格的三角形上时需要指定文理坐标,“1 0, 0 0, 0 1, 1 1”。也就是说,将A映射到P0,B映射到P1,C映射到P2,D映射到P3。
步骤105、对所述动画线段增加光源动画,具有不同材质贴图的三维曲线图就可以呈现出来。
根据本发明的另一个方面,还提出了一种三维曲线的动画展示装置,如图9所示,包括坐标系生成单元901、曲线连接单元902、连接线渲染单元903、材质映射单元904和光源单元905,其中
所述坐标系生成单元901,用于初始化一个坐标系,确定所述坐标系的原点和刻度区间值,在所述坐标系上标注预置的不少于一个的数据点;
所述曲线连接单元902,用于计算所述数据点之间的过渡连接点的坐标值,依次连接所述各过渡连接点,得到所述数据点之间的曲线连接线;
所述连接线渲染单元903,用于利用三维渲染引擎将所述曲线连接线渲染为位图;
所述材质映射单元904,用于预置线段表面的材质,设置所述数据点对应的纹理坐标,将所述材质映射到所述曲线连接线的三维立体模型网格的三角形上;
所述光源单元905,用于对所述动画线段增加光源动画。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。