刚体动力学.docx
- 文档编号:30132086
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:40
- 大小:1.40MB
刚体动力学.docx
《刚体动力学.docx》由会员分享,可在线阅读,更多相关《刚体动力学.docx(40页珍藏版)》请在冰豆网上搜索。
刚体动力学
第十二章粒子和动力学
教学目的与要求
1、了解粒子动力学使用的方向。
2、掌握粒子参数的调节。
3、掌握动力学系统的使用命令。
4.掌握软体与刚体的区分。
教学重点:
粒子系统的应用
教学难点:
粒子参数设置效果
教学课时:
6课时
教学内容与教学过程
一、组织教学
二、新课导入:
3dsMax拥有强大的例子系统,功能众多,可以制作出数不胜数的粒子特效,是特技制作必不可少的工具。
3dsMax还提供了动力学系统,可以进行自然力学和碰撞的仿真,包括刚体、软体、流体一整套动力学解决方案。
本章将通过一些实例来介绍3dsMax以上方面的功能。
三、新课讲解:
(一)创建粒子系统
1、新设定3dsMax系统。
2、择“创建”>几何体>粒子系统,面板上显示出了7重离子类型:
(1)Spray(喷射)和Snow(雪)是最早期的粒子类型,功能很弱,用的不多,已被后来加入的SuperSpray(超级喷射)和Bizzard(暴风雪)例子取代。
(2)SuperSpray(超级喷射)是由一点向外发射粒子,Bizzard(暴风雪)是由一个平面向外发射粒子,这是他们俩最大的区别。
前者适合制作喷火筒、火箭尾部喷气、喷头喷水等效果,后者适合制作下雨、下雪、落叶等效果。
(3)Pcloud(粒子云)提供了一箱粒子供使用,可以用它填充空间,制作云朵,也可以让粒子从箱中流出,制作水滴下落、钢花飞溅下落等效果。
(4)Parry(粒子阵列)主要用于制作爆炸碎片可以将物体粉碎后抛散到空中,制作炸裂、爆破等效果。
(5)PFSource(ParticleFlow)用eventdriven(事件驱动)地工作模式,可以灵活地定义粒子的行为,实现复杂、逼真的的例子效果。
(6)点击Blizzard(暴风雪)钮,在Top(顶)视图中拉出矩形面积框,拨动时间滑块至二十帧,已经可以看到下落的雪花粒子了。
(二)实践制作:
基础粒子训练——流淌的水滴
1、创建粒子系统:
重新设定3dsMax系统,选择创建>几何体>粒子系统,创建一个粒子系统。
2、指定重力影响:
选择创建>空间扭曲>力,点击Gravity(重力)按钮,在Top视图任意位置拖动创建一个重力学系统。
3、调节粒子数目:
选择粒子云,进入修改命令面板,选择底层的Pcloud,进入它的原始设置参数进行参数设置。
4、制作导向板:
选择创建>空间扭曲>Deflectors(导向器),点击Pomniflect(泛方向导向板)按钮,在Top视图中创建一个大的导向板,同时使用链接工具将粒子云绑定到导向板上。
5、调节反弹强度:
在视图中选择泛方向导向板,进入修改命令面板,通过观察进行数值调节,将反弹强度调节到合适的程度。
6、调节摩擦力:
在面板上增大DisplayIcon(显示图标)的长度值,让粒子能在板上进行第二次的反弹,增大Friction(摩擦力),使粒子在导向板上产生减速运动。
7、调节粒子形态:
选择粒子云,进入修改命令面板,进入Pclound最底层参数中,在Particles(标准粒子)项目中进行粒子形态的设置。
8、渲染观看水滴流淌效果。
(三)rector刚体实例——散落的冰块
1、创建场景模型:
选择创建>图形>线,在front视图中创建一条线作为杯子的轮廓线,进入Spline(样条线)次物体级别,选中这条线,点击下面的Outline(轮廓)工具进行修改,使杯子有一定的厚度。
用Lathe(车削)修改器旋转制作杯子模型。
用创剪切角长方体命令和克隆复制命令制作冰块。
在杯子底部创建一个长方体。
2、添加刚体选择集:
点击reactor工具栏上的CreatRigidBodyCollection按钮,创建刚体选择集。
3、简单缸体模拟以及物体属性设置:
对冰块进行质量设置,将杯子属性设置为ConcaveMesh(凹面体)。
4、输出动力学运算结果:
使用reactor工具栏下方的CreatAnimation(创建动画)按钮,先将小冰块移动到杯子上方,然后点击OpenPropertyEditor(打开属性编辑器)按钮,在弹出的属性面板中将Inactive(非活动)的勾取消。
关闭属性面板,点击reactor工具栏下方的CreatAnimation(创建动画),将冰块下落的动画完整地输出到3dsMax中。
5、计算动力学动画:
点击PreviewAnimation(预览动画)按钮,进入预览窗口,按下键盘上的P键,进行动力学动画计算。
添加灯光和材质:
最后根据前面所学的知识为场景添加灯光和材质。
四、小结:
1.实践场景的制作
2.粒子的位置
3.粒子的调节
4.刚体动力学
5.软体动力学
五、作业
散落的乒乓球动画制作
22.3凸面体和凹面体
在reactor中将几何体分为两类物体:
Convex(凸面体)和Concave(凹面体)。
在所谓凸面体是指在这个物体内部的任意两点之间的连接线段都不会穿出这个物体,否则称之为凹面体。
凸面体包括球体、圆柱体、立方体等物体,而茶壶、地形、房屋等物体则属于凹面体。
一般来说,凸面体的物体在进行模拟计算时的速度要远远快于凹面体的模拟计算速度,所以要尽可能地使用凸面体进行模拟计算,并且reactor也允许将凹面体物体视为凸面体物体进行模拟计算,这样将大大提高计算速度。
但是当有其它物体位于凹面体内部时,则不能将其视为凸面体物体,在reactor中,只有凹面体物体的内部才允许包含有其它的物体,例如我们创建一个立方体作为房屋时,就需要将其指定为凹面体类型的物体,这样才能在其内部放置其它一些物体。
22.3.1凸面体测试
当我们不能够完全确定一个物体究竟是凸面体还是凹面体物体时,可以执行reactor中的一个凸面体测试,它可以告诉你这个物体属于何种类型的物体。
(1)选择File>Reset(文件>重设定)命令,重设定3dsmax系统。
(2)选择Create>Geometry>Box(创建>几何体>立方体)命令,在场景中创建一个立方体物体。
(3)选择Create>Geometry>Teapot(创意>几何体>茶壶)命令,再在场景中创建一个茶壶物体。
(4)打开reactor中的Properties(属性)项目面板。
(5)在视图中选择立方体物体,点击Properties(属性)项目面板中的TestConvexity(测试凸面性)钮,立方体物体的属性会被显示为凸面体,如图22.11所示。
图22.11测试立方体凸面性
(6)在视图中选择茶壶物体,点击TestConvexity(测试凸面性)钮,测试结果显示此物体属于凹面体,如图22.12所示。
图22.12测试茶壶凸面性
这个测试结果只能作为一个参考,当我们指定一个物体属性的时候,还要根据实际情况灵活运用,例如当一个球体位于这个立方体物体内部的时候,虽然测试结果显示这个立方体物体属于凸面体,但是我们还是需要将其指定为凹面体,因为只有凹面体物体的内部才能包含有其它物体。
22.3.2指定物体为凸面体
在进行模拟计算之前,必须指定当前场景的物体究竟属于凸面体还是凹面体。
我们不能够简单地根据当前视图中显示的几何体形状来确定它的属性,而是应该参考凸面性测试结果,再根据实际情况指定物体属性。
当然,在条件允许的情况下,尽可能地将其指定为凸面体物体,提高模拟计算的速度。
通过下列五种方式,你可以在reactor中将物体视为凸面体物体。
在物体四周包裹一个看不见的立方体物体。
在物体四周包裹一个看不见的球体物体)。
在物体四周包裹一个看不见的包裹物体。
用另一个不同的凸面体物体来替代物体的几何形态,当一个场景中具有多个重复的相同物体时,使用这种方式可以大大减少文件尺寸,加快计算速度。
使用一个经过优化的几何体来替代当前物体的几何形态。
经过优化的几何体减少了几何形态复杂性(减少了顶点的数量),同样可以加快计算速度。
(1)在当前场景中创建一个刚体集合,将几个简单的不同形态的几何体物体添加到这个刚体集合中。
(2)打开reactor的Properties(属性)面板。
(3)在视图中选择要指定为凸面体的物体。
(4)在Properties(属性)面板中的Convex(凸面体)面板上有五种凸面体指定方式可供选择,你可以选择其中一种方式,将该物体指定为凸面体,如图22.13所示。
图22.13凸面体指定方式
BoudingBox(绑定立方体)
BoundingSphere(绑定球体)
UseMeshConvexHull(使用凸面体壳体)
UseProxyConvexHull(使用替代凸面体壳体)
UseOptimizedConvexHull(使用优化凸面体壳体)
22.3.3指定物体为凹面体
在reactor中有一些物体不能够被指定为凸面体,这时就需要将其指定为凹面体,这样才能够进行正确的模拟计算。
凹面体物体的内部允许包含有其它物体,所以当我们使用一个立方体物体作为房间的时候,就应当将这个立方体物体指定为凹面体。
另外,3dsmax5中的Plane平面物体也需要被指定为凹面体。
你可以使用一个物体的原始的网格物体将其指定为凹面体,另外,也可以使用其它的一个凸面体或者凹面体物体代替这个物体,像凸面体物体一样,也可使用系统经过优化产生的物体来代替这个物体,将其指定为凹面体物体。
(1)打开reactor的Properties(属性)项目面板。
(2)在视图中选择要指定为凹面体的物体。
(3)在Properties(属性)项目面板的Concave(凹面体)面板上有三种凹面体指定方式可供选择,你可以选择其中的一种方式,将该物体指定为凹面体,如图22.14所示。
图22.14凹面体指定方式
UseMesh(使用网格物体)
UseProxyMesh(使用替代网格物体)
?
UseOptimizedMesh(使用优化网格物体)
可以将凸面体的物体指定为凹面体物体,虽然这样会降低模拟计算的速度,但是凹面体的物体可以包含有其它的物体,对于需要精确模拟计算的固体和没有体积的平面物体都可以将其指定为凹面体物体。
22.3.4复合物体
reactor可以将几个网格物体连接起来一个复杂的物体。
在reactor中,刚体通常是由一个或几个几何体组成的。
几何体是组成物体的基本元素,如平面、球体、立方体、圆柱体等都是基本的几何体,由一个以上的几何体组成的刚体称为复合刚体。
复合刚体中每个几何体都具有各自的质量,它们的质量之和为复合刚体的质量。
在reactor程序命令面板的Properties(属性)项目面板中,你可以为复合刚体整体指定弹性和摩擦力的大小。
复合刚体可以模拟密度不均匀的物体,或者将一个凹面体物体分解为几个凸面体物体,这样可以大大加快模拟计算的速度。
创建复合刚体的方法是使用3dsmax中的Goup(群组)功能,其步骤如下:
(1)在视图中选择所有将要成组的物体。
(2)从3dsmax的Group(群组)菜单中选择Group(群组)命令,将选择的物体成组为一个复合的物体,并且为之命名。
(3)在视图中选择刚体集合图标,打开Modify变动命令面板。
(4)在RBCollectionProperties(刚体集合属性)项目面板中点击Add(添加)钮,将复合物体添加到刚体集合之中。
注:
只要将成组后的复合物体添加到刚体集合中,即可将其指定为刚体,而不必将组成复合物体的每个元素物体都指定为刚体。
如果已经将组成刚体的每个元素物体都指定为刚体,需要将这些元素在刚体集合中删除。
在刚体集合中不能即包含组成复合物体的基本元素物体,又包含这些元素物体组成的群组。
(5)在视图中选择成组后的群组物体(即复合刚体),选择Group>Open(群组>打开)命令,打开群组,这样我们可以单独选择群组中的某一个物体,在按名称选择面板中可以看到组成群组的各个物体的名称(勾选面板左下角的DisplaySubtree)
(6)选择复合刚体中的某一元素物体,在reactor面板的Properties(属性)面板中可以设置它的Mass(质量)值。
注:
此时你无法设置这个元素物体的弹力值或摩擦力值。
(7)在视图中选择成组后的群组物体(即复合刚体),在Properties(属性)项目面板中可以设置它的Elasticity(弹力)值和Friction(摩擦力)值,但是在此无法设置它的Mass(质量)值,因为它的质量是由所有的元素物体的质量之和决定的。
22.3.5代理物体
在前面的介绍中,我们曾经提及到代理物体,即使用一个物体代替另一个物体参与模拟计算,或者代替这个物体在预览窗口中的显示,这个物体称为代理物体。
在大多数情况下,我们使用一个简单的物体代替另外一个较复杂的物体,这个代理物体只参与reactor的模拟计算或者预览显示,在reactor完成动力学模拟计算之后,3dsmax在渲染输出的时候,仍然会使用原来的复杂的物体。
几何体代理
图22.15几何体代理
注:
在复合刚体中,可以使用几何体代理方式代替复合刚体中的某一个元素物体,而不能够代替整个复合刚体。
优化几何体代理
(1)显示代理
显示代理可以代替原来的物体在预览窗口中的显示,这样可以加快模拟计算的速度,改善预览窗口的实时交互性操作。
22.2刚体
通常在大多数场景中,最基本的物体都属性刚体。
刚体是指形状不会发生改变的一类物体,如茶杯、桌子、岩石等等,刚体也可以作为其它类型物体的初始状态,例如可以将一个刚体转变为软物体。
reactor使用实体集合方式来控制物体属性,一个刚体只有添加到刚体集合之中,才能具备刚体属性。
一个刚体具有许多的物理属性,如质量、表面摩擦系数、弹性等,这些物理属性决定物体在场景中的动画行为,下面我们通过实例来学习刚体的基本性质。
22.2.1实例—刚体碰撞
一、创建刚体集合
刚体集合是所有的刚体的集合体,一个物体只有被添加到刚体集合中,成为其中的一个成员时,reactor才会将其视为刚体,参与相应的动力学模拟计算。
在3dsmax4中创建一个简单的场景,在一个扁平的立方体地板上方创建一个简单的球体和一个立方体,如图22.3所示。
图22.3创建场景
(1)在Create创建命令面板中点击Helpers(辅助物体)图标,从下拉菜单中选择reactor。
(2)在命令面板上点击RBCollection(刚体集合性)钮,在Front(前)视图中创建一个刚体集合图标RB-Col,图标的位置并不重要。
(3)在Create创建命令面板中点击RBCollectionProperties(刚体集合属性)项目面板中的Add(添加)钮,在选择面板中将TheBall、TheBox、TheFloor三个物体添加到刚体集合中,如图22.4所示。
图22.4刚体集合
注:
也可以点击Pick(拾取)钮,然后在视图中将这三个物体拾取。
二、添加摄影机和灯光
接下来我们再在场景中添加一架摄影机来显示动力学模拟计算的结果。
尽管reactor也可以使用默认的透视图来显示,但是使用自建的摄影机来显示会更方便、直观一些。
(1)选择Create>Cameras>Target(创建>摄影机>目标摄影机)命令,在视图中创建一架目标型摄影机。
(2)选择Create>Lights>TargetSpot(创建>灯光>目标聚光灯)命令,在视图中创建两盏目标型聚光灯。
(3)将Perspective(透)视图切换为Camera(摄影机)视图。
(4)使用移动工具调节灯光和摄影机的位置,使摄影机的视图如图22.5所示。
图22.5添加摄像机和灯光
(5)打开reactor面板。
(6)在reactor面板的Display(显示)项目面板中,点击Camera右侧的None钮,在视图中选择新创建的摄影机Camera01,将摄影机视图指定为预览的视图。
(7)在Display(显示)项目面板中,点击Lights(灯光)窗口下的Add(添加)钮,在选择面板中将新创建的灯光Spoto1、Spoto02选择。
这样在预览窗口中进行模拟计算的时候,reactor就会使用当前场景中的摄影机和灯光进行计算,假如没有为reactor指定摄影机和灯光,reactor将会使用其默认的摄影机和灯光进行预览显示。
三、调节刚体属性
当一个刚体集合中包含有多个刚体的时候,需要分别指定每个刚体的物理属性,这样reactor在动力学模拟计算过程中,会根据每个刚体的物理属性计算其相应的动力学效果。
(1)在视图中选择球体TheBall,打开reactor的Properties(属性)项目面板,调节Mass(质量)值为5,指定球体的质量为5kg,使用缺省的Elasticity(弹性)值和Friction(摩擦力)值。
(2)在视图中选择地板上的立方体TheBox,调节它的Mass(质量)值为5,使它与球体具有相同的质量。
(3)在视图中选择地板物体TheFloor,在Properties(项目)面板中可以看到它的Mass(质量)值为0,在这里我们认可它的缺省值,不做调节。
当一个物体的质量为0kg的时候,reactor在动力学模拟计算的过程中会将其视为固定不动的物体,当其它物体与之发生碰撞的时候,其它的物体会发生反弹,而它依然保持初始的位置,不会发生改变。
四、预览场景
在创建完场景之后,可以使用reactor的预览显示窗口实时观察当前的动画效果,并且这个预览显示窗口具有交互性,可以在这个窗口中调节物体的相对位置,即时观察到物体位置的改变对动画效果的影响。
(1)打开Display(显示)项目面板。
(2)在Display(显示)项目面板中点击PreviewinWindow(在窗口预视)钮,打开预览窗口,如图22.6所示。
图22.6
(3)按下键盘上的P键,开始执行预览模拟计算,在预览窗口中可以看到立方体和球体由于重力的作用开始下落,最后落在了地面上,保持静止不动。
(4)用鼠标右键拖动球体撞向立方体,在发生碰撞之前释放鼠标右键,可以看到球体由于运动的惯性撞向了立方体,碰撞后,球体被反弹方向运动,而立方体被撞击后移动了一段距离,最后由于磨擦力的作用二者又都保持静止不动。
注:
如果操作过程中球体或立方体碰撞后从地板物体上落下,可以按下键盘上的R键复位,然后再按P键重新计算,计算过程中按下P键可以暂停模拟计算,这时就不能用鼠标右键交互式拖动物体实时显示动画效果了。
(5)分别按下键盘上的方向键,可以发现上、下方向键可以控制预览视图的拉近、推远、左、右方向键可以控制预览视图的左右平移。
(6)在预览窗口中按下鼠标左键,上、下、左、右移动鼠标,可以发现鼠标左键可以控制预览视图的旋转。
五、转地板物体
当前的动画太简单了,我们为地板物体加入一个旋转,使之变为倾斜状态,让球体和立方体落在上面之后继续运动,观察动画效果。
(1)关闭预览窗口,在Front(前)视图中使用旋转工具在Z轴上旋转地板物体(TheFloor)-8度左右,使地板变为倾斜状态。
(2)在Front(前)视图中使用移动工具在Y轴上向下移动地板物体,适当增大地板物体与球体立方体之间的距离,如图22.7所示。
图22.7旋转地板
(3)重新打开预览窗口,按下键盘上的P键进行模拟计算。
在预览窗口中可以看到立方体和球体先后落到了地板上,由于地板是倾斜的,二者继续沿着地板向下滑动,立方体由于与地板之间的磨擦力较大,缓缓停下,而球体则继续沿着地板向下滚动,最后掉到了地板下面,如图22.8所示。
图22.8地板倾斜效果
六、渲染输出动画
当前的动画时间太短了,我们无法完整地看到球体滚落的全部动画。
(1)在时间设置面板上调节EndTime(结束时间)为140,适当延长动画时间。
(2)打开Animation&Export(动画和输出)项目面板,调节EndFrame(结束帧)值为140,使reactor模拟计算的动画长度与当前场景的动画长度相同。
(3)在Animation&Export(动画和输出)项目面板中勾选UpdateViewports(更新视图),这样在模拟计算的时候,在视图中可以看到当前计算的结果。
在计算复杂场景的时候,建议不要勾选此选项,以加快计算速度。
(4)点击PerformSimulation(执行模拟)钮,执行模拟计算,reactor会自动计算当前场景的动画效果,在视图中可以看到物体相对位置的变化。
(5)模拟计算完成后,点击RenderScene按钮,渲染全部动画,最后的动画保存为22_lx1.avi文件。
16.2.1刚体基础知识
通过上一个练习,我们已经对reactor的刚体有了初步的了解,下面继续学习刚体的其它属性。
22.2.2.1刚体属性
在刚体的Properties(属性)项目面板中,除了练习中提到的物理属性如质量、弹力、摩擦力外,还有一些非常重要的参数,在此我们逐一进行介绍。
GetFrom/SetToMaterial(获取/保存到材质):
在Properties(属性)项目面板中,在PhysicalProperties(物理属性)中有一个GetFromMaterial和一个SetToMaterial钮。
GetFromMaterial钮可以从当前材质中获取物体的弹性值和摩擦力值,例如我们为当前物体指定了材质,可以点击GetFromMaterial(从材质中获取)钮获得当前材质的物理属性,这个钮只能改变Elasticity(弹性)值和Friction(摩擦力)值,然后点击SetToMaterial(保存到材质)钮,将当前设置保存到材质中,这样当将这个材质再指定给场景中的其它物体时,就可以通过GetFromMaterial(从材质中获取)钮使其它物体具有相同的属性。
Convex/Concave(凸面体/凹面体):
指定刚体为凸面体或者凹面体,以影响物体的碰撞方式。
DisplayProxies(显示代理):
当场景过于复杂时,在预览窗口中观察实时模拟计算效果会变得十分困难,这时可以用简单的物体来代替复杂物体在预览窗口中的显示,以加快计算速度。
例如在上一个练习中,我们可以在场景中再创建一个圆环物体,在视图中选择球体(TheBall),在Properties(属性)项目面板中,勾选Display(显示)中的Proxy(代理),然后点击None钮,在视图中选择新建的圆环物体。
打开预览窗口,可以看到圆环物体代替了球体的显示,这种显示代理方式只影响预览窗口的显示方式,并不会影响最终的动画效果,如图22.9所示。
图22.9代理方式
DisplayChildren(显示子物体):
是否显示与这个物体层级连接的子物体。
22.2.2.2刚体集合属性
在视图中选择刚体集合图标,打开Modify变动命令面板,在这里有两个项目面板:
RBCollectionProperties(刚体集合属性)和Advanced(高级属性)。
DisableC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 刚体 动力学
![提示](https://static.bdocx.com/images/bang_tan.gif)