From 4b0ce13adaa21272a3c2de59577aff96a48e4d53 Mon Sep 17 00:00:00 2001
From: regzo2
Date: Mon, 21 Aug 2023 07:53:54 -0400
Subject: [PATCH 01/12] Implemented FilterTable component and styles
---
src/components/FilterTable.tsx | 117 +++++++++++++++++++++++++++++++++
src/css/custom.css | 17 +++--
src/css/filtertable.css | 40 +++++++++++
3 files changed, 167 insertions(+), 7 deletions(-)
create mode 100644 src/components/FilterTable.tsx
create mode 100644 src/css/filtertable.css
diff --git a/src/components/FilterTable.tsx b/src/components/FilterTable.tsx
new file mode 100644
index 00000000..eb6aafd6
--- /dev/null
+++ b/src/components/FilterTable.tsx
@@ -0,0 +1,117 @@
+import React, { FC, useState } from 'react';
+import '../css/filtertable.css';
+
+interface FilterData {
+ title: string;
+ omitHeaders: string[];
+ disabledHeaders: string[];
+ headers: string[];
+ rows: any[][];
+}
+
+const FilterTable = ({ title, omitHeaders, disabledHeaders, headers, rows } : FilterData) => {
+ const [hiddenColumns, setHiddenColumns] = useState(
+ disabledHeaders?.map(header => headers.indexOf(header)) || []
+ );
+ const [filterText, setFilterText] = useState('');
+ const [filterRegex, setFilterRegex] = useState(null);
+ const [hasError, setHasError] = useState(false);
+
+ const toggleColumn = (index) => {
+ if (hiddenColumns.includes(index)) {
+ setHiddenColumns(hiddenColumns.filter((i) => i !== index));
+ } else {
+ setHiddenColumns([...hiddenColumns, index]);
+ }
+ };
+
+ const filteredRows = rows.filter(row =>
+ row.some((cell) => {
+ if (filterRegex) {
+ try {
+ return cell?.toString && filterRegex.test(cell.toString());
+ } catch (error) {
+ return false;
+ }
+ } else {
+ return cell?.toString && cell?.toString().includes(filterText);
+ }
+ })
+ );
+
+ const handleFilterChange = (value) => {
+ setFilterText(value);
+ setHasError(false);
+
+ try {
+ if (value.trim() !== '') {
+ setFilterRegex(new RegExp(value, 'i'));
+ } else {
+ setFilterRegex(null);
+ }
+ } catch (error) {
+ setHasError(true);
+ setFilterRegex(null);
+ }
+ };
+
+ return (
+
+
handleFilterChange(e.target.value)}
+ className={`filter-input ${hasError ? 'invalid' : ''}`}
+ />
+ {headers.map((header, index) => (
+ omitHeaders?.includes(header) ? null : (
+
toggleColumn(index)}
+ className={hiddenColumns.includes(index) ? 'disable' : ''}
+ >
+ {header}
+
+ )
+ ))}
+
+
+
+ {headers.map((header, index) => (
+ omitHeaders?.includes(header) ? (
+ // If header is in omitHeaders, render a disabled header without onClick
+ {header}
+ ) : (
+ // If header is not in omitHeaders, apply normal header with onClick and toggleColumn
+ toggleColumn(index)}
+ className={hiddenColumns.includes(index) ? 'hidden' : ''}
+ >
+ {header}
+
+ )
+ ))}
+
+
+
+ {filteredRows.map((row, rowIndex) => (
+
+ {row.map((cell, cellIndex) => (
+
+ {cell}
+
+ ))}
+
+ ))}
+
+
+
+ );
+};
+
+export default FilterTable;
\ No newline at end of file
diff --git a/src/css/custom.css b/src/css/custom.css
index 94d21a75..c65de69f 100644
--- a/src/css/custom.css
+++ b/src/css/custom.css
@@ -4,11 +4,14 @@
* work well for content-centric websites.
*/
+.hidden {
+ display: none;
+}
+
.header-github-link:hover {
opacity: 0.6;
}
-
.header-github-link::before {
content: '';
width: 24px;
@@ -44,9 +47,9 @@
/* You can override the default Infima variables here. */
:root {
--ifm-color-primary: #f29fa7;
- --ifm-color-primary-dark: #b17181;
- --ifm-color-primary-darker: #b17181;
- --ifm-color-primary-darkest: #b17181;
+ --ifm-color-primary-dark: #9b9b9b;
+ --ifm-color-primary-darker: #cccccc;
+ --ifm-color-primary-darkest: #ececec;
--ifm-color-primary-light: #b68f92;
--ifm-color-primary-lighter: #b68f92;
--ifm-color-primary-lightest: #b68f92;
@@ -57,9 +60,9 @@
/* For readability concerns, you should choose a lighter palette in dark mode. */
[data-theme='dark'] {
--ifm-color-primary: #90f223;
- --ifm-color-primary-dark: #9c9c9c;
- --ifm-color-primary-darker: #9c9c9c;
- --ifm-color-primary-darkest: #808080;
+ --ifm-color-primary-dark: #707070;
+ --ifm-color-primary-darker: #4d4d4d;
+ --ifm-color-primary-darkest: #2e2e2e;
--ifm-color-primary-light: #6db71f;
--ifm-color-primary-lighter: #6db81a;
--ifm-color-primary-lightest: #90f223;
diff --git a/src/css/filtertable.css b/src/css/filtertable.css
new file mode 100644
index 00000000..d2c3a111
--- /dev/null
+++ b/src/css/filtertable.css
@@ -0,0 +1,40 @@
+table {
+ table-layout: auto;
+ width: 100%;
+}
+
+th, td {
+ width: 33.33vh;
+ text-align: center;
+}
+
+button {
+ background: var(--ifm-color-primary-darkest);
+ border: none;
+ cursor: pointer;
+ margin-top: 0rem;
+ margin-bottom: 0.2rem;
+ margin-right: 0.2rem;
+ margin-left: 0rem;
+ padding: 0.5rem;
+ border-collapse: collapse;
+}
+
+button.disable {
+ text-decoration: line-through;
+ color: var(--ifm-color-primary-dark);
+}
+
+.filter-input {
+ background: var(--ifm-color-primary-darkest);
+ padding: 0.5rem;
+ border: none;
+ margin-top: 0rem;
+ margin-bottom: 0.2rem;
+ margin-right: 0.2rem;
+ margin-left: 0rem;
+}
+
+.invalid {
+ color: red;
+}
\ No newline at end of file
From 47c575c16d3bb47bda6f1ca46430ed67f4cfaf99 Mon Sep 17 00:00:00 2001
From: regzo2
Date: Mon, 21 Aug 2023 07:54:42 -0400
Subject: [PATCH 02/12] Updated Unified tables to use FilterTable
---
.../_unified-blended-table.mdx | 638 ++++-----
.../_unified-shape-table.mdx | 1239 +++++++----------
2 files changed, 781 insertions(+), 1096 deletions(-)
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/_unified-blended-table.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/_unified-blended-table.mdx
index 485d1b11..5deb514a 100644
--- a/docs/tutorial-avatars/tutorial-avatars-extras/_unified-blended-table.mdx
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/_unified-blended-table.mdx
@@ -1,386 +1,264 @@
import ContextModal from '@site/src/components/ContextModal.tsx'
import '@site/src/css/unified-tables.css'
+import FilterTable from '@site/src/components/FilterTable.tsx'
-
-
-
- Blended Eye Expressions
-
-
- Reference
- Name
- Function
- Basis
-
-
-
-
-
- EyeClosed
- Closes both eye lids.
- EyeClosedRight EyeClosedRight
-
-
-
- EyeWide
- Widens both eye lids.
- EyeWidenRight EyeWidenLeft
-
-
-
- EyeSquint
- Squints both eye lids.
- EyeSquintRight EyeSquintLeft
-
- {/*
-
-
-
-
- */}
-
-
- EyeDilation
- Dilates both pupils.
- EyeDilationRight EyeDilationLeft
-
-
-
- EyeConstrict
- Constricts both pupils.
- EyeConstrictRight EyeConstrictLeft
-
-
-
-
-
-
-
- Blended Brows
-
-
- Reference
- Name
- Function
- Basis
-
-
-
-
-
- BrowDownRight
- Pulls the right eyebrow down and in.
- BrowLowererRight BrowPinchRight
-
-
-
- BrowDownLeft
- Pulls the left eyebrow down and in.
- BrowLowererLeft BrowPinchLeft
-
-
-
- BrowDown
- Pulls the left eyebrow down and in.
- BrowLowererRight BrowLowererLeft BrowPinchRight BrowPinchLeft
-
-
-
- BrowUpRight
- Right brow appears worried.
- BrowInnerUpRight BrowOuterUpRight
-
-
-
- BrowUpLeft
- Left brow appears worried.
- BrowInnerUpLeft BrowOuterUpLeft
-
-
-
- BrowUp
- Brows appears worried.
- BrowInnerUpRight BrowInnerUpLeft BrowOuterUpRight BrowOuterUpLeft
-
-
-
-
-
-
-
- Blended Nose
-
-
- Reference
- Name
- Function
- Basis
-
-
-
-
-
- NoseSneer
- Entire face sneers.
- NoseSneerRight NoseSneerLeft
-
-
-
- NasalDilation
- Both nose canals dilate.
- NasalDilationRight NasalDilationLeft
-
-
-
- NasalConstrict
- Both nose canals constrict.
- NasalConstrictRight NasalConstrictLeft
-
-
-
-
-
-
- Blended Cheeks
-
-
- Reference
- Name
- Function
- Basis
-
-
-
-
-
- CheekPuff
- Puffs both cheeks.
- CheekPuffRight CheekPuffLeft
-
-
-
- CheekSuck
- Sucks both cheeks.
- CheekSuckRight CheekSuckLeft
-
-
-
- CheekSquint
- Raises both cheeks.
- CheekSquintRight CheekSquintLeft
-
-
-
-
-
-
- Blended Lips
-
-
- Reference
- Name
- Function
- Basis
-
-
-
-
-
- LipSuckUpper
- Tucks in the upper lips.
- LipSuckUpperRight LipSuckUpperLeft
-
-
-
- LipSuckLower
- Tucks in the lower lips.
- LipSuckLowerRight LipSuckLowerLeft
-
-
-
- LipSuck
- Tucks in the upper and lower lips.
- LipSuckUpperRight LipSuckUpperLeft LipSuckLowerRight LipSuckLowerLeft
-
- {/*
-
-
-
-
- */}
-
-
- LipFunnelUpper
- Funnels in the upper lips.
- LipFunnelUpperRight LipFunnelUpperLeft
-
-
-
- LipFunnelLower
- Funnels in the lower lips.
- LipFunnelLowerRight LipFunnelLowerLeft
-
-
-
- LipFunnel
- Funnels in the upper and lower lips.
- LipFunnelUpperRight LipFunnelUpperLeft LipFunnelLowerRight LipFunnelLowerLeft
-
- {/*
-
-
-
-
- */}
-
-
- LipPuckerUpper
- Upper lip part pushes outward.
- LipPuckerUpperRight LipPuckerUpperLeft
-
-
-
- LipPuckerLower
- Lower lip part pushes outward.
- LipPuckerLowerRight LipPuckerLowerLeft
-
-
-
- LipPucker
- Lips push outward.
- LipPuckerUpperRight LipPuckerUpperLeft LipPuckerLowerRight LipPuckerLowerLeft
-
-
-
-
-
-
- Blended Mouth
-
-
- Reference
- Name
- Function
- Basis
-
-
-
-
-
- MouthUpperUp
- Raises the upper lips.
- MouthUpperUpRight MouthUpperUpLeft
-
-
-
- MouthLowerDown
- Lowers the lower lips.
- MouthLowerDownRight MouthLowerDownLeft
-
-
-
- MouthOpen
- Mouth opens, revealing teeth.
- MouthUpperUpRight MouthUpperUpLeft MouthLowerDownRight MouthLowerDownLeft
-
- {/*
-
-
-
-
- */}
-
-
- MouthRight
- Moves mouth right.
- MouthUpperRight MouthLowerRight
-
-
-
- MouthLeft
- Moves mouth left.
- MouthUpperLeft MouthLowerLeft
-
- {/*
-
-
-
-
- */}
-
-
- MouthSmileRight
- Right side mouth expresses a smile.
- MouthCornerPullRight MouthCornerSlantRight
-
-
-
- MouthSmileLeft
- Left side mouth expresses a smile.
- MouthCornerPullLeft MouthCornerSlantLeft
-
-
-
- MouthSmile
- Mouth expresses a smile.
- MouthCornerPullRight MouthCornerPullLeft MouthCornerSlantRight MouthCornerSlantLeft
-
- {/*
-
-
-
-
- */}
-
-
- MouthSadRight
- Left side mouth expresses sadness.
- MouthFrownRight MouthStretchRight
-
-
-
- MouthSadLeft
- Right side mouth expresses sadness.
- MouthFrownLeft MouthStretchLeft
-
-
-
- MouthSad
- Mouth expresses sadness.
- MouthFrownRight MouthFrownLeft MouthStretchRight MouthStretchLeft
-
- {/*
-
-
-
-
- */}
-
-
- MouthStretch
- Mouth stretches.
- MouthStretchRight MouthStretchLeft
-
-
-
- MouthDimple
- Lip corner dimples
- MouthDimpleRight MouthDimpleLeft
-
-
-
- MouthTightener
- Mouth tightens.
- MouthTightenerRight MouthTightenerLeft
-
-
-
- MouthPress
- Mouth presses together.
- MouthPressRight MouthPressLeft
-
-
-
+ ,
+ 'EyeClosed',
+ Closes both eye lids. ,
+ <>EyeClosedRight EyeClosedRight>
+ ],
+ [
+ ,
+ 'EyeWide',
+ Widens both eye lids. ,
+ <>EyeWidenRight EyeWidenLeft>
+ ],
+ [
+ ,
+ 'EyeSquint',
+ Squints both eye lids. ,
+ <>EyeSquintRight EyeSquintLeft>
+ ],
+ [
+ ,
+ 'EyeDilation',
+ Dilates both pupils. ,
+ <>EyeDilationRight EyeDilationLeft>
+ ],
+ [
+ ,
+ 'EyeConstrict',
+ Constricts both pupils. ,
+ <>EyeConstrictRight EyeConstrictLeft>
+ ],
+ [
+ ,
+ 'BrowDownRight',
+ Pulls the right eyebrow down and in. ,
+ <>BrowLowererRight BrowPinchRight>
+ ],
+ [
+ ,
+ 'BrowDownLeft',
+ Pulls the left eyebrow down and in. ,
+ <>BrowLowererLeft BrowPinchLeft>
+ ],
+ [
+ ,
+ 'BrowDown',
+ Pulls the left eyebrow down and in. ,
+ <>BrowLowererRight BrowLowererLeft BrowPinchRight BrowPinchLeft>
+ ],
+ [
+ ,
+ 'BrowUpRight',
+ Right brow appears worried. ,
+ <>BrowInnerUpRight BrowOuterUpRight>
+ ],
+ [
+ ,
+ 'BrowUpLeft',
+ Left brow appears worried. ,
+ <>BrowInnerUpLeft BrowOuterUpLeft>
+ ],
+ [
+ ,
+ 'BrowUp',
+ Brows appear worried. ,
+ <>BrowInnerUpRight BrowInnerUpLeft BrowOuterUpRight BrowOuterUpLeft>
+ ],
+ [
+ ,
+ 'NoseSneer',
+ Entire face sneers. ,
+ <>NoseSneerRight NoseSneerLeft>
+ ],
+ [
+ ,
+ 'NasalDilation',
+ Both nose canals dilate. ,
+ <>NasalDilationRight NasalDilationLeft>
+ ],
+ [
+ ,
+ 'NasalConstrict',
+ Both nose canals constrict. ,
+ <>NasalConstrictRight NasalConstrictLeft>
+ ],
+ [
+ ,
+ 'CheekPuff',
+ Puffs both cheeks. ,
+ <>CheekPuffRight CheekPuffLeft>
+ ],
+ [
+ ,
+ 'CheekSuck',
+ Sucks both cheeks. ,
+ <>CheekSuckRight CheekSuckLeft>
+ ],
+ [
+ ,
+ 'CheekSquint',
+ Raises both cheeks. ,
+ <>CheekSquintRight CheekSquintLeft>
+ ],
+ [
+ ,
+ 'LipSuckUpper',
+ Tucks in the upper lips. ,
+ <>LipSuckUpperRight LipSuckUpperLeft>
+ ],
+ [
+ ,
+ 'LipSuckLower',
+ Tucks in the lower lips. ,
+ <>LipSuckLowerRight LipSuckLowerLeft>
+ ],
+ [
+ ,
+ 'LipSuck',
+ Tucks in the upper and lower lips. ,
+ <>LipSuckUpperRight LipSuckUpperLeft LipSuckLowerRight LipSuckLowerLeft>
+ ],
+ [
+ ,
+ 'LipFunnelUpper',
+ Funnels in the upper lips. ,
+ <>LipFunnelUpperRight LipFunnelUpperLeft>
+ ],
+ [
+ ,
+ 'LipFunnelLower',
+ Funnels in the lower lips. ,
+ <>LipFunnelLowerRight LipFunnelLowerLeft>
+ ],
+ [
+ ,
+ 'LipFunnel',
+ Funnels in the upper and lower lips. ,
+ <>LipFunnelUpperRight LipFunnelUpperLeft LipFunnelLowerRight LipFunnelLowerLeft>
+ ],
+ [
+ ,
+ 'LipPuckerUpper',
+ Upper lip part pushes outward. ,
+ <>LipPuckerUpperRight LipPuckerUpperLeft>
+ ],
+ [
+ ,
+ 'LipPuckerLower',
+ Lower lip part pushes outward. ,
+ <>LipPuckerLowerRight LipPuckerLowerLeft>
+ ],
+ [
+ ,
+ 'LipPucker',
+ Lips push outward. ,
+ <>LipPuckerUpperRight LipPuckerUpperLeft LipPuckerLowerRight LipPuckerLowerLeft>
+ ],
+ [
+ ,
+ 'MouthUpperUp',
+ Raises the upper lips. ,
+ <>MouthUpperUpRight MouthUpperUpLeft>
+ ],
+ [
+ ,
+ 'MouthLowerDown',
+ Lowers the lower lips. ,
+ <>MouthLowerDownRight MouthLowerDownLeft>
+ ],
+ [
+ ,
+ 'MouthOpen',
+ 'Mouth opens, revealing teeth.',
+ <>MouthUpperUpRight MouthUpperUpLeft MouthLowerDownRight MouthLowerDownLeft>
+ ],
+ [
+ ,
+ 'MouthRight',
+ 'Moves mouth right.',
+ <>MouthUpperRight MouthLowerRight>
+ ],
+ [
+ ,
+ 'MouthLeft',
+ Moves mouth left. ,
+ <>MouthUpperLeft MouthLowerLeft>
+ ],
+ [
+ ,
+ 'MouthSmileRight',
+ 'Right side mouth expresses a smile.',
+ <>MouthCornerPullRight MouthCornerSlantRight>
+ ],
+ [
+ ,
+ 'MouthSmileLeft',
+ 'Left side mouth expresses a smile.',
+ <>MouthCornerPullLeft MouthCornerSlantLeft>
+ ],
+ [
+ ,
+ 'MouthSmile',
+ 'Mouth expresses a smile.',
+ <>MouthCornerPullRight MouthCornerPullLeft MouthCornerSlantRight MouthCornerSlantLeft>
+ ],
+ [
+ ,
+ 'MouthSadRight',
+ 'Left side mouth expresses sadness.',
+ <>MouthFrownRight MouthStretchRight>
+ ],
+ [
+ ,
+ 'MouthSadLeft',
+ 'Right side mouth expresses sadness.',
+ <>MouthFrownLeft MouthStretchLeft>
+ ],
+ [
+ ,
+ 'MouthSad',
+ 'Mouth expresses sadness.',
+ <>MouthFrownRight MouthFrownLeft MouthStretchRight MouthStretchLeft>
+ ],
+ [
+ ,
+ 'MouthStretch',
+ Mouth stretches. ,
+ <>MouthStretchRight MouthStretchLeft>
+ ],
+ [
+ ,
+ 'MouthDimple',
+ Lip corner dimples ,
+ <>MouthDimpleRight MouthDimpleLeft>
+ ],
+ [
+ ,
+ 'MouthTightener',
+ Mouth tightens. ,
+ <>MouthTightenerRight MouthTightenerLeft>
+ ],
+ [
+ ,
+ 'MouthPress',
+ Mouth presses together. ,
+ <>MouthPressRight MouthPressLeft>
+ ]
+ ]}
+/>
import OneExplain from './unified-explanations/super-scripts/_1_explain.mdx'
import TwoExplain from './unified-explanations/super-scripts/_2_explain.mdx'
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/_unified-shape-table.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/_unified-shape-table.mdx
index c4f7605c..85f74e70 100644
--- a/docs/tutorial-avatars/tutorial-avatars-extras/_unified-shape-table.mdx
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/_unified-shape-table.mdx
@@ -1,5 +1,6 @@
-import ContextModal from '@site/src/components/ContextModal.tsx'
-import '@site/src/css/unified-tables.css'
+import ContextModal from '@site/src/components/ContextModal.tsx';
+import FilterTable from '@site/src/components/FilterTable.tsx';
+import '@site/src/css/unified-tables.css';
@@ -17,720 +18,526 @@ import '@site/src/css/unified-tables.css'
-
-
-
- Eye Gaze
-
-
- Reference
- Name
- Function
-
-
-
-
-
- EyeLookOutRight
- Right eye looks out.
-
-
-
- EyeLookInRight
- Right eye looks in.
-
-
-
- EyeLookUpRight
- Right eye looks up.
-
-
-
- EyeLookDownRight
- Right eye looks down.
-
-
-
- EyeLookOutLeft
- Left eye looks out.
-
-
-
- EyeLookInLeft
- Left eye looks in.
-
-
-
- EyeLookUpLeft
- Left eye looks up.
-
-
-
- EyeLookDownLeft
- Left eye looks down.
-
-
-
-
-
-
-
- Eye Expressions
-
-
- Reference
- Name
- Function
-
-
-
-
-
- EyeClosedRight
- Closes the right eyelid.
-
-
-
- EyeClosedLeft
- Closes the left eyelid.
-
-
-
- EyeSquintRight
- Squeezes the right eye socket muscles.
-
-
-
- EyeSquintLeft
- Squeezes the left eye socket muscles.
-
-
-
- EyeWideRight
- Right eyelid widens beyond relaxed.
-
-
-
- EyeWideLeft
- Left eyelid widens beyond relaxed.
-
-
-
- EyeDilationRight
- Dilates the right eye pupil
-
-
-
- EyeDilationLeft
- Dilates the left eye pupil
-
-
-
- EyeConstrictRight
- Constricts the right eye pupil
-
-
-
- EyeConstrictLeft
- Constricts the left eye pupil
-
-
-
-
-
-
-
- Brows
-
-
- Reference
- Name
- Function
-
-
-
-
-
- BrowPinchRight
- Right eyebrow pinches in.
-
-
-
- BrowPinchLeft
- Left eyebrow pinches in.
-
-
-
- BrowLowererRight
- Outer right eyebrow pulls down.
-
-
-
- BrowLowererLeft
- Outer Left eyebrow pulls down.
-
- {/*
-
-
-
- */}
-
-
- BrowInnerUpRight
- Inner right eyebrow pulls up.
-
-
-
- BrowInnerUpLeft
- Inner left eyebrow pulls up.
-
-
-
- BrowOuterUpRight
- Outer right eyebrow pulls up.
-
-
-
- BrowOuterUpLeft
- Outer left eyebrow pulls up.
-
-
-
-
-
-
-
- Nose
-
-
- Reference
- Name
- Function
-
-
-
-
-
- NoseSneerRight
- Right side face sneers.
-
-
-
- NoseSneerLeft
- Left side face sneers.
-
-
-
- NasalDilationRight1
- Right side nose canal dilates.
-
-
-
- NasalDilationLeft1
- Left side nose canal dilates.
-
-
-
- NasalConstrictRight1
- Right side nose canal constricts.
-
-
-
- NasalConstrictLeft1
- Left side nose canal constricts.
-
-
-
-
-
-
-
- Cheeks
-
-
- Reference
- Name
- Function
-
-
-
-
-
- CheekSquintRight
- Raises the right side cheek.
-
-
-
- CheekSquintLeft
- Raises the left side cheek.
-
-
-
- CheekPuffRight
- Puffs the right side cheek.
-
-
-
- CheekPuffLeft
- Puffs the left side cheek.
-
-
-
- CheekSuckRight
- Sucks in the right side cheek.
-
-
-
- CheekSuckLeft
- Sucks in the left side cheek.
-
-
-
-
-
-
-
- Jaw
-
-
- Reference
- Name
- Function
-
-
-
-
-
- JawOpen
- Opens jawbone.
-
-
-
- MouthClosed
- Closes mouth (in relation to JawOpen).
-
-
-
- JawRight
- Pushes jawbone right.
-
-
-
- JawLeft
- Pushes jawbone left.
-
-
-
- JawForward
- Pushes jawbone forwards.
-
-
-
- JawBackward1
- Pulls jawbone backwards.
-
-
-
- JawClench1
- Flexes jaw muscles.
-
-
-
- JawMandibleRaise1
- Raises jawbone.
-
-
-
-
-
-
-
- Lips
-
-
- Reference
- Name
- Function
-
-
-
-
-
- LipSuckUpperRight
- Upper right lip part tucks in the mouth.
-
-
-
- LipSuckUpperLeft
- Upper left lip part tucks in the mouth.
-
-
-
- LipSuckLowerRight
- Lower right lip part tucks in the mouth.
-
-
-
- LipSuckLowerLeft
- Lower left lip part tucks in the mouth.
-
-
-
- LipSuckCornerRight1
- Right lip corner folds into the mouth.
-
-
-
- LipSuckCornerLeft1
- Left lip corner folds into the mouth.
-
-
-
- LipFunnelUpperRight
- Upper right lip part pushes into a funnel.
-
-
-
- LipFunnelUpperLeft
- Upper left lip part pushes into a funnel.
-
-
-
- LipFunnelLowerRight
- Lower right lip part pushes into a funnel.
-
-
-
- LipFunnelLowerLeft
- Lower left lip part pushes into a funnel.
-
- {/*
-
-
-
- */}
-
-
- LipPuckerUpperRight
- Upper right lip part pushes outward.
-
-
-
- LipPuckerUpperLeft
- Upper left lip part pushes outward.
-
-
-
- LipPuckerLowerRight
- Lower right lip part pushes outward.
-
-
-
- LipPuckerLowerLeft
- Lower left lip part pushes outward.
-
-
-
-
-
-
-
- Mouth
-
-
- Reference
- Name
- Function
-
-
-
-
-
- MouthUpperUpRight
- Upper right part of the lip pulls up.
-
-
-
- MouthUpperUpLeft
- Upper left part of the lip pulls up.
-
-
-
- MouthLowerDownRight
- Lower right part of the lip pulls up.
-
-
-
- MouthLowerDownLeft
- Lower right part of the lip pulls up.
-
- {/*
-
-
-
- */}
-
-
- MouthUpperDeepenRight
- Upper right lip part pushes in the cheek.
-
-
-
- MouthUpperDeepenLeft
- Upper left lip part pushes in the cheek.
-
- {/*
-
-
-
- */}
-
-
- MouthUpperRight
- Moves upper lip right.
-
-
-
- MouthUpperLeft
- Moves upper lip left.
-
-
-
- MouthLowerRight
- Moves lower lip right.
-
-
-
- MouthLowerLeft
- Moves lower lip left.
-
- {/*
-
-
-
- */}
-
-
- MouthCornerPullRight
- Right lip corner pulls diagonally up and out.
-
-
-
- MouthCornerPullLeft
- Left lip corner pulls diagonally up and out.
-
-
-
- MouthCornerSlantRight
- Right corner lip slants up.
-
-
-
- MouthCornerSlantLeft
- Left corner lip slants up.
-
- {/*
-
-
-
- */}
-
-
- MouthFrownRight
- Right corner lip pulls down.
-
-
-
- MouthFrownLeft
- Left corner lip pulls down.
-
-
-
- MouthStretchRight
- Right corner lip pulls out and down.
-
-
-
- MouthStretchLeft
- Left corner lip pulls out and down.
-
- {/*
-
-
-
- */}
-
-
- MouthDimpleRight
- Right lip corner is pushed backwards.
-
-
-
- MouthDimpleLeft
- Left lip corner is pulled backwards.
-
-
-
- MouthRaiserUpper
- Raises and slightly pushes out the upper mouth.
-
-
-
- MouthRaiserLower
- Raises and slightly pushes out the lower mouth.
-
- {/*
-
-
-
- */}
-
-
- MouthPressRight
- Right side lips press and flatten together vertically.
-
-
-
- MouthPressLeft
- Left side lips press and flatten together vertically.
-
-
-
- MouthTightenerRight
- Right side lips squeeze together horizontally.
-
-
-
- MouthTightenerLeft
- Left side lips squeeze together horizontally.
-
-
-
-
-
-
-
- Tongue
-
-
- Reference
- Name
- Function
-
-
-
-
-
- TongueOut
- Tongue visibly sticks out of the mouth.
-
- {/*
-
-
-
- */}
-
-
- TongueUp
- Tongue points up.
-
-
-
- TongueDown
- Tongue points down.
-
-
-
- TongueRight
- Tongue points right.
-
-
-
- TongueLeft
- Tongue points left.
-
- {/*
-
-
-
- */}
-
-
- TongueRoll
- Sides of the tongue funnel, creating a 'hotdog' shape.
-
-
-
- TongueBendDown1
- Tongue arches up then down inside the mouth.
-
-
-
- TongueCurlUp1
- Tongue arches down then up inside the mouth.
-
-
-
- TongueSquish1
- Tongue squishes together and thickens.
-
-
-
- TongueFlat1
- Tongue flattens and thins out.
-
- {/*
-
-
-
- */}
-
-
- TongueTwistRight1
- Tongue tip rotates clockwise, with the rest following gradually.
-
-
-
- TongueTwistLeft1
- Tongue tip rotates counter-clockwise, with the rest following gradually.
-
-
-
-
-
-
-
- Neck
-
-
- Reference
- Name
- Function
-
-
-
-
-
- SoftPalateClose1
- Inner mouth throat closes.
-
-
-
- ThroatSwallow1
- The Adam's apple visibly swallows.
-
-
-
- NeckFlexRight1
- Right side neck visibly flexes.
-
-
-
- NeckFlexLeft1
- Left side neck visibly flexes.
-
-
-
+ ,
+ 'EyeLookOutRight',
+ Right eye looks out.
+ ],
+ [
+ ,
+ 'EyeLookInRight',
+ Right eye looks in.
+ ],
+ [
+ ,
+ 'EyeLookUpRight',
+ Right eye looks up.
+ ],
+ [
+ ,
+ 'EyeLookDownRight',
+ Right eye looks down.
+ ],
+ [
+ ,
+ 'EyeLookOutLeft',
+ Left eye looks out.
+ ],
+ [
+ ,
+ 'EyeLookInLeft',
+ Left eye looks in.
+ ],
+ [
+ ,
+ 'EyeLookUpLeft',
+ Left eye looks up.
+ ],
+ [
+ ,
+ 'EyeLookDownLeft',
+ Left eye looks down.
+ ],
+ [
+ ,
+ 'EyeClosedRight',
+ Closes the right eyelid.
+ ],
+ [
+ ,
+ 'EyeClosedLeft',
+ Closes the left eyelid.
+ ],
+ [
+ ,
+ 'EyeSquintRight',
+ Squeezes the right eye socket muscles.
+ ],
+ [
+ ,
+ 'EyeSquintLeft',
+ Squeezes the left eye socket muscles.
+ ],
+ [
+ ,
+ 'EyeWideRight',
+ Right eyelid widens beyond relaxed.
+ ],
+ [
+ ,
+ 'EyeWideLeft',
+ Left eyelid widens beyond relaxed.
+ ],
+ [
+ ,
+ 'EyeDilationRight',
+ Dilates the right eye pupil
+ ],
+ [
+ ,
+ 'EyeDilationLeft',
+ Dilates the left eye pupil
+ ],
+ [
+ ,
+ 'EyeConstrictRight',
+ Constricts the right eye pupil
+ ],
+ [
+ ,
+ 'EyeConstrictLeft',
+ Constricts the left eye pupil
+ ],
+ [
+ ,
+ 'BrowPinchRight',
+ Right eyebrow pinches in.
+ ],
+ [
+ ,
+ 'BrowPinchLeft',
+ Left eyebrow pinches in.
+ ],
+ [
+ ,
+ 'BrowLowererRight',
+ Outer right eyebrow pulls down.
+ ],
+ [
+ ,
+ 'BrowLowererLeft',
+ Outer Left eyebrow pulls down.
+ ],
+ [
+ ,
+ 'BrowInnerUpRight',
+ Inner right eyebrow pulls up.
+ ],
+ [
+ ,
+ 'BrowInnerUpLeft',
+ Inner left eyebrow pulls up.
+ ],
+ [
+ ,
+ 'BrowOuterUpRight',
+ Outer right eyebrow pulls up.
+ ],
+ [
+ ,
+ 'BrowOuterUpLeft',
+ Outer left eyebrow pulls up.
+ ],
+ [
+ ,
+ 'NoseSneerRight',
+ Right side face sneers.
+ ],
+ [
+ ,
+ 'NoseSneerLeft',
+ Left side face sneers.
+ ],
+ [
+ ,
+ 'NasalDilationRight',
+ Right side nose canal dilates.
+ ],
+ [
+ ,
+ 'NasalDilationLeft',
+ Left side nose canal dilates.
+ ],
+ [
+ ,
+ 'NasalConstrictRight',
+ Right side nose canal constricts.
+ ],
+ [
+ ,
+ 'NasalConstrictLeft',
+ Left side nose canal constricts.
+ ],
+ [
+ ,
+ 'CheekSquintRight',
+ Raises the right side cheek.
+ ],
+ [
+ ,
+ 'CheekSquintLeft',
+ Raises the left side cheek.
+ ],
+ [
+ ,
+ 'CheekPuffRight',
+ Puffs the right side cheek.
+ ],
+ [
+ ,
+ 'CheekPuffLeft',
+ Puffs the left side cheek.
+ ],
+ [
+ ,
+ 'CheekSuckRight',
+ Sucks in the right side cheek.
+ ],
+ [
+ ,
+ 'CheekSuckLeft',
+ Sucks in the left side cheek.
+ ],
+ [
+ ,
+ 'JawOpen',
+ Opens jawbone.
+ ],
+ [
+ ,
+ 'MouthClosed',
+ Closes mouth (in relation to JawOpen).
+ ],
+ [
+ ,
+ 'JawRight',
+ Pushes jawbone right.
+ ],
+ [
+ ,
+ 'JawLeft',
+ Pushes jawbone left.
+ ],
+ [
+ ,
+ 'JawForward',
+ Pushes jawbone forwards.
+ ],
+ [
+ ,
+ 'JawBackward',
+ Pulls jawbone backwards.
+ ],
+ [
+ ,
+ 'JawClench',
+ Flexes jaw muscles.
+ ],
+ [
+ ,
+ 'JawMandibleRaise',
+ Raises jawbone.
+ ],
+ [
+ ,
+ 'LipSuckUpperRight',
+ Upper right lip part tucks in the mouth.
+ ],
+ [
+ ,
+ 'LipSuckUpperLeft',
+ Upper left lip part tucks in the mouth.
+ ],
+ [
+ ,
+ 'LipSuckLowerRight',
+ Lower right lip part tucks in the mouth.
+ ],
+ [
+ ,
+ 'LipSuckLowerLeft',
+ Lower left lip part tucks in the mouth.
+ ],
+ [
+ ,
+ 'LipSuckCornerRight',
+ Right lip corner folds into the mouth.
+ ],
+ [
+ ,
+ 'LipSuckCornerLeft',
+ Left lip corner folds into the mouth.
+ ],
+ [
+ ,
+ 'LipFunnelUpperRight',
+ Upper right lip part pushes into a funnel.
+ ],
+ [
+ ,
+ 'LipFunnelUpperLeft',
+ Upper left lip part pushes into a funnel.
+ ],
+ [
+ ,
+ 'LipFunnelLowerRight',
+ Lower right lip part pushes into a funnel.
+ ],
+ [
+ ,
+ 'LipFunnelLowerLeft',
+ Lower left lip part pushes into a funnel.
+ ],
+ [
+ ,
+ 'LipPuckerUpperRight',
+ Upper right lip part pushes outward.
+ ],
+ [
+ ,
+ 'LipPuckerUpperLeft',
+ Upper left lip part pushes outward.
+ ],
+ [
+ ,
+ 'LipPuckerLowerRight',
+ Lower right lip part pushes outward.
+ ],
+ [
+ ,
+ 'LipPuckerLowerLeft',
+ Lower left lip part pushes outward.
+ ],
+ [
+ ,
+ 'MouthUpperUpRight',
+ Upper right part of the lip pulls up.
+ ],
+ [
+ ,
+ 'MouthUpperUpLeft',
+ Upper left part of the lip pulls up.
+ ],
+ [
+ ,
+ 'MouthLowerDownRight',
+ Lower right part of the lip pulls up.
+ ],
+ [
+ ,
+ 'MouthLowerDownLeft',
+ Lower left part of the lip pulls up.
+ ],
+ [
+ ,
+ 'MouthUpperDeepenRight',
+ Upper right lip part pushes in the cheek.
+ ],
+ [
+ ,
+ 'MouthUpperDeepenLeft',
+ Upper left lip part pushes in the cheek.
+ ],
+ [
+ ,
+ 'MouthUpperRight',
+ Moves upper lip right.
+ ],
+ [
+ ,
+ 'MouthUpperLeft',
+ Moves upper lip left.
+ ],
+ [
+ ,
+ 'MouthLowerRight',
+ Moves lower lip right.
+ ],
+ [
+ ,
+ 'MouthLowerLeft',
+ Moves lower lip left.
+ ],
+ [
+ ,
+ 'MouthCornerPullRight',
+ Right lip corner pulls diagonally up and out.
+ ],
+ [
+ ,
+ 'MouthCornerPullLeft',
+ Left lip corner pulls diagonally up and out.
+ ],
+ [
+ ,
+ 'MouthCornerSlantRight',
+ Right corner lip slants up.
+ ],
+ [
+ ,
+ 'MouthCornerSlantLeft',
+ Left corner lip slants up.
+ ],
+ [
+ ,
+ 'MouthFrownRight',
+ Right corner lip pulls down.
+ ],
+ [
+ ,
+ 'MouthFrownLeft',
+ Left corner lip pulls down.
+ ],
+ [
+ ,
+ 'MouthStretchRight',
+ Right corner lip pulls out and down.
+ ],
+ [
+ ,
+ 'MouthStretchLeft',
+ Left corner lip pulls out and down.
+ ],
+ [
+ ,
+ 'MouthDimpleRight',
+ Right lip corner is pushed backwards.
+ ],
+ [
+ ,
+ 'MouthDimpleLeft',
+ Left lip corner is pulled backwards.
+ ],
+ [
+ ,
+ 'MouthRaiserUpper',
+ Raises and slightly pushes out the upper mouth.
+ ],
+ [
+ ,
+ 'MouthRaiserLower',
+ Raises and slightly pushes out the lower mouth.
+ ],
+ [
+ ,
+ 'MouthPressRight',
+ Right side lips press and flatten together vertically.
+ ],
+ [
+ ,
+ 'MouthPressLeft',
+ Left side lips press and flatten together vertically.
+ ],
+ [
+ ,
+ 'MouthTightenerRight',
+ Right side lips squeeze together horizontally.
+ ],
+ [
+ ,
+ 'MouthTightenerLeft',
+ Left side lips squeeze together horizontally.
+ ],
+ [
+ ,
+ 'TongueOut',
+ Tongue visibly sticks out of the mouth.
+ ],
+ [
+ ,
+ 'TongueUp',
+ Tongue points up.
+ ],
+ [
+ ,
+ 'TongueDown',
+ Tongue points down.
+ ],
+ [
+ ,
+ 'TongueRight',
+ Tongue points right.
+ ],
+ [
+ ,
+ 'TongueLeft',
+ Tongue points left.
+ ],
+ [
+ ,
+ 'TongueRoll',
+ Sides of the tongue funnel, creating a 'hotdog' shape.
+ ],
+ [
+ ,
+ 'TongueBendDown',
+ Tongue arches up then down inside the mouth.
+ ],
+ [
+ ,
+ 'TongueCurlUp',
+ Tongue arches down then up inside the mouth.
+ ],
+ [
+ ,
+ 'TongueSquish',
+ Tongue squishes together and thickens.
+ ],
+ [
+ ,
+ 'TongueFlat',
+ Tongue flattens and thins out.
+ ],
+ [
+ ,
+ 'TongueTwistRight',
+ Tongue tip rotates clockwise, with the rest following gradually.
+ ],
+ [
+ ,
+ 'TongueTwistLeft',
+ Tongue tip rotates counter-clockwise, with the rest following gradually.
+ ],
+ [
+ ,
+ 'SoftPalateClose¹',
+ Inner mouth throat closes.
+ ],
+ [
+ ,
+ 'ThroatSwallow¹',
+ The Adam's apple visibly swallows.
+ ],
+ [
+ ,
+ 'NeckFlexRight¹',
+ Right side neck visibly flexes.
+ ],
+ [
+ ,
+ 'NeckFlexLeft¹',
+ Left side neck visibly flexes.
+ ],
+ ]}
+/>
import OneExplain from './unified-explanations/super-scripts/_1_explain.mdx'
import TwoExplain from './unified-explanations/super-scripts/_2_explain.mdx'
From b1f36677942ae7c30833570bf25ee11504e73fcb Mon Sep 17 00:00:00 2001
From: regzo2
Date: Mon, 21 Aug 2023 14:48:51 -0400
Subject: [PATCH 03/12] Added comparisons between common face tracking
standards.
---
.../compatibility/_category_.json | 8 +
.../compatibility/overview.mdx | 184 ++++++++++++++++++
2 files changed, 192 insertions(+)
create mode 100644 docs/tutorial-avatars/tutorial-avatars-extras/compatibility/_category_.json
create mode 100644 docs/tutorial-avatars/tutorial-avatars-extras/compatibility/overview.mdx
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/_category_.json b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/_category_.json
new file mode 100644
index 00000000..fb243e09
--- /dev/null
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Compatibility",
+ "position": 2,
+ "link": {
+ "type": "generated-index",
+ "description": "Information pertaining to Unified Expressions compatibility."
+ }
+}
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/overview.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/overview.mdx
new file mode 100644
index 00000000..6222c380
--- /dev/null
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/overview.mdx
@@ -0,0 +1,184 @@
+---
+sidebar_position: 1
+description: Overview of what face tracking standards can express in Unified Expressions.
+---
+
+import {EditUrl, CustomLink} from '@site/src/components/Utils.tsx'
+import FilterTable from '@site/src/components/FilterTable.tsx';
+
+# Tracking Standard Comparison Overview
+
+***
+
+:::note How to read this section
+
+This page goes over specific translations for each standard into
+Unified Expressions. For more concrete examples of each standard listed,
+please refer to the appropriate standards' documentation.
+
+Base and Blended shapes from Unified Expressions will be matched directly with
+other standards' shapes. Some caveats such as unique shapes will be
+given more detailed explanations on how they can translate to Unified Expressions.
+
+:::
+
+:::info Table Explained
+
+If there are multiple shapes listed in the same row, it means that multiple
+shapes combine together to create the single shape of a specified standard.
+
+If an expression is given an `~` it means that the shape is either a part of or in
+other expressions.
+
+If there is a Unified shape row with a condition (`While X`, `Except X`), it means that the
+specified shapes of other standards require the `X` shape to behave a certain way in
+order to properly convey the specified Unified expression. Usually these require specific
+animation compensation to work in Unified Expressions but are otherwise anatomically
+consistent within the specific row.
+
+* `While` means a standard requires the Unified shape to be active in some way.
+* `Except` means a standard requires the Unified shape to be inactive in some way.
+* `Includes` means a standard has this specific Unified shape baked into the shape.
+
+In all conditions, the shape can be converted to be Unified Expressions
+compatible with no loss to tracking or expression behavior. For more concise
+and readable information for specific tracking standards and how they convert
+to Unified Expressions, please refer to the standard's section in Compatbility.
+
+This table is presented to provide a generalized overview of how different tracking
+standards compare to each other.
+
+:::
+
+### Standard Comparisons
+
+*BrowDownRight CheekSquintRight EyeSquintRightWhile EyeClosedRight
>, '~', 'Eye_Right_squeeze¹', '~'],
+ [<>*BrowDownLeft CheekSquintLeft EyeSquintLeftWhile EyeClosedLeft
>, '~', 'Eye_Left_squeeze¹', '~'],
+ ['EyeWideRight', 'eyeWideRight', 'Eye_Right_Wide', 'EYES_WIDEN_R'],
+ ['EyeWideLeft', 'eyeWideLeft', 'Eye_Left_Wide', 'EYES_WIDEN_L'],
+ ['EyeDilationRight', '❌', 'Eye_Right_Dilation', '❌'],
+ ['EyeDilationLeft', '❌', 'Eye_Left_Dilation', '❌'],
+ ['EyeConstrictRight', '❌', 'Eye_Right_Constrict', '❌'],
+ ['EyeConstrictLeft', '❌', 'Eye_Left_Constrict', '❌'],
+ ['*BrowDownRight', 'browDownRight', '❌', 'BROW_LOWERER_R'],
+ ['*BrowDownLeft', 'browDownLeft', '❌', 'BROW_LOWERER_L'],
+ ['BrowInnerUpRight', '❌', '❌', 'INNER_BROW_RAISER_R'],
+ ['BrowInnerUpLeft', '❌', '❌', 'INNER_BROW_RAISER_L'],
+ ['*BrowInnerUp', 'browInnerUp', '❌', '~'],
+ ['BrowOuterUpRight', 'browOuterUpRight', '❌', 'OUTER_BROW_RAISER_R'],
+ ['BrowOuterUpLeft', 'browOuterUpLeft', '❌', 'OUTER_BROW_RAISER_L'],
+ ['NoseSneerRight', 'noseSneerRight', '❌', 'NOSE_WRINKLER_R'],
+ ['NoseSneerLeft', 'noseSneerLeft', '❌', 'NOSE_WRINKLER_L'],
+ ['CheekSquintRight', 'cheekSquintRight', '~', 'CHEEK_RAISER_R'],
+ ['CheekSquintLeft', 'cheekSquintLeft', '~', 'CHEEK_RAISER_L'],
+ ['CheekPuffRight', '~', 'Cheek_Puff_Right', 'CHEEK_PUFF_R'],
+ ['CheekPuffLeft', '~', 'Cheek_Puff_Left', 'CHEEK_PUFF_L'],
+ ['*CheekPuff', 'cheekPuff', '~', '~'],
+ ['CheekSuckRight', '❌', '~', 'CHEEK_SUCK_R'],
+ ['CheekSuckLeft', '❌', '~', 'CHEEK_SUCK_L'],
+ ['CheekSuck', '❌', 'Cheek_Suck', '~'],
+ ['JawOpen', 'jawOpen', 'Jaw_Open', 'JAW_DROP'],
+ ['MouthClosed', 'mouthClose', '~', 'LIPS_TOWARD'],
+ [<>MouthClosedIncludes JawOpen
>, '~', 'MouthApeShape¹', '~'],
+ ['JawRight', 'jawRight', 'Jaw_Right', 'JAW_SIDEWAYS_RIGHT'],
+ ['JawLeft', 'jawLeft', 'Jaw_Left', 'JAW_SIDEWAYS_LEFT'],
+ ['JawForward', 'jawForward', 'Jaw_Forward', 'JAW_THRUST'],
+ ['LipSuckUpperRight', '~', '~', 'LIP_SUCK_RT'],
+ ['LipSuckUpperLeft', '~', '~', 'LIP_SUCK_LT'],
+ ['*LipSuckUpper', 'mouthRollUpper', 'Mouth_Upper_Inside', '~'],
+ ['LipSuckLowerRight', '~', '~', 'LIP_SUCK_RB'],
+ ['LipSuckLowerLeft', '~', '~', 'LIP_SUCK_LB'],
+ ['*LipSuckLower', 'mouthRollLower', 'Mouth_Lower_Inside', '~'],
+ ['LipFunnelUpperRight', '~', '~', 'LIP_FUNNELER_RT'],
+ ['LipFunnelUpperLeft', '~', '~', 'LIP_FUNNELER_LT'],
+ ['*LipFunnelUpper', '~', 'Mouth_Upper_Overturn¹', '~'],
+ ['LipFunnelLowerRight', '~', '~', 'LIP_SUCK_RB'],
+ ['LipFunnelLowerLeft', '~', '~', 'LIP_SUCK_LB'],
+ ['*LipFunnelLower', '~', 'Mouth_Lower_Overturn¹', '~'],
+ ['*LipFunnel', 'mouthFunnel', '~', '~'],
+ [<>LipPuckerUpperRight LipPuckerLowerRight>, '~', '~', 'LIP_PUCKER_R'],
+ [<>LipPuckerUpperLeft LipPuckerLowerLeft>, '~', '~', 'LIP_PUCKER_L'],
+ ['*LipPucker', 'mouthPucker', 'Mouth_Pout', ''],
+ ['MouthUpperUpRight', 'mouthUpperUpRight', 'Mouth_Upper_Up_Right', 'UPPER_LIP_RAISER_R'],
+ ['MouthUpperUpLeft', 'mouthUpperUpLeft', 'Mouth_Upper_Up_Left', 'UPPER_LIP_RAISER_L'],
+ ['MouthLowerDownRight', 'mouthLowerUpRight', 'Mouth_Lower_Down_Right', 'LOWER_LIP_DEPRESSOR_R'],
+ ['MouthLowerDownLeft', 'mouthLowerUpLeft', 'Mouth_Lower_Down_Left', 'LOWER_LIP_DEPRESSER_L'],
+ ['*MouthSmileRight', 'mouthSmileRight', 'Mouth_Smile_Right', 'LIP_CORNER_PULLER_R'],
+ ['*MouthSmileLeft', 'mouthSmileLeft', 'Mouth_Smile_Left', 'LIP_CORNER_PULLER_L'],
+ ['MouthFrownRight', 'mouthFrownRight', '~', 'LIP_CORNER_DEPRESSOR_R'],
+ ['MouthFrownLeft', 'mouthFrownLeft', '~', 'LIP_CORNER_DEPRESSOR_L'],
+ ['*MouthSadRight', '~', 'Mouth_Sad_Right', '~'],
+ ['*MouthSadLeft', '~', 'Mouth_Sad_Left', '~'],
+ ['MouthStretchRight', 'mouthStretchRight', '~', 'LIP_STRETCHER_R'],
+ ['MouthStretchLeft', 'mouthStretchLeft', '~', 'LIP_STRETCHER_L'],
+ ['MouthDimplerRight', 'mouthDimpleRight', '~', 'DIMPLER_R'],
+ ['MouthDimplerLeft', 'mouthDimpleLeft', '~', 'DIMPLER_L'],
+ ['MouthRaiserUpper', 'mouthShrugUpper', '❌', 'CHIN_RAISER_T'],
+ ['MouthRaiserLower', 'mouthShrugLower', 'Mouth_Lower_Overlay', 'CHIN_RAISER_B'],
+ ['MouthPressRight', 'mouthPressRight¹', '❌', 'LIP_PRESSOR_R'],
+ ['MouthPressLeft', 'mouthPressLeft¹', '❌', 'LIP_PRESSOR_L'],
+ ['MouthTightenerRight', '❌', '❌', 'LIP_TIGHTENER_R'],
+ ['MouthTightenerLeft', '❌', '❌', 'LIP_TIGHTENER_L'],
+ ['TongueOut', 'tongueOut', <>Tongue_LongStep1 Tongue_LongStep2>, '❌'],
+ ['TongueUp', '❌', 'Tongue_Up', '❌'],
+ ['TongueDown', '❌', 'Tongue_Down', '❌'],
+ ['TongueRight', '❌', 'Tongue_Right', '❌'],
+ ['TongueLeft', '❌', 'Tongue_Left', '❌'],
+ ['TongueRoll', '❌', 'Tongue_Roll', '❌'],
+ ]}
+/>
+
+* ¹ Requires the use of a specialized animation setup to work with VRCFT V2 tracking.
+* \* Blended Shape.
+
+### Standard Documentation
+
+VRCFT Documentation >
+ ],
+ [
+ 'ARKit',
+ <>
+ Apple Developer Documentation
+ ARKit Shape References (Unofficial)
+ >
+ ],
+ [
+ 'VIVE SRanipal',
+ <>
+ VIVE Developer Resource
+ VRCFT v4.0 Documentation
+ >
+ ],
+ [
+ 'Meta Movement',
+ <>
+ Blendshape Visual Reference for Movement
+ >
+ ],
+ ]}
+/>
From ea8eeb6be4cafd8fbbfae9c53b477b0e139d2c1d Mon Sep 17 00:00:00 2001
From: regzo2
Date: Mon, 21 Aug 2023 14:49:16 -0400
Subject: [PATCH 04/12] Added individual compat pages for more details
---
.../compatibility/arkit.mdx | 103 +++++++
.../compatibility/meta-movement.mdx | 111 ++++++++
.../compatibility/vive-sranipal.mdx | 265 ++++++++++++++++++
3 files changed, 479 insertions(+)
create mode 100644 docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx
create mode 100644 docs/tutorial-avatars/tutorial-avatars-extras/compatibility/meta-movement.mdx
create mode 100644 docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx
new file mode 100644
index 00000000..300fa6bc
--- /dev/null
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx
@@ -0,0 +1,103 @@
+---
+sidebar_position: 2
+description: Information about ARKit face tracking works with Unified Expressions.
+---
+
+import {EditUrl, CustomLink} from '@site/src/components/Utils.tsx'
+import FilterTable from '@site/src/components/FilterTable.tsx';
+
+# Apple ARKit
+
+***
+
+Apple provides a face tracking standard for iOS devices in their ARKit software,
+with the blendshapes for it often referred to as PerfectSync, AR52, and ARKit respectively.
+
+The following table shows how ARKit face tracking translates to Unified Expressions
+
+BrowPinchRight BrowLowererRight>, 'BrowDownRight', 'browDownRight'],
+ [<>BrowPinchLeft BrowLowererLeft>, 'BrowDownLeft', 'browDownLeft'],
+ [<>BrowInnerUpRight BrowInnerUpLeft>,'BrowInnerUp', 'browInnerUp'],
+ ['BrowOuterUpRight', '~', 'browOuterUpRight'],
+ ['BrowOuterUpLeft', '~', 'browOuterUpLeft'],
+ ['NoseSneerRight', '~', 'noseSneerRight'],
+ ['NoseSneerLeft', '~', 'noseSneerLeft'],
+ ['CheekSquintRight', '~', 'cheekSquintRight'],
+ ['CheekSquintLeft', '~', 'cheekSquintLeft'],
+ [<>CheekPuffRight CheekPuffLeft>, 'CheekPuff', 'cheekPuff'],
+ ['JawOpen', '~', 'jawOpen'],
+ ['MouthClosed', '~', 'mouthClose'],
+ ['JawRight', '~', 'jawRight'],
+ ['JawLeft', '~', 'jawLeft'],
+ ['JawForward', '~', 'jawForward'],
+ [<>LipSuckUpperRight LipSuckUpperRight>, 'LipSuckUpper', 'mouthRollUpper'],
+ [<>LipSuckLowerRight LipSuckLowerRight>, 'LipSuckLower', 'mouthRollLower'],
+ [<>LipPuckerUpperRight LipPuckerUpperRight LipPuckerLowerRight LipPuckerLowerRight>, 'LipFunnel', 'mouthFunnel'],
+ [<>LipPuckerUpperRight LipPuckerUpperRight LipPuckerLowerRight LipPuckerLowerRight>, 'LipPucker', 'mouthPucker'],
+ ['MouthUpperUpRight', '~', 'mouthUpperUpRight'],
+ ['MouthUpperUpLeft', '~', 'mouthUpperUpLeft'],
+ ['MouthLowerDownRight', '~', 'mouthLowerUpRight'],
+ ['MouthLowerDownLeft', '~', 'mouthLowerUpLeft'],
+ [<>MouthCornerPullerRight MouthCornerSlantRight>,'MouthSmileRight', 'mouthSmileRight'],
+ [<>MouthCornerPullerLeft MouthCornerSlantLeft>,'MouthSmileLeft', 'mouthSmileLeft'],
+ ['MouthFrownRight', '~', 'mouthFrownRight'],
+ ['MouthFrownLeft', '~', 'mouthFrownLeft'],
+ ['MouthStretchRight', '~', 'mouthStretchRight'],
+ ['MouthStretchLeft', '~', 'mouthStretchLeft'],
+ ['MouthDimplerRight', '~', 'mouthDimpleRight'],
+ ['MouthDimplerLeft', '~', 'mouthDimpleLeft'],
+ ['MouthRaiserUpper', '~', 'mouthShrugUpper'],
+ ['MouthRaiserLower', '~', 'mouthShrugLower'],
+ ['MouthPressRight', '~', 'mouthPressRight'],
+ ['MouthPressLeft', '~', 'mouthPressLeft'],
+ ['TongueOut', '~', 'tongueOut']
+ ]}
+/>
+
+:::caution Some shapes are not tracked
+
+ARKit does not have a corresponding expression for following does not track the following Unified expressions:
+
+```
+EyeDilationRight
+EyeDilationLeft
+EyeConstrictRight
+EyeConstrictLeft
+
+CheekSuckRight
+CheekSuckLeft
+
+MouthTightenerRight
+MouthTightenerLeft
+
+Tongue Directions
+Misc. Tongue Expressions
+```
+
+The absence of these shapes does not affect tracking quality.
+:::
+
+### Standard Documentation
+
+Apple Developer Documentation
+ARKit Shape References (Unofficial)
\ No newline at end of file
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/meta-movement.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/meta-movement.mdx
new file mode 100644
index 00000000..024d805d
--- /dev/null
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/meta-movement.mdx
@@ -0,0 +1,111 @@
+---
+sidebar_position: 2
+description: Information about Meta Movement (Quest Pro) face tracking works with Unified Expressions.
+---
+
+import {EditUrl, CustomLink} from '@site/src/components/Utils.tsx'
+import FilterTable from '@site/src/components/FilterTable.tsx';
+
+# Meta Movement (Quest Pro)
+
+***
+
+Meta provides a face tracking standard for Quest Pro in their Movement SDK,
+with the blendshapes for it often referred to as FACS, Quest Pro Face Tracking,
+and Movement respectively.
+
+The following table shows how Movement face tracking translates to Unified Expressions.
+
+### Movement Comparison
+
+BrowPinchRight BrowLowererRight>, 'BrowDownRight', 'BROW_LOWERER_R'],
+ [<>BrowPinchLeft BrowLowererLeft>, 'BrowDownLeft', 'BROW_LOWERER_L'],
+ ['BrowInnerUpRight', '~', 'INNER_BROW_RAISER_R'],
+ ['BrowInnerUpLeft', '~', 'INNER_BROW_RAISER_L'],
+ ['BrowOuterUpRight', '~', 'OUTER_BROW_RAISER_R'],
+ ['BrowOuterUpLeft', '~', 'OUTER_BROW_RAISER_L'],
+ ['NoseSneerRight', '~', 'NOSE_WRINKLER_R'],
+ ['NoseSneerLeft', '~', 'NOSE_WRINKLER_L'],
+ ['CheekSquintRight', '~', 'CHEEK_RAISER_R'],
+ ['CheekSquintLeft', '~', 'CHEEK_RAISER_L'],
+ ['CheekPuffRight', '~', 'CHEEK_PUFF_R'],
+ ['CheekPuffLeft', '~', 'CHEEK_PUFF_L'],
+ ['CheekSuckRight', '~', 'CHEEK_SUCK_R'],
+ ['CheekSuckLeft', '~', 'CHEEK_SUCK_L'],
+ ['JawOpen', '~', 'JAW_DROP'],
+ ['MouthClosed', '~', 'LIPS_TOWARD'],
+ ['JawRight', '~', 'JAW_SIDEWAYS_RIGHT'],
+ ['JawLeft', '~', 'JAW_SIDEWAYS_LEFT'],
+ ['JawForward', '~', 'JAW_THRUST'],
+ ['LipSuckUpperRight', '~', 'LIP_SUCK_RT'],
+ ['LipSuckUpperLeft', '~', 'LIP_SUCK_LT'],
+ ['LipSuckLowerRight', '~', 'LIP_SUCK_RB'],
+ ['LipSuckLowerLeft', '~', 'LIP_SUCK_LB'],
+ ['LipFunnelUpperRight', '~', 'LIP_FUNNELER_RT'],
+ ['LipFunnelUpperLeft', '~', 'LIP_FUNNELER_LT'],
+ ['LipFunnelLowerRight', '~', 'LIP_SUCK_RB'],
+ ['LipFunnelLowerLeft', '~', 'LIP_SUCK_LB'],
+ [<>LipPuckerUpperRight LipPuckerLowerRight>, 'N/A', 'LIP_PUCKER_R'],
+ [<>LipPuckerUpperLeft LipPuckerLowerLeft>, 'N/A', 'LIP_PUCKER_L'],
+ ['MouthUpperUpRight', '~', 'UPPER_LIP_RAISER_R'],
+ ['MouthUpperUpLeft', '~', 'UPPER_LIP_RAISER_L'],
+ ['MouthLowerDownRight', '~', 'LOWER_LIP_DEPRESSOR_R'],
+ ['MouthLowerDownLeft', '~', 'LOWER_LIP_DEPRESSER_L'],
+ [<>MouthCornerPullerRight MouthCornerSlantRight>, 'MouthSmileRight', 'LIP_CORNER_PULLER_R'],
+ [<>MouthCornerPullerLeft MouthCornerSlantLeft>, 'MouthSmileLeft', 'LIP_CORNER_PULLER_L'],
+ ['MouthFrownRight', '~', 'LIP_CORNER_DEPRESSOR_R'],
+ ['MouthFrownLeft', '~', 'LIP_CORNER_DEPRESSOR_L'],
+ ['MouthStretchRight', '~', 'LIP_STRETCHER_R'],
+ ['MouthStretchLeft', '~', 'LIP_STRETCHER_L'],
+ ['MouthDimplerRight', '~', 'DIMPLER_R'],
+ ['MouthDimplerLeft', '~', 'DIMPLER_L'],
+ ['MouthRaiserUpper', '~', 'CHIN_RAISER_T'],
+ ['MouthRaiserUpper', '~', 'CHIN_RAISER_T'],
+ ['MouthPressRight', '~', 'LIP_PRESSOR_R'],
+ ['MouthPressLeft', '~', 'LIP_PRESSOR_L'],
+ ['MouthTightenerRight', '~', 'LIP_TIGHTENER_R'],
+ ['MouthTightenerLeft', '~', 'LIP_TIGHTENER_L'],
+ ]}
+/>
+
+:::caution Some shapes are not tracked
+
+Movement does not have a corresponding expression for following Unified expressions:
+
+```
+EyeDilationRight
+EyeDilationLeft
+EyeConstrictRight
+EyeConstrictLeft
+
+TongueOut
+Tongue Directions
+Misc. Tongue Expressions
+```
+
+The absence of these shapes does not affect tracking quality.
+:::
+
+### Standard Documentation
+
+Blendshape Visual Reference for Movement
\ No newline at end of file
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx
new file mode 100644
index 00000000..0610c380
--- /dev/null
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx
@@ -0,0 +1,265 @@
+---
+sidebar_position: 2
+description: Information about VIVE SRanipal face tracking works with Unified Expressions.
+---
+
+import {EditUrl, CustomLink} from '@site/src/components/Utils.tsx'
+import FilterTable from '@site/src/components/FilterTable.tsx';
+
+# VIVE SRanipal
+
+***
+
+VIVE provides a face tracking standard as part of their SRanipal SDK and
+software. It provides the tracking basis for the Vive Pro Eye, Vive Facial
+Tracker, and other VIVE products that have face tracking capabilities.
+
+The following table shows how SRanipal face tracking translates to Unified Expressions.
+
+:::info Table Explained
+
+If there are multiple shapes listed in the same row, it means that multiple
+shapes combine together to create the single shape of a specified standard.
+
+If there is a Unified shape row with a condition (`While X`, `Except X`), it means that the
+specified shapes of other standards require the `X` shape to behave a certain way in
+order to properly convey the specified Unified expression. Usually these require specific
+animation compensation to work in Unified Expressions but are otherwise anatomically
+consistent within the specific row.
+
+* `While` means a standard requires the Unified shape to be active in some way.
+* `Except` means a standard requires the Unified shape to be inactive in some way.
+* `Includes` means a standard has this specific Unified shape baked into the shape.
+
+In all conditions, the shape can be converted to be Unified Expressions
+compatible with no loss to tracking or expression behavior. For more concise
+and readable information for specific tracking standards and how they convert
+to Unified Expressions, please refer to [Admonitions](#admonitions).
+
+:::
+
+### SRanipal Comparison
+
+*BrowDownRight CheekSquintRight EyeSquintRightWhile EyeClosedRight
>, '~', 'Eye_Right_squeeze¹'],
+ [<>*BrowDownLeft CheekSquintLeft EyeSquintLeftWhile EyeClosedLeft
>, '~', 'Eye_Left_squeeze¹'],
+ ['EyeWideRight', '~', 'Eye_Right_Wide'],
+ ['EyeWideLeft', '~', 'Eye_Left_Wide'],
+ ['EyeDilationRight', '~', 'Eye_Right_Dilation'],
+ ['EyeDilationLeft', '~', 'Eye_Left_Dilation'],
+ ['EyeConstrictRight', '~', 'Eye_Right_Constrict'],
+ ['EyeConstrictLeft', '~', 'Eye_Left_Constrict'],
+ ['CheekPuffRight', '~', 'Cheek_Puff_Right'],
+ ['CheekPuffLeft', '~', 'Cheek_Puff_Left'],
+ [<>CheekSuckRight CheekSuckLeft>, 'CheekSuck', 'Cheek_Suck'],
+ ['JawOpen', '~', 'Jaw_Open'],
+ [<>MouthClosedIncludes JawOpen
>, '~', 'MouthApeShape¹'],
+ ['JawRight', '~', 'Jaw_Right'],
+ ['JawLeft', '~', 'Jaw_Left'],
+ ['JawForward', '~', 'Jaw_Forward'],
+ [<>LipSuckUpperRight LipSuckUpperLeft>, 'LipSuckUpper', 'Mouth_Upper_Inside'],
+ [<>LipSuckLowerRight LipSuckLowerLeft>, 'LipSuckLower', 'Mouth_Lower_Inside'],
+ [<>LipFunnelUpperRight LipFunnelUpperLeftWhile MouthUpperUp
>, 'LipFunnelUpper', 'Mouth_Upper_Overturn¹'],
+ [<>LipFunnelLowerRight LipFunnelLowerLeftWhile MouthLowerDown
>, 'LipFunnelLower', 'Mouth_Lower_Overturn¹'],
+ [<>LipPuckerUpperRight LipPuckerUpperLeft LipPuckerLowerRight LipPuckerLowerLeft>, 'LipPucker', 'Mouth_Pout'],
+ ['MouthUpperUpRight', '~', 'Mouth_Upper_Up_Right'],
+ ['MouthUpperUpLeft', '~', 'Mouth_Upper_Up_Left'],
+ ['MouthLowerDownRight', '~', 'Mouth_Lower_Down_Right'],
+ ['MouthLowerDownLeft', '~', 'Mouth_Lower_Down_Left'],
+ [<>MouthCornerPullerRight MouthCornerSlantRight>, 'MouthSmileRight', 'Mouth_Smile_Right'],
+ [<>MouthCornerPullerLeft MouthCornerSlantLeft>, 'MouthSmileLeft', 'Mouth_Smile_Left'],
+ [<>MouthFrownRight MouthStretchRight>, 'MouthSadRight', 'Mouth_Sad_Right'],
+ [<>MouthFrownRight MouthStretchRight>, 'MouthSadLeft', 'Mouth_Sad_Left'],
+ ['MouthRaiserLower', 'mouthShrugLower', 'Mouth_Lower_Overlay'],
+ ['TongueOut', 'tongueOut', <>Tongue_LongStep1 Tongue_LongStep2>],
+ ['TongueUp', '~', 'Tongue_Up'],
+ ['TongueDown', '~', 'Tongue_Down'],
+ ['TongueRight', '~', 'Tongue_Right'],
+ ['TongueLeft', '~', 'Tongue_Left'],
+ ['TongueRoll', '~', 'Tongue_Roll'],
+ ]}
+/>
+
+* ¹ More detailed reasoning is elaborated in [Admonitions](#admonitions)
+
+### Admonitions {#admonitions}
+
+Some expressions in SRanipal, due to the way the standard is designed,
+may not have direct or intuitive assignments to Unified Expressions.
+
+This section will give detailed descriptions on how SRanipal controls Unified
+Expressions. This can be useful for converting SRanipal shapes to Unified
+Expressions, or making SRanipal shapes compatible in Unified Expressions
+driven animation setups (in the case of VRCFT avatars).
+
+Acknowledging these differences in your avatar's setup should allow SRanipal
+shapes to track as intended. Certain animation templates have these admonitions
+built in, allowing SRanipal shapes to be used directly with Unified Expressions!
+
+This section provides a technical description of what each shape should do to
+track as intended with Unifed Expressions.
+
+
+ From the SRanipal avatar reference,
+ this SRanipal expression controls these Unified
+ expressions while the eyelids are closed:
+
+ EyeSquintRight
+ CheekSquintRight
+ BrowPinchRight
+ BrowLowererRight
+
+ To get the intended tracking, these Unified expressions must be all active together
+ to trigger Eye_Right_squeeze in animation. Alternatively the listed UE expressions can be
+ made separately to allow for more robust tracking for non-SRanipal tracking.
+
+ ],
+ [
+ 'Eye_Left_squeeze',
+
+ From the SRanipal avatar reference,
+ this SRanipal expression controls these Unified
+ expressions while the eyelids are closed:
+
+ EyeSquintLeft
+ CheekSquintLeft
+ BrowPinchLeft
+ BrowLowererLeft
+
+ To get the intended tracking, these Unified expressions must be all active together
+ to trigger Eye_Left_squeeze in animation. Alternatively the listed UE expressions can be
+ made separately to allow for more robust tracking for non-SRanipal tracking.
+
+ ],
+ [
+ 'Mouth_Ape_Shape',
+
+ This SRanipal expression controls Unified's MouthClosed expression.
+ To get the intended tracking on this SRanipal shape, MouthClosed must negate JawOpen
+ in the animation proportional to the amount MouthClosed is active.
+
+ Alternatively, this blendshape can be turned into MouthClosed by negating JawOpen
+ in the blendshape itself.
+
+ ],
+ [
+ 'Mouth_Upper_Overturn',
+
+ This SRanipal expression controls Unified's LipFunnelUpperRight and LipFunnelUpperLeft expressions.
+ To get the intended tracking on this SRanipal shape, it should also include Mouth_Upper_Up_Right
+ and Mouth_Upper_Up_Left when this shape is active.
+
+ Alternatively, this shape can be turned into LipFunnelUpper by adding Mouth_Upper_Up_Left and
+ Mouth_Upper_Up_Right to this shape.
+
+ ],
+ [
+ 'Mouth_Lower_Overturn',
+
+ This SRanipal expression controls Unified's LipFunnelLowerRight and LipFunnelLowerLeft expressions.
+ To get the intended tracking on this SRanipal shape, it should also include Mouth_Lower_Down_Right
+ and Mouth_Lower_Down_Left when this shape is active.
+
+ Alternatively, this shape can be turned into LipFunnelUpper by adding Mouth_Upper_Up_Left and
+ Mouth_Upper_Up_Right to this shape.
+
+ ],
+ [
+ 'Mouth_Smile_Right',
+
+ This SRanipal expression directly controls Unified's MouthCornerPullerRight and
+ MouthCornerSlantRight, creating the MouthSmileRight Blended shape. On many avatars and
+ on the SRanipal reference avatar, the right cheek is squinting when smiling. It is perfectly acceptable
+ to have MouthSmileRight to have this behavior, especially when using SRanipal-compatible tracking
+ with this avatar.
+
+ Optionally, if there is a desire for more expressive tracking then moving the cheek raising part
+ of Mouth_Smile_Right to it's own dedicated shape will allow CheekSquintRight to be able to control
+ it directly, allowing for more expressibility. This will require editing the blendshape directly or
+ creating new shapes to fulfill the change.
+
+ ],
+ [
+ 'Mouth_Smile_Left',
+
+ This SRanipal expression directly controls Unified's MouthCornerPullerLeft and
+ MouthCornerSlantLeft, creating the MouthSmileLeft Blended shape. On many avatars and
+ on the SRanipal reference avatar, the right cheek is squinting when smiling. It is perfectly acceptable
+ to have MouthSmileLeft to have this behavior, especially when using SRanipal-compatible tracking
+ with this avatar.
+
+ Optionally, if there is a desire for more expressive tracking then moving the cheek raising part
+ of Mouth_Smile_Left to it's own dedicated shape will allow CheekSquintLeft to be able to control
+ it directly, allowing for more expressibility. This will require editing the blendshape directly or
+ creating new shapes to fulfill the change.
+
+ ],
+ [
+ <>Tongue_LongStep1 Tongue_LongStep2>,
+
+ These SRanipal expressions control TongueOut linearly.
+ To get the intended tracking on this shape, let Tongue_LongStep1 activate
+ from 0-0.5, while LongStep2 activates from 0.5-1 in the animation.
+ These are corrective shapes for TongueOut, allowing for the tongue to
+ stick out of the mouth.
+
+ ],
+ ]}
+/>
+
+:::caution Some shapes are not tracked
+
+SRanipal does not have a corresponding expression for following Unified expressions:
+
+```
+BrowPinchRight
+BrowPinchLeft
+BrowLowererRight
+BrowLowererLeft
+BrowInnerUpRight
+BrowInnerUpLeft
+BrowOuterUpRight
+BrowOuterUpLeft
+
+CheekSquintRight (baked into Mouth_Smile_Right)
+CheekSquintLeft (baked into Mouth_Smile_Left)
+
+MouthRaiserUpper
+MouthPressRight
+MouthPressLeft
+MouthTightenerLeft
+MouthTightenerRight
+
+Some misc. Tongue Expressions
+```
+
+The absence of these shapes does not affect tracking quality.
+:::
+
+### Standard Documentation
+
+Vive Developer Resource
+VRCFT v4.0 Documentation
+
From 4a57ea0038aef4407e7d4eb34d9acfb566da3801 Mon Sep 17 00:00:00 2001
From: regzo2
Date: Mon, 21 Aug 2023 14:50:19 -0400
Subject: [PATCH 05/12] Added page to compare software/hardware directly.
---
docs/hardware/interface-compabilities.mdx | 138 ++++++++++++++++++++++
1 file changed, 138 insertions(+)
create mode 100644 docs/hardware/interface-compabilities.mdx
diff --git a/docs/hardware/interface-compabilities.mdx b/docs/hardware/interface-compabilities.mdx
new file mode 100644
index 00000000..988307ce
--- /dev/null
+++ b/docs/hardware/interface-compabilities.mdx
@@ -0,0 +1,138 @@
+---
+sidebar_position: 1
+description: Overview of what interfaces can track what in VRCFaceTracking.
+---
+
+import {EditUrl, CustomLink} from '@site/src/components/Utils.tsx'
+import FilterTable from '@site/src/components/FilterTable.tsx';
+
+# Tracking Compatibility
+
+***
+
+:::note How to read this section
+
+This page goes over generalized functions, features, and
+tracking quality of each interface and what it can do in
+VRCFaceTracking. For more specific information about the listed
+interfaces please refer to their dedicated sections.
+
+:::
+
+Eye Widen Eye Squeeze Brow(Emulated)>,
+ '~',
+ <>Widen(Emulated) Squeeze(Emulated) >,
+ <>Widen Squint Brow>,
+ '❌',
+ '❌',
+ <>Widen Squint Brow>,
+ '~',
+ '❌',
+ <>Widen Squeeze Brow(Emulated)>,
+ '~'
+ ],
+ [
+ 'Upper Face Expressability',
+ 'High',
+ '~',
+ 'N/A',
+ 'Extreme',
+ '❌',
+ '❌',
+ '~',
+ 'Very High',
+ 'Extreme',
+ '❌',
+ 'High',
+ '~'
+ ],
+ [
+ 'Upper Face Tracking Quality',
+ '~',
+ 'Very High',
+ '~',
+ 'High',
+ 'Mediocre',
+ '~',
+ '~',
+ 'Very High',
+ 'Very High',
+ '~',
+ '~',
+ 'High'
+ ],
+ [
+ 'Lower Face Expression Support',
+ <>Brow(Emulated)>,
+ <>Jaw Lip Mouth Cheek>,
+ '~',
+ <>Brow Jaw Lip Mouth Cheek Nose>,
+ <>Brow Jaw Lip Mouth Cheek Nose>,
+ '~',
+ '~',
+ <>Brow Jaw Lip Mouth Cheek Nose>,
+ <>Jaw Lip Mouth Cheek Nose>,
+ '~',
+ <>Brow(Emulated)>,
+ <>Jaw Lip Mouth Cheek Nose>,
+ ],
+ [
+ 'Lower Face Expressability',
+ '~',
+ 'High',
+ '~',
+ 'Very High',
+ 'High',
+ '~',
+ '~',
+ 'Very High',
+ 'Extreme',
+ '~',
+ '~',
+ 'High'
+ ],
+ [
+ 'Face Tracking Quality',
+ '~',
+ 'Very High',
+ '~',
+ 'High',
+ 'Mediocre',
+ '~',
+ '~',
+ 'Very High',
+ 'Very High',
+ '~',
+ '~',
+ 'High'
+ ],
+ ['Tongue Expression Support', '~', 'Tongue Out & Directions', '~', '❌', 'Tongue Out', '~', '~', 'Tongue Out', 'All Tongue Expressions', '~', '~', 'Tongue Out & Directions'],
+ ]}
+/>
From ad065bff1aa41e0986049681e161adfbbcb2511c Mon Sep 17 00:00:00 2001
From: regzo2
Date: Mon, 21 Aug 2023 14:50:46 -0400
Subject: [PATCH 06/12] Updated yarn.lock (just in case)
---
yarn.lock | 517 +++++++++++++++++++++++++++++++++---------------------
1 file changed, 317 insertions(+), 200 deletions(-)
diff --git a/yarn.lock b/yarn.lock
index e90e22a6..4f869f40 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -76,7 +76,7 @@
"@algolia/requester-common" "4.17.0"
"@algolia/transporter" "4.17.0"
-"@algolia/client-search@4.17.0":
+"@algolia/client-search@>= 4.9.1 < 6", "@algolia/client-search@4.17.0":
version "4.17.0"
resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.17.0.tgz"
integrity sha512-x4P2wKrrRIXszT8gb7eWsMHNNHAJs0wE7/uqbufm4tZenAp+hwU/hq5KVsY50v+PfwM0LcDwwn/1DroujsTFoA==
@@ -150,6 +150,27 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz"
integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.18.6", "@babel/core@^7.19.6", "@babel/core@^7.4.0-0":
+ version "7.21.3"
+ resolved "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz"
+ integrity sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.18.6"
+ "@babel/generator" "^7.21.3"
+ "@babel/helper-compilation-targets" "^7.20.7"
+ "@babel/helper-module-transforms" "^7.21.2"
+ "@babel/helpers" "^7.21.0"
+ "@babel/parser" "^7.21.3"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.21.3"
+ "@babel/types" "^7.21.3"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.2"
+ semver "^6.3.0"
+
"@babel/core@7.12.9":
version "7.12.9"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz"
@@ -172,27 +193,6 @@
semver "^5.4.1"
source-map "^0.5.0"
-"@babel/core@^7.18.6", "@babel/core@^7.19.6":
- version "7.21.3"
- resolved "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz"
- integrity sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==
- dependencies:
- "@ampproject/remapping" "^2.2.0"
- "@babel/code-frame" "^7.18.6"
- "@babel/generator" "^7.21.3"
- "@babel/helper-compilation-targets" "^7.20.7"
- "@babel/helper-module-transforms" "^7.21.2"
- "@babel/helpers" "^7.21.0"
- "@babel/parser" "^7.21.3"
- "@babel/template" "^7.20.7"
- "@babel/traverse" "^7.21.3"
- "@babel/types" "^7.21.3"
- convert-source-map "^1.7.0"
- debug "^4.1.0"
- gensync "^1.0.0-beta.2"
- json5 "^2.2.2"
- semver "^6.3.0"
-
"@babel/generator@^7.12.5", "@babel/generator@^7.18.7", "@babel/generator@^7.21.3":
version "7.21.3"
resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz"
@@ -325,16 +325,16 @@
dependencies:
"@babel/types" "^7.18.6"
-"@babel/helper-plugin-utils@7.10.4":
- version "7.10.4"
- resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz"
- integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
-
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
version "7.20.2"
resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz"
integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==
+"@babel/helper-plugin-utils@7.10.4":
+ version "7.10.4"
+ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz"
+ integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
+
"@babel/helper-remap-async-to-generator@^7.18.9":
version "7.18.9"
resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz"
@@ -517,15 +517,6 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
-"@babel/plugin-proposal-object-rest-spread@7.12.1":
- version "7.12.1"
- resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz"
- integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
- "@babel/plugin-transform-parameters" "^7.12.1"
-
"@babel/plugin-proposal-object-rest-spread@^7.20.2":
version "7.20.7"
resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz"
@@ -537,6 +528,15 @@
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
"@babel/plugin-transform-parameters" "^7.20.7"
+"@babel/plugin-proposal-object-rest-spread@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz"
+ integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
+ "@babel/plugin-transform-parameters" "^7.12.1"
+
"@babel/plugin-proposal-optional-catch-binding@^7.18.6":
version "7.18.6"
resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz"
@@ -629,13 +629,6 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-jsx@7.12.1":
- version "7.12.1"
- resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz"
- integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
"@babel/plugin-syntax-jsx@^7.18.6":
version "7.18.6"
resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz"
@@ -643,6 +636,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
+"@babel/plugin-syntax-jsx@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz"
+ integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
version "7.10.4"
resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz"
@@ -664,7 +664,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
-"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3":
+"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3", "@babel/plugin-syntax-object-rest-spread@7.8.3":
version "7.8.3"
resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz"
integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
@@ -1216,7 +1216,7 @@
"@docsearch/css" "3.3.5"
algoliasearch "^4.0.0"
-"@docusaurus/core@2.4.1", "@docusaurus/core@^2.4.1":
+"@docusaurus/core@^2.4.1", "@docusaurus/core@2.4.1":
version "2.4.1"
resolved "https://registry.npmjs.org/@docusaurus/core/-/core-2.4.1.tgz"
integrity sha512-SNsY7PshK3Ri7vtsLXVeAJGS50nJN3RgF836zkyUfAD01Fq+sAk5EwWgLw+nnm5KVNGDu7PRR2kRGDsWvqpo0g==
@@ -1334,7 +1334,7 @@
url-loader "^4.1.1"
webpack "^5.73.0"
-"@docusaurus/module-type-aliases@2.4.1", "@docusaurus/module-type-aliases@^2.4.1":
+"@docusaurus/module-type-aliases@^2.4.1", "@docusaurus/module-type-aliases@2.4.1":
version "2.4.1"
resolved "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.4.1.tgz"
integrity sha512-gLBuIFM8Dp2XOCWffUDSjtxY7jQgKvYujt7Mx5s4FCTfoL5dN1EVbnrn+O2Wvh8b0a77D57qoIDY7ghgmatR1A==
@@ -1482,7 +1482,7 @@
"@docusaurus/theme-search-algolia" "2.4.1"
"@docusaurus/types" "2.4.1"
-"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2":
+"@docusaurus/react-loadable@5.5.2":
version "5.5.2"
resolved "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz"
integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==
@@ -1587,7 +1587,7 @@
fs-extra "^10.1.0"
tslib "^2.4.0"
-"@docusaurus/types@2.4.1":
+"@docusaurus/types@*", "@docusaurus/types@2.4.1":
version "2.4.1"
resolved "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.1.tgz"
integrity sha512-0R+cbhpMkhbRXX138UOc/2XZFF8hiZa6ooZAEEJFp5scytzCw4tC1gChMFXrpa3d2tYE6AX8IrOEpSonLmfQuQ==
@@ -1680,7 +1680,16 @@
"@jridgewell/set-array" "^1.0.0"
"@jridgewell/sourcemap-codec" "^1.4.10"
-"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
+"@jridgewell/gen-mapping@^0.3.0":
+ version "0.3.2"
+ resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz"
+ integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@jridgewell/gen-mapping@^0.3.2":
version "0.3.2"
resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz"
integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
@@ -1707,7 +1716,7 @@
"@jridgewell/gen-mapping" "^0.3.0"
"@jridgewell/trace-mapping" "^0.3.9"
-"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14":
version "1.4.14"
resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz"
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
@@ -1768,7 +1777,7 @@
"@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9"
-"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
version "2.0.5"
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@@ -1876,7 +1885,7 @@
"@svgr/babel-plugin-transform-react-native-svg" "^6.5.1"
"@svgr/babel-plugin-transform-svg-component" "^6.5.1"
-"@svgr/core@^6.5.1":
+"@svgr/core@*", "@svgr/core@^6.0.0", "@svgr/core@^6.5.1":
version "6.5.1"
resolved "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz"
integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==
@@ -1942,7 +1951,7 @@
"@tsconfig/docusaurus@^2.0.0":
version "2.0.0"
- resolved "https://registry.yarnpkg.com/@tsconfig/docusaurus/-/docusaurus-2.0.0.tgz#cadc77ab84052ffaaa4d6f79e998d719efa50e56"
+ resolved "https://registry.npmjs.org/@tsconfig/docusaurus/-/docusaurus-2.0.0.tgz"
integrity sha512-X5wptT7pXA/46/IRFTW76oR5GNjoy9qjNM/1JGhFV4QAsmLh3YUpJJA+Vpx7Ds6eEBxSxz1QrgoNEBy6rLVs8w==
"@types/body-parser@*":
@@ -2136,7 +2145,7 @@
"@types/history" "^4.7.11"
"@types/react" "*"
-"@types/react@*":
+"@types/react@*", "@types/react@>= 16.8.0 < 19.0.0":
version "18.0.28"
resolved "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz"
integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==
@@ -2357,7 +2366,7 @@ acorn-walk@^8.0.0:
resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz"
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
-acorn@^8.0.4, acorn@^8.5.0, acorn@^8.7.1:
+acorn@^8, acorn@^8.0.4, acorn@^8.5.0, acorn@^8.7.1:
version "8.8.2"
resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz"
integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
@@ -2394,7 +2403,7 @@ ajv-keywords@^5.0.0:
dependencies:
fast-deep-equal "^3.1.3"
-ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5:
+ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1:
version "6.12.6"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -2404,7 +2413,17 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-ajv@^8.0.0, ajv@^8.8.0:
+ajv@^8.0.0:
+ version "8.12.0"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz"
+ integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
+
+ajv@^8.8.0, ajv@^8.8.2:
version "8.12.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
@@ -2421,7 +2440,7 @@ algoliasearch-helper@^3.10.0:
dependencies:
"@algolia/events" "^4.0.1"
-algoliasearch@^4.0.0, algoliasearch@^4.13.1:
+algoliasearch@^4.0.0, algoliasearch@^4.13.1, "algoliasearch@>= 3.1 < 6", "algoliasearch@>= 4.9.1 < 6":
version "4.17.0"
resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.17.0.tgz"
integrity sha512-JMRh2Mw6sEnVMiz6+APsi7lx9a2jiDFF+WUtANaUVCv6uSU9UOLdo5h9K3pdP6frRRybaM2fX8b1u0nqICS9aA==
@@ -2507,16 +2526,16 @@ argparse@^2.0.1:
resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
-array-flatten@1.1.1:
- version "1.1.1"
- resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz"
- integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
-
array-flatten@^2.1.2:
version "2.1.2"
resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz"
integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz"
+ integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
+
array-union@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz"
@@ -2713,7 +2732,7 @@ braces@^3.0.2, braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
-browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5:
+browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5, "browserslist@>= 4.21.0":
version "4.21.5"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz"
integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==
@@ -2943,7 +2962,7 @@ clsx@^1.2.1:
clsx@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b"
+ resolved "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz"
integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==
collapse-white-space@^1.0.2:
@@ -2965,16 +2984,16 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
- integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
-
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
colord@^2.9.1:
version "2.9.3"
resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz"
@@ -2995,11 +3014,6 @@ comma-separated-tokens@^1.0.0:
resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz"
integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==
-commander@7, commander@^7.2.0:
- version "7.2.0"
- resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz"
- integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
-
commander@^2.20.0:
version "2.20.3"
resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
@@ -3010,11 +3024,21 @@ commander@^5.1.0:
resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz"
integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
+commander@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz"
+ integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+
commander@^8.3.0:
version "8.3.0"
resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz"
integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
+commander@7:
+ version "7.2.0"
+ resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz"
+ integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz"
@@ -3363,7 +3387,7 @@ cytoscape-fcose@^2.1.0:
dependencies:
cose-base "^2.2.0"
-cytoscape@^3.23.0:
+cytoscape@^3.2.0, cytoscape@^3.23.0:
version "3.24.0"
resolved "https://registry.npmjs.org/cytoscape/-/cytoscape-3.24.0.tgz"
integrity sha512-W9fJMrAfr/zKFzDCpRR/wn6uoEQ7gfbJmxPK5DadXj69XyAhZYi1QXLOE+UXJfXVXxqGM1o1eeiIrtxrtB43zA==
@@ -3371,7 +3395,7 @@ cytoscape@^3.23.0:
heap "^0.2.6"
lodash "^4.17.21"
-"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0:
+d3-array@^3.2.0, "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3:
version "3.2.3"
resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.3.tgz"
integrity sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ==
@@ -3487,7 +3511,7 @@ d3-hierarchy@3:
dependencies:
d3-color "1 - 3"
-"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0:
+d3-path@^3.1.0, "d3-path@1 - 3", d3-path@3:
version "3.1.0"
resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz"
integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==
@@ -3628,20 +3652,27 @@ dayjs@^1.11.7:
resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz"
integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==
-debug@2.6.9, debug@^2.6.0:
+debug@^2.6.0:
version "2.6.9"
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
-debug@4, debug@^4.1.0, debug@^4.1.1:
+debug@^4.1.0, debug@^4.1.1, debug@4:
version "4.3.4"
resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
+debug@2.6.9:
+ version "2.6.9"
+ resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
decompress-response@^3.3.0:
version "3.3.0"
resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz"
@@ -3705,16 +3736,16 @@ delaunator@5:
dependencies:
robust-predicates "^3.0.0"
-depd@2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
- integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
-
depd@~1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
+depd@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
destroy@1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz"
@@ -3849,16 +3880,16 @@ dot-prop@^5.2.0:
dependencies:
is-obj "^2.0.0"
-duplexer3@^0.1.4:
- version "0.1.5"
- resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz"
- integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==
-
duplexer@^0.1.2:
version "0.1.2"
resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz"
integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+duplexer3@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz"
+ integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==
+
eastasianwidth@^0.2.0:
version "0.2.0"
resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz"
@@ -4167,7 +4198,7 @@ feed@^4.2.2:
dependencies:
xml-js "^1.6.11"
-file-loader@^6.2.0:
+file-loader@*, file-loader@^6.2.0:
version "6.2.0"
resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz"
integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
@@ -4308,11 +4339,6 @@ fs.realpath@^1.0.0:
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-fsevents@~2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
- integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
-
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
@@ -4697,6 +4723,16 @@ http-deceiver@^1.2.7:
resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz"
integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
+http-errors@~1.6.2:
+ version "1.6.3"
+ resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
+ integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.0"
+ statuses ">= 1.4.0 < 2"
+
http-errors@2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz"
@@ -4708,16 +4744,6 @@ http-errors@2.0.0:
statuses "2.0.1"
toidentifier "1.0.1"
-http-errors@~1.6.2:
- version "1.6.3"
- resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
- integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
- dependencies:
- depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.0"
- statuses ">= 1.4.0 < 2"
-
http-parser-js@>=0.5.1:
version "0.5.8"
resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz"
@@ -4820,7 +4846,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
+inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4:
version "2.0.4"
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -4830,16 +4856,16 @@ inherits@2.0.3:
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
-ini@2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz"
- integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
-
ini@^1.3.5, ini@~1.3.0:
version "1.3.8"
resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+ini@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz"
+ integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
+
inline-style-parser@0.1.1:
version "0.1.1"
resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz"
@@ -4862,17 +4888,17 @@ invariant@^2.2.4:
dependencies:
loose-envify "^1.0.0"
-ipaddr.js@1.9.1:
- version "1.9.1"
- resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
- integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
-
ipaddr.js@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz"
integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==
-is-alphabetical@1.0.4, is-alphabetical@^1.0.0:
+ipaddr.js@1.9.1:
+ version "1.9.1"
+ resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
+ integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
+
+is-alphabetical@^1.0.0, is-alphabetical@1.0.4:
version "1.0.4"
resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz"
integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==
@@ -5050,16 +5076,16 @@ is-yarn-global@^0.3.0:
resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz"
integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
-isarray@0.0.1:
- version "0.0.1"
- resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
- integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
-
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
+ integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
+
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
@@ -5314,7 +5340,7 @@ lodash.memoize@^4.1.2:
resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz"
integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
-lodash.uniq@4.5.0, lodash.uniq@^4.5.0:
+lodash.uniq@^4.5.0, lodash.uniq@4.5.0:
version "4.5.0"
resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz"
integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
@@ -5484,7 +5510,7 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
braces "^3.0.2"
picomatch "^2.3.1"
-mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
+"mime-db@>= 1.43.0 < 2":
version "1.52.0"
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
@@ -5494,14 +5520,40 @@ mime-db@~1.33.0:
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz"
integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==
-mime-types@2.1.18, mime-types@~2.1.17:
+mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.27:
+ version "2.1.35"
+ resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+mime-types@^2.1.31:
+ version "2.1.35"
+ resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+mime-types@~2.1.17, mime-types@2.1.18:
version "2.1.18"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz"
integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==
dependencies:
mime-db "~1.33.0"
-mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34:
+mime-types@~2.1.24:
+ version "2.1.35"
+ resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+mime-types@~2.1.34:
version "2.1.35"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
@@ -5535,7 +5587,7 @@ minimalistic-assert@^1.0.0:
resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1:
+minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@3.1.2:
version "3.1.2"
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -5911,6 +5963,13 @@ path-parse@^1.0.7:
resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+path-to-regexp@^1.7.0:
+ version "1.8.0"
+ resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz"
+ integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
+ dependencies:
+ isarray "0.0.1"
+
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
@@ -5921,13 +5980,6 @@ path-to-regexp@2.2.1:
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz"
integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==
-path-to-regexp@^1.7.0:
- version "1.8.0"
- resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz"
- integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
- dependencies:
- isarray "0.0.1"
-
path-type@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
@@ -6238,7 +6290,7 @@ postcss-zindex@^5.1.0:
resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz"
integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==
-postcss@^8.3.11, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.19:
+"postcss@^7.0.0 || ^8.0.1", postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.3.11, postcss@^8.4.14, postcss@^8.4.16, postcss@^8.4.17, postcss@^8.4.19:
version "8.4.21"
resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz"
integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==
@@ -6375,16 +6427,21 @@ randombytes@^2.1.0:
dependencies:
safe-buffer "^5.1.0"
-range-parser@1.2.0:
- version "1.2.0"
- resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz"
- integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==
+range-parser@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-range-parser@^1.2.1, range-parser@~1.2.1:
+range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+range-parser@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz"
+ integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==
+
raw-body@2.5.1:
version "2.5.1"
resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz"
@@ -6395,7 +6452,7 @@ raw-body@2.5.1:
iconv-lite "0.4.24"
unpipe "1.0.0"
-rc@1.2.8, rc@^1.2.8:
+rc@^1.2.8, rc@1.2.8:
version "1.2.8"
resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz"
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
@@ -6445,7 +6502,7 @@ react-dev-utils@^12.0.1:
strip-ansi "^6.0.1"
text-table "^0.2.0"
-react-dom@^17.0.2:
+react-dom@*, "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.4 || ^17.0.0", "react-dom@^17.0.0 || ^16.3.0 || ^15.5.4", react-dom@^17.0.2, "react-dom@>= 16.8.0 < 19.0.0":
version "17.0.2"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz"
integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
@@ -6502,6 +6559,14 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1:
dependencies:
"@babel/runtime" "^7.10.3"
+react-loadable@*, "react-loadable@npm:@docusaurus/react-loadable@5.5.2":
+ version "5.5.2"
+ resolved "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz"
+ integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==
+ dependencies:
+ "@types/react" "*"
+ prop-types "^15.6.2"
+
react-player@^2.12.0:
version "2.12.0"
resolved "https://registry.npmjs.org/react-player/-/react-player-2.12.0.tgz"
@@ -6533,7 +6598,7 @@ react-router-dom@^5.3.3:
tiny-invariant "^1.0.2"
tiny-warning "^1.0.0"
-react-router@5.3.4, react-router@^5.3.3:
+react-router@^5.3.3, react-router@>=5, react-router@5.3.4:
version "5.3.4"
resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz"
integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==
@@ -6557,7 +6622,7 @@ react-textarea-autosize@^8.3.2:
use-composed-ref "^1.3.0"
use-latest "^1.2.1"
-react@^17.0.2:
+react@*, "react@^15.0.2 || ^16.0.0 || ^17.0.0", "react@^16.13.1 || ^17.0.0", "react@^16.6.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.4 || ^17.0.0", "react@^17.0.0 || ^16.3.0 || ^15.5.4", react@^17.0.2, "react@>= 16.8.0 < 19.0.0", react@>=0.14.9, react@>=15, react@>=16.6.0, react@17.0.2:
version "17.0.2"
resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz"
integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
@@ -6845,15 +6910,20 @@ rxjs@^7.5.4:
dependencies:
tslib "^2.1.0"
-safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1:
+ version "5.2.1"
+ resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
- version "5.2.1"
- resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
- integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+safe-buffer@5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
version "2.1.2"
@@ -6873,15 +6943,6 @@ scheduler@^0.20.2:
loose-envify "^1.1.0"
object-assign "^4.1.1"
-schema-utils@2.7.0:
- version "2.7.0"
- resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz"
- integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
- dependencies:
- "@types/json-schema" "^7.0.4"
- ajv "^6.12.2"
- ajv-keywords "^3.4.1"
-
schema-utils@^2.6.5:
version "2.7.1"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz"
@@ -6891,7 +6952,25 @@ schema-utils@^2.6.5:
ajv "^6.12.4"
ajv-keywords "^3.5.2"
-schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1:
+schema-utils@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz"
+ integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
+ dependencies:
+ "@types/json-schema" "^7.0.8"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
+
+schema-utils@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz"
+ integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
+ dependencies:
+ "@types/json-schema" "^7.0.8"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
+
+schema-utils@^3.1.1:
version "3.1.1"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz"
integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
@@ -6910,6 +6989,15 @@ schema-utils@^4.0.0:
ajv-formats "^2.1.1"
ajv-keywords "^5.0.0"
+schema-utils@2.7.0:
+ version "2.7.0"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz"
+ integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
+ dependencies:
+ "@types/json-schema" "^7.0.4"
+ ajv "^6.12.2"
+ ajv-keywords "^3.4.1"
+
section-matter@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz"
@@ -6939,17 +7027,37 @@ semver-diff@^3.1.1:
semver@^5.4.1:
version "5.7.2"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
+ resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz"
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
-semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
+semver@^6.0.0:
+ version "6.3.1"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+semver@^6.1.1:
version "6.3.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+semver@^6.1.2:
+ version "6.3.1"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+semver@^6.2.0:
+ version "6.3.1"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+semver@^6.3.0:
+ version "6.3.1"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.3.2, semver@^7.3.4, semver@^7.3.7, semver@^7.3.8:
version "7.5.4"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz"
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
dependencies:
lru-cache "^6.0.0"
@@ -7198,22 +7306,45 @@ state-toggle@^1.0.0:
resolved "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz"
integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==
-statuses@2.0.1:
- version "2.0.1"
- resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
- integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
-
"statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
+statuses@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
+ integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+
std-env@^3.0.1:
version "3.3.2"
resolved "https://registry.npmjs.org/std-env/-/std-env-3.3.2.tgz"
integrity sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==
-string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2:
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.2:
+ version "4.2.3"
+ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^4.2.0:
version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -7231,20 +7362,6 @@ string-width@^5.0.1:
emoji-regex "^9.2.2"
strip-ansi "^7.0.1"
-string_decoder@^1.1.1:
- version "1.3.0"
- resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
- dependencies:
- safe-buffer "~5.2.0"
-
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
-
stringify-object@^3.3.0:
version "3.3.0"
resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz"
@@ -7288,7 +7405,7 @@ strip-json-comments@~2.0.1:
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz"
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
-style-to-object@0.3.0, style-to-object@^0.3.0:
+style-to-object@^0.3.0, style-to-object@0.3.0:
version "0.3.0"
resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz"
integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==
@@ -7485,9 +7602,9 @@ typedarray-to-buffer@^3.1.5:
dependencies:
is-typedarray "^1.0.0"
-typescript@^5.1.6:
+typescript@^5.1.6, "typescript@>= 2.7":
version "5.1.6"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274"
+ resolved "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz"
integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==
ua-parser-js@^0.7.30:
@@ -7526,10 +7643,10 @@ unicode-property-aliases-ecmascript@^2.0.0:
resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz"
integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==
-unified@9.2.0:
- version "9.2.0"
- resolved "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz"
- integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==
+unified@^9.2.2:
+ version "9.2.2"
+ resolved "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz"
+ integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==
dependencies:
bail "^1.0.0"
extend "^3.0.0"
@@ -7538,10 +7655,10 @@ unified@9.2.0:
trough "^1.0.0"
vfile "^4.0.0"
-unified@^9.2.2:
- version "9.2.2"
- resolved "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz"
- integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==
+unified@9.2.0:
+ version "9.2.0"
+ resolved "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz"
+ integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==
dependencies:
bail "^1.0.0"
extend "^3.0.0"
@@ -7557,7 +7674,7 @@ unique-string@^2.0.0:
dependencies:
crypto-random-string "^2.0.0"
-unist-builder@2.0.3, unist-builder@^2.0.0:
+unist-builder@^2.0.0, unist-builder@2.0.3:
version "2.0.3"
resolved "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz"
integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==
@@ -7606,7 +7723,7 @@ unist-util-visit-parents@^3.0.0:
"@types/unist" "^2.0.0"
unist-util-is "^4.0.0"
-unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.3:
+unist-util-visit@^2.0.0, unist-util-visit@^2.0.3, unist-util-visit@2.0.3:
version "2.0.3"
resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz"
integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==
@@ -7620,7 +7737,7 @@ universalify@^2.0.0:
resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
-unpipe@1.0.0, unpipe@~1.0.0:
+unpipe@~1.0.0, unpipe@1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
@@ -7878,7 +7995,7 @@ webpack-sources@^3.2.2, webpack-sources@^3.2.3:
resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
-webpack@^5.73.0:
+"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.73.0, "webpack@>= 4", webpack@>=2, "webpack@>=4.41.1 || 5.x", "webpack@3 || 4 || 5":
version "5.76.2"
resolved "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz"
integrity sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==
@@ -7918,7 +8035,7 @@ webpackbar@^5.0.2:
pretty-time "^1.1.0"
std-env "^3.0.1"
-websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
+websocket-driver@^0.7.4, websocket-driver@>=0.5.1:
version "0.7.4"
resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz"
integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
From 9d3de9a13e53c9285e5ca2b20a99c2b5057f5b83 Mon Sep 17 00:00:00 2001
From: regzo2
Date: Tue, 22 Aug 2023 05:22:07 -0400
Subject: [PATCH 07/12] Shortened UE table img links
---
.../_unified-blended-table.mdx | 82 +++----
.../_unified-shape-table.mdx | 206 +++++++++---------
2 files changed, 144 insertions(+), 144 deletions(-)
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/_unified-blended-table.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/_unified-blended-table.mdx
index 5deb514a..86eeed03 100644
--- a/docs/tutorial-avatars/tutorial-avatars-extras/_unified-blended-table.mdx
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/_unified-blended-table.mdx
@@ -12,247 +12,247 @@ import FilterTable from '@site/src/components/FilterTable.tsx'
disabledHeaders={['Basis']}
rows={[
[
- ,
+ ,
'EyeClosed',
Closes both eye lids. ,
<>EyeClosedRight EyeClosedRight>
],
[
- ,
+ ,
'EyeWide',
Widens both eye lids. ,
<>EyeWidenRight EyeWidenLeft>
],
[
- ,
+ ,
'EyeSquint',
Squints both eye lids. ,
<>EyeSquintRight EyeSquintLeft>
],
[
- ,
+ ,
'EyeDilation',
Dilates both pupils. ,
<>EyeDilationRight EyeDilationLeft>
],
[
- ,
+ ,
'EyeConstrict',
Constricts both pupils. ,
<>EyeConstrictRight EyeConstrictLeft>
],
[
- ,
+ ,
'BrowDownRight',
Pulls the right eyebrow down and in. ,
<>BrowLowererRight BrowPinchRight>
],
[
- ,
+ ,
'BrowDownLeft',
Pulls the left eyebrow down and in. ,
<>BrowLowererLeft BrowPinchLeft>
],
[
- ,
+ ,
'BrowDown',
Pulls the left eyebrow down and in. ,
<>BrowLowererRight BrowLowererLeft BrowPinchRight BrowPinchLeft>
],
[
- ,
+ ,
'BrowUpRight',
Right brow appears worried. ,
<>BrowInnerUpRight BrowOuterUpRight>
],
[
- ,
+ ,
'BrowUpLeft',
Left brow appears worried. ,
<>BrowInnerUpLeft BrowOuterUpLeft>
],
[
- ,
+ ,
'BrowUp',
Brows appear worried. ,
<>BrowInnerUpRight BrowInnerUpLeft BrowOuterUpRight BrowOuterUpLeft>
],
[
- ,
+ ,
'NoseSneer',
Entire face sneers. ,
<>NoseSneerRight NoseSneerLeft>
],
[
- ,
+ ,
'NasalDilation',
Both nose canals dilate. ,
<>NasalDilationRight NasalDilationLeft>
],
[
- ,
+ ,
'NasalConstrict',
Both nose canals constrict. ,
<>NasalConstrictRight NasalConstrictLeft>
],
[
- ,
+ ,
'CheekPuff',
Puffs both cheeks. ,
<>CheekPuffRight CheekPuffLeft>
],
[
- ,
+ ,
'CheekSuck',
Sucks both cheeks. ,
<>CheekSuckRight CheekSuckLeft>
],
[
- ,
+ ,
'CheekSquint',
Raises both cheeks. ,
<>CheekSquintRight CheekSquintLeft>
],
[
- ,
+ ,
'LipSuckUpper',
Tucks in the upper lips. ,
<>LipSuckUpperRight LipSuckUpperLeft>
],
[
- ,
+ ,
'LipSuckLower',
Tucks in the lower lips. ,
<>LipSuckLowerRight LipSuckLowerLeft>
],
[
- ,
+ ,
'LipSuck',
Tucks in the upper and lower lips. ,
<>LipSuckUpperRight LipSuckUpperLeft LipSuckLowerRight LipSuckLowerLeft>
],
[
- ,
+ ,
'LipFunnelUpper',
Funnels in the upper lips. ,
<>LipFunnelUpperRight LipFunnelUpperLeft>
],
[
- ,
+ ,
'LipFunnelLower',
Funnels in the lower lips. ,
<>LipFunnelLowerRight LipFunnelLowerLeft>
],
[
- ,
+ ,
'LipFunnel',
Funnels in the upper and lower lips. ,
<>LipFunnelUpperRight LipFunnelUpperLeft LipFunnelLowerRight LipFunnelLowerLeft>
],
[
- ,
+ ,
'LipPuckerUpper',
Upper lip part pushes outward. ,
<>LipPuckerUpperRight LipPuckerUpperLeft>
],
[
- ,
+ ,
'LipPuckerLower',
Lower lip part pushes outward. ,
<>LipPuckerLowerRight LipPuckerLowerLeft>
],
[
- ,
+ ,
'LipPucker',
Lips push outward. ,
<>LipPuckerUpperRight LipPuckerUpperLeft LipPuckerLowerRight LipPuckerLowerLeft>
],
[
- ,
+ ,
'MouthUpperUp',
Raises the upper lips. ,
<>MouthUpperUpRight MouthUpperUpLeft>
],
[
- ,
+ ,
'MouthLowerDown',
Lowers the lower lips. ,
<>MouthLowerDownRight MouthLowerDownLeft>
],
[
- ,
+ ,
'MouthOpen',
'Mouth opens, revealing teeth.',
<>MouthUpperUpRight MouthUpperUpLeft MouthLowerDownRight MouthLowerDownLeft>
],
[
- ,
+ ,
'MouthRight',
'Moves mouth right.',
<>MouthUpperRight MouthLowerRight>
],
[
- ,
+ ,
'MouthLeft',
Moves mouth left. ,
<>MouthUpperLeft MouthLowerLeft>
],
[
- ,
+ ,
'MouthSmileRight',
'Right side mouth expresses a smile.',
<>MouthCornerPullRight MouthCornerSlantRight>
],
[
- ,
+ ,
'MouthSmileLeft',
'Left side mouth expresses a smile.',
<>MouthCornerPullLeft MouthCornerSlantLeft>
],
[
- ,
+ ,
'MouthSmile',
'Mouth expresses a smile.',
<>MouthCornerPullRight MouthCornerPullLeft MouthCornerSlantRight MouthCornerSlantLeft>
],
[
- ,
+ ,
'MouthSadRight',
'Left side mouth expresses sadness.',
<>MouthFrownRight MouthStretchRight>
],
[
- ,
+ ,
'MouthSadLeft',
'Right side mouth expresses sadness.',
<>MouthFrownLeft MouthStretchLeft>
],
[
- ,
+ ,
'MouthSad',
'Mouth expresses sadness.',
<>MouthFrownRight MouthFrownLeft MouthStretchRight MouthStretchLeft>
],
[
- ,
+ ,
'MouthStretch',
Mouth stretches. ,
<>MouthStretchRight MouthStretchLeft>
],
[
- ,
+ ,
'MouthDimple',
Lip corner dimples ,
<>MouthDimpleRight MouthDimpleLeft>
],
[
- ,
+ ,
'MouthTightener',
Mouth tightens. ,
<>MouthTightenerRight MouthTightenerLeft>
],
[
- ,
+ ,
'MouthPress',
Mouth presses together. ,
<>MouthPressRight MouthPressLeft>
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/_unified-shape-table.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/_unified-shape-table.mdx
index 85f74e70..58800024 100644
--- a/docs/tutorial-avatars/tutorial-avatars-extras/_unified-shape-table.mdx
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/_unified-shape-table.mdx
@@ -10,7 +10,7 @@ import '@site/src/css/unified-tables.css';
-
+
Basis
@@ -27,512 +27,512 @@ import '@site/src/css/unified-tables.css';
rows={
[
[
- ,
+ ,
'EyeLookOutRight',
Right eye looks out.
],
[
- ,
+ ,
'EyeLookInRight',
Right eye looks in.
],
[
- ,
+ ,
'EyeLookUpRight',
Right eye looks up.
],
[
- ,
+ ,
'EyeLookDownRight',
Right eye looks down.
],
[
- ,
+ ,
'EyeLookOutLeft',
Left eye looks out.
],
[
- ,
+ ,
'EyeLookInLeft',
Left eye looks in.
],
[
- ,
+ ,
'EyeLookUpLeft',
Left eye looks up.
],
[
- ,
+ ,
'EyeLookDownLeft',
Left eye looks down.
],
[
- ,
+ ,
'EyeClosedRight',
Closes the right eyelid.
],
[
- ,
+ ,
'EyeClosedLeft',
Closes the left eyelid.
],
[
- ,
+ ,
'EyeSquintRight',
Squeezes the right eye socket muscles.
],
[
- ,
+ ,
'EyeSquintLeft',
Squeezes the left eye socket muscles.
],
[
- ,
+ ,
'EyeWideRight',
Right eyelid widens beyond relaxed.
],
[
- ,
+ ,
'EyeWideLeft',
Left eyelid widens beyond relaxed.
],
[
- ,
+ ,
'EyeDilationRight',
Dilates the right eye pupil
],
[
- ,
+ ,
'EyeDilationLeft',
Dilates the left eye pupil
],
[
- ,
+ ,
'EyeConstrictRight',
Constricts the right eye pupil
],
[
- ,
+ ,
'EyeConstrictLeft',
Constricts the left eye pupil
],
[
- ,
+ ,
'BrowPinchRight',
Right eyebrow pinches in.
],
[
- ,
+ ,
'BrowPinchLeft',
Left eyebrow pinches in.
],
[
- ,
+ ,
'BrowLowererRight',
Outer right eyebrow pulls down.
],
[
- ,
+ ,
'BrowLowererLeft',
Outer Left eyebrow pulls down.
],
[
- ,
+ ,
'BrowInnerUpRight',
Inner right eyebrow pulls up.
],
[
- ,
+ ,
'BrowInnerUpLeft',
Inner left eyebrow pulls up.
],
[
- ,
+ ,
'BrowOuterUpRight',
Outer right eyebrow pulls up.
],
[
- ,
+ ,
'BrowOuterUpLeft',
Outer left eyebrow pulls up.
],
[
- ,
+ ,
'NoseSneerRight',
Right side face sneers.
],
[
- ,
+ ,
'NoseSneerLeft',
Left side face sneers.
],
[
- ,
+ ,
'NasalDilationRight',
Right side nose canal dilates.
],
[
- ,
+ ,
'NasalDilationLeft',
Left side nose canal dilates.
],
[
- ,
+ ,
'NasalConstrictRight',
Right side nose canal constricts.
],
[
- ,
+ ,
'NasalConstrictLeft',
Left side nose canal constricts.
],
[
- ,
+ ,
'CheekSquintRight',
Raises the right side cheek.
],
[
- ,
+ ,
'CheekSquintLeft',
Raises the left side cheek.
],
[
- ,
+ ,
'CheekPuffRight',
Puffs the right side cheek.
],
[
- ,
+ ,
'CheekPuffLeft',
Puffs the left side cheek.
],
[
- ,
+ ,
'CheekSuckRight',
Sucks in the right side cheek.
],
[
- ,
+ ,
'CheekSuckLeft',
Sucks in the left side cheek.
],
[
- ,
+ ,
'JawOpen',
Opens jawbone.
],
[
- ,
+ ,
'MouthClosed',
Closes mouth (in relation to JawOpen).
],
[
- ,
+ ,
'JawRight',
Pushes jawbone right.
],
[
- ,
+ ,
'JawLeft',
Pushes jawbone left.
],
[
- ,
+ ,
'JawForward',
Pushes jawbone forwards.
],
[
- ,
+ ,
'JawBackward',
Pulls jawbone backwards.
],
[
- ,
+ ,
'JawClench',
Flexes jaw muscles.
],
[
- ,
+ ,
'JawMandibleRaise',
Raises jawbone.
],
[
- ,
+ ,
'LipSuckUpperRight',
Upper right lip part tucks in the mouth.
],
[
- ,
+ ,
'LipSuckUpperLeft',
Upper left lip part tucks in the mouth.
],
[
- ,
+ ,
'LipSuckLowerRight',
Lower right lip part tucks in the mouth.
],
[
- ,
+ ,
'LipSuckLowerLeft',
Lower left lip part tucks in the mouth.
],
[
- ,
+ ,
'LipSuckCornerRight',
Right lip corner folds into the mouth.
],
[
- ,
+ ,
'LipSuckCornerLeft',
Left lip corner folds into the mouth.
],
[
- ,
+ ,
'LipFunnelUpperRight',
Upper right lip part pushes into a funnel.
],
[
- ,
+ ,
'LipFunnelUpperLeft',
Upper left lip part pushes into a funnel.
],
[
- ,
+ ,
'LipFunnelLowerRight',
Lower right lip part pushes into a funnel.
],
[
- ,
+ ,
'LipFunnelLowerLeft',
Lower left lip part pushes into a funnel.
],
[
- ,
+ ,
'LipPuckerUpperRight',
Upper right lip part pushes outward.
],
[
- ,
+ ,
'LipPuckerUpperLeft',
Upper left lip part pushes outward.
],
[
- ,
+ ,
'LipPuckerLowerRight',
Lower right lip part pushes outward.
],
[
- ,
+ ,
'LipPuckerLowerLeft',
Lower left lip part pushes outward.
],
[
- ,
+ ,
'MouthUpperUpRight',
Upper right part of the lip pulls up.
],
[
- ,
+ ,
'MouthUpperUpLeft',
Upper left part of the lip pulls up.
],
[
- ,
+ ,
'MouthLowerDownRight',
Lower right part of the lip pulls up.
],
[
- ,
+ ,
'MouthLowerDownLeft',
Lower left part of the lip pulls up.
],
[
- ,
+ ,
'MouthUpperDeepenRight',
Upper right lip part pushes in the cheek.
],
[
- ,
+ ,
'MouthUpperDeepenLeft',
Upper left lip part pushes in the cheek.
],
[
- ,
+ ,
'MouthUpperRight',
Moves upper lip right.
],
[
- ,
+ ,
'MouthUpperLeft',
Moves upper lip left.
],
[
- ,
+ ,
'MouthLowerRight',
Moves lower lip right.
],
[
- ,
+ ,
'MouthLowerLeft',
Moves lower lip left.
],
[
- ,
+ ,
'MouthCornerPullRight',
Right lip corner pulls diagonally up and out.
],
[
- ,
+ ,
'MouthCornerPullLeft',
Left lip corner pulls diagonally up and out.
],
[
- ,
+ ,
'MouthCornerSlantRight',
Right corner lip slants up.
],
[
- ,
+ ,
'MouthCornerSlantLeft',
Left corner lip slants up.
],
[
- ,
+ ,
'MouthFrownRight',
Right corner lip pulls down.
],
[
- ,
+ ,
'MouthFrownLeft',
Left corner lip pulls down.
],
[
- ,
+ ,
'MouthStretchRight',
Right corner lip pulls out and down.
],
[
- ,
+ ,
'MouthStretchLeft',
Left corner lip pulls out and down.
],
[
- ,
+ ,
'MouthDimpleRight',
Right lip corner is pushed backwards.
],
[
- ,
+ ,
'MouthDimpleLeft',
Left lip corner is pulled backwards.
],
[
- ,
+ ,
'MouthRaiserUpper',
Raises and slightly pushes out the upper mouth.
],
[
- ,
+ ,
'MouthRaiserLower',
Raises and slightly pushes out the lower mouth.
],
[
- ,
+ ,
'MouthPressRight',
Right side lips press and flatten together vertically.
],
[
- ,
+ ,
'MouthPressLeft',
Left side lips press and flatten together vertically.
],
[
- ,
+ ,
'MouthTightenerRight',
Right side lips squeeze together horizontally.
],
[
- ,
+ ,
'MouthTightenerLeft',
Left side lips squeeze together horizontally.
],
[
- ,
+ ,
'TongueOut',
Tongue visibly sticks out of the mouth.
],
[
- ,
+ ,
'TongueUp',
Tongue points up.
],
[
- ,
+ ,
'TongueDown',
Tongue points down.
],
[
- ,
+ ,
'TongueRight',
Tongue points right.
],
[
- ,
+ ,
'TongueLeft',
Tongue points left.
],
[
- ,
+ ,
'TongueRoll',
Sides of the tongue funnel, creating a 'hotdog' shape.
],
[
- ,
+ ,
'TongueBendDown',
Tongue arches up then down inside the mouth.
],
[
- ,
+ ,
'TongueCurlUp',
Tongue arches down then up inside the mouth.
],
[
- ,
+ ,
'TongueSquish',
Tongue squishes together and thickens.
],
[
- ,
+ ,
'TongueFlat',
Tongue flattens and thins out.
],
[
- ,
+ ,
'TongueTwistRight',
Tongue tip rotates clockwise, with the rest following gradually.
],
[
- ,
+ ,
'TongueTwistLeft',
Tongue tip rotates counter-clockwise, with the rest following gradually.
],
[
- ,
+ ,
'SoftPalateClose¹',
Inner mouth throat closes.
],
[
- ,
+ ,
'ThroatSwallow¹',
The Adam's apple visibly swallows.
],
[
- ,
+ ,
'NeckFlexRight¹',
Right side neck visibly flexes.
],
[
- ,
+ ,
'NeckFlexLeft¹',
Left side neck visibly flexes.
],
From 56f9494444ee7d2d4dbc49d66404b5a6856be5c7 Mon Sep 17 00:00:00 2001
From: regzo2
Date: Sat, 2 Sep 2023 17:53:44 -0400
Subject: [PATCH 08/12] Updated formatting clarifications and explanations
---
docs/hardware/interface-compabilities.mdx | 4 +-
.../compatibility/arkit.mdx | 10 +--
.../compatibility/meta-movement.mdx | 8 +--
.../compatibility/overview.mdx | 55 ++++++++-------
.../compatibility/vive-sranipal.mdx | 70 +++++++++++--------
5 files changed, 84 insertions(+), 63 deletions(-)
diff --git a/docs/hardware/interface-compabilities.mdx b/docs/hardware/interface-compabilities.mdx
index 988307ce..f50406a8 100644
--- a/docs/hardware/interface-compabilities.mdx
+++ b/docs/hardware/interface-compabilities.mdx
@@ -13,7 +13,7 @@ import FilterTable from '@site/src/components/FilterTable.tsx';
:::note How to read this section
This page goes over generalized functions, features, and
-tracking quality of each interface and what it can do in
+tracking quality of each interface, and what they can do in
VRCFaceTracking. For more specific information about the listed
interfaces please refer to their dedicated sections.
@@ -124,7 +124,7 @@ interfaces please refer to their dedicated sections.
'Very High',
'~',
'High',
- 'Mediocre',
+ 'Below Average',
'~',
'~',
'Very High',
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx
index 300fa6bc..7faafa81 100644
--- a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx
@@ -10,11 +10,13 @@ import FilterTable from '@site/src/components/FilterTable.tsx';
***
-Apple provides a face tracking standard for iOS devices in their ARKit software,
-with the blendshapes for it often referred to as PerfectSync, AR52, and ARKit respectively.
+Apple provides a face tracking standard for iOS devices within their ARKit SDK and software,
+where the associated blendshapes are often referred to as PerfectSync, AR52, and ARKit respectively.
The following table shows how ARKit face tracking translates to Unified Expressions
+### ARKit Comparison
+
*BrowDownRight CheekSquintRight EyeSquintRightWhile EyeClosedRight
>, '~', 'Eye_Right_squeeze¹', '~'],
[<>*BrowDownLeft CheekSquintLeft EyeSquintLeftWhile EyeClosedLeft
>, '~', 'Eye_Left_squeeze¹', '~'],
['EyeWideRight', 'eyeWideRight', 'Eye_Right_Wide', 'EYES_WIDEN_R'],
@@ -80,8 +88,8 @@ standards compare to each other.
['EyeConstrictLeft', '❌', 'Eye_Left_Constrict', '❌'],
['*BrowDownRight', 'browDownRight', '❌', 'BROW_LOWERER_R'],
['*BrowDownLeft', 'browDownLeft', '❌', 'BROW_LOWERER_L'],
- ['BrowInnerUpRight', '❌', '❌', 'INNER_BROW_RAISER_R'],
- ['BrowInnerUpLeft', '❌', '❌', 'INNER_BROW_RAISER_L'],
+ ['BrowInnerUpRight', '~', '❌', 'INNER_BROW_RAISER_R'],
+ ['BrowInnerUpLeft', '~', '❌', 'INNER_BROW_RAISER_L'],
['*BrowInnerUp', 'browInnerUp', '❌', '~'],
['BrowOuterUpRight', 'browOuterUpRight', '❌', 'OUTER_BROW_RAISER_R'],
['BrowOuterUpLeft', 'browOuterUpLeft', '❌', 'OUTER_BROW_RAISER_L'],
@@ -96,8 +104,7 @@ standards compare to each other.
['CheekSuckLeft', '❌', '~', 'CHEEK_SUCK_L'],
['CheekSuck', '❌', 'Cheek_Suck', '~'],
['JawOpen', 'jawOpen', 'Jaw_Open', 'JAW_DROP'],
- ['MouthClosed', 'mouthClose', '~', 'LIPS_TOWARD'],
- [<>MouthClosedIncludes JawOpen
>, '~', 'MouthApeShape¹', '~'],
+ ['MouthClosed', 'mouthClose', <>Mouth_Ape_Shape¹Negates Jaw_Open
>, 'LIPS_TOWARD'],
['JawRight', 'jawRight', 'Jaw_Right', 'JAW_SIDEWAYS_RIGHT'],
['JawLeft', 'jawLeft', 'Jaw_Left', 'JAW_SIDEWAYS_LEFT'],
['JawForward', 'jawForward', 'Jaw_Forward', 'JAW_THRUST'],
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx
index 0610c380..416d4991 100644
--- a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx
@@ -10,31 +10,43 @@ import FilterTable from '@site/src/components/FilterTable.tsx';
***
-VIVE provides a face tracking standard as part of their SRanipal SDK and
-software. It provides the tracking basis for the Vive Pro Eye, Vive Facial
-Tracker, and other VIVE products that have face tracking capabilities.
-The following table shows how SRanipal face tracking translates to Unified Expressions.
+VIVE offers a facial tracking standard through the SRanipal SDK and software.
+This standard serves as the foundational tracking framework for devices such as
+the Vive Pro Eye, Vive Facial Tracker, and other VIVE products equipped with
+facial tracking functionalities.
+
+The following table illustrates the mapping of SRanipal facial tracking to Unified Expressions.
:::info Table Explained
-If there are multiple shapes listed in the same row, it means that multiple
-shapes combine together to create the single shape of a specified standard.
+This table provides a comprehensive understanding of the
+relationship between various shapes and Unified Expressions:
+
+When multiple shapes are listed in the same row, they
+collaboratively contribute to the formation of a specific
+standard shape.
+
+Some shapes have an extra condition (`While X`, `Negates X`)
+that indicates that specified cell needs the presence or absence
+of specific shapes to convey a specific expression accurately in
+order to correlate it to the other expressions in that row.
+This often necessitates particular adjustments (animation
+or blendshape) for compatibility with Unified Expressions,
+while maintaining anatomical consistency within the given row.
-If there is a Unified shape row with a condition (`While X`, `Except X`), it means that the
-specified shapes of other standards require the `X` shape to behave a certain way in
-order to properly convey the specified Unified expression. Usually these require specific
-animation compensation to work in Unified Expressions but are otherwise anatomically
-consistent within the specific row.
+* `While` signifies that a standard requires a shape
+to be active to match the row.
+* `Negates` signifies that a standard requires a shape
+to be inactive to match the row.
-* `While` means a standard requires the Unified shape to be active in some way.
-* `Except` means a standard requires the Unified shape to be inactive in some way.
-* `Includes` means a standard has this specific Unified shape baked into the shape.
+Regardless of the conditions, the shape can be converted into
+Unified Expressions without compromising tracking quality or
+expression behavior.
-In all conditions, the shape can be converted to be Unified Expressions
-compatible with no loss to tracking or expression behavior. For more concise
-and readable information for specific tracking standards and how they convert
-to Unified Expressions, please refer to [Admonitions](#admonitions).
+For more concise and readable information for specific tracking
+standards and how they convert to Unified Expressions, please
+refer to [Admonitions](#admonitions).
:::
@@ -68,7 +80,7 @@ to Unified Expressions, please refer to [Admonitions](#admonitions).
['CheekPuffLeft', '~', 'Cheek_Puff_Left'],
[<>CheekSuckRight CheekSuckLeft>, 'CheekSuck', 'Cheek_Suck'],
['JawOpen', '~', 'Jaw_Open'],
- [<>MouthClosedIncludes JawOpen
>, '~', 'MouthApeShape¹'],
+ ['MouthClosed', '~', <>Mouth_Ape_Shape¹Negates Jaw_Open
>],
['JawRight', '~', 'Jaw_Right'],
['JawLeft', '~', 'Jaw_Left'],
['JawForward', '~', 'Jaw_Forward'],
@@ -99,19 +111,19 @@ to Unified Expressions, please refer to [Admonitions](#admonitions).
### Admonitions {#admonitions}
-Some expressions in SRanipal, due to the way the standard is designed,
-may not have direct or intuitive assignments to Unified Expressions.
+Certain expressions in SRanipal may not have direct or intuitive assignments
+to Unified Expressions due to the format of the expressions.
-This section will give detailed descriptions on how SRanipal controls Unified
-Expressions. This can be useful for converting SRanipal shapes to Unified
-Expressions, or making SRanipal shapes compatible in Unified Expressions
-driven animation setups (in the case of VRCFT avatars).
+The following section will provide comprehensive explanations on how SRanipal
+controls Unified Expressions, and subsequently how Unified can be used to track
+SRanipal shapes. This can be useful for making SRanipal shapes compatible in Unified
+Expressions driven animation setups (in the case of VRCFT avatars).
-Acknowledging these differences in your avatar's setup should allow SRanipal
+Recognizing these differences in your avatar's setup should allow SRanipal
shapes to track as intended. Certain animation templates have these admonitions
built in, allowing SRanipal shapes to be used directly with Unified Expressions!
-This section provides a technical description of what each shape should do to
+This section provides a thorough description of what each shape should do to
track as intended with Unifed Expressions.
Date: Mon, 25 Sep 2023 17:41:15 -0400
Subject: [PATCH 09/12] Fixed HW compatibilities to have correct info
---
docs/hardware/interface-compabilities.mdx | 95 +++++++++++++----------
1 file changed, 54 insertions(+), 41 deletions(-)
diff --git a/docs/hardware/interface-compabilities.mdx b/docs/hardware/interface-compabilities.mdx
index f50406a8..bb93419f 100644
--- a/docs/hardware/interface-compabilities.mdx
+++ b/docs/hardware/interface-compabilities.mdx
@@ -17,6 +17,11 @@ tracking quality of each interface, and what they can do in
VRCFaceTracking. For more specific information about the listed
interfaces please refer to their dedicated sections.
+Various aspects of the interfaces are given a rank from 1-10, indicating
+their quality or effectiveness. The rankings are given by ranking devices
+relative to each other based on various criteria such as tracking quality
+and expressiveness.
+
:::
Eye Widen Eye Squeeze Brow(Emulated)>,
'~',
<>Widen(Emulated) Squeeze(Emulated) >,
<>Widen Squint Brow>,
+ <>Widen Squint Brow>,
'❌',
'❌',
<>Widen Squint Brow>,
- '~',
'❌',
- <>Widen Squeeze Brow(Emulated)>,
+ '❌',
+ <>Widen Squeeze Brow(Emulated)>,
+ `~`,
'~'
],
[
'Upper Face Expressability',
- 'High',
+ '5/10',
'~',
'N/A',
- 'Extreme',
- '❌',
+ '9/10',
+ '8/10',
+ '❌',
+ '❌',
+ '9/10',
'❌',
- '~',
- 'Very High',
- 'Extreme',
'❌',
- 'High',
+ '5/10',
+ '~',
'~'
],
[
'Upper Face Tracking Quality',
+ '8/10',
'~',
- 'Very High',
- '~',
- 'High',
- 'Mediocre',
- '~',
- '~',
- 'Very High',
- 'Very High',
- '~',
+ 'N/A',
+ '7/10',
+ '4/10',
+ '❌',
+ '❌',
+ '8/10',
+ '❌',
+ '❌',
+ '7/10',
'~',
- 'High'
+ '~'
],
[
'Lower Face Expression Support',
- <>Brow(Emulated)>,
+ '~',
<>Jaw Lip Mouth Cheek>,
'~',
<>Brow Jaw Lip Mouth Cheek Nose>,
@@ -100,39 +110,42 @@ interfaces please refer to their dedicated sections.
<>Brow Jaw Lip Mouth Cheek Nose>,
<>Jaw Lip Mouth Cheek Nose>,
'~',
- <>Brow(Emulated)>,
+ '~',
<>Jaw Lip Mouth Cheek Nose>,
+ '~'
],
[
'Lower Face Expressability',
'~',
- 'High',
+ '7/10',
'~',
- 'Very High',
- 'High',
+ '8/10',
+ '7/10',
'~',
'~',
- 'Very High',
- 'Extreme',
+ '8/10',
+ '9/10',
'~',
'~',
- 'High'
+ '7/10',
+ '~'
],
[
'Face Tracking Quality',
'~',
- 'Very High',
+ '8/10',
'~',
- 'High',
- 'Below Average',
+ '7/10',
+ '4/10',
'~',
'~',
- 'Very High',
- 'Very High',
+ '8/10',
+ '8/10',
'~',
'~',
- 'High'
+ '7/10',
+ '~'
],
- ['Tongue Expression Support', '~', 'Tongue Out & Directions', '~', '❌', 'Tongue Out', '~', '~', 'Tongue Out', 'All Tongue Expressions', '~', '~', 'Tongue Out & Directions'],
+ ['Tongue Expression Support', '~', 'Tongue Out & Directions', '~', '❌', 'Tongue Out', '~', '~', 'Tongue Out', 'All Tongue Expressions', '~', '~', 'Tongue Out & Directions', '~'],
]}
/>
From ed407414fd29a9c295f1fdb2eb06220cb58eb0ad Mon Sep 17 00:00:00 2001
From: regzo2
Date: Mon, 25 Sep 2023 17:41:34 -0400
Subject: [PATCH 10/12] Updated Standard pages to be more condensed and
accurate.
---
.../compatibility/arkit.mdx | 105 ++++++++-------
.../compatibility/meta-movement.mdx | 127 +++++++++---------
.../compatibility/overview.mdx | 36 ++---
.../compatibility/vive-sranipal.mdx | 96 ++++++-------
4 files changed, 183 insertions(+), 181 deletions(-)
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx
index 7faafa81..8faf71d4 100644
--- a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx
@@ -19,63 +19,64 @@ The following table shows how ARKit face tracking translates to Unified Expressi
BrowPinchRight BrowLowererRight>, 'BrowDownRight', 'browDownRight'],
- [<>BrowPinchLeft BrowLowererLeft>, 'BrowDownLeft', 'browDownLeft'],
- [<>BrowInnerUpRight BrowInnerUpLeft>,'BrowInnerUp', 'browInnerUp'],
- ['BrowOuterUpRight', '~', 'browOuterUpRight'],
- ['BrowOuterUpLeft', '~', 'browOuterUpLeft'],
- ['NoseSneerRight', '~', 'noseSneerRight'],
- ['NoseSneerLeft', '~', 'noseSneerLeft'],
- ['CheekSquintRight', '~', 'cheekSquintRight'],
- ['CheekSquintLeft', '~', 'cheekSquintLeft'],
- [<>CheekPuffRight CheekPuffLeft>, 'CheekPuff', 'cheekPuff'],
- ['JawOpen', '~', 'jawOpen'],
- ['MouthClosed', '~', 'mouthClose'],
- ['JawRight', '~', 'jawRight'],
- ['JawLeft', '~', 'jawLeft'],
- ['JawForward', '~', 'jawForward'],
- [<>LipSuckUpperRight LipSuckUpperRight>, 'LipSuckUpper', 'mouthRollUpper'],
- [<>LipSuckLowerRight LipSuckLowerRight>, 'LipSuckLower', 'mouthRollLower'],
- [<>LipPuckerUpperRight LipPuckerUpperRight LipPuckerLowerRight LipPuckerLowerRight>, 'LipFunnel', 'mouthFunnel'],
- [<>LipPuckerUpperRight LipPuckerUpperRight LipPuckerLowerRight LipPuckerLowerRight>, 'LipPucker', 'mouthPucker'],
- ['MouthUpperUpRight', '~', 'mouthUpperUpRight'],
- ['MouthUpperUpLeft', '~', 'mouthUpperUpLeft'],
- ['MouthLowerDownRight', '~', 'mouthLowerUpRight'],
- ['MouthLowerDownLeft', '~', 'mouthLowerUpLeft'],
- [<>MouthCornerPullerRight MouthCornerSlantRight>,'MouthSmileRight', 'mouthSmileRight'],
- [<>MouthCornerPullerLeft MouthCornerSlantLeft>,'MouthSmileLeft', 'mouthSmileLeft'],
- ['MouthFrownRight', '~', 'mouthFrownRight'],
- ['MouthFrownLeft', '~', 'mouthFrownLeft'],
- ['MouthStretchRight', '~', 'mouthStretchRight'],
- ['MouthStretchLeft', '~', 'mouthStretchLeft'],
- ['MouthDimplerRight', '~', 'mouthDimpleRight'],
- ['MouthDimplerLeft', '~', 'mouthDimpleLeft'],
- ['MouthRaiserUpper', '~', 'mouthShrugUpper'],
- ['MouthRaiserLower', '~', 'mouthShrugLower'],
- ['MouthPressRight', '~', 'mouthPressRight'],
- ['MouthPressLeft', '~', 'mouthPressLeft'],
- ['TongueOut', '~', 'tongueOut']
+ ['EyeLookUpRight', 'eyeLookUpRight'],
+ ['EyeLookDownRight', 'eyeLookDownRight'],
+ ['EyeLookInRight', 'eyeLookInRight'],
+ ['EyeLookOutRight', 'eyeLookOutRight'],
+ ['EyeLookUpLeft', 'eyeLookUpLeft'],
+ ['EyeLookDownLeft', 'eyeLookDownLeft'],
+ ['EyeLookInLeft', 'eyeLookInLeft'],
+ ['EyeLookOutLeft', 'eyeLookOutLeft'],
+ ['EyeClosedRight', 'eyeBlinkRight'],
+ ['EyeClosedLeft', 'eyeBlinkLeft'],
+ ['EyeSquintRight', 'eyeSquintRight'],
+ ['EyeSquintLeft', 'eyeSquintLeft'],
+ ['EyeWideRight', 'eyeWideRight'],
+ ['EyeWideLeft', 'eyeWideLeft'],
+ [BrowDownRight , 'browDownRight'],
+ [BrowDownLeft , 'browDownLeft'],
+ [BrowInnerUp , 'browInnerUp'],
+ ['BrowOuterUpRight', 'browOuterUpRight'],
+ ['BrowOuterUpLeft', 'browOuterUpLeft'],
+ ['NoseSneerRight', 'noseSneerRight'],
+ ['NoseSneerLeft', 'noseSneerLeft'],
+ ['CheekSquintRight', 'cheekSquintRight'],
+ ['CheekSquintLeft', 'cheekSquintLeft'],
+ [CheekPuff , 'cheekPuff'],
+ ['JawOpen', 'jawOpen'],
+ ['MouthClosed', 'mouthClose'],
+ ['JawRight', 'jawRight'],
+ ['JawLeft', 'jawLeft'],
+ ['JawForward', 'jawForward'],
+ [LipSuckUpper , 'mouthRollUpper'],
+ [LipSuckLower , 'mouthRollLower'],
+ [LipFunnel , 'mouthFunnel'],
+ [LipPucker , 'mouthPucker'],
+ ['MouthUpperUpRight', 'mouthUpperUpRight'],
+ ['MouthUpperUpLeft', 'mouthUpperUpLeft'],
+ ['MouthLowerDownRight', 'mouthLowerUpRight'],
+ ['MouthLowerDownLeft', 'mouthLowerUpLeft'],
+ [MouthSmileRight , 'mouthSmileRight'],
+ [MouthSmileLeft , 'mouthSmileLeft'],
+ ['MouthFrownRight', 'mouthFrownRight'],
+ ['MouthFrownLeft', 'mouthFrownLeft'],
+ ['MouthStretchRight', 'mouthStretchRight'],
+ ['MouthStretchLeft', 'mouthStretchLeft'],
+ ['MouthDimplerRight', 'mouthDimpleRight'],
+ ['MouthDimplerLeft', 'mouthDimpleLeft'],
+ ['MouthRaiserUpper', 'mouthShrugUpper'],
+ ['MouthRaiserLower', 'mouthShrugLower'],
+ ['MouthPressRight', 'mouthPressRight'],
+ ['MouthPressLeft', 'mouthPressLeft'],
+ ['TongueOut', 'tongueOut']
]}
/>
+* Bold Blended Shape.
+
:::caution Some shapes are not tracked
ARKit does not include expressions to track the following Unified Expressions:
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/meta-movement.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/meta-movement.mdx
index a034e7da..8e04175c 100644
--- a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/meta-movement.mdx
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/meta-movement.mdx
@@ -20,74 +20,75 @@ The following table shows how Movement face tracking translates to Unified Expre
BrowPinchRight BrowLowererRight>, 'BrowDownRight', 'BROW_LOWERER_R'],
- [<>BrowPinchLeft BrowLowererLeft>, 'BrowDownLeft', 'BROW_LOWERER_L'],
- ['BrowInnerUpRight', '~', 'INNER_BROW_RAISER_R'],
- ['BrowInnerUpLeft', '~', 'INNER_BROW_RAISER_L'],
- ['BrowOuterUpRight', '~', 'OUTER_BROW_RAISER_R'],
- ['BrowOuterUpLeft', '~', 'OUTER_BROW_RAISER_L'],
- ['NoseSneerRight', '~', 'NOSE_WRINKLER_R'],
- ['NoseSneerLeft', '~', 'NOSE_WRINKLER_L'],
- ['CheekSquintRight', '~', 'CHEEK_RAISER_R'],
- ['CheekSquintLeft', '~', 'CHEEK_RAISER_L'],
- ['CheekPuffRight', '~', 'CHEEK_PUFF_R'],
- ['CheekPuffLeft', '~', 'CHEEK_PUFF_L'],
- ['CheekSuckRight', '~', 'CHEEK_SUCK_R'],
- ['CheekSuckLeft', '~', 'CHEEK_SUCK_L'],
- ['JawOpen', '~', 'JAW_DROP'],
- ['MouthClosed', '~', 'LIPS_TOWARD'],
- ['JawRight', '~', 'JAW_SIDEWAYS_RIGHT'],
- ['JawLeft', '~', 'JAW_SIDEWAYS_LEFT'],
- ['JawForward', '~', 'JAW_THRUST'],
- ['LipSuckUpperRight', '~', 'LIP_SUCK_RT'],
- ['LipSuckUpperLeft', '~', 'LIP_SUCK_LT'],
- ['LipSuckLowerRight', '~', 'LIP_SUCK_RB'],
- ['LipSuckLowerLeft', '~', 'LIP_SUCK_LB'],
- ['LipFunnelUpperRight', '~', 'LIP_FUNNELER_RT'],
- ['LipFunnelUpperLeft', '~', 'LIP_FUNNELER_LT'],
- ['LipFunnelLowerRight', '~', 'LIP_SUCK_RB'],
- ['LipFunnelLowerLeft', '~', 'LIP_SUCK_LB'],
- [<>LipPuckerUpperRight LipPuckerLowerRight>, 'N/A', 'LIP_PUCKER_R'],
- [<>LipPuckerUpperLeft LipPuckerLowerLeft>, 'N/A', 'LIP_PUCKER_L'],
- ['MouthUpperUpRight', '~', 'UPPER_LIP_RAISER_R'],
- ['MouthUpperUpLeft', '~', 'UPPER_LIP_RAISER_L'],
- ['MouthLowerDownRight', '~', 'LOWER_LIP_DEPRESSOR_R'],
- ['MouthLowerDownLeft', '~', 'LOWER_LIP_DEPRESSER_L'],
- [<>MouthCornerPullerRight MouthCornerSlantRight>, 'MouthSmileRight', 'LIP_CORNER_PULLER_R'],
- [<>MouthCornerPullerLeft MouthCornerSlantLeft>, 'MouthSmileLeft', 'LIP_CORNER_PULLER_L'],
- ['MouthFrownRight', '~', 'LIP_CORNER_DEPRESSOR_R'],
- ['MouthFrownLeft', '~', 'LIP_CORNER_DEPRESSOR_L'],
- ['MouthStretchRight', '~', 'LIP_STRETCHER_R'],
- ['MouthStretchLeft', '~', 'LIP_STRETCHER_L'],
- ['MouthDimplerRight', '~', 'DIMPLER_R'],
- ['MouthDimplerLeft', '~', 'DIMPLER_L'],
- ['MouthRaiserUpper', '~', 'CHIN_RAISER_T'],
- ['MouthRaiserUpper', '~', 'CHIN_RAISER_T'],
- ['MouthPressRight', '~', 'LIP_PRESSOR_R'],
- ['MouthPressLeft', '~', 'LIP_PRESSOR_L'],
- ['MouthTightenerRight', '~', 'LIP_TIGHTENER_R'],
- ['MouthTightenerLeft', '~', 'LIP_TIGHTENER_L'],
+ ['EyeLookUpRight', 'EYES_LOOK_UP_R'],
+ ['EyeLookDownRight', 'EYES_LOOK_DOWN_R'],
+ ['EyeLookInRight', 'EYES_LOOK_IN_R'],
+ ['EyeLookOutRight', 'EYES_LOOK_OUT_R'],
+ ['EyeLookUpLeft', 'EYES_LOOK_UP_L'],
+ ['EyeLookDownLeft', 'EYES_LOOK_DOWN_L'],
+ ['EyeLookInLeft', 'EYES_LOOK_IN_L'],
+ ['EyeLookOutLeft', 'EYES_LOOK_OUT_L'],
+ ['EyeClosedRight', 'EYES_CLOSED_R'],
+ ['EyeClosedLeft', 'EYES_CLOSED_L'],
+ ['EyeSquintRight', 'EYES_SQUINT_R'],
+ ['EyeSquintLeft', 'EYES_SQUINT_R'],
+ ['EyeWideRight', 'EYES_WIDEN_R'],
+ ['EyeWideLeft', 'EYES_WIDEN_L'],
+ [BrowDownRight , 'BROW_LOWERER_R'],
+ [BrowDownLeft , 'BROW_LOWERER_L'],
+ ['BrowInnerUpRight', 'INNER_BROW_RAISER_R'],
+ ['BrowInnerUpLeft', 'INNER_BROW_RAISER_L'],
+ ['BrowOuterUpRight', 'OUTER_BROW_RAISER_R'],
+ ['BrowOuterUpLeft', 'OUTER_BROW_RAISER_L'],
+ ['NoseSneerRight', 'NOSE_WRINKLER_R'],
+ ['NoseSneerLeft', 'NOSE_WRINKLER_L'],
+ ['CheekSquintRight', 'CHEEK_RAISER_R'],
+ ['CheekSquintLeft', 'CHEEK_RAISER_L'],
+ ['CheekPuffRight', 'CHEEK_PUFF_R'],
+ ['CheekPuffLeft', 'CHEEK_PUFF_L'],
+ ['CheekSuckRight', 'CHEEK_SUCK_R'],
+ ['CheekSuckLeft', 'CHEEK_SUCK_L'],
+ ['JawOpen', 'JAW_DROP'],
+ ['MouthClosed', 'LIPS_TOWARD'],
+ ['JawRight', 'JAW_SIDEWAYS_RIGHT'],
+ ['JawLeft', 'JAW_SIDEWAYS_LEFT'],
+ ['JawForward', 'JAW_THRUST'],
+ ['LipSuckUpperRight', 'LIP_SUCK_RT'],
+ ['LipSuckUpperLeft', 'LIP_SUCK_LT'],
+ ['LipSuckLowerRight', 'LIP_SUCK_RB'],
+ ['LipSuckLowerLeft', 'LIP_SUCK_LB'],
+ ['LipFunnelUpperRight', 'LIP_FUNNELER_RT'],
+ ['LipFunnelUpperLeft', 'LIP_FUNNELER_LT'],
+ ['LipFunnelLowerRight', 'LIP_FUNNELER_RB'],
+ ['LipFunnelLowerLeft', 'LIP_FUNNELER_LB'],
+ [<>LipPuckerUpperRight LipPuckerLowerRight>, 'LIP_PUCKER_R'],
+ [<>LipPuckerUpperLeft LipPuckerLowerLeft>, 'LIP_PUCKER_L'],
+ ['MouthUpperUpRight', 'UPPER_LIP_RAISER_R'],
+ ['MouthUpperUpLeft', 'UPPER_LIP_RAISER_L'],
+ ['MouthLowerDownRight', 'LOWER_LIP_DEPRESSOR_R'],
+ ['MouthLowerDownLeft', 'LOWER_LIP_DEPRESSER_L'],
+ [MouthSmileRight , 'LIP_CORNER_PULLER_R'],
+ [MouthSmileLeft , 'LIP_CORNER_PULLER_L'],
+ ['MouthFrownRight', 'LIP_CORNER_DEPRESSOR_R'],
+ ['MouthFrownLeft', 'LIP_CORNER_DEPRESSOR_L'],
+ ['MouthStretchRight', 'LIP_STRETCHER_R'],
+ ['MouthStretchLeft', 'LIP_STRETCHER_L'],
+ ['MouthDimplerRight', 'DIMPLER_R'],
+ ['MouthDimplerLeft', 'DIMPLER_L'],
+ ['MouthRaiserUpper', 'CHIN_RAISER_T'],
+ ['MouthRaiserUpper', 'CHIN_RAISER_T'],
+ ['MouthPressRight', 'LIP_PRESSOR_R'],
+ ['MouthPressLeft', 'LIP_PRESSOR_L'],
+ ['MouthTightenerRight', 'LIP_TIGHTENER_R'],
+ ['MouthTightenerLeft', 'LIP_TIGHTENER_L'],
]}
/>
+* Bold Blended Shape.
+
:::caution Some shapes are not tracked
Movement does not include expressions to track the following Unified Expressions:
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/overview.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/overview.mdx
index 6ae3f196..a1519d48 100644
--- a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/overview.mdx
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/overview.mdx
@@ -78,19 +78,19 @@ dedicated sections for each standard.
['EyeClosedLeft', 'eyeBlinkLeft', 'Eye_Left_Blink', 'EYES_CLOSED_L'],
['EyeSquintRight', 'eyeSquintRight', '~', 'EYES_SQUINT_R'],
['EyeSquintLeft', 'eyeSquintLeft', '~', 'EYES_SQUINT_R'],
- [<>*BrowDownRight CheekSquintRight EyeSquintRightWhile EyeClosedRight
>, '~', 'Eye_Right_squeeze¹', '~'],
- [<>*BrowDownLeft CheekSquintLeft EyeSquintLeftWhile EyeClosedLeft
>, '~', 'Eye_Left_squeeze¹', '~'],
+ [<>BrowDownRight CheekSquintRight EyeSquintRightWhile EyeClosedRight
>, '~', 'Eye_Right_squeeze¹', '~'],
+ [<>BrowDownLeft CheekSquintLeft EyeSquintLeftWhile EyeClosedLeft
>, '~', 'Eye_Left_squeeze¹', '~'],
['EyeWideRight', 'eyeWideRight', 'Eye_Right_Wide', 'EYES_WIDEN_R'],
['EyeWideLeft', 'eyeWideLeft', 'Eye_Left_Wide', 'EYES_WIDEN_L'],
['EyeDilationRight', '❌', 'Eye_Right_Dilation', '❌'],
['EyeDilationLeft', '❌', 'Eye_Left_Dilation', '❌'],
['EyeConstrictRight', '❌', 'Eye_Right_Constrict', '❌'],
['EyeConstrictLeft', '❌', 'Eye_Left_Constrict', '❌'],
- ['*BrowDownRight', 'browDownRight', '❌', 'BROW_LOWERER_R'],
- ['*BrowDownLeft', 'browDownLeft', '❌', 'BROW_LOWERER_L'],
+ [BrowDownRight , 'browDownRight', '❌', 'BROW_LOWERER_R'],
+ [BrowDownLeft , 'browDownLeft', '❌', 'BROW_LOWERER_L'],
['BrowInnerUpRight', '~', '❌', 'INNER_BROW_RAISER_R'],
['BrowInnerUpLeft', '~', '❌', 'INNER_BROW_RAISER_L'],
- ['*BrowInnerUp', 'browInnerUp', '❌', '~'],
+ [BrowInnerUp , 'browInnerUp', '❌', '~'],
['BrowOuterUpRight', 'browOuterUpRight', '❌', 'OUTER_BROW_RAISER_R'],
['BrowOuterUpLeft', 'browOuterUpLeft', '❌', 'OUTER_BROW_RAISER_L'],
['NoseSneerRight', 'noseSneerRight', '❌', 'NOSE_WRINKLER_R'],
@@ -99,10 +99,10 @@ dedicated sections for each standard.
['CheekSquintLeft', 'cheekSquintLeft', '~', 'CHEEK_RAISER_L'],
['CheekPuffRight', '~', 'Cheek_Puff_Right', 'CHEEK_PUFF_R'],
['CheekPuffLeft', '~', 'Cheek_Puff_Left', 'CHEEK_PUFF_L'],
- ['*CheekPuff', 'cheekPuff', '~', '~'],
+ [CheekPuff , 'cheekPuff', '~', '~'],
['CheekSuckRight', '❌', '~', 'CHEEK_SUCK_R'],
['CheekSuckLeft', '❌', '~', 'CHEEK_SUCK_L'],
- ['CheekSuck', '❌', 'Cheek_Suck', '~'],
+ [CheekSuck , '❌', 'Cheek_Suck', '~'],
['JawOpen', 'jawOpen', 'Jaw_Open', 'JAW_DROP'],
['MouthClosed', 'mouthClose', <>Mouth_Ape_Shape¹Negates Jaw_Open
>, 'LIPS_TOWARD'],
['JawRight', 'jawRight', 'Jaw_Right', 'JAW_SIDEWAYS_RIGHT'],
@@ -110,30 +110,30 @@ dedicated sections for each standard.
['JawForward', 'jawForward', 'Jaw_Forward', 'JAW_THRUST'],
['LipSuckUpperRight', '~', '~', 'LIP_SUCK_RT'],
['LipSuckUpperLeft', '~', '~', 'LIP_SUCK_LT'],
- ['*LipSuckUpper', 'mouthRollUpper', 'Mouth_Upper_Inside', '~'],
+ [LipSuckUpper , 'mouthRollUpper', 'Mouth_Upper_Inside', '~'],
['LipSuckLowerRight', '~', '~', 'LIP_SUCK_RB'],
['LipSuckLowerLeft', '~', '~', 'LIP_SUCK_LB'],
- ['*LipSuckLower', 'mouthRollLower', 'Mouth_Lower_Inside', '~'],
+ [LipSuckLower , 'mouthRollLower', 'Mouth_Lower_Inside', '~'],
['LipFunnelUpperRight', '~', '~', 'LIP_FUNNELER_RT'],
['LipFunnelUpperLeft', '~', '~', 'LIP_FUNNELER_LT'],
- ['*LipFunnelUpper', '~', 'Mouth_Upper_Overturn¹', '~'],
+ [LipFunnelUpper , '~', 'Mouth_Upper_Overturn¹', '~'],
['LipFunnelLowerRight', '~', '~', 'LIP_SUCK_RB'],
['LipFunnelLowerLeft', '~', '~', 'LIP_SUCK_LB'],
- ['*LipFunnelLower', '~', 'Mouth_Lower_Overturn¹', '~'],
- ['*LipFunnel', 'mouthFunnel', '~', '~'],
+ [LipFunnelLower , '~', 'Mouth_Lower_Overturn¹', '~'],
+ [LipFunnel , 'mouthFunnel', '~', '~'],
[<>LipPuckerUpperRight LipPuckerLowerRight>, '~', '~', 'LIP_PUCKER_R'],
[<>LipPuckerUpperLeft LipPuckerLowerLeft>, '~', '~', 'LIP_PUCKER_L'],
- ['*LipPucker', 'mouthPucker', 'Mouth_Pout', ''],
+ [LipPucker , 'mouthPucker', 'Mouth_Pout', ''],
['MouthUpperUpRight', 'mouthUpperUpRight', 'Mouth_Upper_Up_Right', 'UPPER_LIP_RAISER_R'],
['MouthUpperUpLeft', 'mouthUpperUpLeft', 'Mouth_Upper_Up_Left', 'UPPER_LIP_RAISER_L'],
['MouthLowerDownRight', 'mouthLowerUpRight', 'Mouth_Lower_Down_Right', 'LOWER_LIP_DEPRESSOR_R'],
['MouthLowerDownLeft', 'mouthLowerUpLeft', 'Mouth_Lower_Down_Left', 'LOWER_LIP_DEPRESSER_L'],
- ['*MouthSmileRight', 'mouthSmileRight', 'Mouth_Smile_Right', 'LIP_CORNER_PULLER_R'],
- ['*MouthSmileLeft', 'mouthSmileLeft', 'Mouth_Smile_Left', 'LIP_CORNER_PULLER_L'],
+ [MouthSmileRight , 'mouthSmileRight', 'Mouth_Smile_Right', 'LIP_CORNER_PULLER_R'],
+ [MouthSmileLeft , 'mouthSmileLeft', 'Mouth_Smile_Left', 'LIP_CORNER_PULLER_L'],
['MouthFrownRight', 'mouthFrownRight', '~', 'LIP_CORNER_DEPRESSOR_R'],
['MouthFrownLeft', 'mouthFrownLeft', '~', 'LIP_CORNER_DEPRESSOR_L'],
- ['*MouthSadRight', '~', 'Mouth_Sad_Right', '~'],
- ['*MouthSadLeft', '~', 'Mouth_Sad_Left', '~'],
+ [MouthSadRight , '~', 'Mouth_Sad_Right', '~'],
+ [MouthSadLeft , '~', 'Mouth_Sad_Left', '~'],
['MouthStretchRight', 'mouthStretchRight', '~', 'LIP_STRETCHER_R'],
['MouthStretchLeft', 'mouthStretchLeft', '~', 'LIP_STRETCHER_L'],
['MouthDimplerRight', 'mouthDimpleRight', '~', 'DIMPLER_R'],
@@ -154,7 +154,7 @@ dedicated sections for each standard.
/>
* ¹ Requires the use of a specialized animation setup to work with VRCFT V2 tracking.
-* \* Blended Shape.
+* Bold Blended Shape.
### Standard Documentation
diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx
index 416d4991..8eb61572 100644
--- a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx
+++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx
@@ -54,60 +54,60 @@ refer to [Admonitions](#admonitions).
*BrowDownRight CheekSquintRight EyeSquintRightWhile EyeClosedRight
>, '~', 'Eye_Right_squeeze¹'],
- [<>*BrowDownLeft CheekSquintLeft EyeSquintLeftWhile EyeClosedLeft
>, '~', 'Eye_Left_squeeze¹'],
- ['EyeWideRight', '~', 'Eye_Right_Wide'],
- ['EyeWideLeft', '~', 'Eye_Left_Wide'],
- ['EyeDilationRight', '~', 'Eye_Right_Dilation'],
- ['EyeDilationLeft', '~', 'Eye_Left_Dilation'],
- ['EyeConstrictRight', '~', 'Eye_Right_Constrict'],
- ['EyeConstrictLeft', '~', 'Eye_Left_Constrict'],
- ['CheekPuffRight', '~', 'Cheek_Puff_Right'],
- ['CheekPuffLeft', '~', 'Cheek_Puff_Left'],
- [<>CheekSuckRight CheekSuckLeft>, 'CheekSuck', 'Cheek_Suck'],
- ['JawOpen', '~', 'Jaw_Open'],
- ['MouthClosed', '~', <>Mouth_Ape_Shape¹Negates Jaw_Open
>],
- ['JawRight', '~', 'Jaw_Right'],
- ['JawLeft', '~', 'Jaw_Left'],
- ['JawForward', '~', 'Jaw_Forward'],
- [<>LipSuckUpperRight LipSuckUpperLeft>, 'LipSuckUpper', 'Mouth_Upper_Inside'],
- [<>LipSuckLowerRight LipSuckLowerLeft>, 'LipSuckLower', 'Mouth_Lower_Inside'],
- [<>LipFunnelUpperRight LipFunnelUpperLeftWhile MouthUpperUp
>, 'LipFunnelUpper', 'Mouth_Upper_Overturn¹'],
- [<>LipFunnelLowerRight LipFunnelLowerLeftWhile MouthLowerDown
>, 'LipFunnelLower', 'Mouth_Lower_Overturn¹'],
- [<>LipPuckerUpperRight LipPuckerUpperLeft LipPuckerLowerRight LipPuckerLowerLeft>, 'LipPucker', 'Mouth_Pout'],
- ['MouthUpperUpRight', '~', 'Mouth_Upper_Up_Right'],
- ['MouthUpperUpLeft', '~', 'Mouth_Upper_Up_Left'],
- ['MouthLowerDownRight', '~', 'Mouth_Lower_Down_Right'],
- ['MouthLowerDownLeft', '~', 'Mouth_Lower_Down_Left'],
- [<>MouthCornerPullerRight MouthCornerSlantRight>, 'MouthSmileRight', 'Mouth_Smile_Right'],
- [<>MouthCornerPullerLeft MouthCornerSlantLeft>, 'MouthSmileLeft', 'Mouth_Smile_Left'],
- [<>MouthFrownRight MouthStretchRight>, 'MouthSadRight', 'Mouth_Sad_Right'],
- [<>MouthFrownRight MouthStretchRight>, 'MouthSadLeft', 'Mouth_Sad_Left'],
- ['MouthRaiserLower', 'mouthShrugLower', 'Mouth_Lower_Overlay'],
- ['TongueOut', 'tongueOut', <>Tongue_LongStep1 Tongue_LongStep2>],
- ['TongueUp', '~', 'Tongue_Up'],
- ['TongueDown', '~', 'Tongue_Down'],
- ['TongueRight', '~', 'Tongue_Right'],
- ['TongueLeft', '~', 'Tongue_Left'],
- ['TongueRoll', '~', 'Tongue_Roll'],
+ ['EyeLookUpRight', 'Eye_Right_Look_Up'],
+ ['EyeLookDownRight', 'Eye_Right_Look_Down'],
+ ['EyeLookInRight', 'Eye_Right_Left'],
+ ['EyeLookOutRight', 'Eye_Right_Right'],
+ ['EyeLookUpLeft', 'Eye_Left_Look_Up'],
+ ['EyeLookDownLeft', 'Eye_Left_Look_Down'],
+ ['EyeLookInLeft', 'Eye_Left_Right'],
+ ['EyeLookOutLeft', 'Eye_Left_Left'],
+ ['EyeClosedRight', 'Eye_Right_Blink'],
+ ['EyeClosedLeft', 'Eye_Left_Blink'],
+ [<>BrowDownRight CheekSquintRight EyeSquintRight >, 'Eye_Right_squeeze¹'],
+ [<>BrowDownLeft CheekSquintLeft EyeSquintLeft >, 'Eye_Left_squeeze¹'],
+ ['EyeWideRight', 'Eye_Right_Wide'],
+ ['EyeWideLeft', 'Eye_Left_Wide'],
+ ['EyeDilationRight', 'Eye_Right_Dilation'],
+ ['EyeDilationLeft', 'Eye_Left_Dilation'],
+ ['EyeConstrictRight', 'Eye_Right_Constrict'],
+ ['EyeConstrictLeft', 'Eye_Left_Constrict'],
+ ['CheekPuffRight', 'Cheek_Puff_Right'],
+ ['CheekPuffLeft', 'Cheek_Puff_Left'],
+ [CheekSuck' , 'Cheek_Suck'],
+ ['JawOpen', 'Jaw_Open'],
+ ['MouthClosed', <>Mouth_Ape_Shape¹Negates Jaw_Open
>],
+ ['JawRight', 'Jaw_Right'],
+ ['JawLeft', 'Jaw_Left'],
+ ['JawForward', 'Jaw_Forward'],
+ [LipSuckUpper , 'Mouth_Upper_Inside'],
+ [LipSuckLower , 'Mouth_Lower_Inside'],
+ [LipFunnelUpper , <>Mouth_Upper_OverturnWhile Mouth_Upper_Up_Left While Mouth_Upper_Up_Right
>],
+ [LipFunnelLower , <>Mouth_Lower_OverturnWhile Mouth_Lower_Down_Left While Mouth_Lower_Down_Right
>],
+ [LipPucker , 'Mouth_Pout'],
+ ['MouthUpperUpRight', 'Mouth_Upper_Up_Right'],
+ ['MouthUpperUpLeft', 'Mouth_Upper_Up_Left'],
+ ['MouthLowerDownRight', 'Mouth_Lower_Down_Right'],
+ ['MouthLowerDownLeft', 'Mouth_Lower_Down_Left'],
+ [MouthSmileRight , 'Mouth_Smile_Right'],
+ [MouthSmileLeft , 'Mouth_Smile_Left'],
+ [MouthSadRight , 'Mouth_Sad_Right'],
+ [MouthSadLeft , 'Mouth_Sad_Left'],
+ ['MouthRaiserLower', 'Mouth_Lower_Overlay'],
+ ['TongueOut', <>Tongue_LongStep1 Tongue_LongStep2>],
+ ['TongueUp', 'Tongue_Up'],
+ ['TongueDown', 'Tongue_Down'],
+ ['TongueRight', 'Tongue_Right'],
+ ['TongueLeft', 'Tongue_Left'],
+ ['TongueRoll', 'Tongue_Roll'],
]}
/>
* ¹ More detailed reasoning is elaborated in [Admonitions](#admonitions)
+* Bold Blended Shape.
### Admonitions {#admonitions}
From 5b5b69651b66e64f0b314f2ce71d0205a250a706 Mon Sep 17 00:00:00 2001
From: regzo2
Date: Mon, 25 Sep 2023 17:45:22 -0400
Subject: [PATCH 11/12] Fixed Brow being in a few 'Lower Face' slots
---
docs/hardware/interface-compabilities.mdx | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/hardware/interface-compabilities.mdx b/docs/hardware/interface-compabilities.mdx
index bb93419f..34011b7e 100644
--- a/docs/hardware/interface-compabilities.mdx
+++ b/docs/hardware/interface-compabilities.mdx
@@ -103,11 +103,11 @@ and expressiveness.
'~',
<>Jaw Lip Mouth Cheek>,
'~',
- <>Brow Jaw Lip Mouth Cheek Nose>,
- <>Brow Jaw Lip Mouth Cheek Nose>,
+ <>Jaw Lip Mouth Cheek Nose>,
+ <>Jaw Lip Mouth Cheek Nose>,
'~',
'~',
- <>Brow Jaw Lip Mouth Cheek Nose>,
+ <>Jaw Lip Mouth Cheek Nose>,
<>Jaw Lip Mouth Cheek Nose>,
'~',
'~',
From 4ec6257fe0e982fc0d990b50ef7efc492b2781e2 Mon Sep 17 00:00:00 2001
From: kusomaigo
Date: Mon, 25 Sep 2023 21:53:36 -0400
Subject: [PATCH 12/12] add definitions and tiny wording adjustment to
interface-compatibilities
---
...ties.mdx => interface-compatibilities.mdx} | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
rename docs/hardware/{interface-compabilities.mdx => interface-compatibilities.mdx} (87%)
diff --git a/docs/hardware/interface-compabilities.mdx b/docs/hardware/interface-compatibilities.mdx
similarity index 87%
rename from docs/hardware/interface-compabilities.mdx
rename to docs/hardware/interface-compatibilities.mdx
index 34011b7e..a0d1f28b 100644
--- a/docs/hardware/interface-compabilities.mdx
+++ b/docs/hardware/interface-compatibilities.mdx
@@ -10,7 +10,7 @@ import FilterTable from '@site/src/components/FilterTable.tsx';
***
-:::note How to read this section
+:::note How to read this page
This page goes over generalized functions, features, and
tracking quality of each interface, and what they can do in
@@ -19,8 +19,15 @@ interfaces please refer to their dedicated sections.
Various aspects of the interfaces are given a rank from 1-10, indicating
their quality or effectiveness. The rankings are given by ranking devices
-relative to each other based on various criteria such as tracking quality
-and expressiveness.
+relative to each other based on criteria such as expressibility and
+tracking quality.
+
+**Expressibility**: The range of motions/expressions that can be tracked. The higher
+the expressibility, the more face details the interface reports tracked values for.
+
+**Tracking Quality**: How well the interface tracks its reported range of motions.
+The higher the tracking quality, the better control most users will have over the
+range of motions/expressions supported by the interface.
:::
@@ -52,7 +59,7 @@ and expressiveness.
['Pupil Dilation', '✔', '~', '✔', '❌', '❌', '❌', '❌', '❌', '~', '❌', '❌', '~', '✔'],
[
'Upper Face Expression Support',
- <>Eye Widen Eye Squeeze Brow(Emulated)>,
+ <>Widen Squeeze Brow(Emulated)>,
'~',
<>Widen(Emulated) Squeeze(Emulated) >,
<>Widen Squint Brow>,
@@ -67,7 +74,7 @@ and expressiveness.
'~'
],
[
- 'Upper Face Expressability',
+ 'Upper Face Expressibility',
'5/10',
'~',
'N/A',
@@ -115,7 +122,7 @@ and expressiveness.
'~'
],
[
- 'Lower Face Expressability',
+ 'Lower Face Expressibility',
'~',
'7/10',
'~',