goaway Posted June 28, 2018 Posted June 28, 2018 EDIT: Since for whatever reason it doesn't look like the CODE function of this forum is going to let me post the XML intact, I have removed the bracketing and put it within spoilers in order to at least post the names and values intact. There's not a whole lot of point to this post if you can't see the config settings! Keep in mind that you can't actually copy and use these as is unless you reattach the bracketing Due to my low satisfaction with existing SMP configs relative to PE configs, especially with regard to butt physics, I set about trying to tweak them to my satisfaction. However, the documentation for skinned mesh physics is... limited, and most existing configs or guides seem to be based on the anecdotal evidence of someone who is changing 20 settings at a time until they get rid of a problem. Inspired by earlier posters, such as bazinga, who created improved configs through rigorous and rationally driven testing, I set about to methodically experiment with various settings in a semi-scientific controlled manner, and document both the process and the results. My hope is that not only will the results be useful, but that others can benefit from reading the experimentation process I used in order to gain a better understanding of what these settings do in order to tweak things to their own tastes. My initial goal was to improve the butt physics in a way that A. produces responsive proportionate movement in impact situations (sex animations), high movement situations (dance/run/combat animations) as well as low/moderate movement situations (walk/idle animations) B. Does not produce the annoying constant jiggling of a poorly tuned config (the jello effect) C. Does not produce any bizarre or unrealistic deformations in normal situations and is not visually distracting My personal preference is for a very slight amount of jiggling that lasts only briefly, but happens in response to any kind of movement the ooh-lala PE config by downjonsie is pretty close to what I have in mind, the kind you would find in an athletic girl that has still has a thin fat layer covering well toned muscle and is not 100% muscular Some people may prefer very stiff/rigid butt physics, or very jiggly/squishy, both of which you will see are very easy to reproduce and don't require a lot of tweaking. Here are the initial settings as they appear in the SMP configs on this site Spoiler bone name="NPC L Butt" mass 1.000000 /mass inertia x="10" y="10" z="10"/ centerOfMassTransform basis x="0" y="0" z="0" w="1"/ origin x="0" y="-1" z="0"/ /centerOfMassTransform linearDamping 0 /linearDamping angularDamping 0 /angularDamping friction 0 /friction rollingFriction 0 /rollingFriction restitution 0 /restitution /bone bone name="NPC R Butt" mass 1.000000 /mass inertia x="10" y="10" z="10"/ centerOfMassTransform basis x="0" y="0" z="0" w="1"/ origin x="0" y="-1" z="0"/ /centerOfMassTransform linearDamping 0 /linearDamping angularDamping 0 /angularDamping friction 0 /friction rollingFriction 0 /rollingFriction restitution 0 /restitution /bone generic-constraint bodyA="NPC L Butt" bodyB="NPC L PreButt" frameInB basis x="0" y="0" z="0" w="1"/ origin x="0" y="0" z="0"/ /frameInB useLinearReferenceFrameA false /useLinearReferenceFrameA linearLowerLimit x="-2" y="-2" z="-4"/ linearUpperLimit x="2" y="2" z="0"/ angularLowerLimit x="0" y="0" z="-0.2"/ angularUpperLimit x="0" y="0" z="0.2"/ linearStiffness x="438.649109" y="438.649109" z="438.649109"/ angularStiffness x="1096.62" y="1096.62" z="1096.62"/ linearDamping x="10.5000" y="10.5000" z="10.5000"/ angularDamping x="10.9662" y="10.9662" z="10.9662"/ linearEquilibrium x="0" y="0" z="-2"/ angularEquilibrium x="0" y="0" z="0"/ linearBounce x="0.5" y="0.5" z="0.5"/ angularBounce x="0.7" y="0.7" z="0.7"/ /generic-constraint generic-constraint bodyA="NPC R Butt" bodyB="NPC R PreButt" frameInB basis x="0" y="0" z="0" w="1"/ origin x="0" y="0" z="0"/ /frameInB useLinearReferenceFrameA false /useLinearReferenceFrameA linearLowerLimit x="-2" y="-2" z="-4"/ linearUpperLimit x="2" y="2" z="0"/ angularLowerLimit x="0" y="0" z="-0.2"/ angularUpperLimit x="0" y="0" z="0.2"/ linearStiffness x="438.649109" y="438.649109" z="438.649109"/ angularStiffness x="1096.62" y="1096.62" z="1096.62"/ linearDamping x="10.5000" y="10.5000" z="10.5000"/ angularDamping x="10.9662" y="10.9662" z="10.9662"/ linearEquilibrium x="0" y="0" z="-2"/ angularEquilibrium x="0" y="0" z="0"/ linearBounce x="0.5" y="0.5" z="0.5"/ angularBounce x="0.7" y="0.7" z="0.7"/ /generic-constraint Unsurprisingly, this produces almost no butt motion whatsoever. It should also be noted that a constraint of z=-2 for linearequilibrium means the butt will come to rest forward from where it attaches when not in motion, ie it is going to stick out farther behind than it does in nifskope. I don't personally think this is a good idea because it means every morph will be applied as a setting that will look different in game with the physics going. I had initially changed some values over time in my own configs which had helped, but had not produced the results I wanted. These are the settings I started my own testing with Spoiler bone name="NPC L Butt" mass 1.000000 /mass inertia x="10" y="10" z="10"/ centerOfMassTransform basis x="0" y="0" z="0" w="1"/ origin x="0" y="-1" z="0"/ /centerOfMassTransform linearDamping 0.1 /linearDamping angularDamping 0.1 /angularDamping friction 0.1 /friction rollingFriction 0.1 /rollingFriction restitution 0.2 /restitution /bone bone name="NPC R Butt" mass 1.000000 /mass inertia x="10" y="10" z="10"/ centerOfMassTransform basis x="0" y="0" z="0" w="1"/ origin x="0" y="-1" z="0"/ /centerOfMassTransform linearDamping 0.1 /linearDamping angularDamping 0.1 /angularDamping friction 0.1 /friction rollingFriction 0 /rollingFriction restitution 0.2 /restitution /bone generic-constraint bodyA="NPC L Butt" bodyB="NPC L PreButt" frameInB basis x="0" y="0" z="0" w="1"/ origin x="0" y="0" z="0"/ /frameInB useLinearReferenceFrameA false /useLinearReferenceFrameA linearLowerLimit x="-2" y="-2" z="-4"/ linearUpperLimit x="2" y="2" z="0"/ angularLowerLimit x="0" y="0" z="-0.2"/ angularUpperLimit x="0" y="0" z="0.2"/ linearStiffness x="418.649109" y="418.649109" z="418.649109"/ angularStiffness x="996.62" y="996.62" z="996.62"/ linearDamping x="6.5000" y="6.5000" z="6.5000"/ angularDamping x="6.9662" y="6.9662" z="6.9662"/ linearEquilibrium x="0" y="0" z="0"/ angularEquilibrium x="0" y="0" z="0"/ linearBounce x="0.7" y="0.7" z="0.7"/ angularBounce x="0.8" y="0.8" z="0.8"/ /generic-constraint generic-constraint bodyA="NPC R Butt" bodyB="NPC R PreButt" frameInB basis x="0" y="0" z="0" w="1"/ origin x="0" y="0" z="0"/ /frameInB useLinearReferenceFrameA false /useLinearReferenceFrameA linearLowerLimit x="-2" y="-2" z="-4"/ linearUpperLimit x="2" y="2" z="0"/ angularLowerLimit x="0" y="0" z="-0.2"/ angularUpperLimit x="0" y="0" z="0.2"/ linearStiffness x="418.649109" y="418.649109" z="418.649109"/ angularStiffness x="996.62" y="996.62" z="996.62"/ linearDamping x="6.5000" y="6.5000" z="6.5000"/ angularDamping x="6.9662" y="6.9662" z="6.9662"/ linearEquilibrium x="0" y="0" z="0"/ angularEquilibrium x="0" y="0" z="0"/ linearBounce x="0.7" y="0.7" z="0.7"/ angularBounce x="0.8" y="0.8" z="0.8"/ /generic-constraint methods I tested a variety of animations on the same npc in order to maintain the same shape body and rule out any effect of camera/player abnormalities this was done with 5 different situations A. a dance movement involving a lot of butt shaking (high energy motion) B. sending the npc walking and running down a path with heels on and following "behind" (low energy motion) C. a spanking animation was playing used osex (high impact on stationary actor) D. a slow doggystyle animation was then played (low impact) E. and finally a fast doggystyle animation was played (high impact on actor in motion) Note that when referring to stiffness and damping I mean both equally unless I specifically state otherwise, or the configs do not use one or the other initially (usually angular) 1. low stiffness(200), high damping(9.0) (note that z plane stiffness/damping remained unchanged) results character walk- no visible physics dance movement - barely visible physics spanking impact - noticable deform physics without jiggle low impact doggystyle - no visible physics high impact doggystyle - barely noticable physics 2. low stiffness(200), medium damping(5.0) results character walk- barely visible, no jiggle dance movement - visible physics without jiggle spanking impact - very noticable deform physics with slight jiggle low impact doggystyle - barely visible physics, no jiggle high impact doggystyle - very noticable physics without jiggle 3. low stiffness(200), low damping(3.0) causes a persistent non-motion idle jiggle that disqualifies it based on acceptable results (no jello effect) 4. high stiffness(500), low damping (3.0) results character walk- barely visible with slight jiggle dance movement - visible with slight jiggle spanking impact - very noticable with slight jiggle low impact doggystyle - visible with slight jiggle high impact doggystyle - very noticable with slight jiggle, and surprisingly, forceful penetration spread buttcheeks outward to match force of movement which looks pretty sexy While the documentation provides an explanation of what these settings do in the abstract, it does not always lead to an intuitive understanding of what that actually looks like in action. conclusion stiffness affects not only a higher threshold of force required upon a body to produce movement, but also the strength of that movement, and when combined with damping, the duration of that movement (think of it as a value subtracted from the energy before calculating the resulting motion) damping represents how long it takes to revert to zero motion in terms of seconds, so a value of 10 means 1/10 of a second to zero energy, and 1 means 1 second to zero energy. (probably a denominator in the calculation?) if your damping value brings your energy below the threshold for stiffness, it will result in no motion, even if for example you have a damping of 1 and it has been less than 1 second a high damping/high stiffness setting produces almost no visible motion whereas a low damping/low stiffness setting produces almost constant motion, so neither of these will work for what I want This wasn't enough to give the look I wanted, but it did give me a baseline configuration with which to start tweaking less obvious things All settings remain the same except for those specifically stated, and since there were only minor differences in one/all of the different testing situations I didn't document the results of each test low stiffness(200), medium damping(5.0), increased upper/lower linear limits(+/-2 -> +/-4) the same in all cases as above except for spanking impact which had a more visible deform this makes sense. it doesn't change the physics, just how far the bones can deform in response to energy low stiffness(200), medium damping(5.0), addition of angular range (+/-0 -> +/-2) caused immediate, bizarre deforming, and jittery physics that suggest this range is much too high and disqualify it based on acceptable results (no bizarre deformities) low stiffness(200), medium damping(5.0), addition of smaller angular range (+/-0 -> +/-0.5) behaved in nearly all respects as without the additional range except with slightly more natural looking deformations, especially during high impact doggy, probably will finetune this after testing low stiffness(200), medium damping(5.0) increased inertia (10 -> 100) no real effect on movement physics, moderate increase in impact deforms had the unexpected effect of causing female's hands to now deform her own butt while dancing, might be good for poses or sex positions that involve butt grabbing/holding will probably return to finetune this setting low stiffness(200), medium damping(5.0) increased linear/angular bounce (0.5/0.7 -> 2.0) caused immediate fatal physics errors while standing still low stiffness(200), medium damping(5.0) increased linear/angular bounce (0.5/0.7 -> 1.0) caused fatal physics errors identical to above, but in response to movement, maximum range must be the function of a limit of 1.0 low stiffness(200), medium damping(5.0) increased linear/angular bounce (0.5/0.7 -> 0.99) still same as above, but took longer to reach fatal error threshold (ie didnt happen right away) low stiffness(200), medium damping(5.0) increased linear/angular bounce (0.5/0.7 -> 0.9) did not cause fatal errors but still caused severe and unacceptable deformations, possible that it's some calculation involving restitution + bounce? low stiffness(200), medium damping(5.0) increased linear/angular bounce (0.5/0.7->0.8), increased restitution (0.2 -> 0.5) did not appear to be any different than baseline. is the documentation wrong about what restitution does? low stiffness(200), medium damping(5.0) increased linear/angular bounce (0.5/0.7->0.8), increased restitution (0.2 -> 1.0) confusingly, this also looked identical to baseline low stiffness(200), medium damping(5.0) increased linear/angular bounce (0.5/0.7->0.8), decreased restitution (0.2 -> 0.01) interestingly, this had the effect of causing jiggling to be more rapid (more motion per second) and more sustained without being more intense or more likely to occur in response to movement low stiffness(200), low damping(3.0) increased linear/angular bounce (0.5/0.7->0.9), increased restitution (0.2 -> 1.0) this had the result of producing more overall motion that subsided faster, giving it a more responsive feel without any jello effect, definite improvement unlike previous test it did not produce unacceptable deformations This means the documentation on what restitution does is backwards, lower values mean more bouncing, not less my observational conclusions about bounce and resitution are that they change elastic movement in opposing ways, bounce causes a sequential motion change (ball bounces off A, then B, then C, with more concurrent bounces for the same amount of energy as this setting goes up) restitution values return a bouncing object to the baseline or sets a time constraint on how long bounces can occur for, with increasing restrictions as the value approaches 1.0, almost no constraints present at 0.01, and none present at 0 this also means that you absolutely must have this set to a value other than 0 if you do not want to have perpetual motion breasts/butt, and which explains why the current configs set absurdly high stiffness/damping value to control jiggling an attempt to produce an improved configuration based on this information low stiffness(250), low damping (2.5), high bounce (0.9), high restitution (0.9), increased inertia (10 -> 50), addition of angular xy limits (0 -> +/- 0.2) this is a very good start on how I want this to look. Now not only is there more fluid motion, there is also subtle physics motion in response to subtle movement, such as walking or idle animations However, I still have a lot of tweaking to do to get it just right, it's still a little too jiggly, doesn't respond the way I want in some situations, and sometimes has abnormal looking deformations (of which I want none) I'm going to take a break from this for now, so hopefully this will become more of a discussion than strictly a guide, so that we as a community we can come up with a better way to take advantage of the powerful potential of SMP
27X Posted June 28, 2018 Posted June 28, 2018 3 hours ago, goaway said: existing SMP configs prz's are a guideline and workbase, not a drop and ignore laziness fix. 3 hours ago, goaway said: My initial goal was to improve the butt physics in a way that A. produces responsive proportionate movement in impact situations (sex animations), high movement situations (dance/run/combat animations) as well as low/moderate movement situations (walk/idle animations) B. Does not produce the annoying constant jiggling of a poorly tuned config (the jello effect) C. Does not produce any bizarre or unrealistic deformations in normal situations and is not visually distracting My personal preference is for a very slight amount of jiggling that lasts only briefly Is not a thing as uniform global settings. Combat, intercourse and linear animations with hard falloff all need separate iterations with separate focus settings. You can do a "global" setting, but if you're using proxy objects it's never going to be uniform, especially if the user insists on operating under variable framerate. Generally speaking combat and monodirectional impulses should be reduced about 64% compared to repeated curved or bidirectional impulses, which is what most good sex animations requires for verisimilitude, and if your animations are ridiculous, robotic, halfassed and cartoonish, so will your motion be; which means clothed impulses need to follow this versus unclothed and if you have fetish gear equipped you need to account for it with the appropriate settings. The weighting applied to your mesh has a direct impact on your range tolerance and smoothness/cleanliness of deformation, and the more dense your mesh, the more exact and concise and most importantly granular your settings need to be, which is one of the reasons there's no such thing as a "global" SMP preset and there never will be without it looking like ass on someone's particular settings. Every mesh requires individual settings, based on polycount, weight and bone configuration. 3 hours ago, goaway said: , lower values mean more bouncing, not less my observational conclusions about bounce and resitution are that they change elastic movement in opposing ways This is pretty clearly stated in the original work up, how you assumed it had the opposite intention I have no idea, unless you're reading from something not posted here. 3 hours ago, goaway said: I want Fetishes are not laws, which is why the current set of collaborative authors ->here<- have been very careful about emphasizing individually customized input and settings, as for elsewhere, no one has any control over that, and as stated earlier and many times before, anyone whom states there is an absolute flat set of values to plug in is wrong, and that especially includes the site that SMP is hosted on. Your five scenarios need xmls per mesh, because soft bodies encased in dampening and constraining material do not behave the same as free motion soft bodies, and the fact you're using dance animations meant for a completely different IK rig and jigglebones with no constraints only further complicates things.
goaway Posted June 28, 2018 Author Posted June 28, 2018 43 minutes ago, 27X said: prz's are a guideline and workbase, not a drop and ignore laziness fix. Is not a thing as uniform global settings. Combat, intercourse and linear animations with hard falloff all need separate iterations with separate focus settings. You can do a "global" setting, but if you're using proxy objects it's never going to be uniform, especially if the user insists on operating under variable framerate. Generally speaking combat and monodirectional impulses should be reduced about 64% compared to repeated curved or bidirectional impulses, which is what most good sex animations requires for verisimilitude, and if your animations are ridiculous, robotic, halfassed and cartoonish, so will your motion be; which means clothed impulses need to follow this versus unclothed and if you have fetish gear equipped you need to account for it with the appropriate settings. The weighting applied to your mesh has a direct impact on your range tolerance and smoothness/cleanliness of deformation, and the more dense your mesh, the more exact and concise and most importantly granular your settings need to be, which is one the reasons there's no such thing as a "global" SMP preset and there never will be without it looking like ass on someone's particular settings. Every mesh requires individual settings, based on polycount, weight and bone configuration. This is pretty clearly stated in the original work up, how you assumed it had the opposite intention I have no idea, unless you're reading from something not posted here. Fetishes are not laws, which is why the current set of collaborative authors ->here<- have been very careful about emphasizing individually customized input and settings, as for elsewhere, no one has any control over that, and as stated earlier and many times before, anyone whom states there is an absolute flat set of values to plug in is wrong, and that especially includes the site that SMP is hosted on. Your five scenarios need xmls per mesh, because soft bodies encased in dampening and constraining material do not behave the same as free motion soft bodies, and the fact you're using dance animations meant for a completely different IK rig and jigglebones with no constraints only further complicates things. I'm not sure where you got the idea that I was criticizing anyone's existing work. If it seemed that way I apologize, I simply chose the most visible config available as a starting point. *I* very clearly stated that this was my personal dissatisfaction with one-size-fits-all configs and how it does not match my personal tastes, and the fact that I think there are many others who would agree with such. It's not about an "ideal" that everyone would share, it's about how to figure out an easy way to explain this to other people who want to personalize their own settings, or how to come up with a better baseline that requires smaller changes to personalize. If I can document how I got my own settings to look the way *I* want, step by step, then maybe someone else could follow the same steps, using different settings, to get different results, in a way that they would have a very hard time doing otherwise. And then they could share the process they used, which would allow someone who wants a similar look to follow the same steps. I don't really agree that it is impossible to have a global SMP config when we have standardized meshes that have only minor differences between them. There must be a way to configure things that, while it doesn't apply to 100% of users, it may still be relevant for 90% of them. Plus, there certainly must be an "absolute set of values" for some settings, or at least a range, because otherwise it wouldn't be possible to break your game by setting things to certain extremes, even if they still technically fall within the range of a given value. I also disagree that it is necessary to have pure configurations for different testing environments. This is tweaking for aesthetic purposes, and it should be measured from an aesthetic perspective; albeit through a careful step by step scientific method. You are describing the exact reason I chose those 5 different scenarios: because they are different enough that I want my own settings to work acceptably well in every situation, not to create five different configs or have one work well in 4 out of 5 situations. It sounds as if you understand this a fair amount better than I do starting out, but you don't seem particularly interested in this idea. That's too bad! I appreciate your input regardless.
Vyxenne Posted June 28, 2018 Posted June 28, 2018 2 hours ago, goaway said: Since for whatever reason it doesn't look like the CODE function of this forum is going to let me post the XML intact, I don't know how a frequently-techincal xml-authoring/using/modding website can long endure without working CODE tags. I finally ended up screenshotting my xmls and posting the images! 2 hours ago, goaway said: medium damping From the bottom of my English-Major heart, I thank you for not saying "dampening" as though sprinkling water on a video game butt will affect how it moves. ?
Guest Posted June 28, 2018 Posted June 28, 2018 Responsive Butt Bounce wont work with the way the butt nodes are. I tried that several times. I recommend you to wait until a release of smp where updates won't totally change XML behaviors, else you might end up reworking all again and again. Most parameters are mathematical explained if you just google them. Of course very high stiffness values are not the creampie but they do their job in case you want to use proxies. In other scenarios without them, getting good results with on laying hairs and stuff is simply far beyond my abilities, I'm not Einstein. Also I updated the dlls of the all in one and never seriously fixed the xmls so it's totally better to do them new from ground up.
MrPainting Posted July 3, 2018 Posted July 3, 2018 I applaud the use of science, and commend your efforts to shed some light on this incredibly opaque subject. Out of curiosity, is there any reason you, and people in general, don't just use Pastebin in your posts? I feel that would be a Much simpler solution, considering.
goaway Posted July 17, 2018 Author Posted July 17, 2018 Well, I put this aside for a while and came back to it after relentlessly tweaking my physics and want to share 2 major things I have discovered. It's possible everybody but me knows this already, but everybody's gotta discover fire or the wheel at some point. Firstly, and this is kind of embarassing that it took me so long to figure out, in almost every UUNP model generated by bodyslide, the Y and Z axis are flipped. I won't bother recounting the ridiculous number of experiments I did trying to figure out why I couldn't get breast physics to do more than stick STRAIGHT OUT before noticing this in nifskope. Spoiler So I applied my Y values to my Z constraints and like magic boobs went UP instead of OUT. I like my boob physics a whole lot better now that they go up and down! Second, it makes a huge difference what version of the DLLs you are using in regards to what physics settings you need. I actually feel kind of bad attempting this project not knowing how much difference it makes, since the configs I had carefully tweaked now sag like a nursing home beauty pageant when using the 2018 DLLs. On 6/27/2018 at 11:43 PM, prZ said: Responsive Butt Bounce wont work with the way the butt nodes are. I tried that several times. I recommend you to wait until a release of smp where updates won't totally change XML behaviors, else you might end up reworking all again and again. Most parameters are mathematical explained if you just google them. Of course very high stiffness values are not the creampie but they do their job in case you want to use proxies. In other scenarios without them, getting good results with on laying hairs and stuff is simply far beyond my abilities, I'm not Einstein. Also I updated the dlls of the all in one and never seriously fixed the xmls so it's totally better to do them new from ground up. Yes, I found out the hard way that the results you get can be crazy different with different dll versions The problem I've found with the pure math/equations approach is that while I understand the concepts individually, and generally grasp the equations used, when you end up putting 10 or 15 variables together it's difficult to predict what the outcome of the function will be, then add to that a graph vs. time, and well, I feel like I have just as much luck guessing. The conceptual translation was part of my goal, to get an idea of how the variable interrelate in practice and maybe help to explain that a little better using math lite. That's all for now, I'll come back to this project again when I have time to meticulously test one variable at a time.
27X Posted July 20, 2018 Posted July 20, 2018 On 7/17/2018 at 6:19 AM, goaway said: in almost every UUNP model generated by bodyslide, the Y and Z axis are flipped Those are actually the least of the issues with uunp. Why people ran to it like lemmings is a mystery. Truly the vagina is a magical creature, effortlessly able to make otherwise sane and keen people into slathered idiots. If you do plan on keeping SMP as your platform of choice, you're going to have to learn weight painting and eventually leave the proxy objects behind. You're also going to have to learn how upscale the model to get the most realism, stylized or otherwise, which comes with an attendant frame rate cost, but it's good you're doing one thing at a time and making sure it works before moving on.
Recommended Posts
Archived
This topic is now archived and is closed to further replies.