Cloth blueprints

  • 有3种不同的Cloth blueprints类型,每一种都是专门设计的。每一种都有相匹配的Actor类型

    1. cloth:普通布 不能撕裂,不能与动画网格(animated meshes)一起使用。这是3种中效率最高的
    2. Tearable cloth:可以撕裂,不能与动画网格(animated meshes)一起使用。这种撕裂功能会产生内存和时间成本
    3. Skinned cloth:设计用于角色布的骨骼动画网格,不能撕裂
  • 要生成基本的Cloth blueprint,请到asset->create->Obi->Cloth blueprint,或者右键点击项目文件夹,选择create->Obi->Cloth blueprint。其他2种蓝图类型可以用类似的方式创建。

生成蓝图

  • 布料蓝图需要一个网格作为输入。因为是用于表示布料的内部数据结构,输入网格必须是2-manifold。非manifold是不支持的,虽然Obi会尽最大努力,但使用非manifold网格有可能会给流水线带来不少麻烦,所以尽量避免使用。
  • 当你按下蓝图inspetor中的 "Generate "按钮时,Obi就会这样做:
    1. 生成合并后的网格顶点列表,忽略 UV 和法线接缝。
    2. 生成合并后的三角形边和边界边的列表。
    3. 每个合并的顶点生成一个粒子,每个合并的egde生成一个距离约束。
    4. 分析生成的粒子/距离约束网络,生成弯曲、体积和空气动力学约束。
    5. 将所有约束条件分门别类,进行有效的运行时评估。
  • 这个过程可能需要相当长的时间。一旦完成,编辑按钮将被激活。将进入cloth blueprint editor。

Cloth blueprint editor

  • 在Cloth blueprint editor中主要有三种模式,可以通过顶部的3个按钮进入。
    - 粒子选择 Particle selection
    - 属性绘制 Property painting
    - 纹理导入/导出 Texture import/export
  • Particle selection

    -> Selection/editing

    • 在粒子选择模式下,你可以选择粒子来修改它们的属性,创建粒子组,并生成约束。要选择粒子,请在场景视图中点击并拖动它们。要取消选择粒子,请按住shift键同时拖动。
    • 你可以通过拖动画笔大小滑块来改变画笔大小。你可以将粒子剔除模式改为三个选项之一:
      1. off:所有的粒子都将被绘制并可选择。
      2. back:背对camera的粒子,不会被绘制,也不能选择。
      3. front:朝向相机的粒子不会被绘制,也无法选择。
    • 还有一些可用的工具对当前的选择进行操作:
      1. Invert selection:反选
      2. Clear selection:清除选择
      3. Optimize selection:删除所有选定的与任何未选定的粒子没有共享约束的粒子。当你打算将一组粒子附加到一个变换上,并想删除那些在附加后不会对模拟做出贡献的粒子时,这个功能很有用。
  • 优化前
  • 优化选择后,只剩下被选择的粒子与未选择的粒子共享约束
    4. Remove selection:删除所选项
    5. Restore removed:将使所有因优化或删除而删除的颗粒恢复
  • 你可以获取/设置当前选定粒子的任何属性:
    1. Mass: 粒子的质量:决定了粒子在受到任何约束(碰撞、距离、弯曲…)时的表现。决定了当粒子与另一个粒子或刚体发生任何约束(碰撞、距离、弯曲…)时,粒子的行为。
    2. Radius: 粒子半径。主要用于碰撞检测。
    3. Phase: 粒子相位,用于确定何时应忽略与刚体和其他粒子的碰撞。深入的解释,见碰撞。
    4. Color: 粒子颜色。用于存储其他信息,或用于自定义渲染。
  • Particle groups
    • 你可以将那些对你有特殊作用或意义的粒子分组。例如,你可以将矩形布片四角的4个粒子创建一个组,以便以后将其挂在另一个对象上。分组主要用于创建粒子attachments时,但也可以在运行时在自定义脚本中访问。
    • 要从当前选择中创建一个新组,只需按列表右下角的 “+“按钮。要删除一个组,从列表中选择它并点击”-”。您也可以通过点击选择按钮选择该组中的所有粒子(使用shift键多选组也可以),您可以通过点击设置来替换当前选择的粒子。
  • Tethers
    • 系绳约束可以防止布中的粒子与其他粒子分离,起到长距离约束的作用。它们通常被用作一种廉价的方法,在低预算模拟中尽量减少不必要的拉伸。
    • 要生成系绳,从下拉列表中选择一个或多个粒子组,然后点击生成系绳。这将把所有不在任何组中的粒子拴在组中最接近的粒子上。要删除所有系留,请点击清除系绳。
  • Visualization
    • 所有三种蓝图编辑器模式(选择、绘制和贴图导入/导出)都有一个可视化选项部分。在这里,您可以更改渲染模式,该模式决定了应在场景视图中绘制的元素。一些选项是:

      1. Nothing:只有粒子选择句柄才会被渲染。
      2. Everything: 所有的渲染模式都会同时启用。
      3. Particles:粒子被完全渲染,显示其形状、大小和颜色。这使用了与ObiParticleRenderer运行时组件相同的渲染管道(见粒子渲染)。
      4. Mesh:用于生成蓝图的源网格被渲染。当前选定的粒子属性被用来驱动顶点颜色。你可以使用可视化部分的范围选项(见下文)来确定属性值如何映射到颜色。
      5. Constraints:多种约束渲染模式可以让你在蓝图中可视化约束。
  • 当网格渲染模式处于活动状态时,当前选择的属性(质量、半径等)会被映射到一个颜色梯度上,并用于绘制网格。默认情况下,计算出最小和最大属性值,并将其值映射到颜色梯度上。
    ->Property painting

    • 在属性绘制模式下,可以使用画笔工具直接在布面上绘制粒子属性。绘制时建议启用网格渲染模式工作。
  • 画笔有一个内半径和一个外半径。内半径内的画笔不透明度可以通过改变画笔不透明度值来设置。不透明度在内半径外平滑衰减,在外半径处达到零
  • 大多数属性提供3种模式:
    1. Paint: 将当前的属性值移到proprerty字段中设置的值。刷子的不透明度决定了值向目标值移动的速度。
    2. Add: 将属性字段中设置的值添加到网格中的属性值。同样地,画笔的不透明度决定了改变数值的速度。您可以按住键盘上的shift键来减去而不是添加。
    3. Smooth: 平滑属性值
  • Selection mask
    • 如果当前有一些粒子被选中,可以启用选择遮罩。当选择遮罩激活时,画笔将只作用于被选择的粒子。如果您只想绘制网格的某些部分,这很有用
  • Texture import/export
    • 你可以使用这些工具将任何属性导入/导出到纹理
  • 在导入/导出属性时,请确保你的网格具有非重叠的纹理坐标。对于具有重叠UV的顶点的行为是未定义的,因为多个值可能会映射到同一个顶点。
  • Import
    • 当从纹理加载属性值时,我们需要知道如何将像素值映射到属性值。Obi从0-255像素值范围线性映射到用户定义的属性值范围。
    1. Source: 用于读取属性值的纹理。
    2. Source channel: 虽然有些属性(如颜色)使用了所有4个纹理通道(红、绿、蓝和阿尔法),但大多数属性(质量、半径…)都是浮点值,所以只需要一个纹理通道来存储/检索它们。使用这个下拉菜单,你可以选择从哪个通道读取数值。
    3. Min value: 从像素中读取的属性值,值为0。
    4. Max value: 从像素中读取的属性值,值为255。
  • Export
    • 导出颜色属性时,会使用所有4个纹理通道。导出浮点属性时,网格中的最大属性值被映射为白色像素(255),最小值为黑色像素(0)。值总是存储在红色纹理通道中。
    1. Texture width: 纹理的宽度,单位为像素。
    2. Texture height: 纹理的高度,单位为像素。
    3. Padding: UV接缝处的像素填充量。确保从纹理导入数值时,在UV接缝处读取准确的数值。
  • 输出的粒子半径没有填充
  • 导出的粒子半径以16个像素为填充

Cloth Tearing

  • ObiTearableCloth组件与普通的ObiCloth非常相似,但是它可以动态地被撕裂。由于它的可破坏性,与普通的ObiCloth相比,有一些限制。

    1. 不支持系绳约束。
    2. 不支持skinned meshes
  • Tear capacity
    • 可以被撕裂的初始粒子的百分比。值为0意味着在初始化时不会分配额外的粒子,值为1意味着将分配足够的粒子,以确保布中所有的三角形都能被撕裂。
  • Tear Resistance Multiplier
    • 在布匹撕裂之前,必须对其施加多大的力。用牛顿表示。注:该值受每颗粒 "抗撕裂性 "属性的影响。
  • Tear debilitation
    • 将入射到撕裂粒子上的所有边缘的撕裂系数相乘。高值会增加连贯撕裂路径的形成。0.2和0.6之间的数值往往能得到最现实的结果。
  • 高抗撕裂倍数
  • 低抗撕裂倍数

Cloth Proxies

  • 代理可以让你将高质量、复杂的网格 "粘 "到任何模拟的布网格上。这是用来解除模拟和渲染的:你可以模拟一个低分辨率的网格并渲染一个高分辨率的网格。当您要渲染的网格具有复杂的形状,而这些形状应该尽可能完整地保留(如口袋、孔洞、可变厚度),或者是非歧管的,不能直接模拟时,它也很有用。

  • 要设置一个代理,你需要有:
    一个源对象,并附加一个ObiCloth组件。
    一个目标对象,并附加一个ObiClothProxy组件。

  • 这样,模拟将从源对象网格转移到目标对象网格。请注意,源对象和目标对象可以是相同的:你可以只对网格的某些三角形进行模拟,并使用结果来驱动其余部分。现在我们将看到如何详细设置代理。

  • Setting up proxies

    • 假设你已经设置了一个源对象(添加了ObiCloth组件并正确初始化),现在你必须决定哪个对象将是代理。然后,为该对象添加一个ObiClothProxy组件。
    • 代理有三个输入:
      1. Particle proxy: 这是用来驱动代理的源对象
      2. Skin map: 这是一个asset,它告诉Obi源对象的哪些部分应该驱动目标对象的哪些部分
      3. Target topolgy: 这是目标网格的拓扑结构, 它用来加速skinning过程
    • 特殊情况下只有粒子代理可用:有一个布对象,将用于驱动代理。生成目标拓扑的方法和生成布的拓扑完全一样:右击任意项目文件夹,创建–>Obi–>Obi Mesh拓扑,设置输入网格,然后点击检查器中的 “生成”
    • 我们仍然缺少skin map。右键点击你的一个项目文件夹,进入创建–>Obi–>Obi Triangle Skin Map
  • 它有两个输入:源拓扑和目标网格。源拓扑是你用来生成布的同一拓扑,目标网格是你的代理对象的网格。

  • 提供这两个输入,点击 "编辑皮肤图 "进入皮肤图编辑器

  • 在皮肤地图编辑器里面,你需要调整两个网格的相对位置/旋转/比例,因为这将是它们的绑定姿势。现在,如果你只是想让整个目标网格与整个源网格进行绑定,只需点击 “Bind”。这将使目标网格与源网格以当前姿势绑定,并生成相应的皮肤信息。

  • 一旦你生成了皮肤图,你可以通过点击 "完成 "退出编辑器。这将关闭编辑器,并返回到你之前的场景。

  • 将皮肤贴图反馈给ObiClothProxy组件,同时提供目标网格拓扑和源布,就可以了。如果你播放你的场景,目标网格将跟随源模拟。在某些情况下,你会希望禁用源对象的MeshRenderer,这样只有目标网格是可见的。

  • 你可以使用同一个布对象来驱动多个代理,只需创建多个ObiClothProxy对象,并将同一个布对象设置为它们的 “粒子代理”。这可以用来为基础布网添加细节。

  • 你可以在有皮肤的网格和普通网格中使用代理,它们既可以作为源,也可以作为目标。它们可以同时作为源和目标。

Character clothing

  • Obi也可以用来为有皮肤的网格添加布料模拟,比如–但不限于–角色。在任何含有蒙皮网格渲染器的对象中添加Obi Cloth组件,并像往常一样进行设置(为蒙皮网格创建Obi网格拓扑,并将布艺演员添加到求解器中)。最初,蒙皮后的Obi Cloth中的所有粒子都是固定的,并且会跟随网格动画。你必须取消固定那些你想要模拟的粒子。
  • 在模拟蒙皮布时,每一帧都会检索所有蒙皮顶点位置。为了获得最新的顶点位置,动画必须在Obi开始模拟该帧之前更新,否则Obi将使用前一帧的值。在Unity中,Animator组件默认会在LateUpdate之前更新动画。应该将Animator的更新模式属性设置为 “Animate physics”。如果你不这样做,模拟将比动画延迟一帧。
  • 然后,固定的粒子会直接移动到它们被skinned的顶点的位置,而自由粒子会像往常一样被模拟。皮肤约束尽量确保自由粒子最终不会离它们被完全skinned(固定)的位置太远。这种算法可以让Obi有效地模拟角色服装,同时避免剪裁、隧道和类似的伪影。
  • 你可以使用粒子编辑器来设置皮肤约束的每粒子值:
    系绳、弯曲、空气动力学、碰撞等继续以与普通布料相同的方式工作。因此,你可以,例如,使你的角色的披风在风中波浪或与环境碰撞。

【Unity】Obi插件系列(六)—— Obi Cloth相关推荐

  1. 【Unity】Obi插件系列(一)—— 总览、Actors与Solvers

    链接:https://pan.baidu.com/s/1Q9OiM_nwMyeApEhEzsCemw 提取码:1234 Obi框架 Obi是一个基于粒子的Unity物理学插件的集合.Obi的内容一切都 ...

  2. 【Unity】Obi插件系列(六)——Obi Rope

    Rope/rod blueprints Rope: Ropes是通过使用距离和弯曲约束将粒子链起来建立的.由于常规粒子没有方向性(只有位置),因此无法模拟扭转效应,而且绳索无法保持其静止形状.然而,与 ...

  3. 【Unity】Obi插件系列(八)—— Obi Softbody

    Softbody blueprints 有2种不同的软体蓝图.这两种类型的蓝图都可以赋给ObiSoftbody actor Surface softbody:会在网格顶点位置随机分布粒子,确保它们不重 ...

  4. 【Unity】Obi插件系列(七)—— Obi Emitters

    Emitters Emitters器,顾名思义,发射流体粒子到场景中.它们类似于Unity的内置粒子发射器,但它们并不发射常规粒子.取而代之的是,它们发射的是Obi粒子,这些粒子可以相互作用,也可以与 ...

  5. 【Unity】Obi插件系列(三)—— Collisions

    Collisions 布料与地形和一些箱子碰撞. 大多数时候,我们会希望粒子能够与场景中的其他元素碰撞并做出反应:墙壁.地板.箱子什么的.它们也可以互相碰撞.这两种类型的碰撞(对碰撞器和对其他粒子)可 ...

  6. 【Unity】Obi插件系列(二)—— Backends、Updaters、Simulation

    Backends Backends只在Obi 5.5.及以上版本可用.以前的版本只有一个后端可用(Oni),所以在求解器中没有后端下拉. Backends是Solver用来推进模拟的实际物理引擎.不同 ...

  7. 【Unity】Obi插件系列(五)—— 约束

    距离约束 距离约束将成对的粒子连接在一起,迫使它们之间保持一定的距离(我们将这个距离称为约束的 "休息长度").Obi为你的布网的每一个边缘,或者为你的绳索的每一段创建一个拉伸约束 ...

  8. 【Unity】Obi插件系列(四)—— Distance Fields、Particle attachments、Particle rendering

    Distance Fields 距离场 距离场是一种特殊的碰撞基元,可以和Obi一起使用. 每当一个Obi粒子靠近一个collider时它必须计算出到collider表面的最短距离, 以确定它是否会与 ...

  9. Unity Obi插件修改到支持URP

    Obi插件修改适应URP 属性 值 Unity版本 2021.18f1c1 Obi 版本 Obi Fluid v6.43 系统版本 Win10 64位 16G内存 操作 找到水的发射器并修改shade ...

最新文章

  1. pku 1077 Eight
  2. NLM 公布了一个新的重新设计的 PubMed 数据库
  3. 2019 Mac装Cocoapods的步(cai)骤(keng)记录
  4. 图片尺寸对分类迭代次数和准确率的影响
  5. android 滚动动画效果代码,Android Scroll滑动效果实例
  6. 微信小程序window的配置
  7. Linux驱动设计ioctl函数的cmd参数不能为2
  8. math.asin_JavaScript中带有示例的Math.asin()方法
  9. java 集合操作工具包_java之操作集合的工具类--Collections
  10. 500万相机芯片尺寸_MGS二代系列500万像素新品面世
  11. EMR 配置纪录(不断更新)
  12. Docker从理论到实践(一)------基础知识必备
  13. linux修复u盘的软件下载,修复U盘合集工具
  14. R语言绘图基础篇-线图
  15. windows10系统插耳机有回声解决办法?
  16. Gin简单明了的教程---上
  17. python中整数类型取值范围有没有限制_python 数据库取值范围内
  18. 手机qlv转mp4工具
  19. 文件搜索(File)
  20. Pycharm浏览器打开报错解决

热门文章

  1. 在最美的时候,你遇见了谁?
  2. 2022-2028年中国保健食品行业市场运营格局及前景战略分析报告
  3. wr703n刷openwrt离线下载及upnp共享播放
  4. 我的游戏学习日志3——三国志GBA
  5. 基于MATLAB APP Designer 和 Python 的音视频剪辑
  6. Dining (网络流)
  7. 【搭建OpenCV+Tesseract】
  8. 设计模式之禅【迭代器模式】
  9. 重装战姬服务器维护,重装战姬2020年9月10日更新维护公告重装战姬2020年9月10日更新了什么 - 量产资源网...
  10. hrbust 2366 Print rhombus