基于Box2D引擎的物理仿真课件设计与实现
——以“测量平均速度”为例

2021-05-14 08:28
物理通报 2021年5期
关键词:平均速度刚体引擎

胡 海 王 芳

(黄石市第九中学 湖北 黄石 435000)

1 引言

模拟仿真课件是指利用计算机建模和仿真技术来表现某些系统的结构和动态,为学生提供一种可供他们体验和观测的环境,产生各种与现实世界相类似的现象,供学生观察,帮助学生认识和理解这些规律与现象的本质.具有形象直观、经济安全、不受条件限制、控制事物的变化速度等特征,能够激发学生的学习动机,控制学习情境的复杂度和逼真度,有一定的时效性.而物理是一门以观察、实验为基础的学科,由于客观条件的限制,理想实验环境的搭建存在一定的局限性,使实验效果与预期存在较大的误差或难以实现,实验数据的获取和处理也会影响结果的分析.利用计算机仿真技术来模拟虚拟仪器和实验平台等实验环境,演示实验过程,并给学生用自然的交互手段进行实验操作,按照真实实验的逻辑,得出实验结果,克服实际操作中同步同时带来的困难和数据获取的即时性、有效性,利用计算机强大的建模和数据分析能力,将事物进行模型化分析,揭示一定数量关系或变化规律,有助于学生对规律的深刻认识,提高物理核心素养,有效解决学习的难点,可以代替或补充传统的实验手段.

下面以八年级物理“测量平均速度”为例,结合Box2D引擎,阐述此类仿真课件的设计思想和实现方法.

2 Box2D引擎概述

在物理教学或学生学习活动过程中,绝大部分内容都是以2D平面模型为基础向学生传达知识的,旨在引导和培养学生从抽象中建立精准物理模型的思维习惯.Box2D是一个开源、轻量级、高性能的二维物理仿真引擎,可用来模拟2D刚体(类似于物体)的运动和碰撞,结合语言工具,非常适合用来开发中学物理仿真课件,提高制作效率.该引擎集成了大量的物理力学和运动学的计算,将物理模拟过程封装到类对象中,将对物体的操作以简单友好的接口提供给开发者,物体具有质量、体积、密度、摩擦因子等物理属性,开发时只需要调用引擎中相应的对象或方法就可以模拟现实生活中的加速、减速、抛物线运动、万有引力、碰撞反弹等等各种真实的物理运动.广泛应用于PC,Web(HTML5),iOS,Android等平台的物理游戏开发中(例如游戏《愤怒的小鸟》),并被广大的开发者们转译成C#,Java,JavaScript,ActionScript3.0(以下简称AS3)等多个语言版本.开发工具使用AnimateCC(原名Flash),是一种集动画创作与应用程序开发于一身的创作软件,拥有较多的使用人群,使用面向对象的编程语言AS3,为创建富媒体数字动画、高级交互式Web站点、桌面应用程序以及手机应用程序开发提供了功能全面的创作和编辑环境.将课件编译成独立运行的微件,碎片化处理,使用灵活,便于在网络、电子白板等其他教学工具上进行传播学习,还可以发布为Android应用程序在手机或平板上学习.

3 仿真模拟课件设计概述

3.1 设计思想和功能要求

课件设计思想是把解决学习问题放在第一位,突出重点,解决教学或学习中的难点问题、关键问题,提高学生学习的主动性和探究能力,能满足教师教学演示和学生自主学习的需求.在课件结构上,采用模块化思想,变“线性结构”为“非线性结构”,增强课件的交互性和操作的人性化,使课件能够根据教与学的需要随意调度.学习策略上注重“归纳”和“演绎”的思维方法.界面设计尽量简洁,突出主体.以“测平均速度”为例,课件能够实现实验器材的使用、实验平台的搭建、实验数据的采集与分析、课后练习与巩固等.因此具备以下5个功能:

(1)交互模拟各类物理仪器的使用和实验平台的搭建;

(2)模拟呈现真实的物理运动和碰撞;

(3)自然的人机交互能力,真实模拟实验操作过程;

(4)实时获取相关数据和较强的可视化分析能力,便于归纳得出实验结论;

(5)通过教师引导,创造性安排课后拓展实验练习,巩固所学知识.

3.2 课件框架

课件分为基础知识准备部分、情景导入生活中的物理模型、实验平台搭建和调试、实时模拟仿真探究、数据记录与分析、运动可视化分析和课后练习巩固等7部分,结构图如图1所示.课件内的部分物件采用Animate矢量绘图功能进行建模,物理运动和碰撞等环境则采用引擎仿真技术进行建模,其他部分利用AS3的面向对象编程思想,制作成类,便于后续调度使用,整个课件为非线性结构,菜单设计简洁,按需调用或隐藏,教学灵活,适合不同的教学演示和自主探究,展现其独有的教学风格和思想,具有一定的开放性.

图1 “测量平均速度课件”仿真课件功能结构图

4 仿真课件的实现

仿真课件的开发遵循软件开发的一般步骤,依次是需求分析、设计、开发、测试、修改反复直至最后正式发布,仿真课件的制作目标是构建一个虚拟逼真的物理环境,其主要开发流程分为物件类的创建、二维平面的建模和场景交互三大部分.其中物件类的建模由AnimateCC结合AS3语言创建,二维平面物理模型由Box2D AS3版物理引擎创建,并导入先前创建的其他类以备调用,场景交互利用鼠标、键盘、帧频和时间类事件进行代码编写完成,最后进行贴图和反复调试等.

4.1 物件类创建

根据课件需求,需要用到的物件有刻度尺、停表、数据表格和坐标系等,分别命名为Ruler.as,StopWatch.as,vTable.as和Axis.as类,此类物件不需要物理引擎,直接在AnimateCC中编写代码进行数学建模.类文件应该具有良好的类方法和属性,便于在导入类时对其进行操作和设置.

Ruler类用于创建刻度尺.能初始化其分度值和量程属性,通过添加鼠标事件,可实现刻度尺随意拖动和旋转的功能.

StopWatch类用于创建停表.具有获取分钟、秒钟、启动或暂停、复位时间的方法,目的是后期开发时,能够通过调用相应的方法协同物体运动工作.给按钮添加鼠标事件实现交互,实现独立使用.为增加可玩性,还给分针和秒针添加鼠标拖动旋转事件,手动调时和随机时间等.

创建Ruler和StopWatch实例,结合xml,xmlList类随机读取外部图片的物体信息,模拟测量物体的长度填入文本框,用鼠标将停表调到随机指定的时间,完成课前基础知识准备模块的制作,系统自动判断结果,类似于许多网站中的验证码功能,正确便可进入主课程界面的学习.

vTable类用于制作实验数据记录表格.将测量数据填入相应的文本框,利用键盘输入事件对数据进行校验,限制只能输入精确到两位小数的数字(刻度尺要进行估读的学习要求),速度根据需要自动计算结果.

Axis类用于创建坐标系.属性有横轴长度、纵轴长度、横轴刻度、纵轴刻度、横纵轴标注等,方法有绘制坐标点、依点连线、点线颜色、是否网格等,用于可视化图像分析路程与时间变化.

4.2 场景模型搭建

(1)引擎使用的尺度单位是米,需定义像素转换常量;

(2)定义重力向量和刚体的睡眠状态;

(3)创建b2World物理世界对象;

(4)添加帧频或计数器事件,刷新世界让引擎运动起来;

(5)调试视图渲染刚体.

主要代码如下:

import Box2D.*;//导入Box2D相关类

const pixTometer: Number = 30;//定义像素-米转换常量

var world: b2World = new b2World(new b2Vec2(0, 10), true);//定义重力并创建世界

罗扎诺夫在《陀思妥耶夫斯基的一个卓越想法》(Одна из замичательных идей Достоевского)一文中评论了《地下室手记》中提出的思想,提出了“瘙痒”的观念或想法:

stage.addEventListener(Event.ENTER_FRAME, updateWorld); //帧频事件更新世界

var debugSprite = new Sprite();

addChild(debugSprite);//添加渲染精灵

var debug: b2DebugDraw = new b2DebugDraw();

debug.SetSprite(debugSprite);//显示绘制刚体

world.SetDebugDraw(debug);

世界创建好后,便可以向世界添加创建刚体,构建模拟实验平台.根据实验需求,需要创建的静态刚体有方形地面、三角形斜面、方形静态挡板和Box墙面.其中斜面通过鼠标事件可调整高度和倾角,斜面上的挡板可自动调整位置和角度;墙面的作用是防止误操作时使动态物体逃逸实验平台;单击静态挡板可使动态物体初速度为零,在重力作用下自由运动和碰撞.

需要创建的动态刚体有圆形小球、小车、动态挡板,这是实验研究的主要对象.其中小车的创建使用到b2RevoluteJoint旋转关节,将两个圆形动态刚体约束到方形动态刚体上,构建模拟真实的小车;动态挡板刚体添加鼠标事件可进行拖动设置,作用是使物体运动结束,结合Sound类导入外部音频资源,可模拟物理碰撞的声音,声临其境.

同时设置各种刚体的初始位置、动/静态属性、夹具形状、密度、摩擦因子、碰撞弹性恢复系数和约束关节属性、运动阻尼、是否睡眠等,提高引擎运行效能.后期利用自定义属性对这些物体进行贴图美化,达到良好的视觉效果.未贴图效果如图2所示.

图2 “测量平均速度”仿真课件主界面

4.3 交互功能实现

交互性是衡量仿真课件的一个重要指标.上述每个物件有其自身交互功能之外,在整个课件系统中,为完成特定的教学目标和功能,还具有其他可操作功能,接近自然的人机交互能力,还能够协同工作,这得益于AnimateCC强大的事件处理能力.例如,小球、小车、挡板可随鼠标拖动,物理模拟仿真关节,刻度尺和停表自带的交互功能进行长度和时间的测量练习等.单击鼠标撤去挡板,物体即可运动,同时停表即可开始记录,协同操作,解决实际操作过程中不能同时操作的现象,影响实验效果.另外,可视化数据分析能力可实时将时间和路程数据显示在坐标系中,频闪摄影通过绘图函数在帧频事件中按固定时间显示绘制物体所在的位置,展现其轨迹,可视化分析物体的运动特征.

界面交互是非仿真部分,设计则较为简洁易用,只需单击复选框达到显示或隐藏的功能,平行化设计.

5 结束语

Box2D 是一个非常优秀的 2D 开源物理引擎,大大降低了仿真课件的制作难度和复杂程度,结合AnimateCC高效的生产力工具,可以制作出优异的物理仿真课件,尽管Flash插件被许多平台所限制,但在教育群体中被许多教师所使用,也很容易转移到其他平台继续开发.在教学中,利用课件进行建模和数据可视化分析,培养学生的科学思维,自然的人机交互操作进行科学探究,使学生形成正确的物理观念和科学态度,提高物理核心素养.如果将课件通过网络发放给学生,安排一定的实验练习(例如测量小球从斜面下滑的平均速度、小球自由落体的平均速度、指定斜面的倾角测出小车下滑的平均速度等),将课堂进行扩展延伸,打破时间和空间的限制,促进课堂教学的深层次改革,更有利于培养学生的创新能力.通过实践教学发现,学生也非常喜欢.仿真技术提供生动、逼真的物理模拟平台,解决了学习过程中的实验操作难点,实现了“以教促学”的教学方式向“以学生为主体”“学生自主探究学习”方式转变,在提高课程核心素养中发挥着越来越重要的作用.

猜你喜欢
平均速度刚体引擎
“运动的快慢”“测量平均速度”知识巩固
新海珠,新引擎,新活力!
探究物体的平均速度
三线摆测刚体转动惯量误差分析及改进
『运动的快慢』『测量平均速度』练习
把脉平均速度的测量
三生 三大引擎齐发力
车载冷发射系统多刚体动力学快速仿真研究
蓝谷: “涉蓝”新引擎
地震作用下承台刚体假定的适用性分析