VRC Constraints: Add per-axis Min/Max limits (one-directional constraints)
SKYMY
Summary
Please add optional per-axis Min/Max limits to VRC Constraints (Rotation / Position / Parent), so a constraint can follow its source in only one direction.
Use cases
- Skirts
A skirt bone should move outward when the thigh swings forward, but stay in place when the thigh swings backward.
Today a Rotation Constraint copies the thigh rotation in both directions. When the leg moves back, the skirt bone also rotates inward and clips into the leg. There is no way to say "follow +X only, ignore -X."
When using colliders instead, skirts have to be made with some extra room around the legs. With this feature, tighter skirts would become possible, and they could be expressed without twisting or clipping into the legs.
- Shoulder area of outfits
Shoulder parts such as puffed sleeves, shoulder frills, or collars could follow the arm only when it is raised, and stay in place when it is lowered. This would make the movement around the shoulders look much more natural.
- Accessories combined with PhysBones
Many accessories can already be handled reasonably well with PhysBones. However, when a part at the end of a PhysBone chain needs more complex movement, it is difficult to control. With limits on constraints, such parts could follow the PhysBone movement only within a set range.
Other examples:
- Accessories that should follow PhysBone movement, but only in one direction
- Armor plates that only rotate away from the body
- Hair or accessories that should not rotate past a certain angle
- Mechanical parts (levers, joints) with a fixed range of motion
Proposed behavior
Add a "Limits" section to Advanced Settings:
- Enable per axis (X / Y / Z)
- Min / Max value per axis
- Applied after the constraint is solved, in local space
- Example: Rotation X Min = 0, Max = 60 → the bone follows the source only between 0° and 60°. Negative rotation is clamped to 0.
Optional extension: an output multiplier or remap (input range → output range). This would allow a 90° thigh rotation to produce a 30° skirt rotation, similar to Blender's Transformation constraint.
This feature would expand the range of outfits and expressions creators can make. Skirts, sleeves, and accessories could move more naturally without clipping, and creators could build more refined designs. I believe this would make avatars more appealing and, in turn, add value to VRChat as a whole. This would also be useful for worlds.
Related
- https://ask.vrchat.com/t/future-vrc-constraints-expansion/26576
- https://feedback.vrchat.com/avatar-30/p/vrcconstraint-optimized-replacement-for-unity-constraints
――――――――――――――――――――
【日本語】
概要
VRC Constraint(Rotation / Position / Parent)に、軸ごとの最小値・最大値の制限をオプションとして追加してほしいです。これにより、コンストレイントがソースの動きに一方向だけ追従できるようになります。
用途
- スカート
太ももを前に振ったときはスカートのボーンを外側に動かし、後ろに振ったときはその場にとどめたいです。
現在の Rotation Constraint は、太ももの回転を両方向ともコピーします。脚を後ろに引くと、スカートのボーンも内側に回転して脚にめり込みます。「+X方向にだけ追従し、-X方向は無視する」と指定する方法がありません。
また、コライダーを使う場合は、脚のまわりに少し余裕を持たせてスカートを作る必要があります。この機能があれば、よりタイトなスカートを表現できるようになり、しかもねじれや食い込みのない形で表現できます。
- 衣装の肩まわり
パフスリーブや肩のフリル、襟などの肩まわりのパーツを、腕を上げたときだけ追従させ、下ろしたときはその場にとどめることができます。これにより、肩まわりの動きをより自然に表現できるようになります。
- PhysBone と組み合わせるアクセサリー
多くのアクセサリーは、PhysBone である程度対応できています。しかし、PhysBone の先で複雑な動きをさせたいパーツがある場合、それを制御するのは難しいです。コンストレイントに制限があれば、そうしたパーツを PhysBone の動きに一定の範囲内でだけ追従させることができます。
その他の例:
- PhysBone の動きに追従させつつ、一方向にだけ動かしたいアクセサリー
- 体から離れる方向にだけ回転させたい鎧のパーツ
- 一定の角度以上は回転させたくない髪やアクセサリー
- 可動範囲が決まっている機構部品(レバー、関節など)
提案する仕様
Advanced Settings に「Limits」セクションを追加:
- 軸ごと(X / Y / Z)に有効化できる
- 各軸に最小値・最大値を設定できる
- コンストレイントを解決した後に、ローカル空間で適用する
- 例:Rotation X の Min = 0、Max = 60 → ボーンは 0°〜60° の範囲でだけソースに追従する。マイナス方向の回転は 0 に制限される。
追加の拡張案:出力の倍率、または範囲変換(入力範囲 → 出力範囲)。これにより、太ももの 90° の回転をスカートの 30° の回転に変換できます。Blender の Transformation コンストレイントに近い機能です。
この機能によって、制作できる衣装や表現の幅が広がります。スカートや袖、アクセサリーがめり込まずに自然に動くようになり、より完成度の高いデザインを作れるようになります。それがアバターの魅力を高め、結果的に VRChat 全体の価値を高めることにつながると考えています。この機能はワールドでも役立つと思います。
Log In