[X3D-Ecosystem] Attachment to Blender armature/bones
John Carlson
yottzumm at gmail.com
Sat Jul 6 14:53:40 PDT 2024
Apparently between 20c and 20e, the HAnimSites are named differently?
Explain?
Interesting, but I'm unsure of effect on results?
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-ecosystem_web3d.org/attachments/20240706/c0f4e14f/attachment-0001.html>
More information about the X3D-Ecosystem
mailing list