[x3d-public] HAnim, alternate Text encodings for deaf.

John Carlson yottzumm at gmail.com
Wed Apr 16 17:17:50 PDT 2025


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).

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.

The nice thing about FSW and SWU is they aren’t tied to one language.

John

On Mon, Apr 14, 2025 at 6:12 AM John Carlson <yottzumm at gmail.com> wrote:

> 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).
>
> 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).
>
> 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.
> https://allpoetry.com/poems/read_by/yottzumm
>
> It certainly appears to be easier when the video  client is controlling
> everything without rotations.  Maybe I’ll get the rotations into the client!
>
> On Mon, Apr 14, 2025 at 2:05 AM John Carlson <yottzumm at gmail.com> wrote:
>
>> 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!
>>
>> John
>>
>> On Mon, Apr 14, 2025 at 1:37 AM John Carlson <yottzumm at gmail.com> wrote:
>>
>>> 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!
>>>
>>> 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.
>>>
>>> I'm looking for something to replace l and r foot_index with,
>>> perhaps I'll grab something from LOA1.
>>>
>>> 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.
>>>
>>> I am progressing with some of the live mocap stuff, achieving a bit of
>>> wiggling now.  Apparently, I was not using node.id (my thing), and
>>> instead I was using node.DEF.
>>>
>>> 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.
>>>
>>> Comments on my joint rotation finding code welcome!
>>>
>>> const updateJointRotation = function(sourceNode, sourceJoint,
>>> targetNode, targetJoint) {
>>>         if (!sourceJoint.center) {  // Joint center should be set in X3D
>>> file
>>>                 LOG("Center isn't set", JSON.stringify(sourceNode));
>>>         } else {
>>>                 let newRay = {
>>>                         x: targetNode.x - sourceJoint.center.x,
>>>                         y: targetNode.y - sourceJoint.center.y,
>>>                         z: targetNode.z - sourceJoint.center.z
>>>                 };
>>>                 newRay = normalize(newRay);
>>>                 if (typeof sourceNode.oldRay === 'undefined') {
>>>                         sourceNode.oldRay = newRay;
>>>                 }
>>>                 let angle = angleBetweenVectors(sourceNode.oldRay,
>>> newRay);
>>>                 let axis = crossProduct(sourceNode.oldRay, newRay);
>>>                 axis.x = axis[0];
>>>                 axis.y = axis[1];
>>>                 axis.z = axis[2];
>>>                 axis = normalize(axis);
>>>                 if (!isNaN(angle)) {
>>>                         sourceJoint.rotation = new SFRotation( axis.x,
>>> axis.y, axis.z, angle);
>>>                         if (sourceJoint.rotation !== {}) {
>>>                                 if (angle !== 0) {
>>>                                         LOG(sourceNode.DEF,
>>> targetNode.DEF, angle);
>>>                                 }
>>>                         }
>>>                 }
>>>                 sourceNode.oldRay = newRay;
>>>         }
>>> }
>>>
>>> Hmm!
>>>
>>> John
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250416/567fb77f/attachment.html>


More information about the x3d-public mailing list