Open Beta

Post about the current Open Beta. Post logs to Gist/Pastebin! One item per post!
Non-constructive and off-topic posts will be moved or deleted.
[1184] [Request] anisotropic MaxAngle with offset
This is an idea for modifying (or expanding) "Limits" parameters of VRCPhysBone. Presentation video I made a video to explain this request visually. See this clip: https://drive.google.com/file/d/1BcMpgJEGXrwWPllx69oF83DfqoQAoNmv/view?usp=sharing Previous request Already we have another suggestion about MaxAngle: ["[1181]Separate Axis of Max Angle"]( https://vrchat.canny.io/open-beta/p/1181separate-axis-of-max-angle ). I agree that requirement and I also want such feature. But I think three pairs of angles for each axis (x,y,z) are not appropriate parameters for this issue. The reason is: The motion of each single bone doesn't have three degrees of freedom. Except for stretching, bone's tail transform can move on the surface of a sphere around its parent transform (that is the bone's head transform). In other words, it has only two degrees of freedom. Two pairs of max angle defines rectangular area on the sphere surface. I guess it disturbs smooth movement of the bone at the corners. Actual velocity of bones will change quickly. (It is not differentiable in mathematics terms.) Anisotropic MaxAngle So I propose an idea of "anisotropic MaxAngle with offset". PhysBone parameter MaxAngle limits each bone movement within that angle. Currently, MaxAngle is isotropic. To make it anisotropic, let's introduce new parameter. I name it t for now. This parameter changes limitation area: For an axis, max-angle is equal to original MaxAngle . For another orthogonal axis on the basement surface, t decreases "effective" max-angle as a coefficient. If t =1.0 : The basement of the cone is a circle. Effective max-angle is isotropic. This is equal to current implementation. If t < 1.0 : The basement is like an ellipse. It is flattened as t decreases. Effective max-angle is anisotropic. If t = 0.0 : The basement is like a line segment. It is like FreezeAxis = true (though I'm not sure actually it will give same runtime movement.) Notes: I choose the value range of t from zero to one for applying animation curve. I think FreezeAxisAngle can be also applied. (Though it's not "freeze".) Offset by angle and ratio As previous request "[1181] Max Angle Offset slider for PhysBones" appeals, we need offset feature. (currently that post is merged ) I think specifying in polar coordinates on the basement is appropriate in this situation rather than Euler angles on the bone. Since Euler angles leads "out of limited area" problem. An angle and a ratio specifies where the bone rest position is, viewing from limitation cone area. If we limit the value range of ratio as [-1.0,+1.0] , the rest position never goes away from the limitation area, even if you change MaxAngle and/or t . Note: There are some choices for the value ranges, angle: [0,360], ratio: [0.0,+1.0] angle: [-90,90], ratio: [-1.0,+1.0] angle: [0,360], ratio: [-1.0,+1.0] etc. I prefer symmetrical one angle: [-180,+180], ratio: [-1.0,+1.0] Use case example: bones for a skirt ## The problem and the application of anisotropic MaxAngle Imagine PhysBones moves a skirt. If you put bones like umbrella, basically the model moves very well. Problematic action is, you may know, moving legs up a lot. Let's consider to add VRCPhysBoneCollider to thighs. But, unfortunately, actual behavior would be an unexpected one. Major problems are on the root bones of each chains. They don't move up (or front) but to aside. I guess this happens because of the pull force of PhysBone moves them to downside where the rest positions are. If we narrow MaxAngle to prevent from moving to aside too much, the bones simply go through thighs. If we reduce pull force, the skirt will be messy even if you're just standing. If we can use anisotropic MaxAngle , we can limit side rolling but keep free area to move up (or front). ## Comparison to other methods FreezeAxis can also solve this problem in same way. Though the bones don't move when you walk sideways. It's not natural enough. Some people have used Bound=Inside colliders on Dynamic Bone for this issue. See https://yananann.hatenadiary.jp/entry/2018/11/17/195631 This is the reason "inside-colliders" post got many votes https://vrchat.canny.io/open-beta/p/1181-inside-colliders And now some people try to use Plane colliders on PhysBones same way. Since these methods need one collider for each chain, it needs more calculation cost at runtime. So I think anisotropic MaxAngle would be reasonable way.
5
·
complete
Load More