import type { MmdModelMetadata } from "../../Loader/mmdModelMetadata"; import type { IMmdRuntimeLinkedBone } from "../IMmdRuntimeLinkedBone"; /** * mmd model metadata representation in binary * * boneCount: uint32 * appendTransformCount: uint32 * ikCount: uint32 * { * restPosition: float32[3] * parentBoneIndex: int32 * transformOrder: int32 * flag: uint16 * appendTransform: { // optional * parentIndex: int32 * ratio: float32 * } * ik: { // optional * target: int32 * iteration: int32 * rotationConstraint: float32 * linkCount: uint32 * { * target: int32 * hasLimitation: uint8 * limitation: { // optional * minimumAngle: float32[3] * maximumAngle: float32[3] * } * }[linkCount] * } * }[boneCount] * * morphCount: uint32 * { // if boneMorph * kind: uint8 * boneCount: uint32 * indices: int32[boneCount] * positions: float32[boneCount * 3] * rotations: float32[boneCount * 4] * } | { // if groupMorph * kind: uint8 * indexCount: uint32 * indices: int32[indexCount] * ratios: float32[indexCount] * }[morphCount] * * rigidBodyCount: uint32 * { * boneIndex: int32 * collisionGroup: uint8 * collisionMask: uint16 * shapeType: uint8 * shapeSize: float32[3] * shapePosition: float32[3] * shapeRotation: float32[3] * mass: float32 * linearDamping: float32 * angularDamping: float32 * repulsion: float32 * friction: float32 * physicsMode: uint8 * }[rigidBodyCount] * * jointCount: uint32 * { * type: uint8 * rigidBodyIndexA: int32 * rigidBodyIndexB: int32 * position: float32[3] * rotation: float32[3] * positionMin: float32[3] * positionMax: float32[3] * rotationMin: float32[3] * rotationMax: float32[3] * springPosition: float32[3] * springRotation: float32[3] * }[jointCount] */ export declare class MmdMetadataEncoder { encodePhysics: boolean; constructor(); computeSize(metadata: MmdModelMetadata): number; encode(metadata: MmdModelMetadata, linkedBone: IMmdRuntimeLinkedBone[], buffer: Uint8Array): Int32Array; }