ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:21.44KB ,
资源ID:7225425      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7225425.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Havok Xtra帮助文件.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Havok Xtra帮助文件.docx

1、Havok Xtra帮助文件Havok Xtra简介Havok Xtra是Macromedia Director的一个完全整合的刚体物理模拟引擎。Havok Xtra提供对物理属性和事件的全面接口,便于你对模拟世界的完全控制。它使你能够对物理物体的属性赋值(例如质量和弹力)施加力量、推力或转力矩,以及设定速度和动力。你也能记录特定的刚体碰撞,或甚至完全使碰撞失效。支持输入Havok HKE(Havok Exporter)文件,Havok HKE文件支持在3D建模工具(例如 3ds max)中构建的完全的物理场景而无需编写额外的Lingo脚本。Havok Xtra自带一个行为库以简化物理场景的创

2、建,此外还附有一系列的产品演示以展示其引擎的许多强大特性。Havok演员包含将一个静态3D世界变成一个动态物理模拟场景所需的全部信息。每个Havok演员被连接到一个Director演员。当动态场景被视为一个3D精灵时,无需从一个Havok演员直接创建精灵。在设置和更新一个Havok控制的3D场景时有一系列进程。 Initialization including creation of rigid bodies.初始化包括刚体创造。 将外部输入例如力量,转力矩应用于模拟。 下一步运行模拟,将场景带入一个新的天地。 关闭。这个快速入门包括Havok Xtra的核心功能。它假设用户基本了解Macro

3、media 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文件的Shoc

4、kwave 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菜单。

5、 从File菜单选择Import。. 从对话框选择需要的Havok Export(HKE)文件。以上将Havok 演员加入演员表。在当前舞台播放影片将会展现一个静态世界。为创建动态世界,应对Havok 模拟进行初始化并与3D场景关联。拖拉Physics(HKE)行为(位于Havok Setup行为库)于呈现3D 场景外观的精灵上可以达成上述目的确定Havok演员参数被设置为Havok Physics Scene 演员的名称。该行为对Havok模拟进行初始化(将3D 物体和HKE文件的刚体关联)。影片的每帧之后,该行为在物理模拟中推动时间的进度,并在物理控制下更新3D物体的位置和方位。当该行为被

6、拖拉于舞台上时, 你可以设置其它参数,但是采用默认值通常最佳。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模型了。以下没有采用可被输入的Hav

7、ok 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行为库)。在当前舞台播放影片将

8、会展现一个静态世界,也就是|我们没有在 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

9、.addModifier(#meshdeform) hk.makeFixedRigidBody(m.name) - 创建文本 m = s.model(Text01) m.addModifier(#meshdeform) hk.makeMovableRigidBody(m.name, 100.0, false)end除了创造刚体,在此我们也可以调整他们的默认物理参数。运行电影将产生一些物理动画 (也就是Text01物体在地心引力作用下下落)。以下没有采用可被输入的Havok Export(HKE)文件和Shockwave 3D(W3D)文件。因此显示和物理数据必须由Lingo直接创建。首先,创建

10、空的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演员

11、参数被设置为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 = 100

12、m = s.newmodel(GroundPlane, mr)m.transform.rotation = vector(-90,0,0)m.transform.position = vector(0,250,-200)m.addModifier(#meshdeform)hk.makeFixedRigidBody(m.name, true, #box)- 对准摄影机c = s.camera1c.transform.position = vector(50,-50,-100)c.pointat(m.transform.position + vector(0,0,50), vector(0,0,1

13、)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(m.name, 1000.0, tru

14、e, #box)end我们将以一个新的影片开始(FileNewMovie或Ctrl+n)。每个影片需要一个演员表。我们的影片将由一个3D场景和它的物理呈现所组成。使用Insert菜单增加一个空白的Havok Physics Scene演员: InsertMedia Element Havok Physics Scene。使用InsertMedia ElementShockwave 3D增加一个空白的Shockwave 3D演员。拖拉Shockwave 3D演员于舞台上创建一个精灵。当前我们的3D场景是空的。我们现在将用一些简单的物体将其组建起来。这可由一个简单的Lingo脚本来完成。使用主菜单

15、的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.newModelRe

16、source(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.n

17、ewModelResource(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 createPhysica

18、lObjects me- 长方体m = w.model(TheBox)m.addModifier(#meshdeform)rb = hk.makeMovableRigidBody(m.name, 50)- 球体m = w.model(TheBall)m.addModifier(#meshdeform)rb = hk.makeMovableRigidBody(m.name, 100)rb.restitution = 1rb.friction = 0- 平面m = w.model(TheGround) m.addModifier(#meshdeform)rb = hk.makeFixedRigid

19、Body(m.name)endHavok Xtra的语句是以粗体突出显示的。以上函数和属性的细节请参阅Havok Xtra Lingo参考手册。在此我们仅简单介绍。每个物理模拟场景一定被关联到一个可视的3D等价物体。为创建此关联,hk.initialize()函数为Shockwave 3D演员呈现一个可视的场景提供了一个参考示例。提示:在与我们的物理模拟有关的任何其他的行为能预先作用之前,hk.initialize()应首先被调用。在初始化之后,脚本创建了许多在场景中可视的3D模型。一旦创建完毕,控制这些模型并赋予它们物理属性设置刚体则变得可能。在createPhysicalObjects函数

20、中,我们将TheBox和TheBall物体设置为刚体。可移动刚体有一个块,可以自由移动、反弹和旋转。TheGround被创建为一个固定刚体,不会移动而且不会被撞击它的物体所影响。在此我们已经创建了一个简单的物理3D场景。然而,如果播放影片,舞台精灵仍然呈现一个静态的场景。这是因为在每一帧中,物理模拟应前进。Havok Xtra将其视为步进,并提供一个Lingo函数以运行此动作。on exitFrame mehk.step()endon endSprite mehk.shutdown()w.resetWorld()end将上述语句加入你的行为脚本。在每一帧结束而影片尚未前进至下一帧时,对步进函数

21、的调用(hk.step)将预先作用。这导致模拟计算每个模型的新位置和方位。这意味着在新的一帧开始时,舞台精灵的模型将被重绘。此外,当影片停止而我们未重设3D场景为原始空白状态前,也需要关闭物理模拟。既然我们的场景设置为物理精确样式,我们则可以开始控制它并使其相互作用。 Havok Xtra 提供特效函数以作用于不同的刚体。刚体可以直接的(经由多种MoveTo函数)或间接的(经由应用力量、推力或转力矩的模拟)改变他们的位置和方向。除了这些标准函数,Havok Xtra也以缓冲器和弹簧的形式提供完全和简单的限制。与真实世界一样,弹簧也有其静止长度、弹力和作用。缓冲器使人联想到限制器。直线缓冲器限制

22、刚体位置。缓冲位置可能被限制在场景中一个具体的点或相对于另一个刚体的偏移点。后一种限制方式,会允许类似于刚体链的产生。角度缓冲器限制刚体旋转。这意谓着一个长方体的方位可能被限制,以便其平衡一个拐角等类似情况。我们现在将改变我们的当前场景,以使它比一个长方体于一个球体上下落的场景更有趣些。可增加一个直线缓冲器以限制长方体模型的位置,而仍然允许它旋转。此外,可增加一个强有力的弹簧,关联于球体模型与锁定位置的长方体之间。此弹簧可不断地引起球体碰撞长方体,从而产生有趣而杂乱的交互作用。on createDashpot me worldPoint = w.model(TheBox).transform.

23、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脚本。将其加入行为脚本。此外

24、,于物理物体创建之后在beginSprite里调用这二个新函数。运行影片,将出现类似于以上舞台的情景。除刚体的位置和方位之外,Havok Xtra可提供大量的刚体参数。我们可随时获得刚体的速度,或了解刚体被施加了多大力量。我们也可获得有关刚体碰撞的参数。为完成我们的示例场景,我们将增加一段Lingo脚本语句, 使每一次球体撞击长方体时都播放声音。代码包括两段。首先我们应告知Havok Xtra我们关注的是球体刚体和长方体刚体之间的碰撞。on beginSprite me w = member( 3 )hk = member( 4 )w.resetWorld()hk.initialize( w,

25、 0.1, 1 )createVisibleObjects()createPhysicalObjects()createDashpot()createSpring()hk.registerInterest( TheBox, TheBall, 10, 0, #collision, me )end以上脚本展现beginSprite函数的最终版本。粗体显示的语句是关注碰撞的地方。当在TheBox和TheBall之间发生碰撞时,第二段代码(碰撞函数)将被调用。以下是碰撞函数的脚本。提示:以下的代码假设要播放的声音文件存储为影片演员Sound。on collision me, detailssound(

26、1).volume = integer( 255 / power( details5, 1.1 ) )sound(1).play( member( Sound ) )end如场景一样,此碰撞callback函数接受一个称为details的参数。此参数包含有关碰撞的全部已知数据,包括有关的刚体名称、碰撞发生的点位和碰撞的相对方位。最终传给callback的数据是表现碰撞强劲程度的一个变量。以上例子中我们使用此变量给我们要播放的声音赋值。这意味着球体碰撞长方体越强劲,声音越大。示例场景只涉及了Havok Xtra的基础。当经由Lingo脚本创建全部内容变得不切实际时,也可从一个3D建模工具中输出H

27、avok Physics Scene(.HKE)文件并将其作为一个演员输入。这类似于能从许多的3D建模工具中输出的Shockwave 3D (.W3D)文件。这允许极端地物理精确3D场景的高速创建。欲获得3D建模工具插件的详情,请参阅Havok网站。与输出支持一样,创建了许多的行为。可以获取这些行为并象任何Macromedia Director的内部可用行为一样使用。它们由两部分组成:设置和控制。设置行为包含在快速入门中讨论的基本功能。当其他行为处理刚体或弹簧和缓冲器创建时,Physics(HKE)和Physics(No HKE)行为处理初始化、步进和关闭。控制行为提供了与物理模拟场景进行更多复杂交互的示例。例如,移动模型介绍经由鼠标操纵刚体,而驱动模型允许象开车一样控制任何刚体。所有这些行为可以根据你的需要使用、研究和修改。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1