Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

[Mirroring] Guys I think I broke it

I decided to randomly import a model I had to be a hilarious set of nipple pasties. I used the mirror to flip it (and while the text is backwards, oh well lazy) it worked great.

The problem came after when I entered pose mode to jiggle them at maximum volume...


  • odesodes Administrator
    edited January 2020
    Can you share your output_log.txt and the character or 3d file causing this issue? I'm not able to reproduce this issue.
  • I think I had a similiar problem when I mirrored a bangle that was attached to the right arm. You can easily fix it by basically duplicating the part and attach it to the other boob so it's it's own part instead of a mirrored instance.
  • odesodes Administrator
    Thanks, I can work with this.
  • odesodes Administrator
    edited January 2020
    I found the cause and fixed it. It was actually two problems with this.

    This first one was with how the routine for finding a mirror bone worked. It worked fine for things like head and pelvis, but for arms, legs or tits (as was this case), it would not be able to find a mirror bone and instead return itself. (It used to work, but our relatively newly implemented bone scaling caused errors here.) This routine has now been fixed.

    The second problem was with load. When you loaded this file, you'd see the parts spawn in the right location, only to be offset a moment later. This was a tricky problem to find the cause of, but eventually I figured it out.

    In order for the breast bones to be offset by inflation, we need to calculate their positions both in flatchested, default and inflated states. This is quite a heavy operation though, so it's scheduled to run after a while, so it doesn't interfere with authoring (otherwise it would be very laggy and annoying to use sliders). After this routine is completed, the bones will be offset according to the currently configured inflation. That means, however, that if anything was parented to the tit bones, then those things would move along with the tit bones, causing them to appear in the wrong spot. This has now also been fixed, so whenever this routine runs, it also updates the position of any items parented to the tits.

    However, it is bad practice to parent things to the tits. Because of how inflation works, and because any parts are parented to bones directly (even a part snapped using surface point will still translate to a bone), it would be much better to use an appendage group instead. Unlike parts, appendage groups use a special shader and rendering technique, which means they will always stick to the surface point they're attached to, regardless of what has happened to that point (whether it be skinning or something else).

    Here you can see what happens when using parts together with inflation:

    And here we're using an appendage group instead:

    Since appendage groups don't give a damn about model scale, only the raw mesh data, it means the model in this case became "long" (or rather, it didn't become short, since the model was scaled down in the source file). You'd have to apply (or "freeze") the transform before import if you want them to display the same way.

    I also had to rotate the model 180 degrees so they'd point upwards. I did this with the sculpt tool.
  • Cool, thanks for looking into it so fast :)
Sign In or Register to comment.