From a25ce3a25535815d97d21b6ff318334978d493a0 Mon Sep 17 00:00:00 2001 From: spatialfree Date: Tue, 30 Jan 2024 21:22:41 -0500 Subject: [PATCH] braille visualizer fix --- sk_demo/src/Mono.cs | 183 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 141 insertions(+), 42 deletions(-) diff --git a/sk_demo/src/Mono.cs b/sk_demo/src/Mono.cs index b954b34..0408478 100644 --- a/sk_demo/src/Mono.cs +++ b/sk_demo/src/Mono.cs @@ -51,33 +51,141 @@ public class Mono { // "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}) + 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 + }) }; @@ -113,8 +221,8 @@ public class Mono { monoNet.send = true; } - int xi = (int)(rig.hand_1.palm.position.x * 20f); - xi = Math.Clamp(xi + 10, 0, 26); + int xi = (int)(rig.hand_1.palm.position.x * 25f); + xi = Math.Clamp(xi + 4, 0, 26); Matrix palm_ori = rig.hand_1.palm.ToMatrix(); Vec3 thumb_tip = palm_ori.Inverse * rig.hand_1.Get(FingerId.Thumb, JointId.Tip).position; @@ -147,24 +255,15 @@ public class Mono { // 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 - // ); + float x_offset = (i % 2) * spacing; + float y_offset = (i / 2) * -spacing; 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), + rig.hand_1.palm.position + V.XYZ(x_offset, y_offset, 0) * rig.head_ori, 0.01f - ) * Matrix.R(rig.head_ori), + ), Color.White ); }