一段在你浏览器中运行的实时布料模拟,再现了 Unity 解算器的神韵。
Unity 6.3(6000.3)或更新版本。没有第三方依赖,只用第一方 Unity(Burst、Collections、Mathematics)。
为触碰而生
还有更多实时小玩具,每一个都再现了某项解算器功能的神韵。裙子、头发乃至软软的脸颊,既能单手抓,也能双手一起抓。而且触碰会有回应,摸摸头会泛起红晕,击掌会送上一颗小小的爱心。
触碰会有回应
摸摸头摸摸头顶就好,无需抓取。耳朵会竖起,脸颊泛起红晕,一颗小爱心缓缓升起,就像反应挂钩回应一次抚摸。
摸得到的同意
试试每个区域四个区域,四条规则。Open 可自由拉扯,点击 Keyed 解锁,而 OwnerOnly 与 Closed 会拒绝陌生人的抓取。
会动的耳朵和尾巴
弹一弹尾巴由确定性驱动自行摇摆、倏地一弹的尾巴,触碰也会回应。抓取手感为二次元调校,重挤压与跟随而非写实。
张力褶皱
捏一捏束带张力驱动的褶皱贴图和各向异性折叠铰链,会在布料聚拢处形成褶痕。
袜类
把袜子揉皱贴合腿部、在袜口堆叠、在针织聚拢处恰好起皱、并让皮肤在紧束带上方微微鼓起的袜子和连裤袜。
软体
戳一戳一块真正有体积的脸颊或尾巴,按下去会凹陷再回弹,下面的骨骼一动它就持续晃动。不只是戳,你还能单手或双手整把抓住,宿主绑定可以让肢体朝你的手伸过来。戳的力度由解算测得,轻按则低语,快戳则闷响。
水珠与湿润
用水描绘一颗水珠附着、脱离,顺着重力沿布料滑落,留下一道缓缓变干的湿痕。高光会比暗沉更早消退,到了下摆水珠会淡出而非滴落。这是绘制在渲染上的风格化表面效果,并非流体模拟。
层叠与垂坠
拨动风向外层裙叠在主裙之上,起风时便沿着它滑动,而不会穿模。上面这层把下面的裙子读作可以搭靠的表面,安放于其上,且这是单向接触,底下的主裙不受扰动,于是整套服装按正确的层次垂下。
手感是预设,而不是物理精度的旋钮。SoftShoujo、CrispAction、FloatyEthereal 是有名字的起点,你凭眼调校。
Weft 与众不同之处
让 Weft 脱颖而出的那些决定。
同意从一开始就是核心功能
按区域的模式(Open、Keyed、OwnerOnly、Closed)和从 Stranger 到 Owner 的信任阶梯,决定谁可以触碰什么。同意在整个抓取期间每一帧都会重新检查,一旦中途访问权被撤销,这次抓取会立即、平静地释放,不会甩飞,也不会回弹。这是为共享空间中的安全而设,而谁是谁则由你的游戏掌管。
触碰会有回应
可直接发布的反应挂钩,把一次抓取变成一个瞬间。摸摸头会泛起红晕,击掌会绽开一颗小爱心,揉一揉会换来一声轻笑。触碰的力度在头发、布料与软体上都能一样读出,于是反应能分辨是轻轻拂过还是用力按压。从设计上就健康向上,也任你扩展。
逐比特一致的回放
只要构建、平台和解算器设置与录制时相同,录制与回放就逐比特一致,连双手抓取也能并成一条流来录制,其证明随测试套件一同发布。非常适合测试、工具链和锁步网络代码。
只用第一方 Unity
没有第三方解算器依赖。只有搭配 Burst、Collections 和 Mathematics 的 Unity。VRM 通过一个轻量适配器可选接入,绝非必需。
确定性的弹簧骨
一根采用熟悉弹簧骨形态的单骨晃动弹簧,带有 soft、medium、firm 三档命名手感,可用于胸部或摆动的小物件。弹簧骨系统通常不定义自己的求值顺序。Weft 把它钉成确定的一种,因此在同一构建与平台上,同一段晃动会逐比特地回放。
与你的动画融合
每一帧的系绳本身就是动画混合,因此模拟始终贴着你的实时动画姿势运行,而不是与之较劲。头发可以跟随打了关键帧的 Animator 或 Timeline 运动,而不是弹回静止姿势,混合形状与表情则把渲染器真正呈现的姿势喂给模拟。
带上你已有的角色
Weft 读取你现有的绑定,并提出整套设置方案。
MMD 与 PMX
PMX 自动设置会读取转换后模型的刚体、关节和骨骼,然后把链、碰撞体和触碰区域作为可供审阅的普通组件提出。它只读取物理,并不导入模型。
VRM,可选
一个轻量的可选适配器读取 VRM 角色的弹簧骨链,替你组装好 Weft 前端。包内不含任何 VRM 或 UniVRM 依赖。
从零开始也行
任何 Transform 层级都能用。加上发丝,自动贴合身体碰撞体,绘制触碰区域,然后点击运行。
把它带进 VRChat
Weft 的解算器本身无法在 VRChat 里运行,也永远不会,因为角色白名单会在上传时剥除自定义代码。但有一个可选适配器,会把能做的部分烘焙进 PhysBone,于是用 Weft 做好的角色,比从零手调要领先一大截。
碰撞体原样导出
你的身体、戳击与道具碰撞体一对一地转换为 PhysBone 的球与胶囊碰撞体。这是几何导出,不是猜测。一次跌落测试中,烘焙后的碰撞体表面吻合到 5 微米以内。
骨链烘焙成调好的起点
你的头发与裙子骨链会烘焙成一条比 PhysBone 默认值更贴近 Weft 手感的 PhysBone 骨链,让你领先一步开始。在一个真实制作的绑定上,烘焙出的头发与裙子对照 Weft 本身的动作都评为良好。接下来,就像任何 PhysBone 骨链一样,用眼睛去打磨。
在 6.3 调、在 2022.3 烘焙
在你的 Unity 6.3 项目里调好骨链,导出一个小文件,再在 2022.3 的 VRChat 项目里烘焙进去。制作时无需被绑在旧编辑器上。
这是制作上的捷径,而不是 Weft 原样在跑。风格化的抓握、网格布料与软体体积都不会带过去,每条烘焙出的骨链都要像任何 PhysBone 那样用眼睛打磨。你得到的是精确的碰撞体导出,以及一个好得多的 PhysBone 起点。适配器本身尚未发布到任何 VPM 列表,这与核心包自身的即将推出状态是两回事。
为共享空间而建
能熬过两名玩家之间传输的触碰。
一块布,两只手。一个脚本化的对等端按自己的节奏伸手进来,你也可以同时抓。去抢它正握着的那个点吧,先到先得会把这个点留给它,并用一道闪光拒绝你的抓取。
收发字节即可
触碰会序列化为与传输方式无关的信封。交给你世界里已有的网络即可,不内置任何 socket 或 RPC 库。
两人共穿一条裙
两个角色可以抓住同一块布料。发生争用的点以先到先得来裁定,是确定性的平局裁决,而非拔河。
及时发现失步
一个关联键在各对等端之间配对同一次抓取,一个有序校验和会标出两端开始偏离的确切帧。
把摸头留到以后
触碰消息小而持久。你可以给朋友发一个摸头,等他下次登录时收到,前提是他的同意区域允许。
导入后约 20 分钟即可上手
无需解算器代码,只需组件和绘制。
- 01
导入软件包
- 02
添加头发发丝
- 03
自动贴合身体碰撞体
- 04
绘制触碰区域
- 05
点击运行,凭眼调校
要导入 MMD 模型?PMX 自动设置会读取其现有物理,并提出整套绑定方案。
阅读预览文档一套真正的编辑器工具
Weft 的大部分是在 Scene view 里点选和绘制出来的,而不是靠写解算器代码。
一键 Auto-Fit
Auto-Fit From Avatar 读取人形绑定,一次性把身体碰撞体贴合到胯部、躯干、手臂和腿部,之后每个胶囊仍可手动编辑。
在 Scene view 里绘制
把触碰区域、固定遮罩,以及逐骨的系绳与回弹权重直接刷到网格上,配有从蓝到红的实时热力图,并支持左右对称的笔触。
运行前先预览
Live Preview 面板在 Scene view 中让服装在重力下自然下垂,让你在进入 Play mode 之前就看清它的垂坠。
设置向导
PMX Auto-Setup 从转换后的 MMD 模型提出整套绑定,Sphere-Pack 从网格填充碰撞体,Stiffness-Fit 把一段掉落片段读成初始刚度。
一眼看懂的 Gizmo
每一类碰撞体在 Scene view 里各用自己的颜色绘制:身体胶囊为青色,道具为橙色,戳碰为黄色,重叠的工具也能一眼分清。
对 prefab 和撤销安全
每个笔刷和工具都识别 prefab 且可撤销,绘制过程绝不与你的版本管理或操作习惯冲突。
每个部件都有专属检视面板
每个 Weft 组件都有以同一套紫色主题统一的、措辞平实的自定义检视面板,在 Add Component 菜单里按类别归置,字段配有提示与合理范围而非裸值。同意模式可按区域用文字设定,抓取器也能按名称选择要抓的触碰区域。
风、戳与弹簧的编辑器
场景视图中的专属编辑器,会以解算器读取的确切姿态绘制风源与戳碰撞体的辅助图示,批量调节工具则把命名为 soft、medium、firm 的档案套用到晃动弹簧上。每一项都支持撤销。
一个菜单就能打开的引导
Weft/Open Walkthrough 直接在 Unity 里打开逐步的制作引导,无需在包文件夹里翻找。
在关键处够快
在公开的实机上测得,机器、方法与每一档数据都完整刊出。
0.68 ms
一件 3,000 顶点服装,在 90 fps 的 VR 帧上
<10%
一个完整角色占一帧 VR 的这么多,而且近乎线性扩展
0 bytes
每帧的分配量,由一道硬性测试门禁保证
最省的一档:一群仅靠纯正向运动学驱动摆动的人群,完全没有物理。扫过他们就能掀起一阵风。在解算器里,这样一整群人只需一次 Burst 调用就能容纳。
查看完整性能基线
帧预算占比、内存、完整测量方法,以及有手触碰时一群角色要花多少。
2×
静止的八个角色一群,快这么多
整个衣橱
一个解算器覆盖头发、服装以及一切柔软之物,并且延伸到角色之外、进入场景。布料甚至会反过来推动真实的 Rigidbody,一幅拂过的窗帘能轻推一颗球。
服装与头发
社交与网络
风格化与手感
性能与流程
角色之外
越过确定性的一条支线
Weft 默认是确定的。若某个世界宁愿对实时物理作出反应,也不追求逐比特回放,便有一条需手动开启的支线,用那份保证换取伸入运行中场景的能力。它现已可用,默认关闭,保持关闭的世界与从未拥有它的世界逐字节一致。
双向 Rigidbody 耦合
把运动中 Rigidbody 的实时速度与质量直接读入解算,让它把真正的动量交给所触碰的布料,布料也会反推。这比确定路径上的单向反应更进一步,在那里布料只能轻推 Rigidbody,却感觉不到它的运动。
实时场景查询
让服装不仅与你指派的碰撞体相撞,也与任何与之交叠的 Unity 碰撞体相撞,于是它能停靠在你未曾告知的桌子、架子或地面上。
两者都会从 Unity 物理读取实时状态,而那并不保证逐次一致地回放,因此开启任一项都只会让那一个世界放弃逐比特回放,其余一切照旧。模拟依然照常运行。这一取舍经实测稳定,并非半成品,你可以按世界有意地在确定性与实时反应之间取舍。
Weft 功能已经齐备,正处在发布前的最后打磨阶段。即将推出的是商店上架,而不是功能。暂无日期,上架当天购买链接就会出现在这里。
Weft 将是一款付费的 Unity 资产,一次买断,价格在上架时确定。