Jump to content

Procedural Penis Animations/Collision [Beta]


Recommended Posts

Posted
2 hours ago, D3vilizeR said:

 

Yes, I also suspect that the wrong tags are assigned to certain animations.

 

Tip: If you add both tags to an animation using a tool like SLATE (vagina/anal), you'll be able to switch between holes at will simply by bending the Schlong using the classic Sexlab controls. However, don't set the CollisionCylinderRadius to too high, or it will hinder the precision of the hole switch. I have it set to 1.5 and it works very well.

Posted
1 hour ago, ØRIMAGEN said:

With the latest update, I can’t get the mod to work. I’ve been using v0.0.28 without any issues since release, but with v0.0.31 the collisions and physics don’t work.
I’m using UBE with the latest version of High Poly Head SMP for UBE (released on the UBE Discord by PredatorRJ) + FSMP GitHub 3.0 Beta + SMP Fixes for FSMP 3.0 Beta.

Use Hook '0'...

Posted

In the override file, is it possible to define multiple penises, like for tentacles? I realize chances are, the mod likely isn't developed yet for exotic creatures, so results would likely be glitchy. I'm just asking because i wonder, if PPA has the "infrastructure" to handle multiple penetrations from a single actor.

 

Related question: Can i use attached animobjects as penises, such as the spriggan pelvis in Billy's animations?

Posted

Awesome mod. I read through the documentation but it seems unclear to me if it is possible to control who is the receiving actor. For example in FFM BJ animations the penis latches onto the 1st female actor - always. Would it be possible to make it latch on to the 2nd female actor if both are in the vicinity?

Posted (edited)
1 hour ago, Geralt5 said:

I read through the documentation but it seems unclear to me if it is possible to control who is the receiving actor. For example in FFM BJ animations the penis latches onto the 1st female actor - always. Would it be possible to make it latch on to the 2nd female actor if both are in the vicinity?

Interesting issue. I haven't tested FFM anims yet with this mod, but can easily see this issue happening in a "double-blowjob" scene. Then again, i can also see how it would never align properly, even if PPA had the feature you're asking for. Imagine the following situation for example: One female sucks the tip, while the other slides her lips around the shaft. In that case, even if you could select the target to suck, the other would likely slide her lips in the air, because PPA would bend the schlong in a way that only accomodates the target.

 

With animations like this, you likely are better off disabling PPA for that animation, by setting all actors to "none" in the backspace menu. Then use offset corrections instead, to align everyone as the animation creator intended. 

 

EDIT: Reducing activation range in the config might also help with PPA selecting the right target. However, you still would have the other problem i described.

Edited by bitnuke
Posted
2 hours ago, Geralt5 said:

Awesome mod. I read through the documentation but it seems unclear to me if it is possible to control who is the receiving actor. For example in FFM BJ animations the penis latches onto the 1st female actor - always. Would it be possible to make it latch on to the 2nd female actor if both are in the vicinity?

Ty for actually reading. Very very rare

 

That isn't supported right now. You can only select a hole target, not who's hole to target. Maybe I'll add it one day, maybe not. More complexity leads to more things to read, which leads to more questions, which leads to my motivation dying even more. Maybe you can get away with the penis target scan/activation radius. I'd personally just disable the mod for those stages.

 

 

 

8 hours ago, bitnuke said:

In the override file, is it possible to define multiple penises, like for tentacles? I realize chances are, the mod likely isn't developed yet for exotic creatures, so results would likely be glitchy. I'm just asking because i wonder, if PPA has the "infrastructure" to handle multiple penetrations from a single actor.

 

Related question: Can i use attached animobjects as penises, such as the spriggan pelvis in Billy's animations?

Highly doubt I'll add support for creatures with multiple penises. Like I said above,  more complexity just leads to more confused people. Same issue with anim objects. 

Posted
49 minutes ago, asdt123123 said:

Highly doubt I'll add support for (...) anim objects. 

 

Indeed bad news - panda is so sad.

Due to those collisionless dildos, mushrooms and other helpers all of those F and FF animations utilizing them lost appeal to me quite some time ago (when suddenly CBPC stopped working for them for a reason I couldn't figure out or didn't try hard enough), and my last hope was that your <BOB mode ON> magnificent <BOB mode OFF> mod will fix that.

Posted (edited)

very incredible!

better mod to adjust genital behavior, now I can play wearing high heels that everything fits perfectly, without worrying about height, with this I don't have to worry about whether the character is tall or short in the scene
perfect
for both humans and creatures

 

example the companion tania she is a little shorter than my character, I leave her with penis, now she can penetrate my character without worrying about her size

Edited by Lilith Valentine
Posted

Hello, with your personal reccomendation of UBE, and then further defined in the requirements as: "or UBE with anus/vagina bones that aren't shit", does UBE by default come with shit bones and needs editing/patching? or id it fine out of the box to avoid said potential problems? thanks. 

Posted (edited)
10 hours ago, Lusciouslochs said:

Hello, with your personal reccomendation of UBE, and then further defined in the requirements as: "or UBE with anus/vagina bones that aren't shit", does UBE by default come with shit bones and needs editing/patching? or id it fine out of the box to avoid said potential problems? thanks. 

 

The mod referenced is a hack to replace default 3BA parts with UBE parts.  Not needed for a UBE user, rather a fractional port of UBE to a 3BA body for those who want more outfit compatibility (as an example).

 

After rereading, they're just saying it works best with mods with good bones, like 3BA and UBE.  There is a mod to hack in UBE anus to the 3BA body, that is what I was thinking you were referring to.

Edited by Bigglsby
Posted

Is anyone can use the speed control function in OSTIM? i changed keyword and refreshed the PPA  still not work or it just working in SEXLAB?

Posted (edited)

Anyone here knows how to get this mod to be working with this creature addon? the normal Werewolf from Creature Summoner works just fine with this mod
 

I Tried to write my own config for it, but it seems does not work. below is my config so far. 

[[Override]]
Races = [
    "Xenomorph_CS.esp|07780C",
    "Xenomorph_CS.esp|077806",
    "Xenomorph_CS.esp|07780B",
    "Xenomorph_CS.esp|07780D",
]
[Override.Penis]
Bones = ["WWD 2", "WWD 3", "WWD 4", "WWD 5", "WWD 6", "WWD 7", "WWD 8", "WWD 9"]
Girth = 1.3
TipExtension = 0.1
PreserveHavokState = false
ClipFix = false
LocalForwardAxis = [1, 0, 0]
BaseOffset = [0, 0, 0]

 

Edited by Rexsy
Posted (edited)
On 4/7/2026 at 11:58 AM, no_way said:

Ok I've read through this twice now and still can't get expressions to work:

https://6988638dc34b0c19d253892b--comforting-moonbeam-c80c4b.netlify.app/expressions.html#structure

 

I'm just trying to copy-paste the example ones into a new custom expressions.toml in the ppa-override-configs folder, but nothing ever applies.

Is there something I'm missing?  Here's whats in the .toml

 

#Aggressive hurts
# Default (any scene)
[[FacialPreset]]
Targets = ["Vagina","Anus","Hands"]
Priority = 2
OverrideExpressions = true
OverrideModifiers = true
OverridePhonemes = false

[[FacialPreset.Effects]]
Type = "MFEE"
MorphCategory = "Misc"
MorphName = "Biting_lips"
MinTargetValue = 1.0
TargetValue = 100.0
MinPenetrationDepth = 0.0
MaxPenetrationDepth = 12.0

# Vagina — aggressive scenes only (higher priority wins when context matches)
[[FacialPreset]]
Targets = ["Vagina","Anus","Hands"]
Priority = 5
Contexts = ["Aggressive"]
OverrideExpressions = true
OverrideModifiers = true
OverridePhonemes = false

[[FacialPreset.Effects]]
Type = "MFEE"
MorphCategory = "Misc"
MorphName = "Puzzled"
MinTargetValue = 10.0
TargetValue = 100.0
MinPenetrationDepth = 0.0
MaxPenetrationDepth = 10.0

[[FacialPreset.Effects]]
Type = "MFEE"
MorphCategory = "Misc"
MorphName = "Stress"
MinTargetValue = 0.0
TargetValue = 80.0
MinPenetrationDepth = 8.0
MaxPenetrationDepth = 10.0

#Anal Pain
[[FacialPreset]]
Targets = ["Anus"]
Priority = 22
OverrideExpressions = true
OverrideModifiers = true
OverridePhonemes = true

# Combat Shout scales from subtle to strong over depth 0–12
[[FacialPreset.Effects]]
Type = "Expression"
Index = 15
MinTargetValue = 0.1
TargetValue = 1.0
MinPenetrationDepth = 0.0
MaxPenetrationDepth = 12.0

# Secondary expression for extra intensity at deep penetration
[[FacialPreset.Effects]]
Type = "Expression"
Index = 16
MinTargetValue = 0.0
TargetValue = 0.4
MinPenetrationDepth = 0.0
MaxPenetrationDepth = 16.0

# Squint left/right — only at deeper penetration
[[FacialPreset.Effects]]
Type = "Modifier"
Index = 12            # Squint Left
TargetValue = 0.5
MinPenetrationDepth = 4.0
MaxPenetrationDepth = 12.0

[[FacialPreset.Effects]]
Type = "Modifier"
Index = 13            # Squint Right
TargetValue = 0.9
MinPenetrationDepth = 4.0
MaxPenetrationDepth = 6.0

# Brow down left/right — furrowed brows at depth
[[FacialPreset.Effects]]
Type = "Modifier"
Index = 2             # Brow Down Left
TargetValue = 0.5
MinPenetrationDepth = 4.0
MaxPenetrationDepth = 6.0

[[FacialPreset.Effects]]
Type = "Modifier"
Index = 3             # Brow Down Right
TargetValue = 0.9
MinPenetrationDepth = 4.0
MaxPenetrationDepth = 7.0


#Oral - Depth Reactive with MFEE
[[FacialPreset]]
Targets = ["Mouth"]
Priority = 999229
OverrideExpressions = true
OverrideModifiers = true
OverridePhonemes = true
Smoothing = 5.0

# Combat Shout expression: faint at surface, full at depth 12
[[FacialPreset.Effects]]
Type = "Expression"
Index = 15
MinTargetValue = 0.3
TargetValue = 1.0
MinPenetrationDepth = 0.0
MaxPenetrationDepth = 12.0

# MFEE wide mouth: opens between depth 0–8
[[FacialPreset.Effects]]
Type = "MFEE"
MorphCategory = "Misc"
MorphName = "EXPR2_Mouth_Open_Wide"
MinTargetValue = 70.0
TargetValue = 90.0
MinPenetrationDepth = 0.0
MaxPenetrationDepth = 8.0

# Angry look kicks in only at deep penetration (8.5–10)
[[FacialPreset.Effects]]
Type = "MFEE"
MorphCategory = "Misc"
MorphName = "MoodAnger"
MinTargetValue = 0.0
TargetValue = 100.0
MinPenetrationDepth = 8.5
MaxPenetrationDepth = 10.0

#Oral - Big Girth
[[FacialPreset]]
Targets = ["Mouth"]
PenisGirthMin = 1.4
Priority = 999239
OverrideExpressions = true
OverrideModifiers = true
OverridePhonemes = true
Smoothing = 5.0

[[FacialPreset.Effects]]
Type = "MFEE"
MorphCategory = "Misc"
MorphName = "EXPR2_Mouth_Open_Wide"
MinTargetValue = 90.0
TargetValue = 100.0
MinPenetrationDepth = 0.0
MaxPenetrationDepth = 8.0

[[FacialPreset.Effects]]
Type = "MFEE"
MorphCategory = "Misc"
MorphName = "MoodAnger"
MinTargetValue = 0.0
TargetValue = 100.0
MinPenetrationDepth = 8.5
MaxPenetrationDepth = 10.0

[[FacialPreset.Effects]]
Type = "Expression"
Index = 16
MinTargetValue = 0.4
TargetValue = 1.0
MinPenetrationDepth = 0.0
MaxPenetrationDepth = 12.0

 

Same custom preset not work but you need write preset to accurate-penetration.toml not the new toml  itried using a custom expression to not working the tags targets and contexts values in the guide seem to originate from SexLab.
How to find the value list for OSTIM? OSTIM provides only action lists from animations SKSE\Plugins\OStim\actions
But i  tried like Targets = ["cunnilingus"] or Contexts = ["cunnilingus"] still not working

EDIT:Please use values with decimal points, rather than integers. 100>100.0 ,im still figuring out how to use  "contents" now my expressions are running in all animation.

Edited by as5685009
Posted

sounds only work for the player scene. May I ask what is the fix?

Log

 

Spoiler
[17:32:29.494] [4136 ] AccuratePenetration v0-3-1-0
[17:35:51.450] [14020] Loading config file: E:\Program Files\Steam\steamapps\common\Skyrim Special Edition\Data\SKSE\Plugins\accurate-penetration.toml
[17:35:51.504] [14020] [Voice] No voice config directory found
[17:35:51.516] [14020] Installed PlayerCharacter hook
[17:35:51.516] [14020] Installed frame hook
[17:35:51.516] [14020] Input Handler Registered
[17:35:51.516] [14020] SexLabFramework: Detected SexLab. Checking if it's P+ or normal...
[17:35:51.524] [14020] SexLabFramework: Appears to be P+, linking functions...
[17:35:51.524] [14020] SexLabFramework: Successfully linked P+ functions.
[17:35:51.524] [14020] SexLabFramework: Initialized (P+: true)
[17:35:51.524] [14020] FrameworkManager: SexLab registered
[17:35:51.524] [14020] FrameworkManager: 1 framework(s) initialized
[17:35:51.524] [14020] SceneManager: Background thread started.
[17:35:51.524] [14020] Installed face morphing hook
[17:35:51.543] [35352] AnimationTagger: Loaded 987 animations
[17:47:22.829] [31572] Found Sexlab animation:: 'Billyy Laying 69 2' on stage '1'
[17:47:22.829] [31572] Found Sexlab animation:: 'Billyy Laying 69 2' on stage '1'
[17:47:23.056] [4136 ] Found sound output model!
[17:48:15.848] [31572] Found Sexlab animation:: '3jiou AnPack Quicky' on stage '1'
[17:48:15.848] [31572] Found Sexlab animation:: '3jiou AnPack Quicky' on stage '1'
[17:49:28.288] [4136 ] [CBPCHook] Installing detour...
[17:49:28.289] [4136 ] [CBPCHook] Candidate 1 at 7FF96003BBA0, SUB RSP 548
[17:49:28.289] [4136 ] [CBPCHook] Candidate 2 at 7FF96003D9F0, SUB RSP 538
[17:49:28.289] [4136 ] [CBPCHook] Candidate 3 at 7FF960040CA0, SUB RSP C08
[17:49:28.289] [4136 ] [CBPCHook] Thing::update at 7FF960040CA0 (candidate 3)
[17:49:28.290] [4136 ] [CBPCHook] Detour installed
[17:52:27.960] [17488] Found Sexlab animation:: '3jiou SAP Pole' on stage '1'
[17:52:27.960] [17488] Found Sexlab animation:: '3jiou SAP Pole' on stage '1'
[17:53:08.975] [33476] Found Sexlab animation:: 'Billyy Table Blowjob' on stage '1'
[17:53:08.975] [33476] Found Sexlab animation:: 'Billyy Table Blowjob' on stage '1'
[17:53:45.001] [17488] Found Sexlab animation:: 'Billyy Yoke Missionary 2' on stage '1'
[17:53:45.001] [17488] Found Sexlab animation:: 'Billyy Yoke Missionary 2' on stage '1'
[18:03:01.242] [17488] Found Sexlab animation:: 'FunnyBizness BenchSneaky BJ' on stage '1'
[18:03:01.242] [17488] Found Sexlab animation:: 'FunnyBizness BenchSneaky BJ' on stage '1'
[18:05:52.326] [17488] Found Sexlab animation:: 'FunnyBizness Secret Lover BlowJob' on stage '1'
[18:05:52.326] [17488] Found Sexlab animation:: 'FunnyBizness Secret Lover BlowJob' on stage '1'
[18:36:07.272] [26760] Found Sexlab animation:: 'Billyy Kneeling Blowjob 4 Self Fap' on stage '1'
[18:36:07.274] [26760] Found Sexlab animation:: 'Billyy Kneeling Blowjob 4 Self Fap' on stage '1'

 

toml

Spoiler

# ═══════════════════════════════════════════════════════════════════════════════
#                            PPA MOD CONFIGURATION
# ═══════════════════════════════════════════════════════════════════════════════
#
#   This file controls physics behavior, collision detection, and animation
#   settings. Most values can be overridden per-actor using override configs (/ppa-override-configs folder).
#
#   TIP: Use the in-game debug options to visualize bones and collision
#        cylinders while tweaking these values.
#
# View the mod page for more advanced configuration tips: https://www.loverslab.com/files/file/46320-procedural-penis-animationscollision-beta/
#
# ⚠️ IMPORTANT NOTE: If a value has decimal places, like 1.0 - you MUST have a decimal.⚠️
# ⚠️ No decimal means it may be read wrong. Same with non-decimal numbers              ⚠️
#
# ───────────────────────────────────────────────────────────────────────────────
#                                   GENERAL
# ───────────────────────────────────────────────────────────────────────────────
[General]
# Decides when physics calculations occur in the game loop.
# Affects compatibility with other physics mods (like FSMP).
#
#   0 = Wrap tick stack (DEFAULT)
#       Runs first, applies morph targets last. Gets priority over SMP/UNBC.
#       Best for ensuring changes stick and don't get overwritten.
#
#   1 = Pre-Update (Early)
#       Runs at the start, before standard player update logic.
#       Mostly for testing. Generally worse than 0 or 2.
#
#   2 = FSMP Injection (Compatibility Mode)
#       Hooks directly into Faster-SMP. Use this if you get clipping
#       with FSMP butt/thigh physics. Try this if other physics mods
#       aren't recognizing collisions properly.
#
#  WARNING: Requires game restart to take effect!
#
HookPosition = 0

# Enable vaginal/anus opening and closing during scenes. Disable this if you want CBPC/SMP to do it
HandleOpeningPhysics = true

# Redirect futa characters to use the anus instead.
FutasUseAnus = true

# Skip physics processing for scenes with more than this many actors.
IgnoredSceneActorCount = 6

# Skip applying hole physics to male actors. Also disables animating their masturbation
# Disable this for male support (May have slight bugs you'll need to solve with "SelectActor")
IgnoreMaleActors = false

# Global expression system toggle. You can also just manually delete the expression presets
# To disable them
EnableExpressionSystem = true

# Fixes audio while you're in freecam mode so the listener position will actually update 
# with the camera, rather than being in the original non-free cam position
FreecamAudioFix = true

# Try to use Skyrim's UI system for message boxes instead of the custom implementation
UseSkyrimUI = false

# ───────────────────────────────────────────────────────────────────────────────
#                                   HOTKEYS
# ───────────────────────────────────────────────────────────────────────────────
[Hotkeys]
# Only allow hotkeys while the console is open (Only for Reload, and Pause)
ConsoleOnly = false

# Key codes (default: F2=60, F5=63, 0=11)
# Find codes at: https://www.nexusmods.com/skyrimspecialedition/articles/7704
# Pauses the mod
Pause = 61

# Reload configuration
Reload = 59

# Select actor to edit their penis target + Much more
SelectActor = 14

# Should we REQUIRE holding shift to use these hotkeys? So like Shift+F2 = pauses the mod. (Recommended)
HotkeyWhileHoldingShiftOnly = false

# Speed up the sex animation you're looking at
SpeedUpAnimKey = -5

# Slow down the sex animation you're looking at
SlowDownAnimKey = -5

# ───────────────────────────────────────────────────────────────────────────────
#                                    DEBUG
# ───────────────────────────────────────────────────────────────────────────────
# You WILL need to use this while trying to figure out where to put offsets/waypoints
[Debug]
# Print verbose logs to the console.
Logging = false

# Display your vagina/anus/mouth entrances and splines in-game
Bones = false

# Display collision cylinders in-game.
Collision = false

# Display penis collision bones in-game.
Penis = false

# ───────────────────────────────────────────────────────────────────────────────
#                                    PENIS
# ───────────────────────────────────────────────────────────────────────────────
[Penis]
# Skeleton bones to manage (in order from base to tip).
Bones = [
    "NPC GenitalsBase [GenBase]",
    "NPC Genitals01 [Gen01]",
    "NPC Genitals02 [Gen02]",
    "NPC Genitals03 [Gen03]",
    "NPC Genitals04 [Gen04]",
    "NPC Genitals05 [Gen05]",
    "NPC Genitals06 [Gen06]",
]

# Forward axis of the penis. Don't change unless you know what you're doing.
LocalForwardAxis = [0.0, 1.0, 0.0]

# Offset for curve projection casting.
# Slightly lower than the base to reduce initial bend.
# Use NifSkope to determine correct values for non-human actors.
BaseOffset = [0.0, 1.206299, 1.206299]

# Rotate the base bone along with the rest.
# Enable for smoother appearance; disable for more rigid realism.
RotateBase = true

# Use exact HAVOK state for the penis.
# Ensures length stays precise but disables some animation features.
PreserveHavokState = false

# Hide the penis when it exceeds HideDepthOffset inside a hole. (Shouldn't be needed)
ClipFix = false

# How deep past the hole entrance to start cutting the cock off
HideDepthOffset = 2.0

# Global detection range multiplier for collision cylinders.
# Example: 1.5 means 50% larger than the actual cylinder.
ActivationRange = 3.5

# Average width of the penis.
Girth = 0.9

# Length of the tip segment.
TipExtension = 2.9

# Minimum distance from penis base to hole.
# Simulates "bottoming out" at the end of the canal.
# 0 = no limit (full insertion allowed).
MinProjectionDistance = 0.0

# ───────────────────────────────────────────────────────────────────────────────
#                                   VAGINA
# ───────────────────────────────────────────────────────────────────────────────
[Vagina]
# Bone names for controlling gape.
NodeL = "NPC L Pussy02"
NodeR = "NPC R Pussy02"
NodeBack = "VaginaB1"
NodeTop = "Clitoral1"

# Base opening distance.
Scale = 1.5

# Max opening distance.
ScaleMax = 3.0

# How strongly the opening grips during penetration. (Animation)
GripStrength = 5.0

# Clamps how far forward (into the body) the grip animation can pull the orifice mesh.
GripClampForward = 5.0

# Clamps how far backward (out of the body) the grip animation can pull the orifice mesh.
GripClampBackward = 5.0

# Intensity of rubbing effects. (Animation)
RubIntensity = 2.5

# Position & Collision
# ─────────────────────
# The collision cylinder is used for detection (not actual physics collision).
# It determines which hole the penis should target.
[Vagina.Position]
# Bone to attach the entry point to.
Anchor = "NPC Pelvis [Pelv]"

# Local offset from the anchor bone (X, Y, Z).
Offset = [0.0736564, -1.36951, -3.33551]
CollisionCylinderRadius = 1.2
CollisionCylinderHeightModifier = 1.0

# Depth Waypoints
# ───────────────
# Define a path (tunnel) for the penis to follow during penetration.
# Each waypoint creates a curve point. The penis bends to follow this path.
#               !You can define UNLIMITED of these!
#
#   Anchor         = Bone to attach to (optional; defaults to previous waypoint)
#   Offset         = Position offset from anchor (X, Y, Z)
#   CornerSmoothing = Smooths transition to next waypoint (0.0–1.9)
#                     ⚠️  Don't exceed 1.9 on sharp angles or it will bug out!
[[Vagina.Position.DepthWaypoints]]
Offset = [0.0, 0.0, 6.0]
CornerSmoothing = 1.0
CollisionRadius = 4.0

[[Vagina.Position.DepthWaypoints]]
Anchor = "NPC Spine1 [Spn1]"
Offset = [0.10003, 3.39997, -3.25]
CornerSmoothing = 0.5
CollisionRadius = 1.0

# ───────────────────────────────────────────────────────────────────────────────
#                                    ANUS
# ───────────────────────────────────────────────────────────────────────────────
[Anus]
# Bone names for controlling gape (4 corners).
NodeLB = "NPC LB Anus2"
NodeRB = "NPC RB Anus2"
NodeRT = "NPC RT Anus2"
NodeLT = "NPC LT Anus2"

# Base opening distance.
Scale = 2.0

# Max opening distance.
ScaleMax = 4.5

# How strongly the opening grips during penetration. (Animation)
GripStrength = 2.0

# Clamps how far forward (into the body) the grip animation can pull the orifice mesh.
GripClampForward = 4.0

# Clamps how far backward (out of the body) the grip animation can pull the orifice mesh.
GripClampBackward = 4.0

# Intensity of rubbing effects. (Animation)
RubIntensity = 1.5

[Anus.Position]
Anchor = "NPC Pelvis [Pelv]"
Offset = [0.0, -4.95285, -1.17131]
CollisionCylinderRadius = 1.2
CollisionCylinderHeightModifier = 1.0

[[Anus.Position.DepthWaypoints]]
Offset = [0.0, 3.0, 6.0]
CornerSmoothing = 1.0

[[Anus.Position.DepthWaypoints]]
Anchor = "NPC Spine1 [Spn1]"
Offset = [0.0, 4.0, 0.0]
CornerSmoothing = 1.0

# ───────────────────────────────────────────────────────────────────────────────
#                                    MOUTH
# ───────────────────────────────────────────────────────────────────────────────
[Mouth.Position]
Anchor = "NPC Head [Head]"
Offset = [0.0, 1.0, -1.15]
CollisionCylinderRadius = 1.5
CollisionCylinderHeightModifier = 1.2

[[Mouth.Position.DepthWaypoints]]
Offset = [0.0, -5.0, 2.0]
CornerSmoothing = 1.0

[[Mouth.Position.DepthWaypoints]]
Anchor = "NPC Neck [Neck]"
Offset = [0.0, 1.0, 1.0]
CornerSmoothing = 0.5

[[Mouth.Position.DepthWaypoints]]
Anchor = "NPC Spine2 [Spn2]"
Offset = [0.0, 4.0, 0.0]
CornerSmoothing = 0.0

# -> [DELETE THIS TO DISABLE ORAL MOUTH OPENINGS] <-
# ─────────────────────────
# Mouth Opening Animation
# ─────────────────────────
# Controls facial expressions during blowjob scenes.
# Presets are matched by target orifice and scene context.
# When multiple presets match, the highest Priority wins.
#
# This mouth preset is optional since SexLab already handles mouth opening.
#
[[FacialPreset]]
# Activates when mouth is penetrated
Targets = ["Mouth"]

# Very high priority to make sure it's selected before other presets (If you have others)..)
Priority = 99999
OverrideExpressions = false
OverrideModifiers = false

# Zero out other phonemes that we aren't using
OverridePhonemes = true
Smoothing = 8.0

# Phoneme/Expression/Modifier Effects
# ────────────────────────────────────
# Each effect controls a facial morph target.
#
#   Type        = Effect type ("Phoneme", "Expression", "Modifier", "MFEE")
#   Index       = Morph index number
#   TargetValue = Target blend value (0.0–1.0 for vanilla, higher for MFEE)
#   MinTargetValue      = (Optional) Minimum value when using depth scaling
#   MinPenetrationDepth = (Optional) Depth at which effect starts
#   MaxPenetrationDepth = (Optional) Depth at which effect reaches TargetValue
#
# View the mod page for more advanced configuration options.
#       !You can define UNLIMITED effects per preset!
[[FacialPreset.Effects]]
Type = "Phoneme"
Index = 0
TargetValue = 0.75

[[FacialPreset.Effects]]
Type = "Phoneme"
Index = 1
TargetValue = 0.75

[[FacialPreset.Effects]]
Type = "Phoneme"
Index = 5
TargetValue = 1.0

[[FacialPreset.Effects]]
Type = "Phoneme"
Index = 6
TargetValue = 1.0

[[FacialPreset.Effects]]
Type = "Phoneme"
Index = 7
TargetValue = 1.0

[[FacialPreset.Effects]]
Type = "Phoneme"
Index = 9
TargetValue = 0.68

# ───────────────────────────────────────────────────────────────────────────────
#                                    HANDS
# ───────────────────────────────────────────────────────────────────────────────
#
# Configure handjob detection and grip behavior for each hand.
[Hands.Left]
Enabled = true

# How close the hand must be to activate
DetectionRadius = 15.0

# Effective hand length
GripLength = 2.0

# Fine-tune grip position (X, Y, Z)
GripOffsetAdjustment = [0.0, 0.0, 1.0]

[Hands.Right]
Enabled = true
DetectionRadius = 15.0
GripLength = 2.0
GripOffsetAdjustment = [0.0, 0.0, 1.0]

# ───────────────────────────────────────────────────────────────────────────────
#                                  ANIMATION
# ───────────────────────────────────────────────────────────────────────────────
[Animation]
# How much animation speed affects physics response.
SpeedSensitivity = 1.0

# Smoothing strength for animations (higher = smoother but less responsive).
SmoothStrength = 0.5

# These will push your hips/head back if the penetrator's penis base goes too deep (Clips)
# This is mostly just a random ass feature I added because why not, I doubt it'll look perfect. Go wild. 
# (Head physics is very much NOT recommended. It's not natural looking at all)
HipPhysics = false
HeadPhysics = false

# Smoother for the animations so they don't snap back and fourth. Higher = smooother
HipPhysicsSmoothTime = 0.05
HeadPhysicsSmoothTime = 0.07

# ───────────────────────────────────────────────────────────────────────────────
#                                   SOLVER
# ───────────────────────────────────────────────────────────────────────────────
#
# Controls bending limits for the physics solver.
#
# ⚠️  NOT RECOMMENDED: Changing these makes the solver less accurate.
#     Only modify if you need to restrict extreme bending.
[Solver]
# Base limit (in degrees) for penis bending.
BendConeBase = 999.0

# Extra range per segment.
# Each segment from base to tip gets progressively more flexibility.
# Tip range = BendConeBase + BendConeRange
BendConeRange = 999.01

# ───────────────────────────────────────────────────────────────────────────────
#                               SOUND EFFECTS
# ───────────────────────────────────────────────────────────────────────────────
#
# Controls the procedural sound generation during animations.
# Sounds are triggered based on penetration depth and velocity tracking.
#
[SoundEffects]
Enabled = true

# Turns on controller vibration. 
# This wont always work with the 'Auto Input Switch' mod
# It only functions if your controller is the current main input device
# It can help to move the camera a bit with your controller if it stops working
Rumble = false

# ─── CLAP SOUNDS ───
# "Clap" sounds play at the moment of impact (when bodies collide at max depth)
# Minimum seconds between clap sounds. Increase to reduce sound frequency.
# Range: 0.05 - 0.5 | Default: 0.10
ClapMinInterval = 0.15

# Minimum thrust velocity required during a stroke to trigger a clap.
# Higher = only fast/hard thrusts make sound. Lower = gentler motion triggers.
# Range: 5.0 - 30.0 | Default: 10.0
ClapThrustVelocity = 8.0

# Minimum penetration depth required to play a clap sound.
# Prevents sounds when barely inserted. Increase if getting unwanted sounds.
# Range: 0.5 - 5.0 | Default: 2.0
ClapMinDepth = 2.0

# ─── WET SOUNDS ───
# "Wet" sounds loop/play continuously during active motion
# Minimum seconds between starting new wet sounds.
# Range: 0.05 - 0.3 | Default: 0.08
WetMinInterval = 0.08

# Velocity threshold to START playing wet sounds.
# Lower = sounds play during slower movement.
# Range: 3.0 - 15.0 | Default: 7.0
WetVelocityThreshold = 3.0

# Velocity threshold to STOP wet sounds (with grace period).
# Should be lower than WetVelocityThreshold to prevent start/stop flickering.
# Range: 0.5 - 5.0 | Default: 1.0
WetStopVelocity = 1.0

# ─── VELOCITY TRACKING ───
# Controls how motion is analyzed to trigger sounds
# Smoothing factor for velocity calculation (0-1).
# Lower = smoother/slower response, Higher = more reactive/jittery.
# Range: 0.1 - 0.5 | Default: 0.3
VelocitySmoothFactor = 0.3

# ─── AUDIO PROPERTIES ───
# Controls pitch and volume variation based on movement speed
# Frequency (pitch) multiplier range. 1.0 = normal pitch.
# Faster movement = higher pitch within this range.
MinFrequency = 0.85
MaxFrequency = 1.35

# Volume range (0.0 - 1.0). Faster movement = louder within this range.
MinVolume = 2.0
MaxVolume = 3.4

# Velocity value that maps to maximum frequency/volume.
# Velocities above this are clamped. Lower = reaches max sooner.
# Range: 50.0 - 200.0 | Default: 150.0
SpeedScaleMax = 150.0

# ─── SOUND FILES ──────────────────────────────────────────────────────────────
# Paths support wildcards (*) to randomly select from matching files.
# Paths are relative to Skyrim's Data folder.
# You can make a LIST of these! The [] thing defines a LIST. Ok?
[SoundEffects.Vagina]
ClapSounds = ["Sound\\Fx\\ppa\\vagina\\plap (*.wav"]
WetSounds = ["Sound\\Fx\\ppa\\vagina\\wet (*.wav"]
ClapSoundVolumeScale = 2.5
WetSoundVolumeScale = 0.8

[SoundEffects.Anus]
ClapSounds = ["Sound\\Fx\\ppa\\anus\\plap (*.wav"]
WetSounds = ["Sound\\Fx\\ppa\\anus\\wet (*.wav"]
ClapSoundVolumeScale = 2.7
WetSoundVolumeScale = 0.8

[SoundEffects.Mouth]
ClapSounds = ["Sound\\Fx\\ppa\\mouth\\suck (*.wav"]
WetSounds = ["Sound\\Fx\\ppa\\mouth\\wet (*.wav"]
ClapSoundVolumeScale = 2.7
WetSoundVolumeScale = 1.0

# Hands only use the wet sounds.
[SoundEffects.Hands]
WetSounds = ["Sound\\Fx\\ppa\\hands\\Squish - Handjob Normal-*.wav"]
WetSoundVolumeScale = 0.6

# ─── CLAP IMPULSE (requires CBPC) ────────────────────────────────────────────
# Sends physics impulses to butt bones through CBPC on each clap impact,
# making cheeks jiggle/ripple on thrust. This does nothing without CBPC installed.
# The impulse fires at the same moment as clap sounds, using the same velocity
# and depth data -- so if you have sounds disabled or thresholds set very high,
# impulses will also fire less often.
[SoundEffects.ClapImpulse]
Enabled = true

# Master multiplier on all impulse force. Turn this up for more jiggle,
# down for subtlety. At 0 the impulses still fire but do nothing visible.
# Range: 0.0 - 5.0 | Default: 1.0
OverallStrength = 1.0

# Controls how much thrust speed affects impulse strength.
# Higher values mean even slow thrusts produce noticeable bounce.
# Lower values mean only fast/rough motion causes visible jiggle.
# Technically this is the steepness of the exponential curve applied
# to the normalized velocity before it becomes force.
# Range: 0.1 - 10.0 | Default: 2.5
SpeedSensitivity = 2.5

# How much rotational wobble the cheeks get vs. just bouncing outward.
# Higher = softer, more jiggly look. Lower = firmer, tighter bounce.
# Range: 0.0 - 2.0 | Default: 0.35
RotationScale = 0.35

# Asymmetry between left and right cheek per impact.
# At 0 both cheeks move identically (looks robotic/stiff).
# At 0.2 there is a natural subtle difference each stroke.
# Above 0.4 it starts looking unnatural. Internally this generates
# a random multiplier between (1 - value) and (1 + value) per cheek.
# Range: 0.0 - 0.5 | Default: 0.2
Variation = 0.2

# Stagger in seconds between the left and right cheek firing.
# A small delay sells the ripple effect across the butt.
# If you run CBPC at a non-default timestep you may want to adjust this.
# Range: 0.0 - 0.1 | Default: 0.0167 (roughly one frame at 60fps)
CheekDelay = 0.0167

 

Posted (edited)
5 hours ago, 深淵の神 said:

The new update v0.0.31 works wonderfully, the new butt physics settings has a lot of potential, thanks champ! 👍 

 

 

I would like to see a more subtle effect. Looks a bit artificial to me.

 

Don't get me wrong. I would love to see some butt collision effects like I had in LE.

 

https://mega.nz/file/uANWHJAC#7__vTiOVOTRhOwxxG4T_PbCYp5QAfjejgfE-M4BQFiU

 

https://mega.nz/file/acNVyazb#ptoVcod6awxWjCRu8ocXhhIvxTjq7U0-cKM0q1pnJGs

 

https://mega.nz/file/WYkVjTwC#FXx9OA7QTNPy5bRCI389OUCkCtap6Fg38hjVFx9Vr2c

https://mega.nz/file/iUd0UDCI#BLH5YCllGGK5LTN06Ty91f3Fzy7FNfysb5QF5LRRUBE

 

 

Can You show a preview of a doggy scene?

 

 

Edited by NCK30
Posted
21 hours ago, Fraying9981 said:

sounds only work for the player scene.

 

How did you determine this? Sound doesn't travel that far.

 

21 hours ago, Fraying9981 said:

May I ask what is the fix?

 

Start by...

  1. ...making sure the scene is in view. PPA doesn't always play sounds when the scene is off-screen.
  2. ...making sure PPA is used for the scene. PPA is not the only thing doing collisions and bendy dongs.
Posted (edited)

As some others have said, the mod stopped working with FSMP version 3 for me.

 

Edit : With HookPosition = 0 or HookPosition = 2, it's the same, it does not work.
 

Edited by Ryo95
Posted
5 hours ago, traison said:

 

How did you determine this? Sound doesn't travel that far.

 

 

Start by...

  1. ...making sure the scene is in view. PPA doesn't always play sounds when the scene is off-screen.
  2. ...making sure PPA is used for the scene. PPA is not the only thing doing collisions and bendy dongs.

 

how do i determine this? by standing next to people f*cking. is there any other way?
There is absolutely no sound. Tried with several NPCs by making them you know what.
When it's me, there generally is sound.

Posted
On 4/12/2026 at 3:52 PM, Fraying9981 said:

sounds only work for the player scene. May I ask what is the fix?

Log

 

  Reveal hidden contents
[17:32:29.494] [4136 ] AccuratePenetration v0-3-1-0
[17:35:51.450] [14020] Loading config file: E:\Program Files\Steam\steamapps\common\Skyrim Special Edition\Data\SKSE\Plugins\accurate-penetration.toml
[17:35:51.504] [14020] [Voice] No voice config directory found
[17:35:51.516] [14020] Installed PlayerCharacter hook
[17:35:51.516] [14020] Installed frame hook
[17:35:51.516] [14020] Input Handler Registered
[17:35:51.516] [14020] SexLabFramework: Detected SexLab. Checking if it's P+ or normal...
[17:35:51.524] [14020] SexLabFramework: Appears to be P+, linking functions...
[17:35:51.524] [14020] SexLabFramework: Successfully linked P+ functions.
[17:35:51.524] [14020] SexLabFramework: Initialized (P+: true)
[17:35:51.524] [14020] FrameworkManager: SexLab registered
[17:35:51.524] [14020] FrameworkManager: 1 framework(s) initialized
[17:35:51.524] [14020] SceneManager: Background thread started.
[17:35:51.524] [14020] Installed face morphing hook
[17:35:51.543] [35352] AnimationTagger: Loaded 987 animations
[17:47:22.829] [31572] Found Sexlab animation:: 'Billyy Laying 69 2' on stage '1'
[17:47:22.829] [31572] Found Sexlab animation:: 'Billyy Laying 69 2' on stage '1'
[17:47:23.056] [4136 ] Found sound output model!
[17:48:15.848] [31572] Found Sexlab animation:: '3jiou AnPack Quicky' on stage '1'
[17:48:15.848] [31572] Found Sexlab animation:: '3jiou AnPack Quicky' on stage '1'
[17:49:28.288] [4136 ] [CBPCHook] Installing detour...
[17:49:28.289] [4136 ] [CBPCHook] Candidate 1 at 7FF96003BBA0, SUB RSP 548
[17:49:28.289] [4136 ] [CBPCHook] Candidate 2 at 7FF96003D9F0, SUB RSP 538
[17:49:28.289] [4136 ] [CBPCHook] Candidate 3 at 7FF960040CA0, SUB RSP C08
[17:49:28.289] [4136 ] [CBPCHook] Thing::update at 7FF960040CA0 (candidate 3)
[17:49:28.290] [4136 ] [CBPCHook] Detour installed
[17:52:27.960] [17488] Found Sexlab animation:: '3jiou SAP Pole' on stage '1'
[17:52:27.960] [17488] Found Sexlab animation:: '3jiou SAP Pole' on stage '1'
[17:53:08.975] [33476] Found Sexlab animation:: 'Billyy Table Blowjob' on stage '1'
[17:53:08.975] [33476] Found Sexlab animation:: 'Billyy Table Blowjob' on stage '1'
[17:53:45.001] [17488] Found Sexlab animation:: 'Billyy Yoke Missionary 2' on stage '1'
[17:53:45.001] [17488] Found Sexlab animation:: 'Billyy Yoke Missionary 2' on stage '1'
[18:03:01.242] [17488] Found Sexlab animation:: 'FunnyBizness BenchSneaky BJ' on stage '1'
[18:03:01.242] [17488] Found Sexlab animation:: 'FunnyBizness BenchSneaky BJ' on stage '1'
[18:05:52.326] [17488] Found Sexlab animation:: 'FunnyBizness Secret Lover BlowJob' on stage '1'
[18:05:52.326] [17488] Found Sexlab animation:: 'FunnyBizness Secret Lover BlowJob' on stage '1'
[18:36:07.272] [26760] Found Sexlab animation:: 'Billyy Kneeling Blowjob 4 Self Fap' on stage '1'
[18:36:07.274] [26760] Found Sexlab animation:: 'Billyy Kneeling Blowjob 4 Self Fap' on stage '1'

 

toml

  Reveal hidden contents

# ═══════════════════════════════════════════════════════════════════════════════
#                            PPA MOD CONFIGURATION
# ═══════════════════════════════════════════════════════════════════════════════
#
#   This file controls physics behavior, collision detection, and animation
#   settings. Most values can be overridden per-actor using override configs (/ppa-override-configs folder).
#
#   TIP: Use the in-game debug options to visualize bones and collision
#        cylinders while tweaking these values.
#
# View the mod page for more advanced configuration tips: https://www.loverslab.com/files/file/46320-procedural-penis-animationscollision-beta/
#
# ⚠️ IMPORTANT NOTE: If a value has decimal places, like 1.0 - you MUST have a decimal.⚠️
# ⚠️ No decimal means it may be read wrong. Same with non-decimal numbers              ⚠️
#
# ───────────────────────────────────────────────────────────────────────────────
#                                   GENERAL
# ───────────────────────────────────────────────────────────────────────────────
[General]
# Decides when physics calculations occur in the game loop.
# Affects compatibility with other physics mods (like FSMP).
#
#   0 = Wrap tick stack (DEFAULT)
#       Runs first, applies morph targets last. Gets priority over SMP/UNBC.
#       Best for ensuring changes stick and don't get overwritten.
#
#   1 = Pre-Update (Early)
#       Runs at the start, before standard player update logic.
#       Mostly for testing. Generally worse than 0 or 2.
#
#   2 = FSMP Injection (Compatibility Mode)
#       Hooks directly into Faster-SMP. Use this if you get clipping
#       with FSMP butt/thigh physics. Try this if other physics mods
#       aren't recognizing collisions properly.
#
#  WARNING: Requires game restart to take effect!
#
HookPosition = 0

# Enable vaginal/anus opening and closing during scenes. Disable this if you want CBPC/SMP to do it
HandleOpeningPhysics = true

# Redirect futa characters to use the anus instead.
FutasUseAnus = true

# Skip physics processing for scenes with more than this many actors.
IgnoredSceneActorCount = 6

# Skip applying hole physics to male actors. Also disables animating their masturbation
# Disable this for male support (May have slight bugs you'll need to solve with "SelectActor")
IgnoreMaleActors = false

# Global expression system toggle. You can also just manually delete the expression presets
# To disable them
EnableExpressionSystem = true

# Fixes audio while you're in freecam mode so the listener position will actually update 
# with the camera, rather than being in the original non-free cam position
FreecamAudioFix = true

# Try to use Skyrim's UI system for message boxes instead of the custom implementation
UseSkyrimUI = false

# ───────────────────────────────────────────────────────────────────────────────
#                                   HOTKEYS
# ───────────────────────────────────────────────────────────────────────────────
[Hotkeys]
# Only allow hotkeys while the console is open (Only for Reload, and Pause)
ConsoleOnly = false

# Key codes (default: F2=60, F5=63, 0=11)
# Find codes at: https://www.nexusmods.com/skyrimspecialedition/articles/7704
# Pauses the mod
Pause = 61

# Reload configuration
Reload = 59

# Select actor to edit their penis target + Much more
SelectActor = 14

# Should we REQUIRE holding shift to use these hotkeys? So like Shift+F2 = pauses the mod. (Recommended)
HotkeyWhileHoldingShiftOnly = false

# Speed up the sex animation you're looking at
SpeedUpAnimKey = -5

# Slow down the sex animation you're looking at
SlowDownAnimKey = -5

# ───────────────────────────────────────────────────────────────────────────────
#                                    DEBUG
# ───────────────────────────────────────────────────────────────────────────────
# You WILL need to use this while trying to figure out where to put offsets/waypoints
[Debug]
# Print verbose logs to the console.
Logging = false

# Display your vagina/anus/mouth entrances and splines in-game
Bones = false

# Display collision cylinders in-game.
Collision = false

# Display penis collision bones in-game.
Penis = false

# ───────────────────────────────────────────────────────────────────────────────
#                                    PENIS
# ───────────────────────────────────────────────────────────────────────────────
[Penis]
# Skeleton bones to manage (in order from base to tip).
Bones = [
    "NPC GenitalsBase [GenBase]",
    "NPC Genitals01 [Gen01]",
    "NPC Genitals02 [Gen02]",
    "NPC Genitals03 [Gen03]",
    "NPC Genitals04 [Gen04]",
    "NPC Genitals05 [Gen05]",
    "NPC Genitals06 [Gen06]",
]

# Forward axis of the penis. Don't change unless you know what you're doing.
LocalForwardAxis = [0.0, 1.0, 0.0]

# Offset for curve projection casting.
# Slightly lower than the base to reduce initial bend.
# Use NifSkope to determine correct values for non-human actors.
BaseOffset = [0.0, 1.206299, 1.206299]

# Rotate the base bone along with the rest.
# Enable for smoother appearance; disable for more rigid realism.
RotateBase = true

# Use exact HAVOK state for the penis.
# Ensures length stays precise but disables some animation features.
PreserveHavokState = false

# Hide the penis when it exceeds HideDepthOffset inside a hole. (Shouldn't be needed)
ClipFix = false

# How deep past the hole entrance to start cutting the cock off
HideDepthOffset = 2.0

# Global detection range multiplier for collision cylinders.
# Example: 1.5 means 50% larger than the actual cylinder.
ActivationRange = 3.5

# Average width of the penis.
Girth = 0.9

# Length of the tip segment.
TipExtension = 2.9

# Minimum distance from penis base to hole.
# Simulates "bottoming out" at the end of the canal.
# 0 = no limit (full insertion allowed).
MinProjectionDistance = 0.0

# ───────────────────────────────────────────────────────────────────────────────
#                                   VAGINA
# ───────────────────────────────────────────────────────────────────────────────
[Vagina]
# Bone names for controlling gape.
NodeL = "NPC L Pussy02"
NodeR = "NPC R Pussy02"
NodeBack = "VaginaB1"
NodeTop = "Clitoral1"

# Base opening distance.
Scale = 1.5

# Max opening distance.
ScaleMax = 3.0

# How strongly the opening grips during penetration. (Animation)
GripStrength = 5.0

# Clamps how far forward (into the body) the grip animation can pull the orifice mesh.
GripClampForward = 5.0

# Clamps how far backward (out of the body) the grip animation can pull the orifice mesh.
GripClampBackward = 5.0

# Intensity of rubbing effects. (Animation)
RubIntensity = 2.5

# Position & Collision
# ─────────────────────
# The collision cylinder is used for detection (not actual physics collision).
# It determines which hole the penis should target.
[Vagina.Position]
# Bone to attach the entry point to.
Anchor = "NPC Pelvis [Pelv]"

# Local offset from the anchor bone (X, Y, Z).
Offset = [0.0736564, -1.36951, -3.33551]
CollisionCylinderRadius = 1.2
CollisionCylinderHeightModifier = 1.0

# Depth Waypoints
# ───────────────
# Define a path (tunnel) for the penis to follow during penetration.
# Each waypoint creates a curve point. The penis bends to follow this path.
#               !You can define UNLIMITED of these!
#
#   Anchor         = Bone to attach to (optional; defaults to previous waypoint)
#   Offset         = Position offset from anchor (X, Y, Z)
#   CornerSmoothing = Smooths transition to next waypoint (0.0–1.9)
#                     ⚠️  Don't exceed 1.9 on sharp angles or it will bug out!
[[Vagina.Position.DepthWaypoints]]
Offset = [0.0, 0.0, 6.0]
CornerSmoothing = 1.0
CollisionRadius = 4.0

[[Vagina.Position.DepthWaypoints]]
Anchor = "NPC Spine1 [Spn1]"
Offset = [0.10003, 3.39997, -3.25]
CornerSmoothing = 0.5
CollisionRadius = 1.0

# ───────────────────────────────────────────────────────────────────────────────
#                                    ANUS
# ───────────────────────────────────────────────────────────────────────────────
[Anus]
# Bone names for controlling gape (4 corners).
NodeLB = "NPC LB Anus2"
NodeRB = "NPC RB Anus2"
NodeRT = "NPC RT Anus2"
NodeLT = "NPC LT Anus2"

# Base opening distance.
Scale = 2.0

# Max opening distance.
ScaleMax = 4.5

# How strongly the opening grips during penetration. (Animation)
GripStrength = 2.0

# Clamps how far forward (into the body) the grip animation can pull the orifice mesh.
GripClampForward = 4.0

# Clamps how far backward (out of the body) the grip animation can pull the orifice mesh.
GripClampBackward = 4.0

# Intensity of rubbing effects. (Animation)
RubIntensity = 1.5

[Anus.Position]
Anchor = "NPC Pelvis [Pelv]"
Offset = [0.0, -4.95285, -1.17131]
CollisionCylinderRadius = 1.2
CollisionCylinderHeightModifier = 1.0

[[Anus.Position.DepthWaypoints]]
Offset = [0.0, 3.0, 6.0]
CornerSmoothing = 1.0

[[Anus.Position.DepthWaypoints]]
Anchor = "NPC Spine1 [Spn1]"
Offset = [0.0, 4.0, 0.0]
CornerSmoothing = 1.0

# ───────────────────────────────────────────────────────────────────────────────
#                                    MOUTH
# ───────────────────────────────────────────────────────────────────────────────
[Mouth.Position]
Anchor = "NPC Head [Head]"
Offset = [0.0, 1.0, -1.15]
CollisionCylinderRadius = 1.5
CollisionCylinderHeightModifier = 1.2

[[Mouth.Position.DepthWaypoints]]
Offset = [0.0, -5.0, 2.0]
CornerSmoothing = 1.0

[[Mouth.Position.DepthWaypoints]]
Anchor = "NPC Neck [Neck]"
Offset = [0.0, 1.0, 1.0]
CornerSmoothing = 0.5

[[Mouth.Position.DepthWaypoints]]
Anchor = "NPC Spine2 [Spn2]"
Offset = [0.0, 4.0, 0.0]
CornerSmoothing = 0.0

# -> [DELETE THIS TO DISABLE ORAL MOUTH OPENINGS] <-
# ─────────────────────────
# Mouth Opening Animation
# ─────────────────────────
# Controls facial expressions during blowjob scenes.
# Presets are matched by target orifice and scene context.
# When multiple presets match, the highest Priority wins.
#
# This mouth preset is optional since SexLab already handles mouth opening.
#
[[FacialPreset]]
# Activates when mouth is penetrated
Targets = ["Mouth"]

# Very high priority to make sure it's selected before other presets (If you have others)..)
Priority = 99999
OverrideExpressions = false
OverrideModifiers = false

# Zero out other phonemes that we aren't using
OverridePhonemes = true
Smoothing = 8.0

# Phoneme/Expression/Modifier Effects
# ────────────────────────────────────
# Each effect controls a facial morph target.
#
#   Type        = Effect type ("Phoneme", "Expression", "Modifier", "MFEE")
#   Index       = Morph index number
#   TargetValue = Target blend value (0.0–1.0 for vanilla, higher for MFEE)
#   MinTargetValue      = (Optional) Minimum value when using depth scaling
#   MinPenetrationDepth = (Optional) Depth at which effect starts
#   MaxPenetrationDepth = (Optional) Depth at which effect reaches TargetValue
#
# View the mod page for more advanced configuration options.
#       !You can define UNLIMITED effects per preset!
[[FacialPreset.Effects]]
Type = "Phoneme"
Index = 0
TargetValue = 0.75

[[FacialPreset.Effects]]
Type = "Phoneme"
Index = 1
TargetValue = 0.75

[[FacialPreset.Effects]]
Type = "Phoneme"
Index = 5
TargetValue = 1.0

[[FacialPreset.Effects]]
Type = "Phoneme"
Index = 6
TargetValue = 1.0

[[FacialPreset.Effects]]
Type = "Phoneme"
Index = 7
TargetValue = 1.0

[[FacialPreset.Effects]]
Type = "Phoneme"
Index = 9
TargetValue = 0.68

# ───────────────────────────────────────────────────────────────────────────────
#                                    HANDS
# ───────────────────────────────────────────────────────────────────────────────
#
# Configure handjob detection and grip behavior for each hand.
[Hands.Left]
Enabled = true

# How close the hand must be to activate
DetectionRadius = 15.0

# Effective hand length
GripLength = 2.0

# Fine-tune grip position (X, Y, Z)
GripOffsetAdjustment = [0.0, 0.0, 1.0]

[Hands.Right]
Enabled = true
DetectionRadius = 15.0
GripLength = 2.0
GripOffsetAdjustment = [0.0, 0.0, 1.0]

# ───────────────────────────────────────────────────────────────────────────────
#                                  ANIMATION
# ───────────────────────────────────────────────────────────────────────────────
[Animation]
# How much animation speed affects physics response.
SpeedSensitivity = 1.0

# Smoothing strength for animations (higher = smoother but less responsive).
SmoothStrength = 0.5

# These will push your hips/head back if the penetrator's penis base goes too deep (Clips)
# This is mostly just a random ass feature I added because why not, I doubt it'll look perfect. Go wild. 
# (Head physics is very much NOT recommended. It's not natural looking at all)
HipPhysics = false
HeadPhysics = false

# Smoother for the animations so they don't snap back and fourth. Higher = smooother
HipPhysicsSmoothTime = 0.05
HeadPhysicsSmoothTime = 0.07

# ───────────────────────────────────────────────────────────────────────────────
#                                   SOLVER
# ───────────────────────────────────────────────────────────────────────────────
#
# Controls bending limits for the physics solver.
#
# ⚠️  NOT RECOMMENDED: Changing these makes the solver less accurate.
#     Only modify if you need to restrict extreme bending.
[Solver]
# Base limit (in degrees) for penis bending.
BendConeBase = 999.0

# Extra range per segment.
# Each segment from base to tip gets progressively more flexibility.
# Tip range = BendConeBase + BendConeRange
BendConeRange = 999.01

# ───────────────────────────────────────────────────────────────────────────────
#                               SOUND EFFECTS
# ───────────────────────────────────────────────────────────────────────────────
#
# Controls the procedural sound generation during animations.
# Sounds are triggered based on penetration depth and velocity tracking.
#
[SoundEffects]
Enabled = true

# Turns on controller vibration. 
# This wont always work with the 'Auto Input Switch' mod
# It only functions if your controller is the current main input device
# It can help to move the camera a bit with your controller if it stops working
Rumble = false

# ─── CLAP SOUNDS ───
# "Clap" sounds play at the moment of impact (when bodies collide at max depth)
# Minimum seconds between clap sounds. Increase to reduce sound frequency.
# Range: 0.05 - 0.5 | Default: 0.10
ClapMinInterval = 0.15

# Minimum thrust velocity required during a stroke to trigger a clap.
# Higher = only fast/hard thrusts make sound. Lower = gentler motion triggers.
# Range: 5.0 - 30.0 | Default: 10.0
ClapThrustVelocity = 8.0

# Minimum penetration depth required to play a clap sound.
# Prevents sounds when barely inserted. Increase if getting unwanted sounds.
# Range: 0.5 - 5.0 | Default: 2.0
ClapMinDepth = 2.0

# ─── WET SOUNDS ───
# "Wet" sounds loop/play continuously during active motion
# Minimum seconds between starting new wet sounds.
# Range: 0.05 - 0.3 | Default: 0.08
WetMinInterval = 0.08

# Velocity threshold to START playing wet sounds.
# Lower = sounds play during slower movement.
# Range: 3.0 - 15.0 | Default: 7.0
WetVelocityThreshold = 3.0

# Velocity threshold to STOP wet sounds (with grace period).
# Should be lower than WetVelocityThreshold to prevent start/stop flickering.
# Range: 0.5 - 5.0 | Default: 1.0
WetStopVelocity = 1.0

# ─── VELOCITY TRACKING ───
# Controls how motion is analyzed to trigger sounds
# Smoothing factor for velocity calculation (0-1).
# Lower = smoother/slower response, Higher = more reactive/jittery.
# Range: 0.1 - 0.5 | Default: 0.3
VelocitySmoothFactor = 0.3

# ─── AUDIO PROPERTIES ───
# Controls pitch and volume variation based on movement speed
# Frequency (pitch) multiplier range. 1.0 = normal pitch.
# Faster movement = higher pitch within this range.
MinFrequency = 0.85
MaxFrequency = 1.35

# Volume range (0.0 - 1.0). Faster movement = louder within this range.
MinVolume = 2.0
MaxVolume = 3.4

# Velocity value that maps to maximum frequency/volume.
# Velocities above this are clamped. Lower = reaches max sooner.
# Range: 50.0 - 200.0 | Default: 150.0
SpeedScaleMax = 150.0

# ─── SOUND FILES ──────────────────────────────────────────────────────────────
# Paths support wildcards (*) to randomly select from matching files.
# Paths are relative to Skyrim's Data folder.
# You can make a LIST of these! The [] thing defines a LIST. Ok?
[SoundEffects.Vagina]
ClapSounds = ["Sound\\Fx\\ppa\\vagina\\plap (*.wav"]
WetSounds = ["Sound\\Fx\\ppa\\vagina\\wet (*.wav"]
ClapSoundVolumeScale = 2.5
WetSoundVolumeScale = 0.8

[SoundEffects.Anus]
ClapSounds = ["Sound\\Fx\\ppa\\anus\\plap (*.wav"]
WetSounds = ["Sound\\Fx\\ppa\\anus\\wet (*.wav"]
ClapSoundVolumeScale = 2.7
WetSoundVolumeScale = 0.8

[SoundEffects.Mouth]
ClapSounds = ["Sound\\Fx\\ppa\\mouth\\suck (*.wav"]
WetSounds = ["Sound\\Fx\\ppa\\mouth\\wet (*.wav"]
ClapSoundVolumeScale = 2.7
WetSoundVolumeScale = 1.0

# Hands only use the wet sounds.
[SoundEffects.Hands]
WetSounds = ["Sound\\Fx\\ppa\\hands\\Squish - Handjob Normal-*.wav"]
WetSoundVolumeScale = 0.6

# ─── CLAP IMPULSE (requires CBPC) ────────────────────────────────────────────
# Sends physics impulses to butt bones through CBPC on each clap impact,
# making cheeks jiggle/ripple on thrust. This does nothing without CBPC installed.
# The impulse fires at the same moment as clap sounds, using the same velocity
# and depth data -- so if you have sounds disabled or thresholds set very high,
# impulses will also fire less often.
[SoundEffects.ClapImpulse]
Enabled = true

# Master multiplier on all impulse force. Turn this up for more jiggle,
# down for subtlety. At 0 the impulses still fire but do nothing visible.
# Range: 0.0 - 5.0 | Default: 1.0
OverallStrength = 1.0

# Controls how much thrust speed affects impulse strength.
# Higher values mean even slow thrusts produce noticeable bounce.
# Lower values mean only fast/rough motion causes visible jiggle.
# Technically this is the steepness of the exponential curve applied
# to the normalized velocity before it becomes force.
# Range: 0.1 - 10.0 | Default: 2.5
SpeedSensitivity = 2.5

# How much rotational wobble the cheeks get vs. just bouncing outward.
# Higher = softer, more jiggly look. Lower = firmer, tighter bounce.
# Range: 0.0 - 2.0 | Default: 0.35
RotationScale = 0.35

# Asymmetry between left and right cheek per impact.
# At 0 both cheeks move identically (looks robotic/stiff).
# At 0.2 there is a natural subtle difference each stroke.
# Above 0.4 it starts looking unnatural. Internally this generates
# a random multiplier between (1 - value) and (1 + value) per cheek.
# Range: 0.0 - 0.5 | Default: 0.2
Variation = 0.2

# Stagger in seconds between the left and right cheek firing.
# A small delay sells the ripple effect across the butt.
# If you run CBPC at a non-default timestep you may want to adjust this.
# Range: 0.0 - 0.1 | Default: 0.0167 (roughly one frame at 60fps)
CheekDelay = 0.0167

 

Probably a mod breaking stuff. You can join my discord for a test build, but I can't promise a fix if it's a mod breaking it

Posted
8 hours ago, Fraying9981 said:

is there any other way?

 

Just checking you didn't assume the sound would travel to the other side of the room.

 

8 hours ago, Fraying9981 said:

There is absolutely no sound.

 

If you're unsure about how to check if PPA is controlling the current animation, set Debug.Bones to true and find the spline path. If PPA is controlling the current animation and there's still no sound then set General.FreecamAudioFix to false and test again. If there's still no sound after that then I do not know.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...