Skip to content

Desuq Cafe

即将推出

Weft

面向风格化 Unity 角色的布料与头发,力求让触碰的手感恰到好处。

一段在你浏览器中运行的实时布料模拟,再现了 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 创作者

把它带进 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 分钟即可上手

无需解算器代码,只需组件和绘制。

  1. 01

    导入软件包

  2. 02

    添加头发发丝

  3. 03

    自动贴合身体碰撞体

  4. 04

    绘制触碰区域

  5. 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 调用就能容纳。

实测,而非宣传

查看完整性能基线

帧预算占比、内存、完整测量方法,以及有手触碰时一群角色要花多少。

静止的八个角色一群,快这么多

整个衣橱

一个解算器覆盖头发、服装以及一切柔软之物,并且延伸到角色之外、进入场景。布料甚至会反过来推动真实的 Rigidbody,一幅拂过的窗帘能轻推一颗球。

服装与头发

头发发丝与分组 带代理网格的网格布料 双手抓取 层叠衣物垂坠 自碰撞厚度 道具与手指碰撞体 软体 软体抓取器 形状记忆回弹 用于耳朵和尾巴的活动发丝 杆的扭转与扭矩 单骨晃动弹簧 动画姿势跟随 逐顶点跟随权重

社交与网络

按区域的同意 反应挂钩 按区域的戳感知 触碰消息 共享布料 声音挂钩

风格化与手感

手感预设 张力褶皱贴图 皮肤紧束鼓起 水珠与湿润 各向异性折叠铰链 环境风 编排的风

性能与流程

FK 摆动人群层 代理网格抽减 稳定后休眠 PMX 自动设置 运行时骨架重绑定 IK 提示肢体跟随 自带蒙皮 球体填充碰撞体 编辑模式实时预览 从片段拟合刚度 URP 与 HDRP 稳健的网格导入

角色之外

草与叶的摆动 横幅与旗帜 会对玩家响应的植被 悬挂的道具与招牌 布料对 Rigidbody 的反作用
实验性,需手动开启

越过确定性的一条支线

Weft 默认是确定的。若某个世界宁愿对实时物理作出反应,也不追求逐比特回放,便有一条需手动开启的支线,用那份保证换取伸入运行中场景的能力。它现已可用,默认关闭,保持关闭的世界与从未拥有它的世界逐字节一致。

双向 Rigidbody 耦合

把运动中 Rigidbody 的实时速度与质量直接读入解算,让它把真正的动量交给所触碰的布料,布料也会反推。这比确定路径上的单向反应更进一步,在那里布料只能轻推 Rigidbody,却感觉不到它的运动。

实时场景查询

让服装不仅与你指派的碰撞体相撞,也与任何与之交叠的 Unity 碰撞体相撞,于是它能停靠在你未曾告知的桌子、架子或地面上。

两者都会从 Unity 物理读取实时状态,而那并不保证逐次一致地回放,因此开启任一项都只会让那一个世界放弃逐比特回放,其余一切照旧。模拟依然照常运行。这一取舍经实测稳定,并非半成品,你可以按世界有意地在确定性与实时反应之间取舍。

Weft 功能已经齐备,正处在发布前的最后打磨阶段。即将推出的是商店上架,而不是功能。暂无日期,上架当天购买链接就会出现在这里。

Weft 将是一款付费的 Unity 资产,一次买断,价格在上架时确定。