| 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) |
| } |
| } |
|
|