[x3d-public] Attachment to Blender armature/bones

Joe D Williams joedwil at earthlink.net
Sat Jul 6 12:50:34 PDT 2024


Hi  John and All,  
Again, that evolution of jinloa4, Humanoid4.x3d has some  fine points. There are steps to make a skin work with a skeleton, see below, please. Follow that process and we can activate any skin using any skeleton. 
The so-called blender armature is just an elementary archaic preset and has no real value because the gui is also presented in those terms and that is not hanim enough.  
   
To use blender or any for anything else we want the blender gui presented in hanim terms using the hanim hierarchy so you can stand a chance of hanim skeleton import to blender, do whatever, mostly geometry and example poses, then export to your x3d hanim model to actually play in the virtuality.  
When you can get a good hanim skeleton in blender GUI, add geometry using blender, then use the gltf to export back to your original hanim avatar to operate in the x3d scene environment.   
For animation, If you are going to use blender to create animations, then it needs to export real axis-angle or unit quaternion interpolators (likely using gltf) to  get it back into x3d and tune for realtime.   
Likewise for using blender to help with detailed work connecting skin to skeleton, get the index and weight data blender can suppluy using gltf export to x3d.  
Actually, make the desired pose in blender, then export the skeleton state and use that to take control of the motion animations in the x3d tool.
   
The blender avatar is not structured for the hanim skeleton including joint centers, segment connectors, and site translations. It literally uses one end of the bone to designate a joint center, and only wants to use a shallow hierarchy, and does not know about interactivity or realtime event system.   
   
For the Humaoid4, again, some nice additions and thanks for getting me to look a the transforms under segment, and assigning a translation to Segment.again.
The Segment should be a default transform and each shape should have its own translation (and then the line coordinates work) so thanks, and keep it as you had it:) 

Attached is latest loa4 minimum. If we get the blender hierarchy gui looking like this (no skeleton geometry) it is a big advance. 

All Best,
Joe




-----Original Message-----
From: John Carlson <yottzumm at gmail.com>
Sent: Jul 6, 2024 8:39 AM
To: X3D Ecosystem public discussion <x3d-ecosystem at web3d.org>, Katy Schildmeyer KS APPAREL DESIGN <katy at ksappareldesign.com>, Carol McDonald <cemd2 at comcast.net>, Joe D Williams <joedwil at earthlink.net>
Subject: Attachment to Blender armature/bones

So from this video, it appears that one can attach segments to Blender bones (well, armature in the hierarchy):
 
https://coderextreme.net/AttachmentToBones.mp4 (Humanoid4.x3d minus skin weights).
 
I'm not quite sure which is farther ahead at this point, the importer (above) or my sample script, localfinal.py.
 
I guess the next step is to attach geometry, sites, groups and transforms to segments.
 
Should we follow a non-Blender bone or a Blender bone path?
 
It still seems like we need to investigate animation some more as well.
 
Hmm!
 
John


 
 
X3DJSONLD/blend/localtest/Humanoid4.x3d at master · coderextreme/X3DJSONLD (github.com) (https://github.com/coderextreme/X3DJSONLD/blob/master/blend/localtest/Humanoid4.x3d)
> This has skin that doesn't move--maybe someone can add skin weights   

The skin is there, but not animated. This skin from a different skeleton. You get to do the final point to joint rigging.  The most simple skin consists of triangles made from the set surface feature points. This skin uses V1 feature points and some added, but does not include all the V2 feature points. So, the skin either needs to  be re-triangulated adding new V2 points, and connected to the skeleton, or, using hints from the V1 skeleton that this skin was last used on, simply assign these points to joints. Please just go ahead and add the new V2 points, then connect it up.    
                   
The x3d way of documenting this step in the"rigging" process is using the Joint node. The fields are skinCoordIndex and skinCoordWeight where the skinCoordIndex is a list of numbers in order of appearance in the Coord point list of x y z coordinates of the skin geometry and the skinCoordWeight is the 0 to 1 scaling value that is to be applied to the corresponding index. More than 1 Joint may produce a motion to the point, so the index can appear multiple times, and if multiple, the weights defined for that index should total to be max 1. 

For example, for the geometry associated with left arm, assign these indexes to the left shoulder Joint with all weights=1. A roll action of the shoulder joint, 0 0 -1 1, will move those vertices away from the body, ccw to  the viewer. 
   
Most authoring tools will offer a method of defining this point to joint data where a shading graphic allows you to give a general definition of which vertices are controlled by which Joints. This will give a basis for getting the skin to operate the way you wish over a range of postures and motions you design. Whatever the process, the end result is that every point is assigned to at least one Joint. In general, the farthest from the Joint center has a higher weight and nearest has a lower weight. The actual motion of a point depends on the actual joint rotation and the radial distance of the point from the Joint center. If multiple joints, then the result is accumulated. Achieving hifi results means careful attention to the relationship of the Joint center locations with respect to the animated mesh points.  

Next note that the user code form for x3d joint to point bindings is to list the index and weight in fields of the Joint node. For the closest to the metal form this data for each frame is stored where each vertex data point includes a list of values applied by each joint to be applied to that point for that frame to accomplish the motion. For this reason and others, the non-x3d authoring system may store the data in many forms, most never intended to be actually exposed and editable by the author.  
However, under the covers there is always a list of these connections in some form. If you work with a reasonable number of points for your skin, distributed effectively, then some fine tuning can be done with a simple text editor and x3d player. 
   
Thanks and Best, 
Joe




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20240706/9f783a28/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: JinScaledV2L1LOA4MinimumSkeleton20e.zip
Type: application/x-zip-compressed
Size: 8916 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20240706/9f783a28/attachment-0001.bin>


More information about the x3d-public mailing list