




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Havok Xtra简介Havok Xtra是Macromedia Director的一个完全整合的刚体物理模拟引擎。Havok Xtra提供对物理属性和事件的全面接口,便于你对模拟世界的完全控制。它使你能够对物理物体的属性赋值(例如质量和弹力)施加力量、推力或转力矩,以及设定速度和动力。你也能记录特定的刚体碰撞,或甚至完全使碰撞失效。支持输入Havok HKE(Havok Exporter)文件,Havok HKE文件支持在3D建模工具(例如 3ds max)中构建的完全的物理场景而无需编写额外的Lingo脚本。Havok Xtra自带一个行为库以简化物理场景的创建,此外还附有一系列的产品演示以展示其引擎的许多强大特性。Havok演员包含将一个静态3D世界变成一个动态物理模拟场景所需的全部信息。每个Havok演员被连接到一个Director演员。当动态场景被视为一个3D精灵时,无需从一个Havok演员直接创建精灵。在设置和更新一个Havok控制的3D场景时有一系列进程。 Initialization including creation of rigid bodies.初始化包括刚体创造。 将外部输入例如力量,转力矩应用于模拟。 下一步运行模拟,将场景带入一个新的天地。 关闭。这个快速入门包括Havok Xtra的核心功能。它假设用户基本了解Macromedia Director和Lingo脚本语言。按照快速入门,我们可以创建一个具备物理属性的简单场景,并介绍其主要的建筑组成。欲获得更多的使用Havok Xtra的信息,请参考在 Havok Xtra developer站点上的Havok Xtra Lingo参考手册、Havok Xtra行为参考手册以及大量其它文档。.使用Havok Xtra创建物理模拟有三个方法。 使用W3D和HKE文件: 从外部3D建模工具将3D场景输出为W3D文件,将物理数据输入为Havok HKE文件。这样不需要额外的Lingo脚本。 使用一个W3D文件: 使用一个在外部3D建模工具创建并保存为W3D文件的Shockwave 3D演员,在Shockwave 3D场景中将Havok刚体和3D模型关联。 通过Lingo:动态3D场景中的全部信息均由Lingo创建。以下假设已经在外部3D建模工具中创建了一个场景,并分别输出了呈现3D参数和物理参数的W3D和HKE文件。欲获得此操作的更多信息,请参考 Shockwave3D Exporter和 Havok Exporter文档。首先输入3D场景: 打开File菜单。 从File菜单选择Import。 从对话框选择需要的Shockwave 3D(W3D)文件。以上将3D 演员加入演员表,其后可以将演员拖入舞台。现在输入必需的 Havok 演员: 打开File菜单。 从File菜单选择Import。. 从对话框选择需要的Havok Export(HKE)文件。以上将Havok 演员加入演员表。在当前舞台播放影片将会展现一个静态世界。为创建动态世界,应对Havok 模拟进行初始化并与3D场景关联。拖拉Physics(HKE)行为(位于Havok Setup行为库)于呈现3D 场景外观的精灵上可以达成上述目的确定Havok演员参数被设置为Havok Physics Scene 演员的名称。该行为对Havok模拟进行初始化(将3D 物体和HKE文件的刚体关联)。影片的每帧之后,该行为在物理模拟中推动时间的进度,并在物理控制下更新3D物体的位置和方位。当该行为被拖拉于舞台上时, 你可以设置其它参数,但是采用默认值通常最佳。At this po此时,为实现额外的物理效果,可将其它行为拖入舞台上。例如,拖拉Move Model行为 (位于Havok Control行为库)于舞台上,选择Which Model parameter参数为Any Model。而后拖拉一个Mouse Left trigger(位于3D Triggers行为库)于舞台上之上,将此trigger与Move Model行为(在Select a Group and its Action参数中可选择)关联。现在就可以用鼠标指针和左键在场景中选择并移动3D模型了。以下没有采用可被输入的Havok Export(HKE)文件。因此物理数据必须由Lingo提供或由3D场景直接获得。首先我们输入3D场景: 打开File菜单。 从File菜单选择Import。 从对话框选择需要的Shockwave 3D(W3D)文件。以上将3D演员加入演员表,其后可以将演员拖入舞台。创建空的 Havok 模拟: 打开Insert菜单。 从Insert菜单选择Media Element。 从Media Element子菜单选择Havok Physics Scene。以上把一个空的Havok演员加入演员表。现在把一个物理(没有 HKE)行为加入演员表(位于Havok Setup行为库)。在当前舞台播放影片将会展现一个静态世界,也就是|我们没有在 W3D 文件中将任何的刚体与3D模型关联。现在我们需要藉由编辑物理(没有HKE)行为产生Havok模拟数据。以下的Lingo函数创建了两个加入到Havok 模拟并与两个W3D文件中的3D模型关联的刚体:Box01和 Text01。前者是一个固定的球形刚体,也就是在模拟时可能无法移动。后者是一个可动的凹面物体。以下函数的详情,请参阅Havok Xtra Lingo参考手册。on createscene s = member( HelloWorld ) hk = member( BlankHavok ) - 创建平面 m = s.model(Box01) m.addModifier(#meshdeform) hk.makeFixedRigidBody() - 创建文本 m = s.model(Text01) m.addModifier(#meshdeform) hk.makeMovableRigidBody(, 100.0, false)end除了创造刚体,在此我们也可以调整他们的默认物理参数。运行电影将产生一些物理动画 (也就是Text01物体在地心引力作用下下落)。以下没有采用可被输入的Havok Export(HKE)文件和Shockwave 3D(W3D)文件。因此显示和物理数据必须由Lingo直接创建。首先,创建空的3D场景: 打开Insert菜单。 从Insert菜单选择Media Element。 从Media Element子菜单选择Shockwave 3D。以上将3D演员加入演员表,其后可以将演员拖入舞台。创建空的 Havok 模拟: 打开Insert菜单。 从Insert菜单选择Media Element。 从Media Element子菜单选择Havok Physics Scene。This adds an empty Havok cast以上把一个空的Havok演员加入演员表。现在把一个物理(没有 HKE)行为通过拖上舞台而加入演员表(位于Havok Setup行为库)确定Havok演员参数被设置为Havok Physics Scene 演员的名称。现在我们需要从头创建物理和3D场景。以下的Lingo函数为场景创建3D模型,随后是刚体。此种情况下,原始的地面和文本刚体实际上是按轴对称的网格物体创建的。on createScenes = member( BlankScene )hk = member( BlankHavok )txt = member( Text )s.resetWorld()- 创建平面mr = s.newmodelresource(GroundPlaneRes, #box)mr.width = 150mr.length = 50mr.height = 100m = s.newmodel(GroundPlane, mr)m.transform.rotation = vector(-90,0,0)m.transform.position = vector(0,250,-200)m.addModifier(#meshdeform)hk.makeFixedRigidBody(, true, #box)- 对准摄影机c = s.camera1c.transform.position = vector(50,-50,-100)c.pointat(m.transform.position + vector(0,0,50), vector(0,0,1)c.hither = 1c.yon = 1000- 创建文本txt.text = Hello Worldmr = txt.extrude3D( s )mr.bevelType = 1 mr.bevelDepth = 0.1mr.smoothness = 6 m = s.newModel(Text, mr)m.transform.position = vector(-75,250,0)m.transform.rotation = vector(90,0,0)m.addModifier(#meshdeform)hk.makeMovableRigidBody(, 1000.0, true, #box)end我们将以一个新的影片开始(FileNewMovie或Ctrl+n)。每个影片需要一个演员表。我们的影片将由一个3D场景和它的物理呈现所组成。使用Insert菜单增加一个空白的Havok Physics Scene演员: InsertMedia Element Havok Physics Scene。使用InsertMedia ElementShockwave 3D增加一个空白的Shockwave 3D演员。拖拉Shockwave 3D演员于舞台上创建一个精灵。当前我们的3D场景是空的。我们现在将用一些简单的物体将其组建起来。这可由一个简单的Lingo脚本来完成。使用主菜单的WindowInspectorsBehavior,打开+图标并选择New Behavior以增加一个新的行为。拖拉此新行为于3D精灵上。把下列本文加入新创建的Lingo行为。这个脚本创建一个由二个盒子和一个球体组成的简单场景。property w, hkon beginSprite mehk = member( 1 )w = member( 2 )hk.initialize( w, 0.1, 1 )createVisibleObjects()createPhysicalObjects()endon createVisibleObjects me- 创建长方体mr = w.newModelResource(TheBoxRes, #box)mr.width = 2mr.height = 2mr.length = 2m = w.newModel(TheBox, mr)m.transform.rotation = vector(0,5,0)m.transform.position = vector(0,0,10)- 创建球体mr = w.newModelResource(TheBallRes, #sphere)mr.radius = 1m = w.newModel(TheBall, mr)m.transform.position = vector(0,0,5)- 创建平面mr = w.newModelResource(TheGroundRes, #box)mr.width = 15mr.height = 10mr.length = 1m = w.newModel(TheGround, mr) - 对准摄影机c = w.camera1c.transform.position = vector(0,20,20)c.pointat(m.transform.position + vector(0,0,5), vector(0,0,1)c.hither = 1c.yon = 1000w.directionalPreset = #bottomLeftendon createPhysicalObjects me- 长方体m = w.model(TheBox)m.addModifier(#meshdeform)rb = hk.makeMovableRigidBody(, 50)- 球体m = w.model(TheBall)m.addModifier(#meshdeform)rb = hk.makeMovableRigidBody(, 100)rb.restitution = 1rb.friction = 0- 平面m = w.model(TheGround) m.addModifier(#meshdeform)rb = hk.makeFixedRigidBody()endHavok Xtra的语句是以粗体突出显示的。以上函数和属性的细节请参阅Havok Xtra Lingo参考手册。在此我们仅简单介绍。每个物理模拟场景一定被关联到一个可视的3D等价物体。为创建此关联,hk.initialize()函数为Shockwave 3D演员呈现一个可视的场景提供了一个参考示例。提示:在与我们的物理模拟有关的任何其他的行为能预先作用之前,hk.initialize()应首先被调用。在初始化之后,脚本创建了许多在场景中可视的3D模型。一旦创建完毕,控制这些模型并赋予它们物理属性设置刚体则变得可能。在createPhysicalObjects函数中,我们将TheBox和TheBall物体设置为刚体。可移动刚体有一个块,可以自由移动、反弹和旋转。TheGround被创建为一个固定刚体,不会移动而且不会被撞击它的物体所影响。在此我们已经创建了一个简单的物理3D场景。然而,如果播放影片,舞台精灵仍然呈现一个静态的场景。这是因为在每一帧中,物理模拟应前进。Havok Xtra将其视为步进,并提供一个Lingo函数以运行此动作。on exitFrame mehk.step()endon endSprite mehk.shutdown()w.resetWorld()end将上述语句加入你的行为脚本。在每一帧结束而影片尚未前进至下一帧时,对步进函数的调用(hk.step)将预先作用。这导致模拟计算每个模型的新位置和方位。这意味着在新的一帧开始时,舞台精灵的模型将被重绘。此外,当影片停止而我们未重设3D场景为原始空白状态前,也需要关闭物理模拟。既然我们的场景设置为物理精确样式,我们则可以开始控制它并使其相互作用。 Havok Xtra 提供特效函数以作用于不同的刚体。刚体可以直接的(经由多种MoveTo函数)或间接的(经由应用力量、推力或转力矩的模拟)改变他们的位置和方向。除了这些标准函数,Havok Xtra也以缓冲器和弹簧的形式提供完全和简单的限制。与真实世界一样,弹簧也有其静止长度、弹力和作用。缓冲器使人联想到限制器。直线缓冲器限制刚体位置。缓冲位置可能被限制在场景中一个具体的点或相对于另一个刚体的偏移点。后一种限制方式,会允许类似于刚体链的产生。角度缓冲器限制刚体旋转。这意谓着一个长方体的方位可能被限制,以便其平衡一个拐角等类似情况。我们现在将改变我们的当前场景,以使它比一个长方体于一个球体上下落的场景更有趣些。可增加一个直线缓冲器以限制长方体模型的位置,而仍然允许它旋转。此外,可增加一个强有力的弹簧,关联于球体模型与锁定位置的长方体之间。此弹簧可不断地引起球体碰撞长方体,从而产生有趣而杂乱的交互作用。on createDashpot me worldPoint = w.model(TheBox).transform.position dashpot = hk.makeLinearDashpot( DashpotName, TheBox, worldPoint ) dashpot.strength = 1000 dashpot.damping = 100endon createSpring me spring = hk.makeSpring( SpringName, TheBox, TheBall ) spring.restLength = 3.5 spring.elasticity = 10000 spring.damping = 1end以上为创建直线缓冲器和弹簧的Lingo脚本。将其加入行为脚本。此外,于物理物体创建之后在beginSprite里调用这二个新函数。运行影片,将出现类似于以上舞台的情景。除刚体的位置和方位之外,Havok Xtra可提供大量的刚体参数。我们可随时获得刚体的速度,或了解刚体被施加了多大力量。我们也可获得有关刚体碰撞的参数。为完成我们的示例场景,我们将增加一段Lingo脚本语句, 使每一次球体撞击长方体时都播放声音。代码包括两段。首先我们应告知Havok Xtra我们关注的是球体刚体和长方体刚体之间的碰撞。on beginSprite me w = member( 3 )hk = member( 4 )w.resetWorld()hk.initialize( w, 0.1, 1 )createVisibleObjects()createPhysicalObjects()createDashpot()createSpring()hk.registerInterest( TheBox, TheBall, 10, 0, #collision, me )end以上脚本展现beginSprit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 油品储运工三级安全教育(公司级)考核试卷及答案
- 铸轧工设备维护与保养考核试卷及答案
- 穿经工质量管控考核试卷及答案
- Lesson 14:Happy Memories说课稿-2025-2026学年初中英语冀教版2012八年级上册-冀教版2012
- 工厂能源消耗监测与分析报告
- 海洋环境保护法规执行分析
- 环保尾矿处理技术效果评估报告
- 塑料家具制作工三级安全教育(班组级)考核试卷及答案
- 电线电缆挤橡工岗前考核试卷及答案
- 管涵顶进工成本预算考核试卷及答案
- 小学教学常规管理制度汇编
- 北师大版数学六年级上册第一单元 《圆》 大单元作业设计
- 村委会收养关系证明
- 露天停车场施工方案
- 初中生学习的最佳策略
- 医疗机构中药制剂临床前药效学与安全性研究技术指南
- 拆除工程施工安全培训
- 质量源于设计课件
- 2023年快递员职业技能理论考试题库(600题)
- 郭天祥51单片机教程
- GB 31644-2018食品安全国家标准复合调味料
评论
0/150
提交评论