Skip to content

Commit

Permalink
Improve defaults SkeletonValues & add ratios in gui (#743)
Browse files Browse the repository at this point in the history
  • Loading branch information
Erimelowo authored Jul 27, 2023
1 parent 9c980f0 commit 0ad237a
Show file tree
Hide file tree
Showing 4 changed files with 188 additions and 30 deletions.
10 changes: 9 additions & 1 deletion gui/public/i18n/en/translation.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -325,11 +325,19 @@ settings-general-fk_settings-leg_fk = Leg tracking
settings-general-fk_settings-arm_fk = Arm tracking
settings-general-fk_settings-arm_fk-description = Force arms to be tracked from the HMD even if positional hand data is available.
settings-general-fk_settings-arm_fk-force_arms = Force arms from HMD
settings-general-fk_settings-skeleton_settings = Skeleton settings
settings-general-fk_settings-skeleton_settings-toggles = Skeleton toggles
settings-general-fk_settings-skeleton_settings-description = Toggle skeleton settings on or off. It is recommended to leave these on.
settings-general-fk_settings-skeleton_settings-extended_spine_model = Extended spine model
settings-general-fk_settings-skeleton_settings-extended_pelvis_model = Extended pelvis model
settings-general-fk_settings-skeleton_settings-extended_knees_model = Extended knee model
settings-general-fk_settings-skeleton_settings-ratios = Skeleton ratios
settings-general-fk_settings-skeleton_settings-ratios-description = Change the values of skeleton settings. You may need to adjust your proportions after changing these.
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_hip = Impute waist from chest to hip
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_legs = Impute waist from chest to legs
settings-general-fk_settings-skeleton_settings-impute_hip_from_chest_legs = Impute hip from chest to legs
settings-general-fk_settings-skeleton_settings-impute_hip_from_waist_legs = Impute hip from waist to legs
settings-general-fk_settings-skeleton_settings-interp_hip_legs = Average the hip's yaw and roll with the legs'
settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = Average the knee trackers' yaw and roll with the ankles'
settings-general-fk_settings-self_localization-title = Mocap mode
settings-general-fk_settings-self_localization-description = Mocap Mode allows the skeleton to roughly track its own position without a headset or other trackers. Note that this requires feet and head trackers to work and is still experimental.
Expand Down
182 changes: 164 additions & 18 deletions gui/src/components/settings/pages/GeneralSettings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
FilteringSettingsT,
FilteringType,
LegTweaksSettingsT,
ModelRatiosT,
ModelSettingsT,
ModelTogglesT,
RpcMessage,
Expand Down Expand Up @@ -59,6 +60,14 @@ interface SettingsForm {
footPlant: boolean;
selfLocalization: boolean;
};
ratios: {
imputeWaistFromChestHip: number;
imputeWaistFromChestLegs: number;
imputeHipFromChestLegs: number;
imputeHipFromWaistLegs: number;
interpHipLegs: number;
interpKneeTrackerAnkle: number;
};
tapDetection: {
mountingResetEnabled: boolean;
yawResetEnabled: boolean;
Expand Down Expand Up @@ -97,6 +106,14 @@ const defaultValues = {
flootPlant: true,
selfLocalization: false,
},
ratios: {
imputeWaistFromChestHip: 0.3,
imputeWaistFromChestLegs: 0.2,
imputeHipFromChestLegs: 0.45,
imputeHipFromWaistLegs: 0.4,
interpHipLegs: 0.25,
interpKneeTrackerAnkle: 0.85,
},
filtering: { amount: 0.1, type: FilteringType.NONE },
driftCompensation: {
enabled: false,
Expand Down Expand Up @@ -150,23 +167,44 @@ export function GeneralSettings() {
}

const modelSettings = new ModelSettingsT();
const toggles = new ModelTogglesT();
toggles.floorClip = values.toggles.floorClip;
toggles.skatingCorrection = values.toggles.skatingCorrection;
toggles.extendedKnee = values.toggles.extendedKnee;
toggles.extendedPelvis = values.toggles.extendedPelvis;
toggles.extendedSpine = values.toggles.extendedSpine;
toggles.forceArmsFromHmd = values.toggles.forceArmsFromHmd;
toggles.viveEmulation = values.toggles.viveEmulation;
toggles.toeSnap = values.toggles.toeSnap;
toggles.footPlant = values.toggles.footPlant;
toggles.selfLocalization = values.toggles.selfLocalization;

const legTweaks = new LegTweaksSettingsT();
legTweaks.correctionStrength = values.legTweaks.correctionStrength;

modelSettings.toggles = toggles;
modelSettings.legTweaks = legTweaks;

if (values.toggles) {
const toggles = new ModelTogglesT();
toggles.floorClip = values.toggles.floorClip;
toggles.skatingCorrection = values.toggles.skatingCorrection;
toggles.extendedKnee = values.toggles.extendedKnee;
toggles.extendedPelvis = values.toggles.extendedPelvis;
toggles.extendedSpine = values.toggles.extendedSpine;
toggles.forceArmsFromHmd = values.toggles.forceArmsFromHmd;
toggles.viveEmulation = values.toggles.viveEmulation;
toggles.toeSnap = values.toggles.toeSnap;
toggles.footPlant = values.toggles.footPlant;
toggles.selfLocalization = values.toggles.selfLocalization;
modelSettings.toggles = toggles;
}

if (values.ratios) {
const ratios = new ModelRatiosT();
ratios.imputeWaistFromChestHip =
values.ratios.imputeWaistFromChestHip || -1;
ratios.imputeWaistFromChestLegs =
values.ratios.imputeWaistFromChestLegs || -1;
ratios.imputeHipFromChestLegs =
values.ratios.imputeHipFromChestLegs || -1;
ratios.imputeHipFromWaistLegs =
values.ratios.imputeHipFromWaistLegs || -1;
ratios.interpHipLegs = values.ratios.interpHipLegs || -1;
ratios.interpKneeTrackerAnkle =
values.ratios.interpKneeTrackerAnkle || -1;
modelSettings.ratios = ratios;
}

if (values.legTweaks) {
const legTweaks = new LegTweaksSettingsT();
legTweaks.correctionStrength = values.legTweaks.correctionStrength;
modelSettings.legTweaks = legTweaks;
}

settings.modelSettings = modelSettings;

const tapDetection = new TapDetectionSettingsT();
Expand Down Expand Up @@ -236,6 +274,19 @@ export function GeneralSettings() {
);
}

if (settings.modelSettings?.ratios) {
formData.ratios = Object.keys(settings.modelSettings?.ratios).reduce(
(curr, key: string) => ({
...curr,
[key]:
(settings.modelSettings?.ratios &&
(settings.modelSettings.ratios as any)[key]) ||
0.0,
}),
{}
);
}

if (settings.tapDetectionSettings) {
formData.tapDetection = {
yawResetEnabled:
Expand Down Expand Up @@ -627,7 +678,7 @@ export function GeneralSettings() {
<div className="flex flex-col pt-2 pb-3">
<Typography bold>
{l10n.getString(
'settings-general-fk_settings-skeleton_settings'
'settings-general-fk_settings-skeleton_settings-toggles'
)}
</Typography>
<Typography color="secondary">
Expand Down Expand Up @@ -665,6 +716,101 @@ export function GeneralSettings() {
)}
/>
</div>
<div className="flex flex-col pt-2 pb-3">
<div className="flex flex-col pt-2 pb-3">
<Typography bold>
{l10n.getString(
'settings-general-fk_settings-skeleton_settings-ratios'
)}
</Typography>
<Typography color="secondary">
{l10n.getString(
'settings-general-fk_settings-skeleton_settings-ratios-description'
)}
</Typography>
</div>
<div className="grid sm:grid-cols-2 gap-3 pb-3">
<NumberSelector
control={control}
name="ratios.imputeWaistFromChestHip"
label={l10n.getString(
'settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_hip'
)}
valueLabelFormat={(value) =>
percentageFormat.format(value)
}
min={0.0}
max={1.0}
step={0.05}
/>
<NumberSelector
control={control}
name="ratios.imputeWaistFromChestLegs"
label={l10n.getString(
'settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_legs'
)}
valueLabelFormat={(value) =>
percentageFormat.format(value)
}
min={0.0}
max={1.0}
step={0.05}
/>
<NumberSelector
control={control}
name="ratios.imputeHipFromChestLegs"
label={l10n.getString(
'settings-general-fk_settings-skeleton_settings-impute_hip_from_chest_legs'
)}
valueLabelFormat={(value) =>
percentageFormat.format(value)
}
min={0.0}
max={1.0}
step={0.05}
/>
<NumberSelector
control={control}
name="ratios.imputeHipFromWaistLegs"
label={l10n.getString(
'settings-general-fk_settings-skeleton_settings-impute_hip_from_waist_legs'
)}
valueLabelFormat={(value) =>
percentageFormat.format(value)
}
min={0.0}
max={1.0}
step={0.05}
/>
<NumberSelector
control={control}
name="ratios.interpHipLegs"
label={l10n.getString(
'settings-general-fk_settings-skeleton_settings-interp_hip_legs'
)}
valueLabelFormat={(value) =>
percentageFormat.format(value)
}
min={0.0}
max={1.0}
step={0.05}
/>
<NumberSelector
control={control}
name="ratios.interpKneeTrackerAnkle"
label={l10n.getString(
'settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle'
)}
valueLabelFormat={(value) =>
percentageFormat.format(value)
}
min={0.0}
max={1.0}
step={0.05}
/>
</div>
</div>

<div className="flex flex-col pt-2 pb-3">
<Typography bold>
{l10n.getString(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -316,38 +316,42 @@ public void onChangeSettingsRequest(GenericConnection conn, RpcMessageHeader mes
hpm
.setValue(
SkeletonConfigValues.WAIST_FROM_CHEST_HIP_AVERAGING,
ratios.imputeWaistFromChestHip()
Math.max(0, ratios.imputeWaistFromChestHip())
);
}
if (ratios.hasImputeWaistFromChestLegs()) {
hpm
.setValue(
SkeletonConfigValues.WAIST_FROM_CHEST_LEGS_AVERAGING,
ratios.imputeWaistFromChestLegs()
Math.max(0, ratios.imputeWaistFromChestLegs())
);
}
if (ratios.hasImputeHipFromChestLegs()) {
hpm
.setValue(
SkeletonConfigValues.HIP_FROM_CHEST_LEGS_AVERAGING,
ratios.imputeHipFromChestLegs()
Math.max(0, ratios.imputeHipFromChestLegs())
);
}
if (ratios.hasImputeHipFromWaistLegs()) {
hpm
.setValue(
SkeletonConfigValues.HIP_FROM_WAIST_LEGS_AVERAGING,
ratios.imputeHipFromWaistLegs()
Math.max(0, ratios.imputeHipFromWaistLegs())
);
}
if (ratios.hasInterpHipLegs()) {
hpm.setValue(SkeletonConfigValues.HIP_LEGS_AVERAGING, ratios.interpHipLegs());
hpm
.setValue(
SkeletonConfigValues.HIP_LEGS_AVERAGING,
Math.max(0, ratios.interpHipLegs())
);
}
if (ratios.hasInterpKneeTrackerAnkle()) {
hpm
.setValue(
SkeletonConfigValues.KNEE_TRACKER_ANKLE_AVERAGING,
ratios.interpKneeTrackerAnkle()
Math.max(0, ratios.interpKneeTrackerAnkle())
);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@

public enum SkeletonConfigValues {
// @formatter:off
WAIST_FROM_CHEST_HIP_AVERAGING(1, "Waist from chest hip averaging", "waistFromChestHipAveraging", 0.45f),
WAIST_FROM_CHEST_LEGS_AVERAGING(2, "Waist from chest legs averaging", "waistFromChestLegsAveraging", 0.2f),
HIP_FROM_CHEST_LEGS_AVERAGING(3, "Hip from chest legs averaging", "hipFromChestLegsAveraging", 0.45f),
HIP_FROM_WAIST_LEGS_AVERAGING(4, "Hip from waist legs averaging", "hipFromWaistLegsAveraging", 0.4f),
WAIST_FROM_CHEST_HIP_AVERAGING(1, "Waist from chest hip averaging", "waistFromChestHipAveraging", 0.30f),
WAIST_FROM_CHEST_LEGS_AVERAGING(2, "Waist from chest legs averaging", "waistFromChestLegsAveraging", 0.30f),
HIP_FROM_CHEST_LEGS_AVERAGING(3, "Hip from chest legs averaging", "hipFromChestLegsAveraging", 0.50f),
HIP_FROM_WAIST_LEGS_AVERAGING(4, "Hip from waist legs averaging", "hipFromWaistLegsAveraging", 0.40f),
HIP_LEGS_AVERAGING(5, "Hip legs averaging", "hipLegsAveraging", 0.25f),
KNEE_TRACKER_ANKLE_AVERAGING(6, "Knee tracker ankle averaging", "kneeTrackerAnkleAveraging", 0.75f),;
KNEE_TRACKER_ANKLE_AVERAGING(6, "Knee tracker ankle averaging", "kneeTrackerAnkleAveraging", 0.85f),;
// @formatter:on

public static final SkeletonConfigValues[] values = values();
Expand Down

0 comments on commit 0ad237a

Please sign in to comment.