[x3d-public] Attachment to Blender armature/bones

John Carlson yottzumm at gmail.com
Sat Jul 6 15:51:07 PDT 2024


In particular, I am concerned that I am possibly using the name instead of
the DEF for exporting HAnimSites, so I will have to include both names,
with and without _pt, etc. to identify empties as HAnimSites.  This may
slow down exports depending on the python implementation of sets.  Surely,
creating such a larger set will slow things down a bit.  I am not sure how
often this set is created though.

I am also thinking I need to include aliases from X3DUOM or the standard in
my sites list.

John

On Sat, Jul 6, 2024 at 4:53 PM John Carlson <yottzumm at gmail.com> wrote:

> 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-public_web3d.org/attachments/20240706/af63ccd0/attachment.html>


More information about the x3d-public mailing list