import { type FBXNode } from "../types/fbxTypes.js"; import { type FBXPropertyTemplate } from "./propertyTemplates.js"; /** Transform properties resolved from an FBX Model, with template defaults applied. */ export interface FBXNodeTransformData { translation: [number, number, number]; rotation: [number, number, number]; scale: [number, number, number]; preRotation: [number, number, number]; postRotation: [number, number, number]; rotationPivot: [number, number, number]; scalingPivot: [number, number, number]; rotationOffset: [number, number, number]; scalingOffset: [number, number, number]; geometricTranslation: [number, number, number]; geometricRotation: [number, number, number]; geometricScaling: [number, number, number]; /** Rotation order: 0=XYZ, 1=XZY, 2=YZX, 3=YXZ, 4=ZXY, 5=ZYX, 6=SphericXYZ */ rotationOrder: number; /** FBX transform inheritance mode. 0=RrSs, 1=RSrs, 2=Rrs */ inheritType: number; /** Whether the rotation space (rotation order, pre/post rotation) is active for this node */ rotationActive: boolean; diagnostics: string[]; } /** * Resolves the transform properties of a Model node the way the FBX SDK evaluates them. * * `RotationActive` gates the whole rotation space: when it is false (the FbxNode template default), the SDK * composes `Lcl Rotation` in plain XYZ order and ignores `RotationOrder`, `PreRotation` and `PostRotation`. * `RotationSpaceForLimitOnly` restricts the rotation space to limits, which has the same effect for us. */ export declare function extractNodeTransform(modelNode: FBXNode, template?: FBXPropertyTemplate): FBXNodeTransformData;