zl程序教程

您现在的位置是:首页 >  后端

当前栏目

《Unity 4 3D开发实战详解》一6.6 布料

3D开发 详解 实战 Unity 6.6
2023-09-11 14:17:34 时间

本节书摘来异步社区《Unity 4 3D开发实战详解》一书中的第6章,第6.6节,作者: 吴亚峰 , 杜化美 , 张月霞 , 索依娜 责编: 张涛,更多章节内容可以访问云栖社区“异步社区”公众号查看。

6.6 布料

Unity 4 3D开发实战详解
本节主要向读者介绍布料的相关知识,布料是Unity内建物理引擎中另外一个很重要的概念。弄清楚布料的概念对于Unity开发新手来说是很重要的。通过本节的学习,读者将对布料有一个基本的认识。

6.6.1 布料特性

Unity内建物理引擎中的布料是基于一个网格,来模拟类似布料行为的组件。如果场景中需要使用布料的效果,那么就用这个组件。

布料作为物理引擎的组件,包含有该类组件的特定属性,包括Transform、Interactive Cloth、Cloth Renderer,如图6-135所示。并对应封装了多个相关方法,下面进行分别介绍。


135

为了利于开发者控制物理系统,Unity提供了多个属性接口,即Interactive Cloth中的参数。开发者可以通过更改布料的属性参数来控制布料的物理形态。在实际开发中,这些参数都被详细地罗列在属性查看器中,开发者很容易就可以对其进行更改。接下来对这些属性进行介绍。

(1)抗弯刚度(Bending Stiffness)。

该属性表示布料的弯曲强度,其数据类型是float,默认值为0。Bending Stiffness属性在属性查看器中的位置如图6-136所示。该属性的大小是有严格要求的,其范围在0到1之间,而且越接近1,表示布料越不容易弯曲。

(2)抗拉伸度(Stretching Stiffness)。

该属性表示布料的拉伸强度,其数据类型是float,默认值为1。Stretching Stiffness属性在属性查看器中的位置如图6-137所示。该属性的大小也是有严格要求的,其范围在0到1之间,而且越接近1,表示布料越不容易拉伸。


136_137

(3)阻尼(Damping)。

该属性表示布料运动的阻尼,其数据类型是float,默认值为0。Damping属性在属性查看器中的位置如图6-138所示。在现实生活中,布料物体会受到各方面的影响,速度会逐渐衰减,为了模拟这一效果,Unity设定了这一属性。这一属性值越高,布料物体的速度衰减越严重。

(4)厚度(Thickness)。

该属性表示布料的厚度,其数据类型是float,默认值为0.2。Thickness属性在属性查看器中的位置如图6-139所示。该属性的大小是有严格要求的,一般来说,大部分布料的Thickness属性值直接使用默认的数值,其数值一旦超过1,将会失去仿真所需达到的效果。


138_139

(5)使用重力(Use Gravity)。

该属性表示的是布料是否受到重力的影响,其数据类型是boolean,初始值为true。UseGravity属性在属性查看器中的位置如图6-140所示。这一属性被设为false时可以模拟布料物体在外太空状态下的失重状态。

(6)自身碰撞(Self Collision)。

该属性表示的是布料是否自身碰撞,其数据类型是boolean,初始值为false。SelfCollision属性在属性查看器中的位置如图6-141所示。这一属性被设为true时,布料之间将存在碰撞,可以根据场景的需要设定不同的状态。


140_141

(7)外部加速度(External Acceleration)。

该属性表示的是给布料设置一个固定的外部加速度,其数据类型是folate,初始值为0。External Acceleration属性在属性查看器中的位置如图6-142所示。从图6-142中可以看出,这一属性可以分别设置布料的x、y、z方向的加速度。

(8)随机加速度(Random Acceleration)。

该属性表示的是给布料设置一个随机的外部加速度,其数据类型是folate,初始值为0。Random Acceleration属性在属性查看器中的位置如图6-143所示。从图6-143中可以看出,这一属性可以分别设置布料的x、y、z方向的加速度。

(9)网格(Mesh)。

该属性表示的是用于模拟布料的网格。Mesh属性在属性查看器中的位置如图6-144所示。单击Mesh右侧的小圆圈可以选择需要的网格,以达到开发的需要。


142_143

(10)摩擦力(Friction)。

该属性表示的是布料的摩擦系数,其数据类型是float,范围在0到1之间,初始值为0.5。Friction属性在属性查看器中的位置如图6-145所示。布料与其他物体接触时会产生摩擦的效果,此属性值越高,布料的摩擦力就越大。


144_145

(11)密度(Density)。

该属性表示的是布料密度,其数据类型是float,初始值为1。Density属性在属性查看器中的位置如图6-146所示。该属性的大小一般来说选择默认的初值,在某些特定情况下,可以根据需要调整布料的密度大小。


146

(12)压力(Pressure)。

该属性表示的是布料内部的压力,其数据类型是float,初始值为0。Pressure属性在属性查看器中的位置如图6-147所示。该属性的大小一般来说选择默认的初值,当用于封闭布料时,可以模拟气球等。

(13)碰撞反应(Collision Response)。

该属性表示的是对撞上布料的刚体施加多大的力,其数据类型是float,初始值为0。Collision Response属性在属性查看器中的位置如图6-148所示。在现实生活中,物体之间相互碰撞会受到力的作用,这一属性值越高,物体碰撞后受到的力就越大。


147_148

(14)附加撕裂系数(Attachment Tear Factor)。

该属性表示布料从挂接刚体撕裂的拉伸程度,挂接刚体必须勾选tearable才能生效,其数据类型是float,初始值为0.5。Attachment Tear Factor属性在属性查看器中的位置如图6-149所示。布料受到超过一定力时就会从附加的刚体上撕裂,这一属性值越高,越不容易撕裂。

(15)附加反应(Attachment Response)。

该属性表示对挂接的刚体施加多少作用力,只有当挂接刚体勾选TwoWayInteraction才生效,其数据类型是float,初始值为0.2。Attachment Response属性在属性查看器中的位置如图6-150所示。


149_150

(16)撕裂系数(Tear Factor)。

该属性表示布料的顶点之间距离多长会被撕开,其数据类型是float,初始值为0。Tear Factor属性在属性查看器中的位置如图6-151所示。在现实生活中,布料受到超过其可承受的力时会撕裂,为了模拟这一效果,Unity设定了这一属性。这一属性值越高,布料越不易被撕裂。

(17)附加碰撞器列表(Attached Collider)。

该属性表示的是一个包含布料挂接的所有碰撞体的数组,每个碰撞体都有TwoWayInteraction和Tearable两个选项。Attached Colliders属性在属性查看器中的位置如图6-152所示。

前面介绍了布料基本物理状态的参数,除此之外,布料还具有渲染器Cloth Renderer属性。开发者可以通过更改布料的渲染设置控制布料的表现效果。在实际开发中,这些参数都被详细地罗列在属性查看器中,开发者很容易就可以对其进行更改。接下来对这些属性进行介绍。


151_152

(1)投射阴影(Cast Shadows)。

该属性表示的是布料是否投射阴影,其数据类型是boolean,初始值为true。Cast Shadows属性在属性查看器中的位置如图6-153所示。这一属性被设为true时可以在场景中看到布料投射阴影的效果。

(2)接受阴影(Receive Shadows)。

该属性表示的是布料是否能被投影,其数据类型是boolean,初始值为true。Receive Shadows属性在属性查看器中的位置如图6-154所示。这一属性被设为true时,布料可以接受其他物体投射的阴影效果。


153_154

(3)材质(Materials)。

该属性表示的是布料所选择的材质。Materials属性在属性查看器中的位置如图6-155所示。

(4)使用光探测器(Use Light Probes)。

该属性表示的是如果勾选此选项,那么布料将开启光探测器,默认不选择。Use Light Probes属性在属性查看器中的位置如图6-156所示。


155_156

(5)光探针锚(Light Probe Anchor)。

该属性表示的是在分配的情况下,光照探测插入到渲染器边界的中心或者在锚点的位置,默认不选择。Light Probe Anchor属性在属性查看器中的位置如图6-157所示。

(6)不可见时暂停(Pause When Not Visible)。

该属性表示的是如果勾选此选项,那么在摄像机可见的范围外,布料将不进行模拟运算。Pause When Not Visible属性在属性查看器中的位置如图6-158所示。


157_158

布料是Unity自带物理引擎中十分重要的部分,熟练掌握布料的属性及参数设置,可以在开发中达到事半功倍的效果。

6.6.2 布料的简单案例

通过前面小节的学习,相信读者对布料有了一个简单的认识。本小节主要讲述如何在Unity 3D中创建以及使用布料,具体步骤如下。

在开发前首先要对案例开发需要的资源进行收集,主要需要的资源如表6-6所示。


b6_6

(1)双击桌面上的Unity快捷方式,进入Unity集成开发环境,导入所需的资源,具体的导入过程就单击Assets→Import New Assets菜单,会立刻弹出一个Import New Assets对话框,在对话框中选择需要的资源,单击Import按钮即可完成导入,Project面板下的Assets包括的资源如图6-159所示。


159

(2)单击GameObject→Create Other→Plane菜单,在场景中创建Plane,在此改名为diban,并在属性查看器中设置具体的参数,具体参数如图6-160所示。

(3)单击GameObject→Create Other→Sphere菜单,在场景中创建一个球体,在此改名为Ball,并在属性查看器中设置具体的参数,具体参数如图6-161所示。

(4)单击GameObject→Create Other→Cloth菜单项,在场景中创建一个布料,命名为Cloth,并在属性查看器中设置具体的参数,其具体参数如图6-162所示。

提示

布料Interactive Cloth属性下的Mesh选择刚才导入的Cloth.FBX文件。

(5)选中摄像机,在属性查看器中调整摄像机的视角,使摄像机的视角正对场景中的游戏对象,具体参数设置如图6-163所示。


140_141
142_143


(6)为场景中添加适合的平行光光源,即单击GameObject→Create Other→Directional light菜单,创建平行光光源,并在属性查看器中设置其参数,具体参数如图6-164所示。

(7)单击Unity中的游戏播放按钮,在Game窗口下可以看到布料落下与小球发生碰撞的效果,如图6-165所示。


164_164

到这里本案例的操作步骤以及各个游戏对象参数的设置已经全部讲解完毕,通过本案例的操作,希望读者可以掌握物理引擎中布料的基本使用,在今后的开发中可以熟练应用。


Unity 开发入门指南 学习 Unity 开发接近一年了,从开始对 Unity 一无所知,到现在能模仿制作出一个完整游戏,对个人成长来说,也算是一个不大不小的里程碑。这篇是对自己学习的总结与回顾,希望对 Unity 初学者有所帮助。
Unity游戏开发之C#快速入门 Unity游戏开发之C#快速入门C#是微软团队在开发.NET框架时开发的,它的构想接近于C、C++,也和JAVA十分相似,有许多强大的编程功能。个人感受是C#吸收了众多编程语言的优点,从中可以看到C、C++、Java、Javascript、python的影子,设计思想都是相通的(过段时间一定要看看设计模式),对比迁移地学习基本只需要记关键字、语法和包的用法。
Unity进阶技巧 - RectTransform详解 一、Pivot属性详解首先为了让大家更好的理解内容,我在Unity中创建了两个UI控件,一个Plane控件,作为父对象,一个Image控件,作为子对象。 然后我们选中子对象,来看看它的RectTransform组件的属性,会看到有一堆的数据,那么这些数据是如何最终决定UI在屏幕中的位置和大小的呢?我们首先来看第一个重要的属性Pivot,因为它理解RectTransform这套UI布局方案的第一个关键。
Unity学习系列一简介 一、简介 Unity的目标是为了提升 依赖注入 的思想,去建立更加松耦合的系统.patterns practices 小组在那个时候实现DI的方式和我们现在认为的DI有所不同,DI不是单一的可重复使用的容器,而是应该专门用于正在使用它的系统.
《Unity 4 3D开发实战详解》一6.2 碰撞器 在上一节中,讲解了刚体的主要特性,在本节中将对碰撞器(Collider)进行具体介绍。碰撞器是Unity内建物理引擎中另外一个很重要的概念。弄清楚碰撞器的概念对于Unity开发新手来说是很重要的。
《Unity 4 3D开发实战详解》一6.5 交通工具 在前面的内容中,讲解了Unity开发平台下物理引擎的相关内容,正是这一完善的物理引擎,使得模拟现实变得极其简单。在本小节中,将通过一个交通工具的小案例来模拟现实生活中汽车的各种运动。下面将对交通工具案例的开发步骤进行介绍。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。