Unity3D学习日志第13天:深入探索关节系统与布料模拟技术
作者:肖顾问 | 来源:互联网 | 2024-10-29 21:19
在Unity3D的第13天学习中,我们深入探讨了关节系统和布料模拟技术。关节系统作为Unity中的关键物理组件,能够实现游戏对象间的动态连接,如刚体间的关系、门的开合动作以及角色的布娃娃效果。铰链关节涉及两个刚体的交互,能够精确模拟复杂的机械运动,为游戏增添了真实感。此外,布料模拟技术则进一步提升了角色衣物和环境装饰物的自然表现,增强了视觉效果的真实性和沉浸感。
关节(Joint)是Unity中的一种物理组件,用来模拟游戏对象之间相互连接的效果。
通过关节,我们在游戏中可以用于模拟刚体之间的连接、门的开关、角色布娃娃系统等效果。
铰链关节
由两个刚体组成,刚体之间的运动约束类似于铰链连接,可用于模拟门的开关,钟摆的摆动等物理效果
固定关节
将两个刚体粘连在一起,当一个刚体运动时会带动另外一个刚体运动,效果类似于父子关系
弹簧关节
将两个刚体用弹簧连接,拉伸或挤压它们会产生拉力或弹力
角色关节
可用于模拟角色的骨骼关节,可用于布娃娃系统
可配置关节
可通过配置参数来模拟以上四种关节,功能强大而灵活,使用也相对复杂
HingeJoint 铰链关节
铰链关节 (Hinge Joint) 将两个刚体 (Rigidbody) 组合在一起,从而将其约束为如同通过铰链连接一样进行移动。它十分适合门,也可用
于对链条、钟摆等进行建模。
HingeJoint 铰链关节属性
连接体 (Connected Body):对关节 (Joint) 所依赖的刚体 (Rigidbody) 的可选引用。如果未设置,则关节 (Joint) 连接到世界坐标。
锚点 (Anchor):主体围绕其摇摆的轴的位置。该位置在局部坐标空间中定义。
轴 (Axis):主体围绕其摇摆的轴的方向。该方向在局部坐标空间中定义。
使用弹簧 (Use Spring):弹簧 (Spring) 使刚体 (Rigidbody) 相对于其连接体达到特定角度。
弹簧 (Spring):启用使用弹簧 (Use Spring) 时使用的弹簧 (Spring) 的属性。
弹簧 (Spring):对象为移动到位所施加的力。
阻尼 (Damper):此值越高,对象减慢的幅度越大。
目标位置 (Target Position):弹簧 (Spring) 的目标角度。弹簧 (Spring) 会拉向此角度(以度数为单位测量)。
使用电机 (Use Motor):电机使对象旋转。
电机 (Motor):启用使用电机 (Use Motor) 时使用的电机 (Motor) 的属性。
目标速率 (Target Velocity):对象尝试达到的速度。
力 (Force):为达到该速度而应用的力。
自由旋转 (Free Spin):如果启用,则电机从不用于对旋转制动,仅进行加速。
使用限制 (Use Limits):如果启用,则铰链角度会限制在最小 (Min) 和最大 (Max) 值内。
限制 (Limits):启用使用限制 (Use Limits)s 时使用的限制 (Limits) 的属性。
最小 (Min):旋转可以达到的最小角度。
最大 (Max):旋转可以达到的最大角度。
最小反弹 (Min Bounce):对象在命中最小停止时反弹的量。
最大反弹 (Max Bounce):对象在命中最大停止时反弹的量。
折断力 (Break Force):为使此关节 (Joint) 折断而需要应用的力。
折断扭矩 (Break Torque):为使此关节 (Joint) 折断而需要应用的扭矩。
弹簧关节( Spring Joint )
弹簧关节( Spring Joint )用于模拟两个刚体之间用弹簧连接的效果。当2个刚体之间的距离发生变化时,弹簧关节会产生弹力或者拉力来
恢复刚体的初始距离。
连接体 (Connected Body):对关节 (Joint) 所依赖的刚体 (Rigidbody) 的可选引用。
锚点 (Anchor):对象局部坐标空间中定义关节 (Joint) 中心的位置(静止时)。这不是将对象拉向的位置。
X、Y、Z:关节 (Joint) 局部坐标中心沿 X / Y / Z 轴的位置。
弹簧 (Spring):弹簧的强度。
阻尼 (Damper):弹簧在处于活动状态时缩减的量
最小距离 (Min Distance):大于此值的距离不会使弹簧激活。
最大距离 (Max Distance):小于此值的距离不会使弹簧激活。
折断力 (Break Force):使此关节 (Joint) 折断所需的力。
折断扭矩 (Break Torque):使此关节 (Joint) 折断所需的扭矩。
角色关节CharacterJoint
连接体 (Connected Body):对关节 (Joint) 所依赖的刚体 (Rigidbody) 的可选引用。如果未设置,则关节 (Joint) 连接到世界坐标。
锚点 (Anchor):游戏对象 (GameObject) 局部坐标空间中关节 (Joint) 围绕旋转的点。
轴 (Axis):扭曲轴。通过橙色小图示锥形进行展示。
摇摆轴 (Swing Axis):摇摆轴。通过绿色小图示锥形进行展示。
扭曲下限 (Low Twist Limit):关节 (Joint) 的下限。
扭曲上限 (High Twist Limit):关节 (Joint) 的上限。
摇摆 1 限制 (Swing 1 Limit):有关定义的摇摆轴 (Swing Axis) 的下限
摇摆 2 限制 (Swing 2 Limit):有关定义的摇摆轴 (Swing Axis) 的上限
折断力 (Break Force):Th为使此关节 (Joint) 折断而需要应用的力。
折断扭矩 (Break Torque):为使此关节 (Joint) 折断而需要应用的扭矩。
折断关节 (Joint)
可以使用折断力 (Break Force) 和折断扭矩 (Break Torque) 属性为关节 (Joint) 强度设置限制。如果这些限制小于无穷大,并且将大于
这些限制的力/扭矩应用于对象,则其固定关节 (Fixed Joint) 会毁坏,不再受其限制约束。
无需将连接体 (Connected Body) 分配给关节 (Joint) 即可使其工作。
角色关节 (Character Joint) 需要向对象附加刚体 (Rigidbody)
可配置关节Configurable Joint
可配置关节
(Configurable Joint)是一种可以完全自定义各种参数的关节类型,它将PhysX物理引擎中所有关节相关属性都开放出来,因此开发者可以
创造出与其他关节类型行为相似的关节。
可配置关节主要有2类功能:移动/旋转限制 以及移动/旋转加速
布料
布料(Cloth)是Unity中的一类物理组件,用来类似于布料的物理仿真效果。主要有交互布 (Interactive Cloth)和蒙皮布 (Skinned
Cloth)两种。
交互布 (Interactive Cloth)
交互布 (Interactive Cloth)是在网格上模拟“类似于布”的行为的组件。如果要在场景中使用布,可以使用此组件。
创建交互布:在场景中添加交互布 (Interactive Cloth),
只需依次选择游戏对象 (Game Object) -> 创建其他 (3D Object) -> 布 (Cloth)。
弯曲刚度 (Bending Stiffness):布的弯曲刚度。
伸展刚度 (Stretching Stiffness):布的伸展刚度。
阻尼 (Damping):对布运动进行阻尼处理。
厚度 (Thickness):布表面的厚度。
使用重力 (Use Gravity):重力是否应影响布模拟。
自碰撞 (Self Collision):布是否会与自己碰撞。
外部加速度 (External Acceleration):应用于布的恒定外部加速度
随机加速度 (Random Acceleration):应用于布的随机外部加速度
网格 (Mesh):由交互布 (Interactive Cloth) 用于模拟的网格
摩擦力 (Friction):布的摩擦力。
密度 (Density):布的密度。
压力 (Pressure):布内部的压力。
碰撞响应 (Collision Response):将应用于碰撞刚体 (Rigidbody) 的力的大小。
附件撕裂系数 (Attachment Tear Factor):附加刚体 (Rigidbody) 在撕下之前需要伸展的距离。
附件响应 (Attachment Response):将应用于附加刚体 (Rigidbody) 的力的大小。
撕裂系数 (Tear Factor):布顶点在布撕裂之前需要伸展的距离。
附加碰撞体 (Attached Colliders):包含附加到此布的碰撞体 (Collider) 的数组
布渲染器 (Cloth Renderer)
投射阴影 (Cast Shadows):如果选中,则布会投射阴影
接收阴影 (Receive Shadows:如果启用,则布可以接收阴影
材质 (Materials):布将使用的材质。
使用光探头 (Use Light Probes):如果选中,则将启用光探头。
光探头锚点 (Light Probe Anchor):光探头光照在渲染器边界中心或锚点(如果分配)位置处进行内插。
不可见时暂停 (Pause When Not Visible):如果选中,则在相机未渲染布时不计算模拟。
蒙皮布(SkinnedCloth)
蒙皮布 (SkinnedCloth) 组件与蒙皮网格渲染器 (SkinnedMeshRenderer) 结合作用以对角色模拟衣物。
如果具有使用蒙皮网格渲染器 (SkinnedMeshRenderer) 的动画角色,则可以将蒙皮布 (SkinnedCloth) 组件 添加到具有蒙皮网格渲染器
(SkinnedMeshRenderer) 的游戏对象,使其表现得更加栩栩如生。
当导入的网格是蒙皮时,蒙皮网格渲染器将会自动添加到导入的网格。
投射阴影 (Cast Shadows)(仅限专业版):如果勾选该选项,当阴影创建光照射在网格上时,该 网格 (Mesh) 将会创建阴影。
接收阴影 (Receive Shadows)(仅限专业版):如果启用该功能,该网格 (Mesh) 将显示投射到其上的所有阴影
材质 (Materials):渲染模型的材质 (Materials) 列表。
质量 (Quality):影响每个顶点的最大骨骼数量。
离屏更新 (Update When Offscreen):如果启用该功能,蒙皮网格 (Skinned Mesh) 将在离屏后更新。如果禁用该功能,这也将禁止动画更新
。
范围 (Bounds):这些范围确定蒙皮网格何时处于离屏状态。边界框也显示在场景视图 (SceneView) 中。范围是根据模型文件中的网格
(Mesh) 和动画在导入时预先计算出的。
网格 (Mesh):该渲染器使用的网格。
推荐阅读
高级缩放示例.就像谷歌地图一样.它仅缩放图块,但不缩放整个图像.因此,缩放的瓷砖占据了恒定的记忆,并且不会为大型缩放图像调整大小的图像.对于简化的缩放示例lookhere.在Win ...
[详细]
蜡笔小新 2024-11-20 15:47:04
在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ...
[详细]
蜡笔小新 2024-11-21 19:26:31
长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ...
[详细]
蜡笔小新 2024-11-21 18:21:06
本文介绍如何通过继承TabActivity来创建Android应用中的顶部选项卡。通过简单的步骤,您可以轻松地添加多个选项卡,并实现基本的界面切换功能。 ...
[详细]
蜡笔小新 2024-11-21 17:47:42
本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ...
[详细]
蜡笔小新 2024-11-21 17:38:10
spring boot使用jetty无法启动 ...
[详细]
蜡笔小新 2024-11-21 10:15:52
本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ...
[详细]
蜡笔小新 2024-11-21 10:03:34
从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ...
[详细]
蜡笔小新 2024-11-21 09:06:54
本文是对《敏捷软件开发:原则、模式与实践》一书的深度解析,书中不仅探讨了敏捷方法的核心理念及其应用,还详细介绍了面向对象设计的原则、设计模式的应用技巧及UML的有效使用。 ...
[详细]
蜡笔小新 2024-11-21 20:44:12
本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ...
[详细]
蜡笔小新 2024-11-21 17:42:08
探讨了经典算法题目——汽车加油行驶问题,通过网络流和费用流的视角,深入解析了该问题的解决方案。本文将详细阐述如何利用最短路径算法解决这一问题,并提供详细的代码实现。 ...
[详细]
蜡笔小新 2024-11-21 14:21:38
Irish budget airline Ryanair announced plans to significantly increase its route network from Frankfurt Airport, marking a direct challenge to Lufthansa, Germany's leading carrier. ...
[详细]
蜡笔小新 2024-11-21 13:09:01
在执行市场篮子分析时遇到性能瓶颈,尤其是在设定频繁项集的支持度阈值为1%时。本文探讨了如何通过调整代码和参数来提高分析效率。 ...
[详细]
蜡笔小新 2024-11-21 12:31:46
本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ...
[详细]
蜡笔小新 2024-11-21 11:02:19
本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ...
[详细]
蜡笔小新 2024-11-20 18:28:16