<div dir="auto">My left forearm showed up in another video log, so I conclude that I should send my artificial forearms without any conditional test, and after I send everything else.  I’m not too hopeful until I change that, and also do IK and calibrate the torso (hips and shoulders).</div><div dir="auto"><br></div><div dir="auto">Meanwhile, we should also consider encoding motion in FSW and/or SWU (SignWriting standards).  There’s a website that converts FSW and SWU to SVG and PNG, and TrueType as well, I think.  Mainly we should focus on this for the MetaVerse in terms of accessibility, if not transmitting signs directly as body motion.</div><div dir="auto"><br></div><div dir="auto">The nice thing about FSW and SWU is they aren’t tied to one language.</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Mon, Apr 14, 2025 at 6:12 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">I discovered my artificial forearm segments weren’t being rotated in X_ITE, or logged, so that’s a good reason why Jin mocap’s hands and forearms aren’t moving while I was swinging my arms around!  I looked at the video client code, and the method call is there, so I’ll start logging the video client output to see what’s going on.   Or I can just try to figure out why there’s no rotation after the client data is sent to X_ITE via the server.   Perhaps I need to send more data about the segments I’ve been ignoring (side “segments” and club hand poses).</div><div dir="auto"><br></div><div dir="auto">There’s definitely a disconnect between hand data (left and right) and pose or core data, but I thought I had patched it by connecting the elbow to the radiocarpal in the hand data (the bone data doesn’t contain coordinates).</div><div dir="auto"><br></div><div dir="auto">I had to take a break after being beat down esteem-wise to the point where my wife was affected (it was about 40 minutes of horror).   But I’ve known this for 11 years, I’m still cluing in.  </div><div dir="auto"><div dir="auto"><a href="https://allpoetry.com/poems/read_by/yottzumm" target="_blank">https://allpoetry.com/poems/read_by/yottzumm</a></div><div dir="auto"><br></div><div dir="auto">It certainly appears to be easier when the video  client is controlling everything without rotations.  Maybe I’ll get the rotations into the client!</div></div><div dir="auto"><div dir="auto"><br></div><div dir="auto">On Mon, Apr 14, 2025 at 2:05 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><div class="gmail_quote" dir="auto"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="ltr">Here's a better file with l_ and r_ where appropriate.  The animations are getting even better.  Still a bit jittery,but at least something's ,moving!</div><div dir="ltr"><div><br></div><div>John</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 14, 2025 at 1:37 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="ltr">Attached is a list of parent/child or source/target relationships, perhaps some with joints, perhaps some with feature points, or perhaps something entirely different.  Some of these come from HAnim, and some come from OpenCV/MediaPipeHolistic.  I am seeing that I don't distinguish left from right in the hands and wrist, so that's a major problem!<div><br></div><div>I am hoping someone can provide replacements with something from HAnim, for example, I don't know of replacements for ears ???, mouth (tongue?, jaw?), and maybe a few others.  I'm guessing someone could send me the HAnim V2.1 feature points, and everything would be cool.</div><div><br></div><div>I'm looking for something to replace l and r foot_index with, perhaps I'll grab something from LOA1.</div><div><br></div><div>I fully realize I am missing a lot of backbone joints.  This is because the tool does not detect the backbone at all, but rather the shoulders and the hips.  So pardon if I threw in some approximations with vc7 and the sacroiliac.  Also, the head is not attached to the body.  This doesn't matter because it is in the X3D file.  I am merely finding rotations of target nodes around a source node, potentially, skipping a lot of nodes.</div><div><br></div><div>I am progressing with some of the live mocap stuff, achieving a bit of wiggling now.  Apparently, I was not using <a href="http://node.id" target="_blank">node.id</a> (my thing), and instead I was using node.DEF.</div><div><br></div><div>So I'm pretty sure I have access to feature points or sites with Joe's Jin skeleton, so I'm all for calling out some of those for targets for the joint to rotate.  I am not aware that I'm using any Segment DEFs.</div><div><br></div><div>Comments on my joint rotation finding code welcome!</div><div><br></div><div>const updateJointRotation = function(sourceNode, sourceJoint, targetNode, targetJoint) {<br>        if (!sourceJoint.center) {  // Joint center should be set in X3D file<br>                LOG("Center isn't set", JSON.stringify(sourceNode));<br>        } else {<br>                let newRay = {<br>                        x: targetNode.x - sourceJoint.center.x,<br>                        y: targetNode.y - sourceJoint.center.y,<br>                        z: targetNode.z - sourceJoint.center.z<br>                };<br>                newRay = normalize(newRay);<br>                if (typeof sourceNode.oldRay === 'undefined') {<br>                        sourceNode.oldRay = newRay;<br>                }<br>                let angle = angleBetweenVectors(sourceNode.oldRay, newRay);<br>                let axis = crossProduct(sourceNode.oldRay, newRay);<br>                axis.x = axis[0];<br>                axis.y = axis[1];<br>                axis.z = axis[2];<br>                axis = normalize(axis);<br>                if (!isNaN(angle)) {<br>                        sourceJoint.rotation = new SFRotation( axis.x, axis.y, axis.z, angle);<br>                        if (sourceJoint.rotation !== {}) {<br>                                if (angle !== 0) {<br>                                        LOG(sourceNode.DEF, targetNode.DEF, angle);<br>                                }<br>                        }<br>                }<br>                sourceNode.oldRay = newRay;<br>        }<br>}</div><div><br></div><div>Hmm!</div><div><br></div><div>John</div></div>
</blockquote></div>
</blockquote></div></div>
</blockquote></div></div>