> For the complete documentation index, see [llms.txt](https://jorge-jgnz94.gitbook.io/hptk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jorge-jgnz94.gitbook.io/hptk/master/modules/avatar/sub-models.md).

# Body

Group of representations that share a common armature

![](https://2698598769-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MYpeL-Cll-FXMj9b3XC%2F-MZg3Tq6HxifYzmKZHbZ%2F-MZgB5yA7VAl9yE6MeJJ%2Fbody.PNG?alt=media\&token=aaa2bae5-636c-41c8-ac11-7728f9db9756)

## SubModel

A body is a **tree of body parts**. A body can have **extra modules** registered. Variables of this module are described bellow:

#### Body structure

* **Human Groups:** These objects represents sections of a human body that contains references to parts that are frequently accessed. For instance:

  ```csharp
  public BodyModel body;
  BoneModel skull = body.torso.head;
  HandModel leftHand = body.leftArm.hand;
  ```

  **References in these groups are set manually.** A PartModel that represent, for instance, a hand can be accessible under `BodyModel.root` part but not from `BodyModel.leftArm.hand` if the reference was not explicitly set.

#### Parenting

* **Parts:** Complete list of parts in the parts tree.
* **Root:** Original part that does not have a parent.
* **Avatar:** Avatar of which this body is.

#### Control

* **Follow Camera:** Will AvatarController make head to match `HPTK.core.trackedCamera`?
* **Move This As Head:**
  * If camera is followed and this field is **null**, AvatarController will consider head as `body.torso.head.point.master.transformRef`.
  * If camera is followed and this field is **not null**, AvatarController will consider head as the Transform referenced in this field.
* **Reference Tsf:** Transform that represents the **central point on the ground relative to tracking space**. If null, this Transform will be `HPTK.core.trackingSpace`.
* **Replicated Tsf:** Transform that represents the **central point on the ground relative to the avatar**. If null and `body.followCamera` is enabled, avatar's head will always match `HPTK.core.trackedCamera` even if avatar is scaled or offseted.&#x20;

{% hint style="info" %}
Having **Referencce Tsf** and **Replicated Tsf** set in Play Mode is **strongly recommended** as this enables AvatarController to move **head** correctly even in **third-person** (scaled or offseted avatars).
{% endhint %}

#### Extensibility

* **Registry:** List of controllers (HPTKControllers) of registered extra modules.
