SamSuka
naelstrof
naelstrof

patreon


Procedural Penetration Tech

Been a while since my last update, had to catch up on unrelated commissions. I'm back into the swing of things though and have something fun to show!

I'm not much of an animator, so I plan for the majority of the animations I make to be mostly procedural. This means I have to develop some tech to allow for arbitrary penetration angles, sizes, and depths.

I'm going to describe all the effects I created and show what it looks like all combined!

I first thought about how a dick might get squished or pulled. I then developed some blendshapes on a model I already had for these effects.

There's three blendshapes, one for when the dick is "confined" within something. Compressed at all sides.

Next is when a dick is squished down, pressed down from the friction/pressure of trying to enter.

Finally a blendshape for when the dick is getting pulled out, the friction stretching it a bit length-wise.

I can't just triggers these effects along the entire dick though, it needs to happen at a specific point, where the contact between the dick and hole is.

To do this, I baked the blendshapes in tangent space within the spare UVs of the mesh. I programmed a tiny Unity Asset PostProcessor to do this automatically for me! With each vertex having the blendshape data in the UVs, I can trigger each independently in shader.

The dick is entirely along the Z axis, and is exactly 1 unit tall. This makes the math pretty easy to solve for making specific parts of the dick trigger a certain blendshape. Here's each of the blendshapes individually being triggered along the length of the dick.

And this is what it looked like in action:

... the dick looks good, but overall it's not very good quite yet.

Next I needed to make the other end react to the dick! The Kobold model I have totally doesn't support penetration, so I had to rework it.

This is what the topology looked like before and after:

With a new suped up model. I next needed to solve a couple of problems.

First of all the dick can be coming in at any angle, I thought this would be a huge challenge, but I realized I could just rig up a bone to deflect the holes into any direction like so:

Next I set up a series of blendshapes to support tugging, pushing, and expansion like so:

There's nothing special that needs to happen here, I can just trigger the blendshapes depending on the size of the dick.

I manually approximated the girth of the dick using an animation curve like this one:

This is what the animation looked like at this point:

The girth approximation is okay, but there's a major issue at this point. The dick's girth can be offset by an amount, causing the butt to not conform perfectly to it. The problem looks a bit like this:

You can see the butt has a large gap at the underside... This problem would become worse with more unique dicks. So I had to come up with a strategy to offset the butt based on the girth offsets.

I started with an editor script that analyzes dick cross-sections to get actual girth numbers and offsets.

After giggling about the fact that I was trying to convert dick-space offsets to butt-space for a couple hours. This here's the result of the animation now! (This time I remembered to trigger the push and pull blendshapes.)

You can see that with the spinning at the end that the butt is properly conforming to the dick in pretty much any configuration!

After looking at some inspiration, I realized I probably should have some strands that spawn at random contact points. Here's what little I've done for it so far.

Plan is to spawn them randomly and have them droop, stretch and stuff. I might make a post about them separately because I realized they'll be their own mountain of procedural effects.

I also made a "slickness" progression slider, that uses a Fresnel and normal effect to create the impression that the dick is wet.

Final effect is setting up the soft body and jiggle bones up.

And now for all of the effects combined... I'll make a video post after this one.

(Otherwise click here to see a video:  https://vimeo.com/356546463 )


More Creators