1/**
2 * Internal mesh representation: a triangle mesh with optional per-vertex
3 * attributes. Every format parses into this and serializes out of it.
4 */
5export interface MeshData {
6 /** Flat xyz triples, 3 numbers per vertex */
7 positions: Float32Array
8 /** Flat triangle indices (0-based), 3 numbers per face */
9 indices: Uint32Array
10 /** Flat xyz triples, 3 numbers per vertex, or null */
11 normals: Float32Array | null
12 /** Flat rgb triples in [0,1], 3 numbers per vertex, or null */
13 colors: Float32Array | null
14}
16export interface MeshCapabilities {
17 normals: boolean
18 colors: boolean
19}
21export function vertexCount(mesh: MeshData): number {
22 return mesh.positions.length / 3
23}
25export function faceCount(mesh: MeshData): number {
26 return mesh.indices.length / 3
27}