XaiJu
FuroticVR
FuroticVR

patreon


An update! And a new build!

Hey guys,

It's been a while!

I'm sorry this update took so long. It was way more difficult to implement this penetration system than I first anticipated. What I thought would take a week ended up taking six months, and every time I thought I should post an update I felt like I was really close to a solution and would finally have it ready for you if only I spent another week or two on it, but each time a new issue cropped up.

A long technical explanation of all the problems and pitfalls I encountered writing the penetration system follows! Skip to the end for the TLDR changelog of everything that's been added in this build!

The Penetration System

I started with planning how all this was going to work. I detailed some of this in previous updates, about how I looked into using various pre-made solutions and why those were each flawed in some way. I wanted a system where the dicks would still have mesh colliders, where micros could potentially grip a dick and move with it, and where a micro inside an orifice would see the dick enter rather than having it shrink to a point on entry as many penetration shaders do.

This led me to pursue a bone-based system, where I would position the bones of the penetrator along a spline. This seemed simple enough, as I already had access to a spline system in Unity. I'd just position each bone along the spline and tell it to look at the next one. Easy-peasy!

Except, there were a million different things I'd failed to consider, or which I hadn't anticipated. For example, I didn't want the bones to instantly snap to the spline. I wanted them to smoothly transition to it. But I couldn't simply disable the dynamic bones and start blending from the last position of the bones to the spline because the avatar the dick was attached to would be moving, which in turn meant that the dick attached to said avatar would still be swinging about. So I needed a way to both allow dynamic bones to continue animating the dick and interpolate between where dynamic bones wanted the dick to be, and where I wanted it to be along the spline.

And then when the dick exits the orifice and the orifice is disabled, what happens? There's no longer an active spline to blend to. There may not even be an avatar with a hole standing there any more. I also needed dynamic bones to take over in this case to allow the dick to flop to the ground.

To make this work I had to figure out how to make my script run after Dynamic Bones so it could sample the positions of the bones Dynamic Bones was moving the bone transforms to, and find a way to access a private method in Dynamic Bones so I wouldn't need to edit the script which would potentially screw up avatar importing if I ever implement that, so that I could then feed Dynamic Bones the updated transforms as I interpolated them towards the spline.

I then realized I also needed the ability to dynamically target and untarget orifices in the middle of an animation sequence. Which in turn required me to learn how to create a custom inspector interface in Unity so that I could have the data laid out in an easy to read and update fashion.

After implementing these classes to control the penetrator and orifices, avatar descriptor with penetrator and orifice definitions, and custom inspector for my animator so I could define when and which orifice each penetrator targets, I was finally able to actually test the code. And of course, it didn't work at all.

The first issue I encountered was the bones weren't even going where they should. After pulling my hair out for a while on that, I realized that because I placed the bones along the spline and then pointed each bone at the next to get them into the right rotation, the children were being rotated out their desired location as each parent rotated to face where it had been.

Then I decided that I really needed to animate the orifices, and I spent a long time trying to figure out how I might use raycasting to calculate the radius of the dicks along their length, but eventually I decided to put that off and just gave them a fixed radius for now.

Opening and closing the orifices though opened a whole other can of worms, requiring me to make a ton of additions to the orifice class allowing me to select which blend shape needed to animate, and I quickly realized that for mouths a single blendshape being animated wouldn't suffice and that I would have to blend between two different blendshapes. I suppose here it might have been ideal to simply make an animation and blend that in and out and I could blend whatever blendshapes in that that I wanted to, but that in itself would have a learning curve to figure out how to do it and it seemed simpler at the time to just specify two blendshapes and their min and max values.

Of course once I'd done that, I then also realized that I had a problem in that jaws open downward. The top and bottom of the jaw don't both simultaneously move away from a center point like other orifices. And that means that the center point that the path would go through needed to be animated to move from one position to another. And I needed to know exactly how wide the mouth would be open depending on the weights of the blendshapes. So I ended up needing to learn how to create sphere gizmos in Unity so I could create transforms that I could position to define the centers at min and max blend shapes and see the radiuses I was setting for them in relation to the avatar's mouth. And I needed to add buttons that would quickly set the blendshapes to the min and max settings so I could see where to place and how to size the sphere gizmos. I'd really hoped I'd be able to automate all this using raycasts, but I realized eventually that not only was that solution complex, it'd also likely be buggy with a lot of weird edge cases, so I abandoned it for now.

After that I wrote some code to allow the orifices to smoothly transition to whatever radius penetrator I told them they needed to currently accept.

No serious issues were encountered there, but then I discovered the dicks were twisting weirdly when the spline went close to vertical and there was a whole lot of clipping going on that didn't make sense.

The clipping issue turned out to be Dynamic Bones running in LateUpdate() instead of Update() which meant it was still secretly updating things after my scripts in spite of my having set my scripts to execute last. Once I fixed that, the penetration started to look really good, nice and solid and not weird and floaty, which I got really depressed about when I first saw it because I'd come so far on this and I wasn't sure that was an issue I could actually fix!

As for the weird twisting, to fix that I had to ditch Unity's LookAt() method which used the world up axis to determine how to point the vectors, and instead rotate the bones using Quaternion.FromToRotation() which uses weird 4D math to reorient vectors in 3D space.

This worked fine until decided I really needed the canine dicks to pivot at the root bone which controlled the direction of the sheath so that the dick wouldn't clip outside the sheath at extreme angles.

The first problem here was the root bone's Y axis wasn't oriented along the length of the dick like the others. I figured I needed to first rotate the root's Y axis to point along its Z axis and then I could do the usual rotation to aim it along the spline, but for some reason the sheath itself seemed to be  rotating in the opposite direction I wanted it to, and I'm not really a math guy, so I wasn't sure if the way I was trying to concatenate these rotations was correct or not and I tried a dozen different ways to do it and nothing was working, and I was pulling my hair out for hours trying to grapple with why its behavior seemed to make no sense and defy all logic.

Then I suddenly realized it wasn't my rotations that were wrong. The problem was the normal I was trying to point that first bone along!

When I generate the normals for the bones to point along, I do so by getting a vector from each parent to its child. But this breaks down at the end of the path where the bones suddenly stop and all pile up at a single point. So I use the last known good vector for any bones that are closer than a millimeter to the next one. And since they're all at the end of the path, I defaulted this to the path end vector, just in case even the first bone was past the end of the path. Which is silly because the first bone is the start of the path and it is unlikely it would ever be positioned right where the end of the path is inside the orifice!

But in any case, it turns out that the root bone that I wanted to rotate just so happened to be right on top of the first dick bone. So for that root bone it was using that default vector, which was the vector for the end of the path, not the start! As soon as I modified that vector to default to the vector for the start of the path, the sheath snapped into place and finally moved with the dick as expected!

And that brings us to today.

But, in the middle of all that, I also made a bunch of other smaller updates improvements, and additions. For example, I couldn't very well release a new penetration system that solves that clipping issue while still having tails sticking out and clipping straight through the bodies of their partner standing behind them. So I wrote a whole system allowing me to define a variety of tail poses for each avatar and then set those with each animation.

Since I'm tired of writing though, and I'm sure many of you just want a TLDR, here's a changelog of all the things I've added and modified for this build:

TLDR

It took six months and over 2,000 lines of code, but the penetration system is finally working!

There’s still some improvements to be made, for example by repositioning and aiming the hips with IK so it has a straight shot at the hole to reduce excessive curvature, but the penetrators now enter the orifices and no longer clip through the back of the head!

This was a long time in the works and really complicated to design, but it allows me to know penetration depth, speed and direction of movement, and other things that I need to implement various features in the pipeline. Anything can be an orifice with this system and passthrough orifices can work too, so in the not too distant future you’ll be able to grasp the dick in your hand and have it move through it.

Dicks will also smoothly transition into and out of penetration and back to being controlled by dynamic bones, and they can change orifices in the middle of an animation, so when a character finishes sucking the orifice will be disabled and the dick will flop back into place until they’re ready to go again!

Orifice animation is also working! Orifices will expand on entry of a penetrator, and they will contract slightly as it pulls out, closing again when it exits fully. This works with mouths too, so sucking animations will now look more lively!

And speaking of sucking, avatars will no longer try to turn their heads towards you while their mouth is busy with something else!

I’ve also added a new tail posing system for moving tails out of the way during animations to reduce clipping. This is also a big step on the way towards adding wagging! Some work still needs to be done here to handle tails colliding with beds and chairs. There is a ground collider active already but this only works with some of the animations.

I've temporarily changed the blowjob scenes to feature size-difference because until IK head aiming is implemented, this was the only way to get the mouth lined up properly without blocking the view of the dick with the muzzle or having other undesirable visual glitches.

I've added more variety to avatars by adjusting boob sizes, and by adjusting the size, shape, and materials for the dicks.

I made the female bear a bit thicker, and the female shark a little more muscular.

I adjusted materials on avatars in general to improve appearance. The rabbit no longer glows in the dark! Male wolf now has a greenish blue shirt. Eye color improved and more varied.

I've temporarily removed vest from stallion due to it clipping in every animation. Clothes will eventually be toggleable!

I finally solved the issue with the avatar’s eyes occasionally rolling back into their heads in the doggy style position in the guest room. Turns out I’d accidentally scaled the spawn point by -1 on the X axis and this messed with the avatar gaze animator system. Oops!

I've added light probe override transforms to all spawn points which are automatically applied to the avatars and everything attached to them. This both makes the lighting on the avatars consistent with each other, and allows me to place avatars anywhere without concern for the light probes in a particular area being too dark or having a weird color cast. All characters should now appear well lit in their locations!

I fixed the bed in the master bedroom being flipped on one axis which caused it to have subtly wrong lighting.

I've scaled down all the leather chairs a bit because they were unrealistically large and the excessive seat height didn’t work well with the existing animations.

I adjusted the tail physics slightly. They should bounce a bit more now during animations.

Tails currently have dynamic bones disabled for certain animations where they are seated or lying in bed, but this will change in the future once I add the ability to adjust the colliders for each spawn point.

Finally, where a pussy is not available for an animation to target, the system will choose to target the anus instead. For now this is only used in the missionary position. I’d implemented a "Prefer Pussy" checkbox on the menu to switch from anal to vaginal in other animations, but it didn’t work well so I’ve disabled it for now. Once I start implementing IK stuff I can revisit this because I’ll need to rotate the hips to make it work well.

New Build!

A new build is now available and the link will be posted shortly for those in the $10 tier. This build will become available to the $5 tier whenever the next build is ready.

I implore you to join the higher tier if you can. I don't want to have to limit all builds to the $10 tier in the future, but things have gotten really bad for me financially. This is my full time job but the game is still only making $1,200 a month, which where I live is barely enough to house and feed myself. I've had to cut every corner I can just to keep the lights on.

This is my fault for not putting out new content quickly enough, but now that the penetration system is functional I'm going to focus on things I can add more quickly, like new skins, new avatars, more sound effects, triggers to make the mouths open when you put your hand near them, gripping dicks, cum particles, etc. Going forward I hope to release a new update each month. That's the goal anyway.

Btw, speaking of updates, if you're not following me yet on Bluesky, you should! I occasionally post screenshots or small dev updates there that don't make it here.  You can find me here:

https://bsky.app/profile/furotic.bsky.social

I'll be posting a link to a new video of the game in action on e621 once I have time to record and edit it. I'll post about that here and on my other social media when that's ready, but that probably won't be till the middle of next week.

Comments

Yet another update with a ton of wonderful detail and work, will check it out this weekend!

Dinosorceror

Thank you!!

Toshiro Fox

The link is in this post: https://www.patreon.com/posts/new-build-94353996

Furotic

I'm fairly new here and I'm curious as to where I can download the latest version

Toshiro Fox


More Creators