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):该渲染器使用的网格。
推荐阅读
-
本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ...
[详细]
蜡笔小新 2024-12-27 17:40:42
-
本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ...
[详细]
蜡笔小新 2024-12-27 17:31:41
-
-
本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ...
[详细]
蜡笔小新 2024-12-27 16:01:25
-
本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ...
[详细]
蜡笔小新 2024-12-27 13:55:14
-
在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ...
[详细]
蜡笔小新 2024-12-27 12:39:06
-
本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ...
[详细]
蜡笔小新 2024-12-27 11:26:39
-
本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ...
[详细]
蜡笔小新 2024-12-26 17:37:25
-
题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!----- ...
[详细]
蜡笔小新 2024-12-26 15:55:56
-
1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ...
[详细]
蜡笔小新 2024-12-27 19:32:17
-
本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ...
[详细]
蜡笔小新 2024-12-27 18:29:55
-
2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ...
[详细]
蜡笔小新 2024-12-27 17:49:56
-
前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ...
[详细]
蜡笔小新 2024-12-27 15:19:01
-
本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ...
[详细]
蜡笔小新 2024-12-27 15:06:12
-
本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ...
[详细]
蜡笔小新 2024-12-27 15:04:09
-
本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ...
[详细]
蜡笔小新 2024-12-26 17:45:48
-