[x3d-public] Attachment to Blender armature/bones
John Carlson
yottzumm at gmail.com
Sat Jul 6 15:36:22 PDT 2024
I’m guessing I should treat HAnimSegment more like Group and Transform
rather than HAnimJoint and HAnimSite. At least I’ll try that. Also, I’ll
double check HAnimSite locations. It seems like each of these, including
HAnimHumanoid, may need to be treated separately.
I was looking at Jin LOA1 previously, and the geometry was placed right, so
I wasn’t too worried, now, with animation, there may be cause for concern.
I don’t know if HAnimSegment will have any effect on the transform
hierarchy, but getting them placed right is important. Perhaps the
HAnimSite needs to look directly at the HAnimJoint or the matrix path to
root instead of
the intermediate HAnimSegment, or matrix_local.
I’ll be using Jin 20 e for now.
John
On Sat, Jul 6, 2024 at 4:48 PM John Carlson <yottzumm at gmail.com> wrote:
> I am also well aware that the HAnimSegments are not showing up in the
> right location. Since they have no transform data, they are showing up at
> 0,0,0 (the default transform). But that's not what Blender says their
> location is, so weird.
> I will look at current Jin 20e. I don't expect to see anything different
> than 20 c.
>
> John
>
> On Sat, Jul 6, 2024 at 2:50 PM Joe D Williams <joedwil at earthlink.net>
> wrote:
>
>> 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/aeb32d8a/attachment.html>
More information about the x3d-public
mailing list