import { PartIndexMappingOfPoseModel } from './defines' const PosesLibrary: [number, number, number][][] | null = [] function getRandomInt(min: number, max: number) { min = Math.ceil(min) max = Math.floor(max) return Math.floor(Math.random() * (max - min + 1)) + min } export function GetRandomPose() { if (PosesLibrary) return PosesLibrary[getRandomInt(0, PosesLibrary.length - 1)] return null } export async function LoadPosesLibrary(posesLibraryUrl: string) { const response = await fetch(posesLibraryUrl) const buffer = await response.arrayBuffer() console.log(buffer.byteLength) const int16Array = new Int32Array(buffer) const num = Object.keys(PartIndexMappingOfPoseModel).length for (let i = 0; i < int16Array.length / (num * 3); i++) { const temp: [number, number, number][] = [] for (let j = 0; j < num; j++) { const a = int16Array[i * (num * 3) + j * 3 + 0] const b = int16Array[i * (num * 3) + j * 3 + 1] const c = int16Array[i * (num * 3) + j * 3 + 2] temp.push([a / 1000.0, b / 1000.0, c / 1000.0]) } PosesLibrary?.push(temp) } }