Jump to content

Procedural Penis Animations/Collision [Beta]


Recommended Posts

Posted
1 hour ago, General Goods said:

It already allows you to pick a L/R hand tho?

 

Ah, you're totally right! I was going off this:

image.png.0c4f3780433ef645264b64ac11dd1c6b.png

 

But it looks like this is out of date- "LH" and "RH" work great. Thank you!

Posted (edited)

If it's important to use a stable bone for the offset anchor, it seems like it wouldn't make sense to use the upper lip, anyway. What I would really wish for is the ActorBase predicate. I find that I often have to change the Z of the mouth anchor to get good results, depending on the NPC whose mouth is being targeted. Anyway, for posterity, here is what I see when I dump a skeleton for someone using High Poly Head w/ SMP (there are 8+ "Upper Lip Center" nodes. I don't know which one I should use or if the renames are the same every time):

 

Spoiler
[10:29:26.596] [42684] [I]           - CME UBody [UBody] [NiNode]
[10:29:26.596] [42684] [I]             - NPC Spine [Spn0] [NiNode]
[10:29:26.596] [42684] [I]               - CME Spine [Spn0] [NiNode]
[10:29:26.596] [42684] [I]                 - NPC Spine1 [Spn1] [NiNode]
[10:29:26.596] [42684] [I]                   - CME Spine1 [Spn1] [NiNode]
[10:29:26.596] [42684] [I]                     - NPC Spine2 [Spn2] [NiNode]
[10:29:26.596] [42684] [I]                       - CME Spine2 [Spn2] [NiNode]
[10:29:26.596] [42684] [I]                         - NPC Neck [Neck] [NiNode]
[10:29:26.596] [42684] [I]                           - CME Neck [Neck] [NiNode]
[10:29:26.596] [42684] [I]                             - NPC Head [Head] [NiNode]
[10:29:26.596] [42684] [I]                               - NPC Head MagicNode [Hmag] [NiNode]
[10:29:26.596] [42684] [I]                               - NPCEyeBone [NiNode]
[10:29:26.596] [42684] [I]                               - Mouth00 [NiNode]
[10:29:26.596] [42684] [I]                                 - MouthL [NiNode]
[10:29:26.596] [42684] [I]                                 - MouthD [NiNode]
[10:29:26.597] [42684] [I]                                 - MouthR [NiNode]
[10:29:26.597] [42684] [I]                                 - MouthU [NiNode]
[10:29:26.600] [42684] [I]                               - hdtSSEPhysics_AutoRename_Head_0000020D Pre Mouth Center [NiNode]
[10:29:26.600] [42684] [I]                                 - hdtSSEPhysics_AutoRename_Head_0000020D Base Mouth Center [NiNode]
[10:29:26.600] [42684] [I]                                   - hdtSSEPhysics_AutoRename_Head_0000020D Pre Upper Lip Center [NiNode]
[10:29:26.600] [42684] [I]                                     - hdtSSEPhysics_AutoRename_Head_0000020D Upper Lip Center [NiNode]
[10:29:26.601] [42684] [I]                               - hdtSSEPhysics_AutoRename_Head_0000021E Pre Mouth Center [NiNode]
[10:29:26.601] [42684] [I]                                 - hdtSSEPhysics_AutoRename_Head_0000021E Base Mouth Center [NiNode]
[10:29:26.601] [42684] [I]                                   - hdtSSEPhysics_AutoRename_Head_0000021E Pre Upper Lip Center [NiNode]
[10:29:26.601] [42684] [I]                                     - hdtSSEPhysics_AutoRename_Head_0000021E Upper Lip Center [NiNode]
[10:29:26.601] [42684] [I]                               - hdtSSEPhysics_AutoRename_Head_0000022F Pre Mouth Center [NiNode]
[10:29:26.601] [42684] [I]                                 - hdtSSEPhysics_AutoRename_Head_0000022F Base Mouth Center [NiNode]
[10:29:26.601] [42684] [I]                                   - hdtSSEPhysics_AutoRename_Head_0000022F Pre Upper Lip Center [NiNode]
[10:29:26.601] [42684] [I]                                     - hdtSSEPhysics_AutoRename_Head_0000022F Upper Lip Center [NiNode]

 

 

Please consider my feature request for an ActorBase predicate, but in any case thanks again! 

Edited by doodoo_eater
Posted

ran into another problem, can anyone point to a page on creating mouth phoneme overrides, my mouth animations look like shit but everything else is working great. If i shut off mouth control will better blow jobs ostim take over, i want to try and use mfee i am just sort of confused on how to write it. I am using lorerim and goonrim is up and running strong the only thing i a missing is mouth animations during bjs that dont look like shit

Posted

Is there a way to tell if the facial expressions are working? I can't tell, I use base sexlab settings for expressions and nothing is overwriting the mod but I haven't seen any changes to her facial expressions, noticeable at least.

Posted
On 2/25/2026 at 7:02 PM, asdt123123 said:

I haven't been able to reproduce that issue, but it's most certainly an issue with the sml .xml you're using. It's called MaleGenitals.xml or something usually. 

 

You can post it here so I can reproduce the issue and possibly create a patch or at least a warning for people who have the issue in the future. 

Ok, happened again. This is the XML, but I don't know if it will be useful, as it is the one you have in your Improved Futa mod and it is winning all conflicts.

MaleGenitals.zip

Posted
18 minutes ago, GenericUsername234 said:

Ok, happened again. This is the XML, but I don't know if it will be useful, as it is the one you have in your Improved Futa mod and it is winning all conflicts.

MaleGenitals.zip 1.66 kB · 0 downloads

Someone on nexus actually mentioned theirs was caused by CBPC. So go do "cbpc pause" in-game and see if the issue goes away. 

Posted

On a few group creature animations I find it impossible to assign actor targets. For example any group riekling animation and Billyy (Horse) 3p DP Sideways. I can only ever select 1 of the creature actors and its really tricky to select them in the first place almost always selecting the woman instead. Any ideas on a fix? A fix is to tag the animations in the text file. Could we maybe see the option to tag animations in the SKSE Menu Framework?

Posted
18 minutes ago, asdt123123 said:

Someone on nexus actually mentioned theirs was caused by CBPC. So go do "cbpc pause" in-game and see if the issue goes away. 

No effect with CBPC paused/reloaded, same behaviour as before. The TNG conversions of the TRX schlong done by this other guy:

do not have this problem it seems. So something specifically isolated to the TRX native ones, even the TNG ones made by TRX himself it seems. Or I could be completely wrong. I don't even know what exactly is a good fix for it from the user end either. Sometimes restarting the game works, sometimes it doesn't. Sometimes I do a rain dance of swapping schlongs with TNG to the converted ones, restarting the game, reloading, and it works with switching back to the TRX ones. Sometimes I can put 4 hours in to the game and not encounter this issue, sometimes it breaks on first animation of the load.

 

Posted
6 hours ago, bitnuke said:

How to fix inaccurate orifice openings - For users and dev:

 

I think i figured out my issues regarding accurate, no-clip, timing of hole opening - especially with slow insertions. Turns out i was right: No, it's not my meshes, but has to do with how this mod - and skyrim - works. Other physics mods actually have the same dilemma and worse workarounds. The reason users notice it more with this mod is just because it's relatively new, so there aren't finely tuned configfiles users can just download for a plug-and-play experience.

 

Anyways, here's the fundamental problem: You have collision-spheres and receptor-spheres. When both touch, stuff happens. Sounds great in theory, but this also means there is no time react pre-emptively: Animations can only start at the moment of collision, not in advance. Sounds realistic in theory, by skyrim has no realistic physics, like orifices reacting to exact shape of a penis tip. This only leaves two solutions to avoid clipping on entry: Either orifices suddenly snap open which looks weird, or they begin to open pre-emptively before collision.

 

Other physics mods (and their configfiles) solve this with inflated collision spheres (collider, receptor, or both), as mentioned in an earlier post of mine. With this mod, i naively thought this isn't neccessary anymore, but i was wrong. On the upside: This mod has a cleaner workaround than others: It's TipExtension again. 

 

For users, here's how to get accurate, non-clipping orifice inserts with this mod:

First make sure your orifice startpoints are accurately configured. There are tools for this debug section of the configfile. For coordinates remember: X- is left, X+ is right, Y- is backwards, Y+ is forwards, Z- is down and Z+ is up. Verify those are perfect first, because all your tip-extension settings will depend on those (if you change orifices, you will have to do all TipExtension settings all over again). Then enable the penis debug setting. For every race, play animations for different orifices, and adjust TipExtension for that race until insertion looks right for all orifices. As a general ballpark: I have found that placing the tip extension node just slightly after the end of the tip, usually works, because the "girth" of the dick will make the cylinder go a bit further still - so that you end up with about 1.5 inches "buffer" for orifices to start their opening animation.

 

For the dev:

There is in theory a cleaner solution. You are kinda doing something similiar for penises already, where they gradually align with the hole before penetration. Pretty sure that's controlled by "ActivationRange", but i could be wrong. Orifices could have a similiar 'activation range', except in their case it would control the collision distance at which they start to react to a nearby penis. Then we no longer would have to make penis cylinders longer than they actually are, just to simulate pre-emptive opening.
 

U write so much it hurts my brain. 

 

Here's a couple of important notes:

  • Penis collision has a simulated shape. Like the tip is simulated to be smaller. If that makes sense. I think the first 10% of the penis is scaled from 0 to 100% in girth - I forgot. I did what looked good and forgot about it
  • Tip extension is a work-around because the 6th bone in the penis is not at the end. I said it before, but there's no non-heavy/intrusive way to detect the true tip's penis length. That's why I highly recommend people do not use TRX, it takes an existing issue/limitation and throws gas on it. 
  • You mentioned it before, but yes - I didn't check creature penises for the tip length. It really shouldn't matter 99% of the time since their tip bone is already very close to the mesh end in most cases. Feel free to contribute the ABC changes you've made, I don't even have creature animations installed since I'm not into that stuff.

 

You should really show a video on the problems you're experiencing. I wouldn't of shipped this mod if I noticed obvious issues with collision that could be iterated on so we're having different experiences entirely. Turn on BoneDebug, and PenisDebug and try to show a good video on it. You can upload to https://catbox.moe/ - or mega like I did with the preview video. 

 

And make sure you aren't using a poorly skinned schlong like TRX. Those will never look good:

 

Posted
8 hours ago, doodoo_eater said:

If it's important to use a stable bone for the offset anchor, it seems like it wouldn't make sense to use the upper lip, anyway. What I would really wish for is the ActorBase predicate. I find that I often have to change the Z of the mouth anchor to get good results, depending on the NPC whose mouth is being targeted. Anyway, for posterity, here is what I see when I dump a skeleton for someone using High Poly Head w/ SMP (there are 8+ "Upper Lip Center" nodes. I don't know which one I should use or if the renames are the same every time):

 

  Reveal hidden contents
[10:29:26.596] [42684] [I]           - CME UBody [UBody] [NiNode]
[10:29:26.596] [42684] [I]             - NPC Spine [Spn0] [NiNode]
[10:29:26.596] [42684] [I]               - CME Spine [Spn0] [NiNode]
[10:29:26.596] [42684] [I]                 - NPC Spine1 [Spn1] [NiNode]
[10:29:26.596] [42684] [I]                   - CME Spine1 [Spn1] [NiNode]
[10:29:26.596] [42684] [I]                     - NPC Spine2 [Spn2] [NiNode]
[10:29:26.596] [42684] [I]                       - CME Spine2 [Spn2] [NiNode]
[10:29:26.596] [42684] [I]                         - NPC Neck [Neck] [NiNode]
[10:29:26.596] [42684] [I]                           - CME Neck [Neck] [NiNode]
[10:29:26.596] [42684] [I]                             - NPC Head [Head] [NiNode]
[10:29:26.596] [42684] [I]                               - NPC Head MagicNode [Hmag] [NiNode]
[10:29:26.596] [42684] [I]                               - NPCEyeBone [NiNode]
[10:29:26.596] [42684] [I]                               - Mouth00 [NiNode]
[10:29:26.596] [42684] [I]                                 - MouthL [NiNode]
[10:29:26.596] [42684] [I]                                 - MouthD [NiNode]
[10:29:26.597] [42684] [I]                                 - MouthR [NiNode]
[10:29:26.597] [42684] [I]                                 - MouthU [NiNode]
[10:29:26.600] [42684] [I]                               - hdtSSEPhysics_AutoRename_Head_0000020D Pre Mouth Center [NiNode]
[10:29:26.600] [42684] [I]                                 - hdtSSEPhysics_AutoRename_Head_0000020D Base Mouth Center [NiNode]
[10:29:26.600] [42684] [I]                                   - hdtSSEPhysics_AutoRename_Head_0000020D Pre Upper Lip Center [NiNode]
[10:29:26.600] [42684] [I]                                     - hdtSSEPhysics_AutoRename_Head_0000020D Upper Lip Center [NiNode]
[10:29:26.601] [42684] [I]                               - hdtSSEPhysics_AutoRename_Head_0000021E Pre Mouth Center [NiNode]
[10:29:26.601] [42684] [I]                                 - hdtSSEPhysics_AutoRename_Head_0000021E Base Mouth Center [NiNode]
[10:29:26.601] [42684] [I]                                   - hdtSSEPhysics_AutoRename_Head_0000021E Pre Upper Lip Center [NiNode]
[10:29:26.601] [42684] [I]                                     - hdtSSEPhysics_AutoRename_Head_0000021E Upper Lip Center [NiNode]
[10:29:26.601] [42684] [I]                               - hdtSSEPhysics_AutoRename_Head_0000022F Pre Mouth Center [NiNode]
[10:29:26.601] [42684] [I]                                 - hdtSSEPhysics_AutoRename_Head_0000022F Base Mouth Center [NiNode]
[10:29:26.601] [42684] [I]                                   - hdtSSEPhysics_AutoRename_Head_0000022F Pre Upper Lip Center [NiNode]
[10:29:26.601] [42684] [I]                                     - hdtSSEPhysics_AutoRename_Head_0000022F Upper Lip Center [NiNode]

 

 

Please consider my feature request for an ActorBase predicate, but in any case thanks again! 

 

I'm not opposed to adding more predicates. Don't know what an actor base predicate is though? You mean the base ID of the npc? That'd would be fine. 

 

hdtSSEPhysics_AutoRename  = unstable bone. Anything that isn't "AutoRename" is stable. Now in terms of a "stable" anchor bone. All of them technically are. But don't expect bones to scale with race menu morphs. They're all static on the skyrim skeleton. So you'd might as well just use my current anchor for the mouth, no difference. 

 

 

3 hours ago, Scarlet Queen said:

Is there a way to tell if the facial expressions are working? I can't tell, I use base sexlab settings for expressions and nothing is overwriting the mod but I haven't seen any changes to her facial expressions, noticeable at least.

I don't think I added any debugging to facial expressions since they're pretty straight forward logic wise. It shouldn't be possible for other mods to override PPA's facial expressions either since I'm hooked directly into the morph workers. 

 

Show your configs. Maybe do a "Reset expression" in the action menu

 

Posted
Quote

I'm not opposed to adding more predicates. Don't know what an actor base predicate is though? You mean the base ID of the npc? That'd would be fine. 

 

Yes, the base ID of the mouth owner. That would be so helpful! Primarily for alignment, but it would also make it possible for NPCs to have different expression presets, sounds, etc.

 

Quote

But don't expect bones to scale with race menu morphs. They're all static on the skyrim skeleton. So you'd might as well just use my current anchor for the mouth, no difference. 

 

Yes, good point. For now I have written a script that translates the "NPC Head [Head]" node in the NPC's facegeom and counter-translates the children nodes and skin binds, but it would be so much easier to be able to change it in a config predicated on base ID, so I can hot-reload in game.

Posted

Feature proposal:
Ability to flag entire animations, or animstages, to not be handled by PPA (basically turn off all features and let other mods and frameworks handle it). Storage of this setting could just be part of the tagfiles. Rationale: Having the user manually turn this mod on/off for specific anims is not a practical solution, especially for NPC-initiated sex.

 

(I thought about making this work for individual actors/holes, but could not come up with a sane solution. Just turning all features off for certain stages/anims is simple, robust and easy to understand by users)

Posted (edited)
26 minutes ago, fish2333 said:

Hey, have you considered adding moaning sounds? When the impact sounds and moaning sounds are synchronized, it sounds pretty good.

Someone already asked for that on nexus (Might of been you). 

 

If I added a voice system, it wouldn't be a simple thing. I would write an advanced system for making very customizable voices.

 

Haven't done it yet because it's an utter pain in the ass to find good quality voice assets. Like I would want voices to discriminate based on scene tags, so aggressive scenes would have different moans and what not. 

 

Technically you could just edit some of my clap sounds with Audacity, and just add a moan in them. So it'll play a clap and a moan at the same time. 

 

5 hours ago, bitnuke said:

Feature proposal:
Ability to flag entire animations, or animstages, to not be handled by PPA (basically turn off all features and let other mods and frameworks handle it). Storage of this setting could just be part of the tagfiles. Rationale: Having the user manually turn this mod on/off for specific anims is not a practical solution, especially for NPC-initiated sex.

 

(I thought about making this work for individual actors/holes, but could not come up with a sane solution. Just turning all features off for certain stages/anims is simple, robust and easy to understand by users)

Not sure what you mean, that's already a feature. Just set the penis target to "none" for the main actors. PPA will not manage the scene at all if every stage has none. 

 

If you mean make it even more user friendly, like "disable ppa for animation" button - wouldn't be wise. There's a common issue with mods with scope creep and they eventually have too many buttons/options/features that becomes a serious hurdle with new users. Nobody wants to spend 20 minutes figuring out what everything does on a mod. Not to mention people rarely read documentation and just ask me "why no work".  The UI is already complicated enough as is. 

 

And again, show me that problem you're having with collision in a video. If you've modified the penis heavily in body-slide - that's the problem. I mentioned it before but body-slide only moves the vertices. It don't move the physical bone location. Even worse, the weighted paints remain the same and still rotate around the bone's original position - creating very unknown/undesired shapes when moving it in-game. I always recommend changing the length in-game through bodyslide bone sliders, anything more will only cause problems.

 

15 hours ago, doodoo_eater said:

 

Yes, the base ID of the mouth owner. That would be so helpful! Primarily for alignment, but it would also make it possible for NPCs to have different expression presets, sounds, etc.

 

 

Yes, good point. For now I have written a script that translates the "NPC Head [Head]" node in the NPC's facegeom and counter-translates the children nodes and skin binds, but it would be so much easier to be able to change it in a config predicated on base ID, so I can hot-reload in game.

Irrelevant to what you're talking about, but I should also add an inheritance option to override configs too.. Like "inherits from: ube.toml, gooner.toml" - so it automatically inherits other configs. 

 

I'll add some more options for predicates soon if I remember. I wanted to add OBody support too, but I'm not sure if they expose anything obvious that I can read without hooking into their mod. Like some mods will attach strings to nodes, etc. 

Edited by asdt123123
Posted
2 hours ago, asdt123123 said:

有人在Nexus上问过这个(可能是你)。

 

如果我加语音系统,那可不是件简单的事。我会写一个高级系统来制作非常可定制的声音。

 

还没做,因为找高质量的配音资源真是太麻烦了。比如我希望声音能根据场景标签区分,所以激烈场景会有不同的呻吟声等。

 

技术上你可以用Audacity编辑我的一些拍手声音,然后加个呻吟声。所以它会同时播放拍手和呻吟声。

 

不太明白你的意思,那已经是个功能了。只要把主要演员的目标设为“无”即可。如果每个阶段都没有PPA,PPA根本无法管理场景。

 

如果你是说让它更用户友好,比如“禁用动画中的PPA”按钮——那就不太明智了。模组中存在一个常见的问题,范围蔓延,最终按钮、选项和功能过多,这对新用户来说是个严重的障碍。没人愿意花20分钟去弄清楚模组里的每个功能。更别说人们很少看文档,只问我“为什么没工作”。界面本身就够复杂了。

 

再说一次,给我看看你在视频中遇到的碰撞问题。如果你在身体滑套中对做了大量改造——那就是问题所在。我之前提过,身体滑动只移动顶点。它不会移动骨骼的物理位置。更糟的是,加重的颜料依然保持不变,还会围绕骨骼的原始位置旋转——在游戏中移动时会形成非常陌生或不想要的形状。我总是建议通过身体滑动骨骼滑块在游戏内调整长度,超过这个范围只会带来问题。

 

这和你说的无关,但我还应该加一个继承选项来覆盖配置......比如“继承来源:ube.toml, gooner.toml”——这样它会自动继承其他配置。

 

如果我记得的话,我很快会添加更多谓词选项。我也想加入OBody支持,但我不确定他们是否会暴露什么我能在不接入他们的mod的情况下看懂的明显内容。比如有些模组会给节点附加字符串之类的。

That's not me, haha, anyway, it all depends on you。

Posted
4 hours ago, asdt123123 said:

Not sure what you mean, that's already a feature. Just set the penis target to "none" for the main actors. PPA will not manage the scene at all if every stage has none. 

Just tested. You are correct. I didn't know this, because the docs/ui didn't mention this feature. Thanks for the information!

Posted
7 hours ago, asdt123123 said:

If I added a voice system, it wouldn't be a simple thing. I would write an advanced system for making very customizable voices.

If you add a custom voice system, I think I would want the ability to have custom moans based on Unique actor, Race based voice etc. that way we can add custom sound effects on Unique NPCs ourselves. and voice lines as well 🤩.

I think a mod dedicated to custom voice system would be be better without cluttering this mod. But hey what do I know. lol

Posted

Would it be possible to add a setting where it does not animate penetration, but still play sounds? For example on ABC anims where the animators already animated the penetration and the result may be closer to the intent with PPA off, but pausing PPA or clearing targets at the time prevents the PPA sounds from playing

Posted

It seems the cunni/licking pussy animation is no longer work with this mod, the puss doesnt react anymore. Overall its great to see the penis move in the correct way.

Posted

Does anyone know of a good strapon that works with this mod?

I had a nice version of the original Sexlab strapon with bodyslide but it seems like it doesn't like up correctly now.

When I checked in nifskope the genital nodes are above the 'penis' instead of inside of it like with a SoS 'penis'.

I don't have the technical know-how to fix it. :(

Posted

Would it be possible to add a hook for events on the same trigger as the sound effects? I'm thinking that it could be used for enjoyment in SLSO or screen shake effects etc. 

Posted
16 hours ago, pog champion said:

Would it be possible to add a setting where it does not animate penetration, but still play sounds? For example on ABC anims where the animators already animated the penetration and the result may be closer to the intent with PPA off, but pausing PPA or clearing targets at the time prevents the PPA sounds from playing

No it's a module to the main system. Only reason I included the sound system is because the calculations the base system does easily is translated to creating procedural sounds. 

 

7 hours ago, CrawfordeL said:

Would it be possible to add a hook for events on the same trigger as the sound effects? I'm thinking that it could be used for enjoyment in SLSO or screen shake effects etc. 

Like a papyorus hook, or skse? Clap could probably toss a mod event out since it's not too quick. Wouldn't do it for the wet sounds though, they play too quickly and would overload poor papyrus scripts. I'll have to test performance though, don't want to cause frame latency issues. 

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
  • Recently Browsing   1 member

×
×
  • Create New...