# Facial Expressions Requirements

## **Look At Requirements** <a href="#look-at-requirements" id="look-at-requirements"></a>

* You may follow the [VRM Look At Spec](https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm-1.0/lookAt.md) and set up look at in Unity, or in Blender.
* Look At MUST USE “Expression” mode, Hallway does not yet support Look At Bones.

## **Facial Shapes Requirements** <a href="#facial-shapes-requirements" id="facial-shapes-requirements"></a>

You may follow the [VRM Expressions Spec](https://github.com/vrm-c/vrm-specification/tree/master/specification/VRMC_node_constraint-1.0) and set up VRM expressions in Unity, or in Blender.

**Notes for Blender:**

Hallway Requires all VRM Preset Expressions + ARKit

* If you’re using a **Ready Player Me Avatar** you can append the following PHP to the download URL to get a model in T-Pose and all the ARKit shapes required:\ <mark style="color:orange;">?morphTargets=mouthSmile,ARKit\&pose=T\&textureAtlas=none\&textureChannels=baseColor,normal,metallicRoughness</mark>

<table><thead><tr><th>EXAMPLE SPEECH SHAPES:</th><th valign="top">EXPORTING AS VRM:</th></tr></thead><tbody><tr><td><p><img src="/files/ieymkvLE7uB6zEelol2G" alt=""> “aa”</p><p><img src="/files/oNqa1tmAVPa9HWLdpq9n" alt=""> “ih”</p><p><img src="/files/LNLt7Htzg3OtkB3Mr7VN" alt=""> “ou”</p><p><img src="/files/bLDmJVnkBO6nJcGsH7Tj" alt=""> “eh”</p><p><img src="/files/QXvFx6zxam3pNPwMzkkS" alt=""> “oh”</p></td><td valign="top"><em>(full features)</em> VRM Visemes (aa, ih, eh, oh, ou), blinks, winks, look up/down/left/right (as expressions, NOT bones) (Optional) Add <a href="https://docs.google.com/spreadsheets/d/1M1BOr5bxC9AZGejm7nBS72P61zULh5AfTQX_QTunzY8/edit#gid=850913586"><strong>ARKit 52 Shapes</strong></a> (map these to VRM custom expressions w/same naming) Some emotes (like wink) leverage ARKit to be more expressive than base VRM shapes allow <img src="/files/5cc97e22142b6b15a10f71666322177f7e97951f" alt=""></td></tr></tbody></table>

### You can also leverage UV offsets in VRM Expressions! <a href="#you-can-also-leverage-uv-offsets-in-vrm-expressions" id="you-can-also-leverage-uv-offsets-in-vrm-expressions"></a>

| <img src="/files/jMkLWCJiUmjmdXFC2HXj" alt="" data-size="original"> | Previewing UV Transform in Blender: In the VRM N-Panel “Expressions” section, select the bool “Show Preview Feature” ![](/files/2873f498f4fc1320aa26e555b6d7421a205c0917) After adding a material to the UL list, hit “Refresh Preview” to enable real-time updates as you adjust the “offset” and “scale” parameters (below) ![](/files/4ffe80aa29df98f4f3a7e0e0ea70995a8157222e) You need to hit “Refresh Preview” any time you add a new material to this list or you add texture transform to another expression. (This is because the VRM addon previews this feature through material drivers) |
| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

### Important Notes and Nuances of VRM Expressions <a href="#important-notes-and-nuances-of-vrm-expressions" id="important-notes-and-nuances-of-vrm-expressions"></a>

* Our emotion expressions might play over speech, so best practice is to not open the mouth too much or close the eyes too much in these emotes to avoid nightmare fuel during speech.
* Specifically, "Happy" “Sad” “Surprised” “Angry” “Neutral” and "Relaxed" need to respect these rules. Test how each of these emotes blends with "aa" "ih" "ou" "ee" "oh" and eye blinks. As long as they work with those, you're good to go! 👍

<table data-header-hidden><thead><tr><th align="center" valign="top">❌</th><th align="center">✅</th></tr></thead><tbody><tr><td align="center" valign="top"><h3><strong>❌</strong></h3><p><img src="/files/I3ZoatWUO0UvmC9nQSnR" alt=""> <strong>+ Speech =</strong></p><p><img src="/files/HooACbwjmx5HS6L2WFbJ" alt="" data-size="original"></p><p><img src="/files/TUREkedVpYillGqDA1B3" alt=""> <strong>+ Blinks =</strong></p><p><img src="/files/9f92940406c25b2d090a297b35676306e3dc45fc" alt="" data-size="original"></p></td><td align="center"><h3>✅</h3><p><img src="/files/f574cb38d3acf2b4375617eaf5d237006156a1ba" alt=""> Happy</p><p><img src="/files/3ed1aace3d67338c5d289f61a321d4f6a7ee38ff" alt=""> Angry</p><p><img src="/files/355004d0ebbb8d025eef5dd864f94e9b24354ccd" alt=""> Sad</p><p><img src="/files/62dbe4b192ab8e424cf5ac51f57b264cafc98259" alt=""> Relaxed</p><p><img src="/files/c3e364d0893340b1aad5bc77a53b490607be34ee" alt="">Surprised</p></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hallway.gitbook.io/embed/characters-for-embed/3d-custom-avatar-requirements/facial-expressions-requirements.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
