El nodo Segment
Cada segmento del cuerpo es almacenado en un nodo segment. El nodo segment será normalmente implementado como un nodo de Grupo el cual contiene uno o más nodos Shape o nodos Transform, los cuales posicionen las partes del cuerpo dentro del sistema de coordenadas. El uso de nodos LOD es recomendable si la geometría del segmento es compleja.
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 0 exposedField MFFloat momentsOfInertia [ 0 0 0 0 0 0 0 0 0 ] exposedField SFString name "" eventIn MFNode addChildren eventIn MFNode removeChildren ]
Y suele ser implementado como sigue:
{
Group {
addChildren IS addChildren
bboxCenter IS bboxCenter
bboxSize IS bboxSize
children IS children
removeChildren IS removeChildren
}
}
Todos los campos son opcionales.
El campo mass es la masa total del segmento, y el campo centerOfMass es la localización dentro del segmento de su centro de masas.
Los humanoides que estan modelados como continuas mallas también tendrán nodos de segmento, en función de almacenar la información por segmento. En este caso, el segmento no necesitará contener ninguna geometría. Aunque también podría ser hijo de un nodo Joint.
Para segmentos que tengan mallas deformables, el campo coord puede contener un nodo Coordinate que será usado (USE) en el nodo IndexedFaceSet por el segmento. A el nodo Coordinate deberá de ser dado el mismo nombre (DEF) que al segmento, pero con el apéndice "_coords". (por ejemplo skull_coords).