CBPC - 用于 SSE 和 VR 的碰撞物理

创作者: Shizof
已更新:2024-02-16 20:13:46
66.7MB

关于此 MOD

CBPC - 适用于 SSE 和 VR 的自定义身体物理碰撞模型。包含开箱即用的胸部、臀部、腹部和阴道碰撞效果。VR 版本还包含玩家 VR 手部和武器的碰撞效果。
请选择正确的游戏和游戏版本
在 FOMOD 安装程序中



不支持破解版游戏!!!


如果您有任何问题或疑问
查看 常见问题解答文章 第一的

非常感谢 多边形地狱 感谢 CBP 发布源代码,使我能够创建这个模组。


描述


这个模组基于 polygonhell 的 CBP Physics。他以 MIT 许可证发布了源代码,这使我得以在他的基础上继续制作这个模组。

此模组包含胸部、臀部、腹部弹跳效果,以及胸部、臀部、腹部、阴道(及其他部位)与NPC或玩家的手、阴茎等的碰撞效果。它包含配置文件,可以创建符合您体型的碰撞球体。如果您使用自定义体型,请参考PDF指南修改球体以适应您的自定义体型。

CBPC并非预先计算或虚假的物理现象。它只是用球体代替顶点来进行计算。计算每帧都会进行。这是一个动态物理模拟模组,在游戏性能和流畅度之间取得了很好的平衡。因为在我看来,一个会严重影响游戏帧率的物理模组根本算不上好的物理模组。

游戏的SSE和VR版本均受支持。请确保在fomod中选择正确的版本。


VR版本

此模组支持VR。VR版本中,玩家的VR手部或装备的武器会与女性的胸部、臀部、腹部和阴部发生碰撞。
要使腹部和阴道碰撞生效,您的女性身体应该有正常工作的腹部、骨盆和阴部节点。


SSE 版本

SSE版本的MOD增加了胸部、臀部、腹部和阴道与NPC或玩家的手部及阴茎的碰撞效果。除了VR版本的手部和武器碰撞效果外,其他内容与VR版本相同。


要求

  • 此模组为 SKSE 插件,因此需要 SKSE。 SKSE64 或 SKSEVR
  • 它使用骨骼信息,因此需要 XP32 最大骷髅特殊扩展最新版本。根据您的使用需求选择基础版或扩展版。基础版足以满足此模组的需求。如果您选择扩展版,请在下一个屏幕上选择 XPMS(S)E 最新版本。其他屏幕与此模组无关。 请确保不要覆盖此文件。如果覆盖此框架,将会发生一些糟糕的奇怪事情。
  • FNIS或者 复仇女神 或者,安装任何动画或骨骼后都需要运行 Pandora。这是动画模组的要求,而非 CBPC 的要求。
  • 你需要一个与物理引擎兼容的身体模型。这意味着你需要一个带有正常工作的胸部、臀部、腹部和阴道节点的身体模型。我会列出一些供你选择。其中一些模型没有预制好的模型可用。 需要您使用 Bodyslide Studio 构建身体模型。:
    • CBBE SE 物理系-> 需要 Bodyslide 构建版本。 仅包含胸部-臀部节点。
    • CBBE SE 特别机构-> 需要 Bodyslide 构建版本。 仅包含乳房-臀部-阴道节点。
    • 统一国民党或者 联合国公共广播电台-> 拥有预设的身体模型、预设的盔甲和服装。包含胸部、臀部和腹部节点。
    • CBBE 3BBB或者 巴哈杜尔国家公园-> 需要 Bodyslide 构建版本。 有乳房、腹部、臀部、大腿、小腿、阴道淋巴结。
    • Oldrim CosioHD(使用 CBBE 材质)-> 需要 Bodyslide 构建版本。 具有乳房-臀部-腹部-阴道节点。 
    • Oldrim CBBE 特殊车身 -> 需要 Bodyslide 构建版本。 具有乳房-臀部-腹部-阴道节点。
    • Oldrim UUNP(统一联合国党)机构-> 需要 Bodyslide 构建版本。 具有乳房-臀部-腹部-阴道节点。


对于那些询问的人,答案是:不,原版模型和盔甲不支持物理效果。它们缺少必要的节点。所以你需要我列出的模型之一,或者任何其他拥有所需骨骼的模型。


  • 《上古卷轴5:天际 SE》或 VR 版中的阴茎,用于将阴茎用作碰撞器。
  • 如果您使用的是单胸骨模型, 您可以使用 fomod 安装程序中提供的 10 个弹跳配置选项之一,或者您可以使用 罪恶的CBP, 沉浸式 CBP 配置, CBP物理配置或者任何其他包含此模组的 CBPConfig.txt 文件。它们兼容。我建议使用更灵活的配置而不是更固定的配置。这样碰撞效果会更有趣。
  • 如果你使用3块胸骨的体型 与 CBBE 3BA/BHUNP/UBE 类似,它们在 fomod 安装程序中提供了不同的选项供您选择。您也可以使用可选文件中的 Bounce Config 安装程序。此外,avidichard 分享了一个适用于 3BA 身形的实用配置: 3BA RFBBT
  • 以下是我推荐用于 3BA 或 BHUNP 的另一种实用配置: Petite to Plenty - 一款用于实现真实碰撞和物理效果的 CBPC 配置

任何需要或声称可以与 CBP 或 HDT 配合使用的车身或盔甲都可以与 CBPC 配合使用(用于 BBB 碰撞和反弹)。


如果你想要装备物理效果,这里有一个由 Acro748 制作的模组: CBPC设备物理如果你只是将 CBPC 用于装备物理效果,则不需要身体模型模组。


如果你在《上古卷轴5:天际VR》中使用PLANCK时,双手无法伸入骨盆区域,这是由骨骼碰撞引起的。你可以使用 这个模组 解决这个问题。


想要获得与车身完美贴合的碰撞配置,请查看新的 CBPC碰撞配置集合 作者:jerok47。如果您使用 OBody NG,请查看 OBody 热插拔 - OBody 的 CBPC 预设.



安装

此模组会覆盖 CBP,因为它们的 DLL 名称相同。您不需要 CBP,此模组会替换它。

此模组自带FOMOD安装程序。请使用模组管理器进行安装。

如果出于某种原因更改了 dll 文件的名称,请务必在更新 mod 之前删除旧文件,否则由于两个相同的 mod 冲突,将会导致崩溃。


关于文件选项和冲突的常见问题:

我需要你的 CBPC 主文件(“CBPC - Fomod 安装程序 - 主文件”)吗?
- 是的。

……以及可选的 3 骨骼文件,其长名称为(“CBPC 3-Bone Breast Body Breast-Butt Bounce Configs for 3BA-BHUNP-COCO”)。 
- 仅当您不喜欢 3BA-BHUNP-COCO 等安装配置带来的胸部或臀部弹跳时。

安装过程中出现冲突。我是否应该用可选文件中的文件覆盖主目录中的文件?3BA-BHUNP-COCO 呢?
- 关于冲突,可选文件在此处(如果你选择安装它)应该覆盖此处的 Main 文件和 3BA-BHUNP-COCO 附带的文件。

3BA-BHUNP-COCO 应该覆盖此处的 Main 文件。




常见问题解答和故障排除


如何关闭性爱场景中腹部增大的效果?

那是一个叫做“腹部凸起”的功能,与腹部物理效果无关。您可以通过在 SKSE\Plugins 文件夹中的 CBPCollisionConfig.txt 和 CBPCollisionConfig_Female.txt 文件(所有以 CBPCollisionConfig*** 开头的文件)中将 BellyBulge 设置为 0 来禁用它。




请参阅 常见问题解答 至于其他方面。



自定义预设和分享

我鼓励大家制作并分享自己的自定义配置文件,无论是与模组一起发布,还是作为单独的模组发布。分享,传递爱。



配置

该模组有 5 种类型的配置文件(SSE 版本为 4 种)。

CBPCSystem.ini 用于定义性能相关设置。最新版本中,日志记录也包含在此文件中。 
SkipFrames、GridSize、ActorDistance(Actor碰撞处理距离)、ActorBounceDistance(Actor反弹处理距离)、ActorAngle(Actor处理角度)、CombatActorCount的进出设置都在此文件中。

FpsCorrection 参数用于启用动作的帧率校正模式。启用后,弹跳幅度将不再受帧率影响,但在极低帧率下可能会出现卡顿。禁用此参数后,即使在低帧率下动作也会流畅,但弹跳幅度会随帧率变化。根据我的经验,在 30-144 帧率范围内效果最佳。因此,如果您的帧率在 30 帧或以上,我建议启用此参数。但如果您不喜欢这种效果,希望动作流畅,当然也可以将其禁用。

最新版本 (1.5.0) 已移除实验性参数 UseParallelProcessing,因为该参数现已启用且不可禁用。尽情享受 25%-50% 的性能提升吧!

此文件中还包含针对 VR 用户的触觉反馈设置。这些设置应该适用于大多数控制器,但如果您的控制器出现问题,您可以尝试提高这些设置值。一位 Quest 2 用户报告称,HapticFrequency=120 和 HapticStrength=5 的设置对他们有效。请找到最适合您的设置值。 


CBPCMasterConfig.txt
 用于设置模组的通用参数。现在你可以在 [ConfigMap] 中定义其他节点,使它们具有弹性。
请注意,所有受影响的节点都必须添加到 CBPCMasterConfig.txt 文件中的 [ConfigMap] 下才能生效。您也可以创建多个 CBPCMasterConfig.txt 文件来定义更多 [ConfigMap] 行。

在 CBPCMasterConfig.txt 中使用 TuningMode=x 变量,可以每隔 (x*120 帧) 重新加载 CBPCollisionConfig****.txt 文件。
请注意,为了向后兼容,CBPConfig****.txt 文件仍然使用 CBPConfig***.txt 文件中的 Tuning.rate 参数加载。

NoJitterFixNodes 设置用于定义在抖动修复中要忽略的节点名称。
默认情况下,设置包含 NPC Genitals01[Gen01]、NPC Genitals02[Gen02]、NPC Genitals03[Gen03]、NPC Genitals04[Gen04]、NPC Genitals05[Gen05]、NPC Genitals06[Gen06]、GenitalsLag01、GenitalsLag02、GenitalsLag03、GenitalsLag04、GenitalsLag05、GenitalsLag06、GenitalsScrotumLag。 

现在您还可以在 CBPCMasterConfig**** 文件中定义更多内容:

[设置]
NoJitterFixNodes = #此处添加更多节点

[ConfigMap]
...

CBPCMasterConfig**** 文件中的 NoJitterFixNodes 设置不会覆盖原始设置,只会添加。


从 1.4.0 版本开始,节点定义支持以下条件:

语法 --> 节点名称 = BounceConfig别名 = 条件

支持的条件函数:IsRaceFormId(espname|000000)、IsRaceName(string)、ActorName(string)、ActorFormId(espname|000000)、IsInFaction(espname|000000)、IsPlayerTeammate()、IsFemale()、IsMale()、IsPlayer()、HasKeywordId(espname|000000)、HasKeywordName(string)、RaceHasKeywordId(espname|000000)、RaceHasKeywordName(string)、IsActorBase(espname|000000)、IsUnique()、IsVoiceType(espname|000000)、IsCombatStyle(espname|000000)、IsClass(espname|000000)

对于 formid 文件,你可以使用带 esp 名称的格式:(espname|000000),或者对于 Skyrim.esm 文件,不使用 esp 名称:(00000000)
您可以使用多个函数进行 AND 和 OR 逻辑运算。它们的拆分方式类似于 CK 语法,先执行 AND 运算,再执行 OR 运算。

所以:
A AND B OR C 的意思是 => A AND (B OR C)
A 和 B 或 C 和 D 表示 => A 和 (B 或 C) 和 D
A OR B AND C OR D OR E 表示 => (A OR B) AND (C OR D OR E)

你可以给函数加上 NOT 前缀来表示否定条件,例如 NOT IsFemale()

请确保在 CBPCMasterConfig 文件中为添加的节点定义适当的条件,以免对不需要任何反弹/碰撞的节点进行不必要的计算。

例如:
IsFemale() AND IsRaceName(Khajit)
IsFemale() AND IsRaceFormId(13745)
IsFemale() AND IsRaceFormId(13745 OR IsRaceFormId(13740)


截至 1.5.0 版本您可以使用“<”和“">”将[ConfigMap]下的节点分组,以确保它们按顺序处理,而不是同时处理。此功能适用于链式节点,例如3BB胸部。用法:

节点
B 节点
<
C 节点
D 节点
>
<
节点
F 节点
>

这样,C 节点和 D 节点以及 E 节点和 F 节点就不会同时被处理。


CBPConfig.txt 用于配置弹跳物理效果。它类似于 CBP 版本,但新增了许多参数。您可以使用 罪恶的CBP, 沉浸式 CBP 配置, CBP物理配置 或任何其他旨在与 CBP 配合使用的配置文件 如果您使用的身体模型只有一个乳房节点.

从 1.1.0 版本开始,您现在可以将 CBPConfig.txt 文件拆分为多个文件,只要它们以 CBPConfig 开头即可。例如:“CBPConfig*****.txt”。

从 1.4.0 版本开始,插值也支持 0 权重反弹设置。例如:

Breast.stiffness 0.05 #这是仅定义 100 重量反弹设置的语法。
Breast.stiffness 0.05 0.08 #这是定义 100(第一个)和 0(第二个)重量反弹设置的语法。

如果只定义了第一个值,则体重为 0 时也使用 100 的权重。这两个值用于根据演员的体重插值计算角色的权重。例如,你可以使用此功能来减少胸部平坦的演员的弹跳。

从 1.4.0 版本开始,它支持以下条件:
你只需要在文件顶部添加 `Conditions = ...` 这行代码。确保你还有其他配置文件来涵盖所有没有 `Conditions` 的节点的设置,以便其他参与者可以使用这些设置。

条件式回弹配置适用于您已知需要不同配置的特定角色群体。因此,您无需在回弹配置中添加 IsFemale() 条件,只需在 CBPCMasterConfig 中的节点上添加即可。条件式回弹配置和普通回弹配置之间不能混用。 条件语句是独立的(每个语句都单独成一个文件)。.

支持的条件函数:IsRaceFormId(espname|000000)、IsRaceName(string)、ActorName(string)、ActorFormId(espname|000000)、IsInFaction(espname|000000)、IsPlayerTeammate()、IsFemale()、IsMale()、IsPlayer()、HasKeywordId(espname|000000)、HasKeywordName(string)、RaceHasKeywordId(espname|000000)、RaceHasKeywordName(string)、IsActorBase(espname|000000)、IsUnique()、IsVoiceType(espname|000000)、IsCombatStyle(espname|000000)、IsClass(espname|000000)

对于 formid 文件,你可以使用带 esp 名称的格式:(espname|000000),或者对于 Skyrim.esm 文件,不使用 esp 名称:(00000000)
您可以使用多个函数进行 AND 和 OR 逻辑运算。它们的拆分方式类似于 CK 语法,先执行 AND 运算,再执行 OR 运算。

所以:
A AND B OR C 的意思是 =&gt; A AND (B OR C)
A 和 B 或 C 和 D 表示 =&gt; A 和 (B 或 C) 和 D
A OR B AND C OR D OR E 表示 =&gt; (A OR B) AND (C OR D OR E)

你可以给函数加上前缀 NOT 来表示否定条件,例如 NOT IsFemale()

例如:
IsFemale() AND IsRaceName(Khajit)
IsFemale() AND IsRaceFormId(13745)
IsFemale() AND IsRaceFormId(13745 OR IsRaceFormId(13740)


像这样添加到文件顶部(删除条件词之间的空格,Nexus 不支持该词):

条件 = IsFemale() AND IsRaceFormId(13745) OR IsRaceFormId(13740)
优先级 = 100



优先级设置可用于对条件配置进行排序。优先级越高,检查顺序就越靠前。例如,针对特定角色的条件配置应具有较高的优先级,而针对特定性别所有角色的条件配置则应具有较低的优先级。默认情况下,如果没有添加优先级参数,则使用 50。因此,请将其设置为 0 到 100 之间的值。

截至 1.5.0 版本系统会检查某些设置是否已设置(以防止配置错误的条件文件),如果 这些都未设置该条件配置文件将被忽略:
非零值:刚度、刚度²、阻尼
非 100:碰撞 X/Y/Z 最大偏移
非-100:碰撞X/Y/Z最小偏移
因此,如果您正在尝试创建一个空的条件反弹配置文件来阻止某些 NPC 进行任何反弹,您可以至少包含其中一个具有适当值的配置文件,以便忽略这些 NPC。


以下是avidichard制作的关于反弹配置参数的指南: 3BA 弹跳配置指南它是为 CBBE 3BA mod 制作的,但参数说明对于 1 胸骨体型也是一样的。

要修改弹跳设置,请打开 cbpconfig***.txt 文件,将 tuning.rate 参数设置为 60,然后启动游戏,在游戏运行时更改这些值,即可立即看到更改效果。满意后,将 tuning.rate 设置回 0 以恢复正常游戏状态,然后保存设置。

CBPConfig.txt 配置说明 f来自 polygonhell:
剧透:  
展示

配置反弹
默认设置非常像 Jelly,主要是因为这样更容易让我看出哪些地方出了问题,但整体外观可以进行很大程度的更改。
编辑 Data/SKSE/Plugins/CBPConfig.txt
将 Tuning.rate 设置更改为 0 以外的值。

调谐速率 60

这决定了从文件中重新读取配置的频率,60 大约是 1 秒。
启动游戏,编辑文件中的参数并保存,一两秒钟内应该就能看到更改。
满意后,将 Tuning.rate 改为 0,它将停止重新加载配置。
如果您打算调整《上古卷轴5:天际》的物理效果,则必须在运行游戏之前将调整率设置为除 0 以外的值。

从 0.02 版本开始,调优功能默认禁用。

在正常游戏过程中,您绝对不应该启用 tuning.rate 功能。只有在修改弹跳设置时才应该启用它。修改完成后,应立即关闭 tuning.rate 功能。这样,您的更改当然会生效。

退订设置列表:
剧透:  
展示

.stiffness # 线性弹簧刚度
.刚度X
.刚度Y
.刚度Z
.刚度X旋转
.刚度Y旋转
.刚度Z旋转

.stiffness2 # 二次弹簧刚度
.stiffness2X
.stiffness2Y
.stiffness2Z
.刚度2X旋转
.stiffness2YRot
.stiffness2ZRot

.damping # 速度移除/刻度 1.0 将完全移除速度
.dampingX
.dampingY
.steamingZ
.dampingXRot
.dampingYRot
.dampingZRot

.Xmaxoffset # 位置在 X 轴上可以偏离目标的最大单位数(物理定律限制向右移动的距离 / 建议使用正数)
.Ymaxoffset # Y 轴方向上位置与目标位置的最大偏差单位数
.Zmaxoffset # Z 轴方向上位置与目标位置的最大偏差单位数
.Xminoffset # X 轴上位置可以偏离目标的最小单位数(物理限制向左移动的距离/建议使用负数)
.Yminoffset # Y 轴上位置可以偏离目标值的最小单位数
.Zminoffset # Z 轴方向上位置可以偏离目标值的最小单位数
.XmaxoffsetRot # 旋转时,X 轴方向上位置与目标位置的最大偏差单位数
.YmaxoffsetRot # 旋转时,位置在 Y 轴上可以偏离目标的最大单位数
.ZmaxoffsetRot # 旋转时,Z 轴方向上位置与目标位置的最大偏差单位数
.XminoffsetRot # 旋转时,位置在 X 轴上可以偏离目标的最小单位数
.YminoffsetRot # 旋转时,位置在 Y 轴上可以偏离目标的最小单位数
.ZminoffsetRot # 旋转时,位置在 Z 轴上可以偏离目标位置的最小单位数

.timetick # 物理时间单位为毫秒 (ms),4 表示 16 毫秒的帧将被分解为 4 个 4 毫秒的步长。
.timetickRot # 旋转物理的时间量子,单位为毫秒。4 表示 16 毫秒的帧将被分解为 4 个 4 毫秒的步长。

.linearX / .linearY / .linearZ # X/Y/Z 方向的运动比例 - 左右、前后、上下

.linearX/Y/ZspreadforceX/Y/Z # 允许将最小/最大偏移量产生的力分散到不同方向

.rotationalX # 骨骼绕 X 轴旋转的比例(之前为 .rotational)
.rotationalY # 骨骼绕 Y 轴旋转的比例
.rotationalZ # 骨骼绕 Z 轴旋转的比例

.linearX/Y/ZrotationX/Y/Z # 将线性力传递到所需的旋转

.timeStep
.timeStepRot

.collisionFriction # 碰撞中摩擦引起的物理减速
.collisionPenetration # 降低碰撞灵敏度 / 它会影响实际碰撞范围
.collisionMultipler # 碰撞推动强度 / 它不影响实际碰撞范围
.collisionMultiplerRot # 碰撞旋转强度
.collisionElastic # 添加碰撞反弹效果,同时修复碰撞摩擦引起的抖动。如果 collisionFriction 的值不是 1.0,请确保启用此选项。
collisionElasticConstraints #默认值为 1。设置为 0 时,将禁用忽略最大/最小偏移以防止抖动的功能。
.collisionX/Y/ZmaxOffset # 限制碰撞时被推动的最大范围
.collisionX/Y/ZminOffset # 限制碰撞时被推动的最小范围

.gravityBias # 节点上的向下重力
.gravityCorrection # 无加速度的重力
.gravityInvertedCorrection # 当玩家倒立时进行重力校正(例如:修复胸部神奇地漂浮的问题)
.gravityInvertedCorrectionStart # 反转重力开始影响重力的临界点(例如,0.25 用于忽略行走/跑步时的小角度)
.gravityInvertedCorrectionEnd # 在此处,反向重力将停止对重力产生更大影响。
.cogOffset

#仅限母乳:
.breastClothedPushup
.胸甲轻甲俯卧撑
.breast重甲俯卧撑
.breastClothedAmplitude
.胸甲轻甲振幅
.胸甲重甲振幅

以上参数通过盔甲的材料影响物理特性。
以下关键字用于对这些参数进行额外管理
它使用关键字名称,所以只需创建一个新关键字,然后正确定义名称并将其附加到记录即可。
CBPCAsNakedL -&gt; 将左乳视为裸露
CBPCAsNakedR -&gt; 将右乳视为裸露
CBPCAsClothingL -&gt; 将左胸视为衣物
CBPCAsClothingR -&gt; 将右乳视为衣物
CBPCAsLightL -&gt; 将左胸视为轻甲
CBPCAsLightR -&gt; 将右胸视为轻甲
CBPCAsHeavyL -&gt; 将左胸视为重甲
CBPCAsHeavyR -&gt; 将右胸视为重甲
CBPCNoPushUpL -&gt; 移除左胸的聚拢效果
CBPCNoPushUpR -&gt; 移除右胸的聚拢效果






CBPCollisionConfig.txt 用于配置受影响节点和碰撞器节点的碰撞球。
Fomod 安装程序自带许多现成的碰撞配置文件。选择一个最接近您体型的配置文件。请参考图示的 PDF 指南,创建/修改配置文件,以适应您的自定义设置。

CBPCollisionConfig****.txt 文件用于根据条件为特定 NPC 或玩家创建自定义碰撞配置文件:
[选项]
条件=演员名(Yuriana)
(忽略 Cond 和 itions 之间的空格)

支持的条件函数:IsRaceFormId(espname|000000)、IsRaceName(string)、ActorName(string)、ActorFormId(espname|000000)、IsInFaction(espname|000000)、IsPlayerTeammate()、IsFemale()、IsMale()、IsPlayer()、HasKeywordId(espname|000000)、HasKeywordName(string)、RaceHasKeywordId(espname|000000)、RaceHasKeywordName(string)、IsActorBase(espname|000000)、IsUnique()、IsVoiceType(espname|000000)、IsCombatStyle(espname|000000)、IsClass(espname|000000)

对于 formid 文件,你可以使用带 esp 名称的格式:(espname|000000),或者对于 Skyrim.esm 文件,不使用 esp 名称:(00000000)
您可以使用多个函数进行 AND 和 OR 逻辑运算。它们的拆分方式类似于 CK 语法,先执行 AND 运算,再执行 OR 运算。

所以:
A AND B OR C 的意思是 =&gt; A AND (B OR C)
A 和 B 或 C 和 D 表示 =&gt; A 和 (B 或 C) 和 D
A OR B AND C OR D OR E 表示 =&gt; (A OR B) AND (C OR D OR E)

你可以给函数加上 NOT 前缀来表示否定条件,例如 NOT IsFemale()

例如:
IsFemale() AND IsRaceName(Khajit)
IsFemale() AND IsRaceFormId(13745)
IsFemale() AND IsRaceFormId(13745 OR IsRaceFormId(13740)

优先级设置可用于对条件配置进行排序。优先级越高,检查顺序就越靠前。例如,针对特定角色的条件配置应具有较高的优先级,而针对特定性别所有角色的条件配置则应具有较低的优先级。默认情况下,如果没有添加优先级参数,则使用 50。因此,请将其设置为 0 到 100 之间的值。

对于阴道碰撞,需要在 CBPCMasterConfig*** 文件中的一个 [ConfigMap] 下找到“NPC Pelvis [Pelv]”节点。该节点用于附加碰撞球体,但实际的碰撞效果是通过移动“NPC L Pussy02”和“NPC R Pussy02”节点实现的。如果你的身体模型缺少这三个节点,则不会出现阴道碰撞。

发生肛门碰撞:
您需要在某个 CBPCMasterConfig*** 文件中的 [ConfigMap] 下列出“Anal”。同时,在 CBPCollisionConfig*** 文件中的 [AffectedNodes] 下也需要列出“Anal”。并且,还需要在该文件中定义其对应的球体,例如 [Anal] 等。
之后,只需像设置阴道一样编辑 AnusOpeningMultiplier 和 AnusOpeningLimit 的值即可。

CBPCollisionConfig.txt 配置说明:
剧透:  
展示

腹部凸起功能会在女性角色被插入时为其腹部添加凸起效果。此功能需要骨盆和腹部节点才能正常工作(无需阴道节点)。您可以通过在 CBPCollisionConfig 文件中的 [ExtraOptions] 下设置 BellyBulge=0 来禁用腹部凸起功能。
默认设置应该适用于大多数情况,但如果您愿意,可以根据自己的喜好进行更改。相关说明已作为注释添加到配置文件中。

配置文件中有设置方面的注释说明。

对于碰撞球体,格式为相对于节点的 x、y、z 坐标向量和半径,权重为 0 和 100 的球体形状用竖线“|”分隔。如果您未提供权重为 100 的值,则默认使用 0 值。

x0,y0,z0,radius0 | x100,y100,z100,radius100

每条线代表一个球体。如果需要,你可以在每个节点添加多个球体。 

从 1.5.0 版本开始,您现在也可以定义胶囊碰撞器了:

End1Point X0, Y0, Z0, R0 &amp; End2Point X0, Y0, Z0, R0 | End1Point X100, Y100, Z100, R100 &amp; End2Point X100, Y100, Z100, R100

0, 0, 0, 1.75 &amp; 0, 7.5, 0, 1.5 | 0, 0, 0, 1.75 &amp; 0, 7.5, 0, 1.5


受影响的节点球体与碰撞器节点球体(以及 VR 版本中的玩家魔杖节点)发生碰撞。

您可以像这样定义受影响节点的排除项:
您可以在括号中定义排除的碰撞体:NodeName (ColliderName1, ColliderName2)
@ 表示所有自身节点:NodeName (@)
节点名称前的 @ 表示自身节点:NodeName (@ColliderName)
NodeName (@ColliderName1, ColliderName2) 表示自身 ColliderName1,所有 ColliderName2 均被排除在外。
NodeName (@, ColliderName1) 表示自身节点,所有 ColliderName1 均被排除在外。

[受影响节点]
NPC 右胸(@NPC 左手 [LHnd])#排除自身左手节点用作碰撞器
NPC 左胸(NPC 左手 [LHnd],NPC 右手 [RHnd])#排除所有左手和右手节点,用作碰撞器
NPC L Butt (@) #排除所有自身骨骼碰撞节点,用作碰撞器
NPC R Butt #无碰撞节点排除


!!!!!! 我在下载部分添加了一个图文并茂的 PDF 指南,指导您轻松找到碰撞配置值:CBPC 碰撞配置编辑指南 PDF !!!!!!

你打开了Nifskope,但看不到人体纹理?以下是如何查看纹理的方法:

在 Nifskope 2.0 中
选项/设置菜单 -&gt; 资源选项卡
在“存档”选项卡中,你需要将 Skyrim - Textures0.bsa 添加到 Skyrim SE 数据目录中的 8.bsa 文件中。这将加载原版材质。

对于模组,你需要将路径添加到“路径”选项卡中。例如,对于模组管理器,路径是 ModOrganizer 2/mods/Body Textures 等。像这样,但要添加所有你想在 Nifskope 中看到的模组。你可以上下移动它们来更改加载顺序,这样它们就会覆盖原有文件。
彼此。


这是一份基本指南,适合那些不想阅读PDF文件,但又想挑战自我的人:
  • 打开 CBPCollisionConfig.txt 文件。您只需要修改 [NPC L Breast]、[NPC R Breast]、[NPC L Butt] 和 [NPC R Butt] 下的几行。
  • 打开你想修改配置文件的 femalebody_0.nif 和 femalebody_1.nif 文件,然后使用 尼夫斯科普. 
  • 这仅供您查看,您无需保存 nif 文件。
  • 在 Nifskope 中,找到名为“NPC L Breast”的 NiNode。右键单击,选择“节点/附加节点”,在打开的菜单中选择“NiNode”。对您创建的新 NiNode 执行相同的操作,这样您就拥有了嵌套的 NiNode。 
  • 您将使用此 NiNodes 在节点 NPC L Breast 上虚拟地想象一个球体。请记住,我们有 x0、y0、z0、radius0 和 x100、y100、z100、radius100 的值。
  • x0、y0、z0 值是相对于所连接的节点而言的。因此,在选中您创建的第一个 NiNode 后,修改下面的平移行,以获得乳房中心的点。获得该点后,将这些值输入到文本文件中相应的 x0、y0、z0 值(针对 femalebody_0.nif)和 x100、y100、z100 值(针对 femalebody_1.nif)。
  • 要找到 radius0 和 radius100,请使用您创建的第二个 NiNode,并仅更改 Translation 的 y 值以找到球体的相应半径。找到这些值后,将它们输入到文本文件中。 
  • NPC 右胸的数值与左胸的数值类似,所以直接从左胸复制粘贴即可。只需更改 x0 和 x100 的符号,因为它们位于坐标系的两端。
  • 对屁股球也进行同样的操作。



CBPWeaponCollisionConfig.txt
用于配置装备武器的碰撞三角形(仅限 VR)。

CBPWeaponCollisionConfig.txt 配置说明:
剧透:  
展示

此文件用于定义玩家武器碰撞的三角形。当玩家装备武器时,除了魔杖节点球体之外,还会使用相应的碰撞三角形与受影响的节点进行碰撞检测。

您可以在此处找到已定义的武器类型碰撞信息。您还可以使用游戏内名称定义特定的武器碰撞器,例如:

【铁剑】
0,63,0|-3,4,0|3,4,0

如果武器在此文件中没有定义特定的名称配置,则它将使用为其类型定义的碰撞配置。

一个点由 x、y、z 坐标定义。三角形信息由三个点组成,表示为:
x1,y1,z1 | x2,y2,z2 | x3,y3,z3



纸莎草函数

此模组包含 5 个 Papyrus 函数作为扩展,可以从其他模组调用:

String GetVersion()
String GetVersionMinor()
String GetVersionBeta()

这些函数可用于获取已安装模组的当前版本。例如,对于版本 1.4.15,这些函数将返回“1”、“4”和“15”。

你可以这样称呼它们:
CBPCPluginScript。获取版本()
CBPCPluginScript。获取版本次要性()
CBPCPluginScript。获取测试版()


重新加载配置()
重新加载主文件、反弹配置文件、碰撞配置文件。

StartPhysics(Actor npc, String nodeName)
StopPhysics(Actor npc, String nodeName)

这些函数可用于停止或启动Actor上特定节点的物理处理。这使得它们可以与其他物理模组混合使用,或者用于在特定时间停止特定功能等等。

你可以这样称呼它们:
CBPCPluginScript.StartPhysics(actor, &quot;NPC L Breast&quot;)
CBPCPluginScript.StopPhysics(actor, &quot;NPC L Breast&quot;)


bool AttachColliderSphere (Actor npc, String nodeName, float[] position, float radius, float scaleWeight, int index, bool isAffectedNode = false) 
bool AttachColliderCapsule (Actor npc, String nodeName, float[] end1_position, float end1_radius, float[] end2_position, float end2_radius, float scaleWeight, int index, bool isAffectedNode = false) 

;npc:目标角色
;nodeName:目标节点
;位置:碰撞器位置
;radius:碰撞体半径
;scaleWeight:节点缩放效果的权重
;index:碰撞器的索引号 / -1 表示通过 CBPCollisionConfig*.txt 文件附加的碰撞器
;isAffectedNode:如果为 false,则编辑为碰撞节点;如果为 true,则编辑为受影响节点。


bool DetachCollider (Actor npc, String nodeName, int type, int index, bool isAffectedNode = false)
类型 0 = 球体 / 类型 1 = 胶囊体
如果索引为 -1,则由 CBPCollisionConfig*.txt 文件附加的碰撞器将分离


ApplyCollisionInterpolation(Actor npc, String uniqueName, int percentage)
百分比,介于 0-100 之间
此函数用于应用 CBPCCollisioninterpolationconfig_****.txt 文件中特定百分比的碰撞插值。唯一名称在该文件的 [Settings] 部分定义。请查看模组附带的示例 CBPCCollisioninterpolationconfig_Test.txt 文件。请注意,需要刷新 Actor 的碰撞数据才能真正应用碰撞结果。

ApplyBounceInterpolation(Actor npc, String uniqueName, int percentage)
百分比,介于 0-100 之间
此函数用于应用 CBPCBounceinterpolationconfig_****.txt 文件中指定百分比的弹跳插值。唯一名称在该文件的 [Settings] 部分定义。请查看模组附带的示例 CBPCBounceinterpolationconfig_Test.txt 文件。请注意,需要刷新角色的弹跳效果才能真正应用。

RefreshActorBounceSettings(Actor npc)
- 此函数会在角色发生任何更改(包括弹跳插值)后刷新其弹跳设置。

刷新 ActorCollisionSettings(Actor npc)
- 此函数会在每次更改(包括碰撞插值)后刷新 Actor 的碰撞设置。


事件系统

此模组为 Papyrus 添加了事件系统。您可以注册并获取玩家碰撞事件,包括 Actor、节点名称和接触持续时间等信息。
注册名为“CBPCPlayerCollisionWithFemaleEvent”和“CBPCPlayerCollisionWithMaleEvent”的玩家碰撞事件。

您可以使用 CBPCPlayerCollisionEventConfig.txt 文件来调整事件发送持续时间和检查的玩家节点。

您可以在“其他文件”下查看示例模组,该模组只会在屏幕上打印角色名称和节点。
另请查看 CBPC VR 行动 - 反应 Ziher 制作的使用此模组。

版本 1.5.9 新增了“CBPCPlayerGenitalCollisionWithFemaleEvent”和“CBPCPlayerGenitalCollisionWithMaleEvent”事件,它们的工作方式与玩家触摸事件类似,但如果检测到与名称中带有“Genital”的玩家节点发生碰撞,则会生成事件。


控制台命令

可以使用“cbpc reload”控制台命令手动重新加载反弹和碰撞以及主配置文件。
可以使用“cbpc sysreload”控制台命令手动重新加载系统 ini 文件。
可以使用“cbpc pause”和“cbpc start”控制台命令来暂停和恢复模组运行。



兼容性

真不敢相信,我在安装部分已经说过一遍了,还要再写一遍,但有些人还是不明白:这个mod会覆盖CBP文件。这意味着除非你更改文件名(但千万不要这么做),否则这些文件不能同时加载。

它与 Racemenu 兼容。但可能与 Racemenu 的变形功能不兼容,因为变形功能会改变用于此目的的节点的位置。
碰撞计算。这并非完全不兼容,只是碰撞可能会受到影响。


它与 Realistic Ragdolls and Force 不兼容,因为 Realistic Ragdolls and Force 与 XP32 骨骼不兼容(会修改骨骼)。XP32 骨骼已经包含了该模组的部分功能(并非全部),所以你不需要它。如果同时运行此模组和 XP32 骨骼,会出现骨骼异常(例如身体部位拉伸等)等问题。因为此模组本身就需要 XP32 骨骼,而 RRF 会覆盖 XP32 骨骼。

它与 Dragonfly bbp 不兼容。卸载它。反正那也是个很老的获取动态胸部的方法了。

一位用户发现它与……不兼容 玩家体型调整器和第一人称视角摄像机高度修正 SSE它会导致一些问题,例如“使用鼠标滚轮将视角从第一人称切换到第三人称时,眼睛和嘴巴会从后面看到”。这可能是因为该模组通过缩放改变了骨骼结构。

如上所述,您必须使用具有物理节点的物体。

VRIK逆运动学 VR 版本支持此功能,这意味着如果你是女性,你的身体可以与自己的身体发生碰撞,并且你的身体会有弹跳物理效果。

VR狼人身体VR吸血鬼身体 支持模组。只需确保您没有安装任何模组即可。

[碰撞节点]
...
NPC 大腿 [LThg]
NPC R 大腿 [RThg]
NPC L 小牛 [LClf]
NPC R 小牛 [RClf]
NPC L Foot [Lft]
NPC R Foot [Rft]
...

CBPCollisionConfig***.txt 文件中 [ColliderNodes] 下的行。VRIK 不支持访问这些节点,访问这些节点可能会导致问题。




未来

我不会给出具体的时间安排,但以下是我计划在后续版本中实现的内容:

  • 支持链式节点,可用于连接假发、头发、斗篷、布料和珠宝。



鸣谢

感谢 polygonhell 以 MIT 许可证发布了 CBP 的源代码,才使得这个模组得以实现。非常感谢他!

感谢 Artumino、Bakou 和 Odie 的帮助。

感谢 Aerowynx、Rallyeator、Metalsaber 和 Acro748 的测试。




关于开源软件的几点说明:


这个模组的实现得益于另一位作者的开源代码。我查看代码后发现,其中包含一段可以改进很多其他模组的代码,因为它让我们(除非你已经知道)无需附加脚本即可访问玩家周围的其他角色。

此前,将脚本动态附加到玩家周围的 Actor 上是访问其他 Actor 的唯一方法,但现在情况不同了。如果您下载源代码,请查看 scan.cpp 文件中的 updateActors() 函数,其中有一个 for 循环访问 cell-&gt;refData.refArray,该数组保存了单元格中的引用。从这里您可以对它们进行任何操作。 

这将开启通往许多美好事物的大门。

致模组作者:制作完成后,请分享您的源代码。这种做法对整个模组社区大有裨益。隐藏代码对您没有任何好处。不要以为模组就此无法再添加任何内容,也不要以为您做不到的,别人也做不到。我们通过帮助他人来共同构建这个社区。社区不是靠限制建立的,而是靠分享建立的。

因此,我的所有模组都是开源的(您可以在“文件”选项卡中找到源代码)。您可以查看每个模组的“权限”选项卡以了解权限详情。

您可以在下载区找到适用于 AE 前版本、AE 后版本和 VR 版本的此模组的不同来源。




灵兽江湖 的热门 MOD

探索适用于 灵兽江湖 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

使用 Xmod 解锁 灵兽江湖 的全部潜力 — 今天就探索这些顶级 MOD!