import type { Color, Vector3 } from '@galacean/effects-math/es/core'; import { Quaternion } from '@galacean/effects-math/es/core/quaternion'; import type { Pose } from './pose'; export declare abstract class BlendFunction { abstract blendVector3(source: Vector3, target: Vector3, weight: number, result: Vector3): void; abstract blendQuaternion(source: Quaternion, target: Quaternion, weight: number, result: Quaternion): void; abstract blendEuler(source: Vector3, target: Vector3, weight: number, result: Vector3): void; abstract blendColor(source: Color, target: Color, weight: number, result: Color): void; abstract blendFloat(source: number, target: number, weight: number): number; } export declare class NormalBlend extends BlendFunction { blendVector3(source: Vector3, target: Vector3, weight: number, result: Vector3): void; blendQuaternion(source: Quaternion, target: Quaternion, weight: number, result: Quaternion): void; blendEuler(source: Vector3, target: Vector3, weight: number, result: Vector3): void; blendFloat(source: number, target: number, weight: number): number; blendColor(source: Color, target: Color, weight: number, result: Color): void; private lerpEuler; private normalizeAngle; /** * 计算两个角度之间的最短路径差 */ private shortestAngleDiff; private lerpAngle; } export declare class AdditiveBlend extends BlendFunction { blendVector3(source: Vector3, target: Vector3, weight: number, result: Vector3): void; blendQuaternion(source: Quaternion, target: Quaternion, weight: number, result: Quaternion): void; blendEuler(source: Vector3, target: Vector3, weight: number, result: Vector3): void; blendFloat(source: number, target: number, weight: number): number; blendColor(source: Color, target: Color, weight: number, result: Color): void; } export declare class Blender { private static normalBlendFunction; private static additiveBlendFunction; static localBlend(sourcePose: Pose, targetPose: Pose, blendWeight: number, resultPose: Pose): void; static additiveBlend(sourcePose: Pose, targetPose: Pose, blendWeight: number, resultPose: Pose): void; private static localBlendInternal; }