visual braille feedback for demonstration
This commit is contained in:
parent
faa2c04311
commit
31ea612af5
2 changed files with 99 additions and 10 deletions
|
@ -21,14 +21,68 @@ public class Mono {
|
||||||
|
|
||||||
int last_xi = 0;
|
int last_xi = 0;
|
||||||
|
|
||||||
|
public class Character {
|
||||||
|
public string character;
|
||||||
|
public int[] dots;
|
||||||
|
public Character(string character, int[] dots) {
|
||||||
|
this.character = character;
|
||||||
|
this.dots = dots;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// braille dots
|
||||||
|
// {{0, 0,
|
||||||
|
// 0, 0,
|
||||||
|
// 0, 0
|
||||||
|
// }}, // _
|
||||||
|
// {{1, 0,
|
||||||
|
// 0, 0,
|
||||||
|
// 0, 0
|
||||||
|
// }}, // a
|
||||||
|
// {{1, 0,
|
||||||
|
// 1, 0,
|
||||||
|
// 0, 0
|
||||||
|
// }}, // b
|
||||||
|
|
||||||
// alphabet a-z
|
// alphabet a-z
|
||||||
string[] characters = new string[] {
|
// string[] characters = new string[] {
|
||||||
"_", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
|
// "_", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
|
||||||
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
|
// "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
|
||||||
"u", "v", "w", "x", "y", "z"
|
// "u", "v", "w", "x", "y", "z"
|
||||||
|
// };
|
||||||
|
Character[] characters = new Character[] {
|
||||||
|
new Character("_", new int[] {0, 0, 0, 0, 0, 0}),
|
||||||
|
new Character("a", new int[] {1, 0, 0, 0, 0, 0}),
|
||||||
|
new Character("b", new int[] {1, 0, 1, 0, 0, 0}),
|
||||||
|
new Character("c", new int[] {1, 1, 0, 0, 0, 0}),
|
||||||
|
new Character("d", new int[] {1, 1, 0, 1, 0, 0}),
|
||||||
|
new Character("e", new int[] {1, 0, 0, 1, 0, 0}),
|
||||||
|
new Character("f", new int[] {1, 1, 1, 0, 0, 0}),
|
||||||
|
new Character("g", new int[] {1, 1, 1, 1, 0, 0}),
|
||||||
|
new Character("h", new int[] {1, 0, 1, 1, 0, 0}),
|
||||||
|
new Character("i", new int[] {0, 1, 1, 0, 0, 0}),
|
||||||
|
new Character("j", new int[] {0, 1, 1, 1, 0, 0}),
|
||||||
|
new Character("k", new int[] {1, 0, 0, 0, 1, 0}),
|
||||||
|
new Character("l", new int[] {1, 0, 1, 0, 1, 0}),
|
||||||
|
new Character("m", new int[] {1, 1, 0, 0, 1, 0}),
|
||||||
|
new Character("n", new int[] {1, 1, 0, 1, 1, 0}),
|
||||||
|
new Character("o", new int[] {1, 0, 0, 1, 1, 0}),
|
||||||
|
new Character("p", new int[] {1, 1, 1, 0, 1, 0}),
|
||||||
|
new Character("q", new int[] {1, 1, 1, 1, 1, 0}),
|
||||||
|
new Character("r", new int[] {1, 0, 1, 1, 1, 0}),
|
||||||
|
new Character("s", new int[] {0, 1, 1, 0, 1, 0}),
|
||||||
|
new Character("t", new int[] {0, 1, 1, 1, 1, 0}),
|
||||||
|
new Character("u", new int[] {1, 0, 0, 0, 1, 1}),
|
||||||
|
new Character("v", new int[] {1, 0, 1, 0, 1, 1}),
|
||||||
|
new Character("w", new int[] {0, 1, 1, 1, 0, 1}),
|
||||||
|
new Character("x", new int[] {1, 1, 0, 0, 1, 1}),
|
||||||
|
new Character("y", new int[] {1, 1, 0, 1, 1, 1}),
|
||||||
|
new Character("z", new int[] {1, 0, 0, 1, 1, 1})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void Init() {
|
public void Init() {
|
||||||
rig.Init();
|
rig.Init();
|
||||||
|
|
||||||
|
@ -61,8 +115,17 @@ public class Mono {
|
||||||
|
|
||||||
int xi = (int)(rig.hand_1.palm.position.x * 20f);
|
int xi = (int)(rig.hand_1.palm.position.x * 20f);
|
||||||
xi = Math.Clamp(xi + 10, 0, 26);
|
xi = Math.Clamp(xi + 10, 0, 26);
|
||||||
Log.Info($"xi: {xi}");
|
|
||||||
|
Matrix palm_ori = rig.hand_1.palm.ToMatrix();
|
||||||
|
Vec3 thumb_tip = palm_ori.Inverse * rig.hand_1.Get(FingerId.Thumb, JointId.Tip).position;
|
||||||
|
Vec3 index_knuckle = palm_ori.Inverse * rig.hand_1.Get(FingerId.Index, JointId.KnuckleMajor).position;
|
||||||
|
if (thumb_tip.z > index_knuckle.z - 1.5f * U.cm) {
|
||||||
|
Log.Info("thumb is up z");
|
||||||
|
xi = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (xi != last_xi) {
|
if (xi != last_xi) {
|
||||||
|
Log.Info($"xi: {xi}");
|
||||||
last_xi = xi;
|
last_xi = xi;
|
||||||
monoNet.value = xi;
|
monoNet.value = xi;
|
||||||
monoNet.send = true;
|
monoNet.send = true;
|
||||||
|
@ -71,7 +134,7 @@ public class Mono {
|
||||||
// HUD
|
// HUD
|
||||||
// void Text.Add(string text, Matrix transform, TextAlign position = TextAlign.Center, TextAlign align = TextAlign.Center, float offX = 0, float offY = 0, float offZ = 0)
|
// void Text.Add(string text, Matrix transform, TextAlign position = TextAlign.Center, TextAlign align = TextAlign.Center, float offX = 0, float offY = 0, float offZ = 0)
|
||||||
Text.Add(
|
Text.Add(
|
||||||
characters[last_xi],
|
characters[last_xi].character,
|
||||||
Matrix.TRS(
|
Matrix.TRS(
|
||||||
rig.hand_1.palm.position + V.XYZ(0, 0.1f, 0),
|
rig.hand_1.palm.position + V.XYZ(0, 0.1f, 0),
|
||||||
rig.head_ori * Quat.FromAngles(0, 180, 0),
|
rig.head_ori * Quat.FromAngles(0, 180, 0),
|
||||||
|
@ -81,6 +144,31 @@ public class Mono {
|
||||||
TextAlign.Center,
|
TextAlign.Center,
|
||||||
0, 0, 0
|
0, 0, 0
|
||||||
);
|
);
|
||||||
|
// show the braille dots(spheres) above the text
|
||||||
|
for (int i = 0; i < 6; i++) {
|
||||||
|
float spacing = 0.015f;
|
||||||
|
float x_offset = i > 2 ? spacing * 0.5f : -spacing * 0.5f;
|
||||||
|
float y_offset = i > 2 ? (i - 3) * spacing : i * spacing;
|
||||||
|
// Mesh.Sphere.Draw(
|
||||||
|
// mat.mono,
|
||||||
|
// Matrix.TS(
|
||||||
|
//
|
||||||
|
// 0.1f
|
||||||
|
// ),
|
||||||
|
// Color.White
|
||||||
|
// );
|
||||||
|
if (characters[last_xi].dots[i] == 1) {
|
||||||
|
Mesh.Sphere.Draw(
|
||||||
|
mat.mono,
|
||||||
|
Matrix.TS(
|
||||||
|
// rig.hand_1.palm.position + V.XYZ(x_offset, 0.1f, 0) + V.XYZ(0, 0.1f, 0) * i,
|
||||||
|
rig.hand_1.palm.position + V.XYZ(0, 0.2f, 0) + V.XYZ(x_offset, y_offset, 0),
|
||||||
|
0.01f
|
||||||
|
) * Matrix.R(rig.head_ori),
|
||||||
|
Color.White
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// WORLD
|
// WORLD
|
||||||
mesh_room.Draw(
|
mesh_room.Draw(
|
||||||
|
|
9
todo.md
9
todo.md
|
@ -1,14 +1,15 @@
|
||||||
ethan :
|
ethan :
|
||||||
[ ] bryan fix monado head bob/northstar
|
[x] bryan fix monado head bob/northstar
|
||||||
[x] get the stereokit project into the repo
|
[x] get the stereokit project into the repo
|
||||||
|
|
||||||
[ ] try cycling (left-- center(stay) right++)
|
[ ] try cycling (left-- center(stay) right++)
|
||||||
[ ] thumb lift for char input
|
[x] thumb lift for char input
|
||||||
|
|
||||||
[x] for the servo frame allow for slide *in out adjustablity
|
[x] for the servo frame allow for slide *in out adjustablity
|
||||||
|
|
||||||
niko :
|
niko :
|
||||||
[ ] finger pad bridge
|
[x] finger pad bridge
|
||||||
[ ] flatten servo bottoms by adding material
|
[x] flatten servo bottoms by adding material
|
||||||
|
|
||||||
|
|
||||||
*nice to have:
|
*nice to have:
|
||||||
|
|
Loading…
Add table
Reference in a new issue