[x3d-public] Including metadata within an HAnim model

Don Brutzman don.brutzman at gmail.com
Fri Mar 13 11:54:28 PDT 2026


Dick, Aaron and I had good discussions during today's X3D Standards Working
Group meeting.

One topic of shared interest:

   - Mantis 1527: Including metadata within an HAnim model.
   - https://mantis.web3d.org/view.php?id=1527


The metadata structure in an HAnim is relatively simple:
- HAnimHumanoid *info *field: paired "name=value" string array
- All of the HAnim nodes have a simple *description *field


   - HAnimArchitecture draft v2.1, clause 6 Object interfaces, 6.3 Humanoid
   <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/ObjectInterfaces.html#Humanoid>
      - sequence<string>    info         []
      - string              description  ""
   - X3D Architecture, draft v4.1, 26.3.2 HAnimHumanoid
   <https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/hanim.html#HAnimHumanoid>
      - MFString [in,out] info        []
      - SFString [in,out] description ""

The X3D Architecture describes how to equivalently map the *info *field of
paired strings to a MetadataSet node.


As we continue to build humanoid models of greater sophistication, a likely
use case will be inclusion of paired (and hopefully typed) metadata within
any of the HAnim nodes. Some capability needs to be considered.


Perhaps a simple approach might be to use the *info *field equivalently in
all of the nodes.


Mapping definition for X3D HAnimHumanoid *info *field:

Metadata values from the *info* field can be equivalently encoded via a
single MetadataSet node with field *name="HAnimHumanoid.info"*
containing corresponding
MetadataString related X3DMetadataObject nodes. No more than one set of
such term=value pairs (via MFString *info* field or MetadataSet
*name="HAnimHumanoid.info"* node) shall be included at one time.

EXAMPLE 1  *info* field term=value pairs

  HAnimHumanoid {
    name "JinLOA1"
    info [ "gender=female" "height=1.5" "weight=50" ]
  }

EXAMPLE 2  MetadataSet node equivalent to EXAMPLE 1

  HAnimHumanoid {
    name "JinLOA1"
    metadata MetadataSet {
      name "HAnimHumanoid.info"
      reference
"https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid"
      value [
        MetadataString {
          name "gender"
          value [ "female" ]
        }
        MetadataFloat {
          name "height"
          value [ 1.5 ]
        }
        MetadataFloat {
          name "weight"
          value [ 50 ]
        }
      ]
    }
  }


I can see one editorial tweak to make in spec prose above:  rather than
forbidding it, allow MetadataSet to contain either MetadataString or other
typed Metadata@ nodes for floats, booleans, etc.  That will match the
intent shown in the second example, which includes two MetadataFloat nodes.

So... what do people think about adding an *info *field for all of the
HAnim nodes, not just HAnimHumanoid?

all the best, Don
-- 
X3D Graphics, Maritime Robotics, Distributed Simulation
Relative Motion Consulting  https://RelativeMotion.info
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20260313/5c2c8800/attachment.html>


More information about the x3d-public mailing list