一种基于OpenSceneGraph的三维动画制作方法_2

文档序号:9433582阅读:来源:国知局
象上,设置颜色绑定模式为全绑定模式;
[0058](2.5.2)将图4所示包含目标物体纹理信息且带有透明度的图片分为20*20的小格子,将小格顶点坐标与颜色坐标一对一对应,完成纹理在笛卡尔坐标系上顶点的映射;
[0059](2.5.3)创建子图坐标对应关系,结合实施例中的鱼类动画制作详细阐述如下:
[0060]实施例中建立的笛卡尔坐标系,以屏幕水平向右为X轴正方向,垂直向上为Z轴方向正方向,垂直向内为Y轴正方向;
[0061]对于实施例中的制作鱼类动画而言,需完成两个运动:其一是鱼类在整个三维场景中的位移运动,是刚体运动,利用OSG中的路径动画完成;设定在三维场景中的X-Z平面内完成;
[0062]其二是鱼类自身的扭动,在本实施例中,是在X-Y平面上的运动;鱼类图片的放置方向为平行于屏幕,也即是X-Z平面,垂直于X-Y平面;通过设定参考坐标系,使得图片具有自身扭动的运动状态,具体如下:
[0063]从X-Y平面看,初始状态下,从Z轴方向看过去,鱼类图片是一个平行于X轴的直线L,对该直线设定一个运动方程,图片上的点为坐标y,初始直线L为坐标X,设定时刻为t,设定y与X在时刻t上具有三角函数关系,y = Asin(ωχ+t);其中,A是指鱼体在Z轴方向上运动的振幅,2π/ω是指运动周期,t是指初始相位;其中,以图片最初位置为初始位置;
[0064](2.6)将图元添加至步骤(2.2)中获得的几何体对象上;
[0065](2.7)利用OpenSceneGraph的图片类创建OSG图片对象,并读取步骤⑴处理后的图像数据至图片对象,将图片对象关联至(2.1)中获得的纹理对象上;
[0066](2.8)利用OpenSceneGraph的属性类创建属性对象,命名为stateset,并完成以下设置:
[0067](2.8.1)设置纹理属性和模式,将二维纹理对象texture关联到属性对象stateset ;
[0068](2.8.2)利用OpenSceneGraph的属性类的设置模式函数关闭光照;消除背向视角部分的场景中物体的阴影效果;
[0069](2.8.3)利用OpenSceneGraph的属性类的设置模式函数开启混合模式GL_BLEND ;在颜色与透明度混合模式下,动画效果更具真实性;
[0070](2.8.4)将属性对象stateset关联到几何体对象polyGeom ;
[0071](3)利用OpenSceneGraph的广告牌类创广告牌对象,命名为biIIBoarcM^ (2.2)中创建的几何体对象关联至该广告牌对象上;广告牌对象自动更改该几何体对象的朝向矩阵,使得随着视角变化,该几何体对象始终面向视角方向,提高二维图片动画的视觉真实性;
[0072](4)利用OpenSceneGraph的路径动画类创建路径动画对象,命名为path,设置若干个关键点已经关键点的坐标、方位、到达该关键点的时间参数;设置路径动画对象path的循环模式为往复模式SWING,由此实现鱼类在关键点之间往返运动的效果;
[0073](5)利用OpenSceneGraph的矩阵变换类创建矩阵节点对象,并关联步骤⑷中的路径动画对象;设置矩阵节点的每一帧的更新操作;在056中,物体位置和方向的变化是通过矩阵变换来完成;每一帧重新获得节点的矩阵数据,完成节点的在场景中位置、方向的变化,并对矩阵节点进行更新回调,以完成矩阵节点的数据更新;
[0074](6)采用OpenSceneGraph的单视景器类创建单视景器对象,命名为viewer ;采用OpenSceneGraph的组节点类创建场景根节点,并将步骤(5)所获得的矩阵变换对象关联至该根节点下,设置单视景器对象的场景数据为根节点;
[0075]在拣选和绘制遍历时完成节点的信息获取、数据编辑和更新,重绘几何体顶点和纹理对象关系;创建并初始化窗口,渲染绘制场景,获得三维动画,如图5所示;具体包括如下子步骤:
[0076](7.1)设置几何体对象polyGeom的更新回调函数,这个回调函数将在系统运行的每一帧被调,用于完成几何体重绘操作;获取每一帧获取仿真时间,对几何体节点进行遍历;
[0077](7.2)创建更新回调类,该类继承自OpenSceneGraph的几何体更新回调类以及几何体属性函数类;该类在拣选和绘制遍历时回调,完成几何体的信息获取、数据编辑和更新;通过该类的重构函数update,实时回调和操作几何体;几何体对象polyGeom设置OpenSceneGraph的几何体更新回调函数,完成几何体polyGeom的更新回调,重绘几何体顶点,产生高真实感的鱼类身体运动;具体包括如下子步骤:
[0078](7.2.1)重构update函数,这个函数将在系统运行的每一帧被调,完成几何体重绘操作;获取每一帧获取仿真时间,对几何体节点进行遍历;采用accept函数关联几何体需要访问的节点,并启动遍历器进行遍历;采用dirtyBound函数进行几何体重绘包围盒;
[0079](7.2.2)重构虚函数apply,每一帧获得几何体顶点数组地址,修改各个顶点值,完成几何体操作;
[0080](7.2.3)采用OpenSceneGraph的几何体类创建几何体对象,命名为geometry并设定其为动态数据,采用平滑遍历器对其进行数据优化;
[0081](7.3)对步骤(6)中创建的单视景器viewer采用OpenSceneGraph的setSceneData函数设置场景数据,采用OpenSceneGraph中的帧函数frame获得场景数据,绘制三维场景。
[0082]实施例提供的鱼类动画制作方法是在OSG中,用平面面元动画代替现有技术复杂的建立鱼体模型、复杂几何运动控制鱼体模型运动的方法,由于仅需二维面元,对模型无特殊要求,在满足视觉效果的同时降低了开发人员的工作量,节省了内存消耗,提高了系统渲染效率。
[0083]本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于OpenSceneGraph的三维动画制作方法,其特征在于,包括以下步骤: (1)删除原始图片中的背景纹理,获得仅包含目标物体纹理信息的第一图片,将所述第一图片保存为带有透明度信息的格式,获得仅包含目标物体纹理信息且带有透明度的第二图片; (2)设置第二图片每一帧的纹理坐标对应关系,获得各帧对应的子图; (3)对所述子图添加广告牌; (4)采用OpenSceneGraph的路径动画类创建路径动画对象,并将该路径动画对象关联至步骤(3)所述广告牌的节点,使得路径动画对象成为广告牌子节点; (5)采用OpenSceneGraph的矩阵变换类创建矩阵变换对象和矩阵变化节点,将步骤(3)所述广告牌的节点关联至所述矩阵变换对象下;通过所述矩阵变换对象改变图片的位置和姿态信息,产生相对于三维场景参考系的位置和姿态变化效果; (6)采用OpenSceneGraph的单视景器类创建单视景器对象,采用OpenSceneGraph的组节点类创建场景根节点,将步骤(5)中获得的矩阵变换对象关联至所述根节点下,并将单视景器对象的场景数据设置为根节点; (7)采用OpenSceneGraph的帧函数完成各帧的场景数据更新并清染绘制场景。2.如权利要求1所述的三维动画制作方法,其特征在于,步骤(2)所述创建子图的步骤,包括如下子步骤: (2.1)采用OpenSceneGraph的纹理类创建纹理对象,并设置纹理大小、纹理颜色格式特征; (2.2)采用OpenSceneGraph的几何体类创建几何体对象,且将其设置为动态数据变量,使得该变量可在每一帧进行数据更新,且指定所述几何体对象局部坐标系的笛卡尔坐标系; (2.3)采用OpenSceneGraph的三维数组类创建三维数组对象,用以存放纹理,采用OpenSceneGraph的二维数组类创建二维数组对象,用以存放纹理坐标;进行纹理映射,完成几何体对象与纹理坐标绑定; (2.4)将上述纹理坐标对象与几何体对象进行关联,并设置几何体的定点数组; (2.5)采用OpenSceneGraph的四维数组类创建颜色数组对象,将颜色对象关联到步骤(2.2)中创建的几何体对象上;并将所述包含目标物体纹理信息且带有透明度的图片分为20*20的小格子,将小格顶点坐标与颜色坐标一对一对应,完成纹理映射; (2.6)创建图片对象,将步骤(I)获得的包含目标物体纹理信息且带有透明度的图片数据存入所述图片对象,并将图片对象关联至(2.1)中创建的纹理对象上; (2.7)采用OpenSceneGraph的属性对象类创建属性对象,获得纹理映射与属性设置完全的子图。3.如权利要求2所述的三维动画制作方法,其特征在于,所述步骤(2.1)包括以下子步骤: (2.1.1)利用OpenSceneGraph的纹理类的设置纹理大小函数设置纹理对象大小; (2.1.2)利用OpenSceneGraph的属性类的设置纹理属性和模式函数设置纹理对象的纹理格式,使其具有透明度通道,以免系统自动对背景纹理填充颜色; (2.1.3)利用OpenSceneGraph的纹理类的设置过滤方式函数设置纹理过滤方式允许进行插值或者均和,指定放大缩小的函数。4.如权利要求2所述的三维动画制作方法,其特征在于,所述步骤(2.7)包括以下子步骤: (2.7.1)利用OpenSceneGraph的属性类创建属性对象,设置纹理属性和模式,并将步骤(2.1)中获得的纹理对象关联到所述属性对象上; (2.7.2)利用OpenSceneGraph的属性类的设置模式函数关闭光照,以消除阴影对图片颜色的干扰; (2.7.3)利用OpenSceneGraph的属性类的设置模式函数开启纹理混合模式; (2.7.4)将所述属性对象关联到步骤(2.2)中获得的几何体对象。
【专利摘要】本发明公开了一种基于OpenSceneGraph的三维动画制作方法,通过控制二维图片在三维场景中沿水平方向和垂直方向的规律性几何运动模拟场景中非主体目标动画,具体包括原图片预处理步骤、创建子图步骤、添加广告牌步骤、更新场景数据步骤、绘制场景的步骤;本发明对图片进行预处理除去背景,获得带有透明通道的目标图片;在每一帧改变纹理坐标和顶点对应关系,实现纹理动画效果;利用广告牌技术,使之在视角变化时自动改变图片朝向,始终面向屏幕,提高视觉真实性;利用更新场景数据步骤,更新每一帧动画数据;利用绘制步骤,获取场景数据,绘制每一帧场景;本发明所提供的方法,减少了建模、设计精细模型的运动的工作,降低了三维动画的制作难度和制作成本。
【IPC分类】G06T13/20, G06T13/40
【公开号】CN105184843
【申请号】CN201510620905
【发明人】邹腊梅, 高亚红, 杨卫东, 金留嘉, 万敏, 钟鸣
【申请人】华中科技大学
【公开日】2015年12月23日
【申请日】2015年9月25日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1