热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Unity3D学习日志第13天:深入探索关节系统与布料模拟技术

在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):该渲染器使用的网格。
推荐阅读
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本文介绍如何使用MFC和ADO技术调用SQL Server中的存储过程,以查询指定小区在特定时间段内的通话统计数据。通过用户界面选择小区ID、开始时间和结束时间,系统将计算并展示小时级的通话量、拥塞率及半速率通话比例。 ... [详细]
  • 本文深入探讨了面向切面编程(AOP)的概念及其在Spring框架中的应用。通过详细解释AOP的核心术语和实现机制,帮助读者理解如何利用AOP提高代码的可维护性和开发效率。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • ssm框架整合及工程分层1.先创建一个新的project1.1配置pom.xml ... [详细]
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 本文介绍了一种根据目标检测结果,从原始XML文件中提取并分析特定类别的方法。通过解析XML文件,筛选出特定类别的图像和标注信息,并保存到新的文件夹中,以便进一步分析和处理。 ... [详细]
author-avatar
肖顾问
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有