# `GeometryData`

> Contract 2.0.0 · package sha256 `a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e` · generated from `configurator-runtime.d.ts` by `services/onsite-scripter/scripts/build-contract-docs.mjs`; edit the source, not this file.

Interface · `import type { GeometryData } from '@holostep-configurators/runtime-client/contract';` · labs, `@experimental` · since 2.0.0 · section 20. Labs

Local space of the part (for a skinned mesh: its bind space). Typed arrays are copies.

## Members

| Member | Kind | Summary |
| --- | --- | --- |
| <a id="part"></a>[`part`](GeometryData.part.md) | property | The mesh part these arrays belong to. |
| <a id="position"></a>[`position?`](GeometryData.position.md) | property | x, y, z per vertex, metres; present when asked for. |
| <a id="normal"></a>[`normal?`](GeometryData.normal.md) | property | x, y, z per vertex, unit length; present when asked for. |
| <a id="uv"></a>[`uv?`](GeometryData.uv.md) | property | Index = UV channel 0–3. |
| <a id="joints"></a>[`joints?`](GeometryData.joints.md) | property | Four joint indices per vertex (skinned meshes). |
| <a id="weights"></a>[`weights?`](GeometryData.weights.md) | property | Four weights per vertex (skinned meshes). |
| <a id="index"></a>[`index?`](GeometryData.index.md) | property | Three per triangle. |

## Declaration

```ts
export interface GeometryData<C extends object = NoCommitOptions> {
  readonly part: Part<C>;
  readonly position?: Float32Array;
  readonly normal?: Float32Array;
  readonly uv?: ReadonlyArray<Float32Array | undefined>;
  readonly joints?: Uint16Array;
  readonly weights?: Float32Array;
  readonly index?: Uint32Array;
}
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `GeometryData` names no product |
| 2. A precedent | pass: [Unity Mesh.vertices](https://docs.unity3d.com/ScriptReference/Mesh-vertices.html) (row `G9`); [Unity Mesh.GetIndices](https://docs.unity3d.com/ScriptReference/Mesh.GetIndices.html) (row `G9`) |
| 3. Two apps, or labs | labs (`@experimental` at a stable path, reached through `has()` or `supports()`): it graduates when a second app uses it; apps today: app-bcb7ef21da, app-f9a32142f1 |
| 4. The cheaper fix first | decided per need in Appendix B: rows `G9` at tier labs (a member only where no rule, data, asset or app code serves the need) |
