交互3D技术在物质结构教学中的应用,本文主要内容关键词为:物质论文,结构论文,技术论文,教学中论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
一、物质结构教学与交互3D技术
物质结构知识是化学教学中的难点和重点,是对微观世界的进一步了解和认识,是深入掌握物质性质及用途的关键。学生在学习杂化轨道、晶体结构、分子的空间构型与分子的极性等内容时感觉难度较大,因为这些知识较抽象对微观想象能力的要求较高。化学课本中设置了大量的三维模型图片来帮助学生对这部分化学知识的学习。在多媒体教学设计中,也广泛使用了三维素材,但这些素材大都是图片或视频动画,没有交互的功能,不适合于交互式的多媒体教学。
交互的3D世界更直观、形象、生动,能让学生理解、掌握物质结构知识,更能激发学生学习化学的兴趣,培养他们探索化学微观世界的能力,发挥他们在学习中的主动性。交互的3D技术是多媒体设计的难点,这些交互的3D技术大都在游戏或商业产品展示等特殊领域中出现。交互的3D技术一般是用编程语言利用Open GL、Direct 3D等技术实现的,工作量大且设计周期长。而常见的多媒体制作软件如:Flash、Authorware、PowerPoint对于交互3D却是无能为力,它们不能用于设计实时的交互3D课件。
在位数不多的具备设计交互3D的软件中,Virtools Dev表现更为突出。下面就详细介绍怎样用Virtoots Dev软件来实现物质结构中的多媒体交互3D。
二、初识Virtools Dev
Virtools Dev(http://www.Virtools.com)是具备丰富交互行为模块的实时3D环境虚拟编辑软件,其3D作品可应用于教学多媒体、Web 3D、计算机游戏、产品展示等方面。Virtools Dev采用了可视化的实时3D操作界面,使用资源十分丰富,如3D模型、2D图形、声音以及视频文件,3D模型可由3dmax、Maya等3d软件生成。Virtools Dev能识别3D模型中的各种信息(如灯光、贴图、运动变化等),使得设计3D作品更方便、逼真。
Virtools Dev提供了许多行为模块(Building Blocks),使用行为模块就像堆积木一样,用鼠标将行为模块拖放到相应的对象上并设置一定的参数,通过行为模块的“堆积”把各种对象有机地整合在一起,以流程图的方式决定了行为模块的执行次序,形成了一个完整的具有复杂交互内容的3D虚拟世界。
Virtools Dev生成的文件体积小(200 KB左右),且能生成网页格式,用户只需安装Virtools插件便可浏览含Virtools文档的网页,其3D场景的渲染速度很快,所以Virtools Dev十分适用于Web 3D,可设计网络教学作品。
三、在物质结构中用Virtools Dev实现交互3D
由于大家平时使用3d max较多,故本文中使用的3D资源由3d max制作。在制作3D模型时对于由多个几何体组成的物体(如分子球棍模型)一定要创建为复合物体,在创建时要用“连接”的方式才能保持各几何体的材质。这样在Virtools Dev中只出现一个3D对象,便于控制整个分子模型。如果要操作分子模型中的某原子和整个分子的变化,不需创建复合物体,只要在输出时选择Characters(角色)选项并保存在VirtoolsDev资源库中的Characters目录中,在Virtools Dev中既可控制Characters又可控制Characters中的各个部分。
1.认识手性分子
手性分子就像生活中的左手与右手一样看似相同但却有区别,在三维空间不能完全重叠。即使有了分子球棍模型,但由于模型的碰撞,导致在化学教学中不能真实地进行分子模型在三维空间完全重叠的演示。在Virtools Dev中如果不为3D对象设置障碍功能,那么3D对象可相互穿透、重叠,可实现真正的完全重叠,更有利于学生对手性分子的认识,理解对映异构现象的本质。
3D对象的移动、旋转都是基于三维坐标轴,为了方便用户能在三维空间准确地移动分子模型进行重叠,设计时可允许分子模型只在某一轴上移动,所以要预先把分子模型放在该轴上。在3d max中先制作一分子模型并选中,点击菜单工具栏中的“镜像”工具,参数设置如图1所示,这样在x轴方向复制2个镜像分子(这2个分子能重叠),导出文件到相应的资源库目录中。
图1
在Virtools Dev中只需设计2个功能,一是只能沿x轴移动分子模型,二是在三维方向旋转分子模型。点击Level Manager(层级管理器)并给Level创建2个script(脚本)并分别命名为control_model与mouse_pick,在Schematic(脚本流程图)窗口中层开control_model与mouse_pick脚本并用鼠标拖动相应的Building Blocks(交互行为模块)到脚本窗口中进行设计连接,其流程图如图2所示。
图2
mouse_pick的功能是:当操作者用鼠标点击分子模型时,pickobject模块获取鼠标传递的参数并转化为3D对象名称赋值给3d_name变量。
control_model的功能是:当使用者按下Switch On Key行为模块中设定的键时,Switch On Key模块会把3d_name变量中的3D对象名称传递给Translate(移动)或Rotate(旋转)行为模块进行控制分子模型,在Translate模块中设置只能沿x轴方向移动分子模型。
2.探索金属晶体的堆积方式
六方堆积、面心六方堆积、体心立方堆积是金属晶体中金属原子的常见堆积方式,这些堆积是怎样形成的?《物质结构与性质》选修模块教材(苏教版)中从小球的平面内的排列方式及层与层的堆积形式来描述的。这部分知识十分抽象,很难理解,即使用乒乓球等小球进行堆积演示,由于小球之间的滑动导致很难做成功。若能用交互3D技术来实现金属原子间的堆积过程及形成的堆积方式,将会化解教学中的这一难点。下面仅举六方堆积的设计来说明在这方面的应用方法。
设计要求:使用者在操作过程中就像在真实世界中一样,能观察到层与层之间的小球堆积重叠过程,在堆积一定层数后能逐一拆除各小球直到形成六方堆积的晶胞结构,晶胞中的堆积小球能慢慢变小最终展现出更易观察的球棍模型。
解决思路:根据六方堆积的晶胞空间结构,可制作按ABA方式堆积的3层小球。由于要任意控制各个小球及构成的晶胞,特别是用户要通过鼠标来进行拆除各小球显现晶胞结构,要求各小球本身就是独立的3D对象,故不能以Characters(角色)输出。最佳方法是利用Virtools Dev中的Array(列阵),把第1层、第2层、第3层及晶胞中的小球名称储存在各自的Array中(Array的用途相当于程序语言中的数据库),通过行为模块以循环、判断等算法进行灵活地处理列阵中各小球的变化。经过这样设计,巧妙地化解了六方晶胞与各层小球之间的双重属性关系,使程序流程变得灵活而又简单。
在3d max中制作好3层已按ABA方式堆积的小球,为了在Virtools Dev中便于管理各3D对象应给各小球取有规律的名称。如第n层中的小球命名为n_01、n_02、n_03……(n表示层数),而遇到晶胞中的小球则在末尾加字母“c”进行区别,如2_08c表示该小球在第二层中序号为8而且是在晶胞中。在命名时可选择某一层小球(便于选择可隐藏其他层)按规律逐一命名,在选定晶胞结构时可选一小球便隐藏掉该球直至构成晶胞结构,给晶胞中的小球名称末尾加“c”进行标识。制作晶胞的骨架时先创建一个六棱柱,再用修改面板中的晶格化进行变化生成骨架,调节大小并调整位置使其藏匿在晶胞中(图3),输出生成Virtools Dev资源。
在Virtools Dev中创建4个Array分别为Array_1、Array_2、Array_3、Array_c,设置好字段并分别根据名称规律储存第1层、第2层、第3层及晶胞中小球的名称,行为模块对各小球的控制都是通过各自的Array来实现。Iterate行为模块(其位置为Logics/Array)具有搜索Array中各行(row)并返回各行信息的功能,其模块有出、入口(Out、In接口)和循环出、入口(Loop Out和Loop In接口),所以通过Iterate行为模块中接口的连接对Array的循环操作就相当于程序语言中用While循环语句对数据库进行操作,可见行为模块间的设计连接就是程序设计过程。
图3
整个设计分2部分,一是数据初始化,二是控制3D对象。数据初始化的功能是作品开始运行时决定每一3D对象是否要出场,用Show或Hide放在Iterate行为模块的循环中分别对Array_1、Aray_2、Array_3及晶胞骨架进行控制,开始时只要显示第3层的小球即Array_3。
根据用户的操作把控制3D对象分成3步,一为堆积小球,二为任意拆除各小球形成晶胞,三为晶胞由堆积模型演化为球棍模型。堆积小球可按第2层、第1层中的小球依照Array_2、Array_1中的次序逐一显示就形成了整个堆积过程。为了体现小球在堆积中的先后次序,在Iterate模块控制相应Array的循环执行中必须给每个小球的显示进行延时,可用Bezier Progression行为模块连接在Iterate模块的Loop Out接口进行循环延时,流程图如图4所示。在控制第1层(即最后层)小球的Iterate模块的Out接口连接用户的拆球事件,这就确保了所有小球堆积完后用户才能用鼠标点击任意小球进行拆除,流程图如图5所示。Mouse Waiter模块获取鼠标所点的3D对象传递给pick object模块进行转化信息,GetKey Row行为模块从pick object中得到鼠标所点小球的名称并在Array_c(晶胞列阵)中寻找该小球,若找不到则隐藏该小球(即在Not Found接口处放置Hide模块),这样就保证用户在不断点击后最终只剩下晶胞结构。在堆积模型演化为球棍模型中,可设置用户点击晶胞中位于某面心的小球(用户在拆球过程中不易点击到该球)激发模型的演化行为,流程图如图6所示。用Bezier Progression行为模块控制小球变小的程度和快慢,由于晶胞中各小球是同时在不断变小到一定程度,故Iterate模块控制Array_c的循环要套嵌在Bezier Progression模块的循环内才能实现晶胞中各小球的同步变化。当各小球变化到一定程度便跳出Bezier Progression模块的循环,再用Show模块把晶胞的骨架显示出来。整个运行操作结果如图7所示:其中a为拆球过程,b为拆球后形成的六方堆积晶胞,c是晶胞在不断变小,d是显示出骨架的晶胞。
图4
图5
图6
图7
3.领悟晶胞中微粒的平均数
晶胞中微粒的平均数计算的关键是解决晶胞中各微粒被多少个晶胞共享,这要展开学生丰富的三维空间想象能力,下面就用交互3D技术来展示在晶胞中不同位置的微粒被晶胞共享的过程,使学生能真正理解晶胞中微粒的平均数。图8是位于晶胞顶点的微粒平均占1/8的运行界面图,在操作时用户只需用鼠标点击晶胞中不同位置的微粒,便会出现相应的微粒被不同数目的晶胞共享的动态过程,提升了三维空间的想象能力。
在3dmax中创建一个晶胞及顶点、棱、面上的微粒(由3个球体与一个立方体组成),用创建复合物体的方法创建图8中的一个1/8顶点并用镜像复制的方法进行复制,在三维空间组成一个由8部分构成的完整顶点模型。在Virtools Dev中只要控制这8部分对象的组成与运动就能形成晶胞中顶点、棱、面上的微粒被切分的过程。用户在点击不同位置的微粒时如何能方便地控制这8部分对象的运动变化呢?可建立一个Array(列阵),在该Array中加入8个1/8对象的名称及其在顶点、棱、面3种不同情况下的三维运动坐标,如图9所示。例如当用户点击面上的小球时,只需调用Array中的名称及men_1三维坐标数据进行循环移动就实现了这些对象的组成与运动。点击棱上的小球调用men_2中坐标数据,点击顶点上的小球调用men_3中坐标数据,其模块设计流程图如图10所示。
图8
图9
图10
四、交互3D技术在物质结构中的应用体会
本文介绍的设计交互3D的方法具有制作快速、灵活、效果逼真、交互性强的优点。三维模型由3d max生成,在Virtools Dev中只需拖动相应的行为模块进行连接便可设计出具有交互3D功能的作品供学生在网络或本地学习。掌握了设计方法后对于3D对象的一般控制只需十多分钟便可设计、制作完成,效率很高。运用Virtools Dev中500多个行为模块(Building Blocks)可设计出灵活、复杂、互动的作品,这完全能满足教学中的各种需要。
用Virtools Dev设计的三维作品运行迅速,三维渲染逼真、生动,使物质结构教学变得更生动、更丰富。学生通过交互3D作品可进一步加强对物质结构知识的理解,提高他们的想象能力和思维探索能力,激发了他们的学习兴趣,提高了课堂教学效率。