XaiJu
FuroticVR
FuroticVR

patreon


June Update

Hey guys,

Just a quick update to let you know I'm still working on the penetration system for the game. 

I should have something working soon.

The reason it's taking so long is it's a lot more complex than it first seems.

For example, while placing bones along a spline is easy enough, and I already have code to do that, how do I handle compressing the penis once it enters the hole?

Move the bones closer together? Scale them along the Z axis?

I can do both, but how much do I scale them by? And how do I calculate that?

And wait, what about the diameter of the penetrator, and the diameter of the hole? How do I calculate those? 

For the penis, I can access the vertices which are affected by each bone and calculate a radius from that, but for the vagina there are no bones, only a blend shape. Having bones surrounding the vagina so it can be stretched by a dynamic bone collider might be and ideal solution but I don't have the time or the money to pay someone to edit every model in that way, and even if I did, it would be incompatible with imported models later if and when I implement that. Most models will just have a blendshape for the vag.

Okay, well how do I calculate the radius of the vagina from a blendshape? Well I can't count on the blendshape only affecting the vertices of the vagina because blendshapes often affect all vertices of a model even if they don't move them. I suppose I could try to figure out which vertices actually move when I adjust the blendshape, but calculating a radius that way would be complicated. Perhaps I could cast rays out from a transform the user places in the center and see how far they go before they hit something?

Of course now we're getting ridiculous, and while it might be possible to implement something automatic, I really need to implement something sooner rather than later, so for now I should probably just have the user put a script on the transform that represents the vag with a radius and depth they can set.

Speaking of depth, that was another thing that came up while I was considering this whole thing.

Because you can shrink yourself down and climb inside, I can't just shrink every bone down to nothing as it enters the vagina like the penetration shader people use in VRChat does. I want the penis to still look good when you are inside, even if all you can see is the head moving in and out. And I want the motion of it to look good as well. So I needed to consider what would actually happen, or at least how I would represent this if I were actually animating it.

I decided that as the head enters, it would encounter friction, and thus slow down and compress the length of the bones behind it as it approaches the cervix. And as it exits, it would encounter the same friction and so slowly speed up as it exits, stretching the penis out again.

How could I simulate this though?



Well, as you can see here, after writing pages and pages of ideas down in a google doc I decided I really needed to just sketch something out in photoshop to better help me visualize the problem.

I was still a bit stuck here though, so I took a closer look at the code I have for placing bones along a spline, and it turns out it already calculates the default length of each bone and sticks those in an array. And the way it works is it places the bones along the spline by simply putting a bone down, adding the length of it to a variable, and placing the next bone at that location. And then it uses an internal Unity function to make each bone point towards the next in the chain. This turns out to be a really simple solution which actually solves a lot of problems I was having with the math, because now I know I can just take those default bone lengths I have and place those bones along the spline, and when I hit the point along the spline that represents the entrance to the vagina I can begin to scale those values down as a function of how deep they are (1 -> 0) in the vagina. Depth^2 * BoneLength should work well for this calculation. I could also adjust the scale of the bone in addition to its position, though I'll have to see how this looks in practice. I don't want the head to flatten too much as it approaches the cervix it might look weird.

I also have to consider the potential complications of scaling bones non-uniformly in Unity. Generally it's not a good idea to do so as it can cause the children of those bones which are scaled differently on each axis to skew or strangely alter their scale as they rotate. Yet I need to have some form of scaling on the bones, because a massive horse cock may not fit into a small hole, and I'm talking diameter here, without scaling it down at least a little when it enters. Also a little compression would just look more physically accurate.

So, if I can avoid worrying about having to scale the bones along their length separately from their diameter, that would be ideal.

In any case, I think I've finally worked out how best to implement this for now, in a way that I can quickly get working, but will still work with Unity physics, and which will look pretty good even for those who want to view this happening from inside the avatar.

I'll be working as quickly as possible to get this implemented this month and get a new update out for you asap so I can then start working on adding other more exciting content like new skins and sound effects and such.

That's all for now!

Comments

Currently, selecting the spawn point / animation and the characters you want in that animation is all you can do besides what you mentioned. You can touch them as well, but there are no arousal mechanics in the game yet. The next build coming this month, will have a proper penetration system. Soon after that I'll likely begin implementing arousal mechanics, new sound effects, and other interactions.

Furotic

Hey I like the game so far but I don't know how to do anything besides change size walk and teleport I've tried everything else and I was wondering if that it or there's more

plainpal

I don't want to promise features that are a long ways off, but yes, it is an ongoing consideration as I design the systems in the game. For example, the game automatically creates dynamic bone colliders which match the VR hand colliders, and it automatically adds all those colliders to any dynamic bone scripts on the loaded avatars, which both saves me time when adding a new avatar or changing the VR rig which would break all those connections, but also will allow that stuff to just work for an imported avatar using those scripts. Unfortunately exporting and loading scenes or avatars that were not built with the project originally isn't something Unity supports natively, so yes, I'll have to do something akin to what VRChat does. As for whether it will be easier or harder, well you won't have to set up animators and menus and such. It would probably involve adding a script to the main avatar, dragging and dropping the penis onto a slot if its not auto-detected, and positioning transforms to designate the locations of the vagina and anus. And of course you'll have to set up your dynamic bones scripts just as in VRChat. Though I may eventually end up coding my own solution for dynamic bones which uses Unity's physics system, aka rigidbodies and configurable joints, because dynamic bones doesn't really do anything those can't do, and making dynamic bones collide with the world, to for example keep tails and things on the bed instead of clipping through it, would require a bit of a kludge. I'd have to just specify an infinite plane for the bed surface. Which could work, but it would have to be selectively enabled and disabled depending on where the avatars are, and once the player themselves has a body and you can get on or off the bed at will, that would break all that. It would just be so much simpler and more robust to just use the built in collision code. And as with VRChat I'd likely have to have some kind of automated replacement system for those scripts so you don't have to redo all your dynamic bones stuff.

Furotic

oh wow, we'll be able to add our own models in the future? that sounds like quite the complicated task to achieve, especially if you want it to be as easy as possible for the user, but that's very exciting! ^^ I wonder though, how easily do you want that to be for the user? a similar way to adding avatars to VRChat, or even easier than that?

PoggerFoxy

You had me at "I want to eventually allow users to import their own models"

Dinosorceror

I considered it, and ran some tests with it in game, but I decided not to use it for several reasons. 1. Too complex of a setup. It requires a bunch of special blend shapes, a bone in the hole to be penetrated, a special shader for the penetrator, and the penetrator has to be a separate model from the sheath and balls. Even if I wanted to do all this setup myself, I want to eventually allow users to import their own models, and that's just too much to ask of an end user. 2. The special shader on the penetrator wouldn't match the appearance of the rest of the model. For example the shader I'm using right now occludes reflection probes in dark regions so as to reduce the "glossy" effect that Unity lighting often has. And if I were to instead use poiyomi, or a custom shader so I can get subsurface scattering, that too would not show up on the dicks if they're using a custom shader. 3. Because the shader on the penetrator is used to deform the penetrator rather than the bones themselves, those changes would not be picked up by Unity's physics system. This would mean a tiny player standing on or clinging to a dick would not move with it properly when it moves. Obviously it's going to be hard to stand on a moving dick anyway, but I would like to implement a grip mechanic later so you can be parented to the nearest bone and move with it. 4. Choppy animation. If you watch some of the videos of the KoboldKare system in action, as the dick enters the hole each change in the dick's radius causes the model being penetrated to snap to a larger or smaller size. This is jarring. 5. Mushy animation. In contrast, to the above, the compression along the length of the dick as it enters the hole is interpolated so it slowly compresses and expands, which doesn't look physically accurate. I'm not sure of the exact term to use here, but it doesn't seem "solid" enough, like when I animate a character and their hands and legs float around a bit instead of being pinned to the ground. (Which by the way is something I'm working on fixing with Final IK.) 6. The body bulge animations are too high definition, where you can see every ridge and bulge on the dick transferred to the body. But I imagine flesh would tend to hide the shape of the dick quite a but except in the most extreme scenarios where a character is literally stretched over it like a condom. With a more comedic game like KoboldKare this look may work, but I'm trying to maintain immersion and it just looked silly to me. This doesn't mean I won't have bulges, but those will have to be implemented some other way. 7. I believe the body bulge animations also require a special shader on the avatar which, as with the dicks, would mean it wouldn't work with physics, and I'd be stuck with that shader's look. I didn't expect the list to be that long, and this turned out to be a whole mini update in and of itself, but there ya go. :)

Furotic

and here I thought you'd use the Dynamic Penetration System to make your life easier (which is also used in another Unity game called KoboldKare and works wonders). Nope, had to do all the thinking yourself, honestly I respect that

PoggerFoxy

The amount of detail and analysis you put into these "minor" problems are just amazing, and worth the price of admission alone. :) It's also very awesome that you detail all these thought processes.

Dinosorceror


More Creators