ISO/IEC FCD 19774 — Humanoid animation
Annex C
(normative)
VRML binding
VRML 绑定
C.1 介绍
此条款把此国际标准的功能映射到一个 VRML 原型集中,以使其可以在 VRML 场景中以节点的形式被实例化。VRML 在 ISO/IEC 14772
的 Part 1 中指定(见
2.[I14772-1] )。
表 C.1 包含了此条款的内容表。
C.2 Humanoid
PROTO Humanoid [
field
SFVec3f bboxCenter
0 0 0
field
SFVec3f bboxSize
-1 -1 -1
exposedField SFVec3f
center
0 0 0
exposedField MFString
info
[ ]
exposedField MFNode
joints
[ ]
exposedField SFString
name
""
exposedField SFRotation rotation
0 0 1 0
exposedField SFVec3f
scale
1 1 1
exposedField SFRotation scaleOrientation
0 0 1 0
exposedField MFNode
segments
[ ]
exposedField MFNode
sites
[ ]
exposedField MFNode
skeleton
[ ]
exposedField MFNode
skin
[ ]
exposedField SFNode
skinCoord
NULL
exposedField SFNode
skinNormal
NULL
exposedField SFVec3f
translation
0 0 0
exposedField SFString
version
"2.0"
exposedField MFNode
viewpoints
[ ]
]
name 于为 Humanoid
节点提供了一个名称,以便应用程序实时识别这个节点。此名称也应用于此 Humanoid 节点自身的
DEF 名称,但前面将加上一个用于区别的前缀。此前缀可以为任何前缀,但对于特定某个人性化生物中的所有 Humanoid
节点的前缀应相同。应有此 nam e 域,以便此 Humanoid
节点能被实时识别。H-Anim 角色的几何体可以按两种方式描述。第一种方式是在关节层级的场景图中描述,即几何体在 Humanoid
节点的 skeleton 域中描述。在关节层级的
Segment
节点中定义的几何体将把身体描述为分离的几何体块。虽然这种模式计算效率高,但是可能会导致某些破坏人性化角色对象外观的视觉异常(例如撕裂或褶皱)。第二种方式是在 Humanoid
节点的 skin
域中把 H-Anim 角色的几何体描述为一个连续的几何体块。这种模式下,点和法线矢量数据集被预先定义在 skinCoord 域和 skinNormal
域中(分别以 Coordinate
节点和 Normal 节点的形式定义)。以这种方法定义的数据将允许用
Humanoid
节点中定义的两种不同实体方式来引用。这种实体可以是在 skin 域中定义人性化生物几何体表面的一个或多个 IndexedFaceSet
节点。在大多情况下,此表面是一个单一的 IndexedFaceSet 节点。然而此表面也可以定义为多个
IndexedFaceSet 节点。基于 IndexedFaceSet
节点的执行方式以及 H-Anim 角色的构造,使用多个
IndexedFaceSet 节点把连续表面分割为多个局部表面可能会提供更好的性能。
C.3 Joint
PROTO Joint [
exposedField
SFVec3f
center
0 0 0
exposedField
MFNode
children
[ ]
exposedField
MFFloat
llimit
[ ]
exposedField
SFRotation
limitOrientation 0 0 1 0
exposedField
SFString
name
""
exposedField
SFRotation
rotation
0 0 1 0
exposedField
SFVec3f
scale
1 1 1
exposedField
SFRotation scaleOrientation 0 0 1 0
exposedField
MFInt32
skinCoordIndex [ ]
exposedField
MFFloat
skinCoordWeight [ ]
exposedField
MFFloat
stiffness [
0 0 0 ]
exposedField
SFVec3f
translation
0 0 0
exposedField
MFFloat
ulimit
[ ]
]
name
域用于实时识别关节。每个 Joint 对象应有一个匹配此 Joint 对象 name
域但在前面加上了用以区别的前缀的名称。此前缀可以为任何前缀,但对于某个特定人性化生物中的所有
Joint
节点的前缀应相同。用以区别的前缀可以用于区别在同一个呈现系统中多个人性化生物的静态路由。如果在一个 VRML 文件中如果只保存了单一的人性化生物,则前缀应为 “hanim_”
(表示 Humanoid
Animation 人性化动画)。范例 左肩的名称此时应为 "hanim_l_shoulder "。
用于静态路由的名称,一般会把人性化生物呈现系统中的
OrientationInterpolator 节点连接到关节上。应有 name
域以使应用程序可以实时地识别 Joint
节点。
C.4 Segment
PROTO Segment [
field
SFVec3f
bboxCenter
0 0 0
field
SFVec3f
bboxSize
-1 -1 -1
exposedField
SFVec3f
centerOfMass 0 0 0
exposedField
MFNode
children [ ]
exposedField
SFNode
coord
NULL
exposedField
MFNode
displacers [ ]
exposedField
SFFloat
mass
-1
exposedField
MFFloat
momentsOfInertia [ 0 0 0
0 0 0
0 0 0 ]
exposedField
SFString
name
""
eventIn
MFNode addChildren
eventIn
MFNode removeChildren
]
应有 name 域以便能实时识别 Segment 节点。此 name
域将用于实时识别 Segment 对象。每个 Segment
对象应有一个匹配此 Segment 对象 name
域但在前面加上了用以区别的前缀的名称。此前缀可以为任何前缀,但对于某个特定人性化生物中的所有 Segment
节点的前缀应相同。用以区别的前缀可以用于区别在同一个呈现系统中多个人性化生物的 Segment 节点的 静态路由。如果在一个
VRML 文件中如果只保存了单一的人性化生物,则前缀应为 “hanim_” (表示 Humanoid
Animation 人性化动画)。范例 对应左大腿的名称此时应为 “hanim_l_thigh”。
静态路由和 name 域应有一个名称,应用程序可以用它来实时识别 Segment
节点。
C.5 Site
PROTO Site [
exposedField
SFVec3f
center
0 0 0
exposedField
MFNode
children [ ]
exposedField
SFString
name
""
exposedField
SFRotation
rotation 0 0 1 0
exposedField
SFVec3f
scale
1 1 1
exposedField
SFRotation
scaleOrientation 0 0 1 0
exposedField
SFVec3f
translation 0 0 0
eventIn
MFNode addChildren
eventIn
MFNode removeChildren
]
应有 name 域以便能实时识别 Site 节点。此 name
域将用于实时识别 Site 对象。如果用于最终受动器,Site
节点应有一个由 Segment
节点的名称附加上 “_tip”
后缀构成的名称。
范例 右手食指的最终受动器 Site 节点应被命名为
“r_index_distal_tip”,且此 Site 节点应为 “r_index_distal” Segment
对象的一个子。
用于定义摄像机位置的 Site
节点附加一个 “_view ”
后缀。既不用作定义最终受动器也不用于定义摄像机位置的 Site
节点应有一个 “_pt ”
后缀。应用程序需要的但在此国际标准中没有被定义的 Site 节点应有一个 “x_ ”
前缀。每个 Site 节点应应有一个匹配此 Site
节点 name 域但在前面加上了用以区别的前缀的名称。此前缀可以为任何前缀,但对于特定某个人性化生物中的所有 Site
节点的前缀应相同。用以区别的前缀可以用于区别在同一个呈现系统中多个人性化生物的 Site
节点的静态路由。如果在一个 VRML 文件中如果只保存了单一的人性化生物,则前缀应为 “hanim_” (表示 Humanoid Animation
人性化动画)。
范例 对应右食指的名称此时应为 "hanim_r_index_distal_tip "。
The name is used for static routing and the name field,
which
shall be present, is used by applications to identify the Site
node at runtime.
C.6 Displacer
PROTO displacer [
exposedField MFInt32
coordIndex
[ ]
exposedField MFVec3f displacements
[ ]
exposedField SFString
name
""
exposedField SFFloat
weight 0.0
]
name 域为 Displacer
节点提供了名称,应用程序可以实时识别此名称。此名称也应用于此 Displacer 节点自身的 DEF
名称,但前面将加上一个用于区别的前缀。此前缀可以为任何前缀,但对于特定某个人性化生物中的所有 Displacer
节点的前缀应相同。应有此 nam e 域,以便此 Displacer 节点能被实时识别。用于指示特征的 Displacer n节点应有一个带 “_feature ”
后缀的名称。用于改变特征的 Displacer
节点应应被给定一个带 “_action ”
后缀的名称,而且一般还在此后缀前预先附加一个预后缀以指示动作的类型(例如 “l_eyebrow_raiser_action ”)。对应特定顶点外形设置的 Displacer
节点应有一个 “_config” 后缀。
翻译 m17 保留版权 如需转载请联系
http://17de.com/x3d/