Skip to content

Repository files navigation

躯体肉感物理控制器(Flesh Physics Controller)v0.8.11.0

为角色的大腿、手臂、小肚子增加“肉感物理”:肉随动作自然滞后摆动, 类似胸部/臀部物理的手感。不修改角色数据文件,不改骨骼缩放, 尽量保持角色卡片原本的体型。

功能一览

  • 三个部位独立调参:Thigh(大腿)Arm(手臂)Belly(小肚子)
  • 两套物理系统可切换:弹簧系统(日常跟手)与链式系统(跳舞增强)
  • 默认简单 UI 只需调 强度 / 柔软度 / 动作响应 三项,完整参数可在高级模式展开
  • 每根肉感骨骼独立控制:开关、振幅(Amp)、旋转(Rot)、 旋转计算(RC,默认开启)、XYZ 轴冻结
  • Dance response(0~5):增强 VMD 跳舞抖动,弹簧/链式共用同一倍数
  • 参数实时可调,随角色卡自动保存(GUID 不变,旧卡数据兼容)
  • 新角色默认使用从实际常用参数提炼的部位独立基线,支持保存/加载 XML 预设
  • 一键 Clear shape 还原卡片原始体型
  • 面板带输入屏蔽,不会点击穿透到游戏视角

安装

  1. 把压缩包里的 BepInEx\plugins\ThighPhysicsController\ 整个文件夹 覆盖到游戏根目录的 BepInEx\plugins\ 下(同名文件夹直接合并)。
  2. 启动 CharaStudio.exe(或 Koikatu.exe)。
  3. 加载任意角色卡,按 Insert 打开面板。

插件文件夹与 DLL 沿用 ThighPhysicsController 名称是兼容性考虑; 插件显示名与游戏内面板标题统一为英文 Flesh Physics Controller

使用方法

打开与基本操作

  • Insert:开关面板。
  • 面板顶部选择角色,中部用 Thigh / Arm / Belly 切换部位。
  • Thigh physics enabled(或 Arm/Belly):该部位物理总开关,默认开启。
  • 所有滑条拖动实时生效,改动会随角色卡自动保存。

推荐:简单调节

面板默认只显示三个手感参数:

  • 强度 Strength:控制当前物理模式的整体作用量;
  • 柔软度 Softness:一次联动阻尼、惯性、回弹、刚性和频率,并按大腿、手臂、 小肚子使用不同曲线;
  • 动作响应 Motion response:控制走动、转身和舞蹈动作传给肉感骨骼的幅度。

简单 UI 还提供整套身体预设,一次应用到大腿、手臂和小肚子:

  • 稳定日常 Spring:明确切到弹簧,较紧、幅度较小,适合日常和首次使用;
  • 常用自然 Chain:明确切到链式,采用用户常用参数,也是新角色默认;
  • 舞蹈增强 Chain:明确切到链式,使用柔软端点与更高动作响应,适合 VMD 大动作。

需要逐骨 Amp、RC、XYZ 轴或直接编辑求解器参数时,再勾选 Advanced 高级

两种物理系统的切换

面板里有一个开关:

舞蹈链式模式(关闭 = 日常弹簧模式)

  • 不勾选 = 弹簧系统
  • 勾选 = 链式系统(新角色常用基线默认)。

两个系统拥有完全独立的参数集,互不串扰:

  • 弹簧系统:使用上方的 Weight / Gravity + Bone Thigh flesh (shared) 参数区 (Damping / Elasticity / Stiffness / Inert),每骨参数用 Bones
  • 链式系统:使用 Chain mode parameters 参数区,每骨参数用 ChainBones

高级参数速查

参数 范围 弹簧基线 链式基线(大腿/手臂/小肚子) 作用
Weight 0 ~ 1 0.8 / 0.7 / 0.7 0.9 / 0.7 / 0.7 肉感整体强度
Gravity -0.2 ~ 0.2 0.05 0.05 下垂感,正数向下垂
Damping 0 ~ 1 0.18 0.04 / 0.05 / 0.30 运动阻尼,越大越安静
Elasticity 0 ~ 1 0.10 0.05 / 0.25 / 0.25 弹性回中力度
Stiffness 0 ~ 1 0.12 0.85 / 0.90 / 0.90 刚性/长度保持
Inert 0 ~ 1 0.35 0.80 / 0.80 / 0.40 惯性滞后,越大甩得越明显
Dance response 0 ~ 5 1 1 舞蹈/动作响应倍数(两系统统一)
Jitter freq 0 ~ 2.5 1 0.20 / 0.15 / 1.00 抖动频率:越高回弹越快、抖动越密;0 为完全自由
Motion smooth 0.05 ~ 0.5 0.25 弹簧响应平滑:越小越柔、越不抖

每根骨(Per-bone: Amp / Rot / RC / Axis):

  • Amp:该骨摆动幅度;
  • Rot:非 RC 骨骼的平滑旋转幅度(默认 0.25);
  • RC:RotCalc,让骨骼朝下一根肉感骨方向瞄准旋转(默认开启);
  • X / Y / Z:对应轴的振幅,设 0 等于冻结该轴,也可以输入 0.5 做半衰减。

预设与恢复

  • 旧版附带的 Soft / Realistic / Exaggerated 已从发布包移除;旧 XML 仍可手动读取;
  • 简单 UI 的 稳定 / 自然 / 舞蹈 是当前受测试保护的推荐预设;
  • Save preset:输入名字保存(自动补 .xml,不会写出预设目录);
  • Load preset:加载列表中选中的预设;
  • Load from file...:从外部任意位置加载 XML 预设;
  • Clear shape (restore card defaults):一键还原卡片原始体型;
  • Reset to defaults:把当前部位参数恢复为插件默认值。

配置文件

BepInEx\config\codex.koikatumanager.thighphysicscontroller.cfg

  • Window key:面板快捷键(默认 Insert);
  • Auto apply on load:角色加载时自动应用(默认 true);
  • Force enable:即使卡片禁用了物理也强制开启(默认 true);
  • Remember per-character settings:按角色记忆本次会话的参数, 同场景同名同性别角色自动同步(默认 true);
  • Auto fix spring drift:弹簧模式后台慢速纠偏,把跳舞中误固化的基准 拉回卡片原始姿态,防止大腿越跳越变形(默认 true);
  • Log flesh physics:每 2 秒输出一次物理偏移日志(调试用);
  • Dump skeleton bones:启动时转储骨骼层级(调试用)。

多角色场景:区分、记忆、同步

  • 角色列表按 女性角色 / 男性角色 分组显示(#序号 名字), 同名男女不会再混在一起;
  • 选中角色按实例记忆,场景里增删角色不会跳到另一个人身上;
  • 参数按“名字 + 性别 + 性格”记忆(本次游戏会话内),换人/换场景再回来 会恢复上次的手感,而不是恢复默认或重新读 XML;
  • 同场景里同名同性别角色自动共享同一套参数:设置一次,其他同名角色同步生效;
  • 角色卡保存时参数仍会写回卡片;记忆只在本会话有效,重启游戏后从卡片/默认值开始。

弹簧系统 vs 链式系统(重点)

弹簧系统(Spring)

弹簧系统把每根肉感骨当成一个“粒子”:父关节一动,粒子按父关节的 加速度、角速度和基准位移获得滞后速度,再由弹簧拉回基准位置。

特点:跟手、响应快,抖动频率高、细节细碎,适合日常走路、转身、挥手、 H 场景这类自然动作;需要这种感觉时可在简单 UI 关闭链式模式。

主要参数:Weight(整体强度)、Gravity(下垂)、Damping(阻尼)、 Elasticity(回中)、Stiffness(刚性)、Inert(惯性), 加上每骨 Amp / Rot / RC / Axis

链式系统(Chain)

链式系统移植自游戏 DynamicBone_Ver02 的粒子链算法:根粒子锁定在锚点骨骼上, 子粒子逐个做弹簧 + 长度约束,锚点的位移和旋转驱动整条链滞后。

特点:低频、滞后明显、拖尾长,动作幅度越大越有“肉甩起来”的感觉, 专门用于 VMD 跳舞增强。

链式有独立的参数集(Chain mode parameters)和独立的每骨参数(ChainBones), 不占用弹簧滑条。实现上带有几项保护:

  • 长度约束收紧(Stiffness=1 保持原骨长),不再出现“橡皮泥”式拉伸;
  • 锚点位移限幅 0.30m,避免其它插件(如 BPC)放大骨盆运动时把链拉飞;
  • 每帧按当前骨骼姿态刷新静止方向/长度,兼容 KKABMX 的骨骼缩放;
  • 小肚子链刻意排除了 cf_s_waist02 结构骨,跳舞时不会撕皮肤/身体消失。

对比表

对比项 弹簧系统 链式系统
物理模型 单粒子弹簧回中 链式粒子 + 长度约束
参数集 共享参数 + Bones Chain 参数 + ChainBones(独立)
驱动来源 父关节加速度 / 角速度 / 位移 锚点位移 / 锚点角速度
手感 高频跟手、细节细碎 低频大幅拖尾
适合场景 日常动作、自然写实 VMD 跳舞、大幅摆动
舞蹈响应 统一倍数(默认 1=1x) 统一倍数(参考系数 0.000384)
每骨控制 Bones(Amp/Rot/RC/Axis) ChainBones(Amp/Rot/RC/Axis)
兼容性 常规 ABMX 每帧刷新 + 锚点限幅

怎么选

  • 想要“自然一点、随时跟手”:用弹簧系统
  • 想要“跳舞时明显甩肉、拖尾”:用链式系统,并把 Dance response 开到 1~3;
  • 两者可以随时切换,参数各自保留,不会互相覆盖。

教程

第 1 步:安装并打开面板

按上文“安装”完成部署 → 启动 CharaStudio → 加载角色卡 → 按 Insert。 如果面板显示 No characters loaded,先在工作室里加载一个角色。

第 2 步:从简单参数起步(推荐)

  1. 确认三个部位的物理开关已勾选;
  2. 日常先点 稳定日常 Spring,VMD 大动作先点 舞蹈增强 Chain,想恢复常用默认点 常用自然 Chain
  3. 若仍需微调,选择对应部位,先调 强度 到合适幅度;
  4. 再调 柔软度:向右更滞后、更松软,向左更快停、更紧实;
  5. 最后用 动作响应 微调动作传给肉感骨骼的幅度。

第 3 步:按场景选择求解器

  1. 勾选链式:低频、拖尾明显,当前常用基线与 VMD 舞蹈优先;
  2. 关闭链式:响应更快,适合想要细碎跟手的日常动作;
  3. 切换时插件会先清除旧模式形变,再以当前角色姿态重新初始化;
  4. 只有简单参数无法解决某根骨或某个轴的问题时,才打开高级模式。

第 4 步:调每根骨

  1. Per-bone: Amp / Rot / RC / Axis (0 = freeze) 区域列出该部位所有肉感骨;
  2. 勾选某根骨后调 Amp 控制摆动幅度;X/Y/Z 任一设 0 表示该轴冻结;
  3. 想让骨骼朝下一根肉感骨方向旋转:RC 默认已勾上,取消即关闭;
  4. 不勾 RC 时,Rot 滑条提供基于偏移的平滑旋转(默认 0.25)。

第 5 步:保存你的手感

  1. 调好参数后,在 Presets 区输入名字(例如 MyDance.xml),点 Save preset
  2. 下次点 Load preset,或从外部 Load from file... 载入;
  3. 想回到卡片原始体型:点 Clear shape (restore card defaults)

第 6 步:排查与调试

  • 面板没反应:确认角色已加载、部位开关已打开; 查看 output_log.txt 是否有 Flesh physics initialized
  • 跳舞不抖:确认 Dance response > 0;链式效果比弹簧明显;
  • 身体消失/皮肤撕裂:确认小肚子链不含 cf_s_waist02(0.8.0 起已排除); 如出现,点 Clear shape 后重新 Apply now
  • 开调试日志:把配置里 Log flesh physics 设为 true, 每 2 秒会输出 Flesh physics [骨骼名]: applied=... mag=... rot=..., 链式模式输出 chain applied=... anchor=... amp=...

0.8.11.0 变更

  • 简单 UI 把容易误解的反向勾选框改为 日常弹簧 Spring / 舞蹈链式 Chain 两个 明确模式按钮;三个整套预设的按钮名也直接标明会使用的求解器;
  • 稳定日常 现在真正切换到 Spring;常用自然舞蹈增强 使用 Chain。 Stable 三部位实机门禁已验证为 Spring,零重置、零重锚;
  • 回归脚本支持指定角色卡与标签,新增跨卡体型矩阵门禁,已覆盖两张女性卡和一张 Bulky 男性卡的 Chain,以及女性/男性 Spring。

0.8.10.0 变更

  • 两种求解器都已通过五档柔软度和 30/60/高帧率回归;简单柔软度从紧到软保持 可解释的单调响应,不再需要用户手动配平一组底层参数;
  • Spring 修复硬档伪振动:阻尼不再被内部截到 0.20,动态围绕重力平衡点积分, 简单映射不会把旧频率参数推入注能区;
  • 统一异常、瞬移、禁用与重锚状态复位,减少重复代码和残留状态。

0.8.6.3 变更

  • Jitter freq 下限从 0.2 放开到 0(弹簧/链式、卡片与预设读取同步), 想要更自由、更“甩”的手感可以把频率调到 0~0.2。

0.8.6.2 变更

  • 小肚子链移除 cf_s_spine03(上段脊柱,刚性骨,不应抖动),只保留 cf_s_waist01;链式模式新增单粒子链支持,小肚子在弹簧/链式下都能正常摆动;
  • 小肚子每骨参数区现在只有 waist01 一行。

0.8.6.1 变更

  • 修复部件切换失效:Thigh/Arm/Belly 改用显式按钮,避免面板停在错误部位 (选小肚子却显示手臂骨骼名的症状即由此引起);
  • 每骨参数区标题标注当前模式(Spring/Chain);
  • 小肚子链固定为 cf_s_waist01 + cf_s_spine03(spine03 是上段脊柱, 视觉上接近肩背,但属于小肚子链的一部分,不是肩臂骨)。

0.8.6 变更

  • 开放新参数并真实接入物理(随卡片/预设保存):
    • 弹簧:Jitter freq(抖动频率,缩放弹簧回弹速度与弹性回中)、 Motion smooth(响应平滑,控制加速度/角速度滤波,越小越柔);
    • 链式:Jitter freq(抖动频率,缩放刚度/弹性修正);
  • 卡片数据版本升至 55(旧卡缺失字段自动用新默认值,GUID 不变)。

0.8.5.1 变更

  • RC(RotCalc)默认全开:新建参数与三档代码预设的每骨 RC 默认都为 true (弹簧与链式一致),旧卡已存值不受影响;
  • 修复“关闭后腿部仍变形/清除无效”:部位开关关闭时物理立即恢复骨骼姿态; 链式模式下禁用的骨骼位置+旋转完全复位;移除物理前先复位骨骼, 避免重新启用后把变形姿态当“原始姿态”固化;
  • 链式 RC 不再旋转已禁用的骨骼,避免关掉某根骨后它仍被上/下一根骨带动;
  • 弹簧模式防积累:重锚检测改为父空间局部判定(父骨旋转不再把偏移固化进基准), RC 改为基准旋转 + ±12° 限幅(消除跳舞反馈扭曲),并内置后台慢速纠偏 (检测到基准偏移持续 2 秒且无外部改写时,以 0.03m/s 量级拉回卡片姿态), 正常抖动不受影响,可在配置中关闭;
  • 完整历史见包内 CHANGELOG.md

0.8.5 变更

  • Dance response 上限从 3 放开到 5(UI、卡片读取、预设读取三处同步),默认仍 1;
  • 弹簧减抖(0.8.5 当时实现):默认 Weight 0.8→0.7、Damping 0.03→0.12、Inert 0.35→0.30; 加速度平滑 0.45→0.25、X/Z 增益 1.5→1.25、驱动系数 0.0003→0.00025、 当时的弹簧速度阻尼下限为 0.8;当前版本已由 0.8.10.0 的完整阻尼映射替代;
  • 链式增强:默认 Weight 0.7、Damping 0.30、Inert 0.40;舞蹈驱动系数 0.000384→0.0006,切向限幅 0.03→0.05、速度限幅 0.16→0.22, Dance response 调到 2~5 时拖尾更明显;
  • 多角色场景:角色列表按女性/男性分组显示;选中按实例记忆,增删角色不串人, 点击行直接切换(不再用选择网格); 参数按“名字+性别+性格”会话内记忆,同名同性别角色自动同步; OnReload 尊重 maintainState,场景刷新/换装不再强制重置参数;
  • 兼容:移除 KKAPI 最低版本限制([BepInDependency("marco.kkapi")]), 低版本 KKAPI 环境也能加载。

0.8.1 变更

  • 插件显示名与游戏内面板标题统一为英文 Flesh Physics Controller (GUID 不变,旧卡兼容);文件对话框、配置描述、日志前缀同步统一;
  • Dance response 在弹簧/链式之间统一倍数:默认参数下 1=1x、2=2x、3=3x, 调 Weight/Inert 时两种模式按同一公式缩放,默认手感不变;
  • README 重写:新增使用方法、弹簧/链式对比与分步教程。

API

  • GUID:codex.koikatumanager.thighphysicscontroller(不可变)
  • 版本:0.8.11.0
  • 显示名:Flesh Physics Controller
  • 卡片数据版本:56
  • 依赖:KKAPI marco.kkapi(不限制最低版本)
  • Harmony 补丁仅用于输入屏蔽: Input.GetAxis / GetAxisRaw / GetMouseButton / GetMouseButtonDown / GetMouseButtonUp

说明

  • 0.8.7.0 起不再在内存或新卡/新预设中写入旧版未使用字段;旧卡/旧 XML 中的 CollisionRadius 等额外数据会被安全忽略。
  • 链式模式下 RotRC 均生效:非 RC 骨骼用 Rot 做平滑旋转, RC 骨骼优先瞄准。
  • 内部类名/程序集名/插件目录沿用 ThighPhysicsController,仅为了兼容安装路径。
  • 角色参数记忆仅限本次游戏会话;跨重启请保存卡片或使用预设 XML。

About

Flesh Physics Controller - BepInEx 5 plugin for Koikatsu / Koikatsu Party adding flesh jiggle physics to thighs, arms and belly. Spring and chain (MMD-accurate) systems, per-bone controls, XML presets, per-card save.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages