论文部分内容阅读
【摘要】本文介绍在粒子系统在视频渲染显示中的应用(例如雨,雪粒子),用于在视频中叠加显示各种粒子特效。
【关键词】directshow;粒子系统;D3D
1.引言
影像靶中需要通过实拍场景模拟接近真实的案发环境,结合造雾机,造雪机,喷淋等设备营造出逼真的训练环境供训练人员训练,但需要实时在实拍场景上渲染出雾,雪,雨等效果与设备进行结合生成真实的场景,针对以上的训练需求,将3D软件中使用的粒子系统引入到视频渲染中,并结合视频渲染的特点编写渲染视频过滤器。
2.雨雪效果在视频渲染过滤器软件的实现
雨雪视频处理过滤器软件应用在视频图像解码完成到显示之间,使用transform in place filter(就地传递数据过滤器)作为基类进行开发,在接收到前面过滤器传递过来的图像数据后,直接修改该图像数据传递给下一个过滤器。
雨雪视频处理过滤器软件接收输入数据,经过一定处理后再输出数据,所以选择Ctrans-formInPlaceFilter作为基类。CTransformIn-PlaceFilter有一个输入Pin和一个输出pin,使用CTransformInPlaceInputPin类和CTransformInPlaceOutputPin类。
雨雪视频处理过滤器软件使用Check-InputType函数完成输入Pin上的媒体类型检查;使用Transform函数完成调用粒子系统中的渲染函数更新粒子状态,再根据每一个雨雪粒子的属性修改图像的数据,完成雨雪粒子在视频画面上的叠加,并更新粒子的最新状态。
3.雨雪粒子系统简介
雨雪粒子系统是由位置、颜色,速度,加速度等属性组成。当我们创建、显示或更新粒子时,我们使用属性来工作。当我们准备渲染时,我们从Particle(粒子)结构中复制雨雪粒子的状态。
雨雪粒子系统是粒子的集合,用来保存和显示这些粒子。粒子系统维护所有粒子的全部属性,影响系统中的所有粒子:粒子的尺寸,起始的位置等。粒子系统的方法负责更新、显示、创建粒子等。
因为粒子系统是动态的,在每一个帧中我们需要更新系统中的粒子,对于渲染粒子系统的一种直观的方法如下:
每一帧里执行:
1)改变没一帧粒子的状态。
2)更新所有活着的粒子。
3)改变显示状态。
4.粒子系统算法的的实现
粒子系统是粒子的集合,用来保存和显示这些粒子。粒子系统维护所有粒子的全部属性,影响系统中的所有粒子:粒子的尺寸,起始的位置等。粒子系统的方法负责更新、显示、杀死和创建粒子。
虽然不同的具体(与抽象是相对的)粒子系统有不同的行为,但是提取出子系统共有的基本属性放到一个抽象的Psystem基类,它是所有的具体粒子系统的父类Psystem类:
5.结论
雨雪粒子系统编写完成后按照如图1所示的过滤器连接图连接。
运行显示效果如下,细细的雪花随着视频的进行,从视频画面上飘过,结合外围设备的应用,模拟出逼真的场景(如图2所示)。
通过前面的介绍,这种使用D3D中的粒子系统移植到DSHOW平台的方案,很好的解决了视频实时叠加粒子系统模拟自然环境的问题。
参考文献
[1]陆其明.Directshow开发指南[M].北京:清华大学出版社,2003.
[2]Frank Luna DirectX 9 3D 游戏程序设计入门[M].
作者简介:陈辉(1962—),男,大学本科,研究方向:军事模拟器材总体设计、电子通信、计算机仿真。
【关键词】directshow;粒子系统;D3D
1.引言
影像靶中需要通过实拍场景模拟接近真实的案发环境,结合造雾机,造雪机,喷淋等设备营造出逼真的训练环境供训练人员训练,但需要实时在实拍场景上渲染出雾,雪,雨等效果与设备进行结合生成真实的场景,针对以上的训练需求,将3D软件中使用的粒子系统引入到视频渲染中,并结合视频渲染的特点编写渲染视频过滤器。
2.雨雪效果在视频渲染过滤器软件的实现
雨雪视频处理过滤器软件应用在视频图像解码完成到显示之间,使用transform in place filter(就地传递数据过滤器)作为基类进行开发,在接收到前面过滤器传递过来的图像数据后,直接修改该图像数据传递给下一个过滤器。
雨雪视频处理过滤器软件接收输入数据,经过一定处理后再输出数据,所以选择Ctrans-formInPlaceFilter作为基类。CTransformIn-PlaceFilter有一个输入Pin和一个输出pin,使用CTransformInPlaceInputPin类和CTransformInPlaceOutputPin类。
雨雪视频处理过滤器软件使用Check-InputType函数完成输入Pin上的媒体类型检查;使用Transform函数完成调用粒子系统中的渲染函数更新粒子状态,再根据每一个雨雪粒子的属性修改图像的数据,完成雨雪粒子在视频画面上的叠加,并更新粒子的最新状态。
3.雨雪粒子系统简介
雨雪粒子系统是由位置、颜色,速度,加速度等属性组成。当我们创建、显示或更新粒子时,我们使用属性来工作。当我们准备渲染时,我们从Particle(粒子)结构中复制雨雪粒子的状态。
雨雪粒子系统是粒子的集合,用来保存和显示这些粒子。粒子系统维护所有粒子的全部属性,影响系统中的所有粒子:粒子的尺寸,起始的位置等。粒子系统的方法负责更新、显示、创建粒子等。
因为粒子系统是动态的,在每一个帧中我们需要更新系统中的粒子,对于渲染粒子系统的一种直观的方法如下:
每一帧里执行:
1)改变没一帧粒子的状态。
2)更新所有活着的粒子。
3)改变显示状态。
4.粒子系统算法的的实现
粒子系统是粒子的集合,用来保存和显示这些粒子。粒子系统维护所有粒子的全部属性,影响系统中的所有粒子:粒子的尺寸,起始的位置等。粒子系统的方法负责更新、显示、杀死和创建粒子。
虽然不同的具体(与抽象是相对的)粒子系统有不同的行为,但是提取出子系统共有的基本属性放到一个抽象的Psystem基类,它是所有的具体粒子系统的父类Psystem类:
5.结论
雨雪粒子系统编写完成后按照如图1所示的过滤器连接图连接。
运行显示效果如下,细细的雪花随着视频的进行,从视频画面上飘过,结合外围设备的应用,模拟出逼真的场景(如图2所示)。
通过前面的介绍,这种使用D3D中的粒子系统移植到DSHOW平台的方案,很好的解决了视频实时叠加粒子系统模拟自然环境的问题。
参考文献
[1]陆其明.Directshow开发指南[M].北京:清华大学出版社,2003.
[2]Frank Luna DirectX 9 3D 游戏程序设计入门[M].
作者简介:陈辉(1962—),男,大学本科,研究方向:军事模拟器材总体设计、电子通信、计算机仿真。