babylon-vrm-loader
Version:
babylon.js VRM Loader
212 lines (211 loc) • 6.08 kB
TypeScript
export interface IVRMVector3 {
x: number;
y: number;
z: number;
}
/**
* extensions.VRM
*/
export interface IVRM {
exporterVersion: string;
specVersion: string;
meta: IVRMMeta;
humanoid: IVRMHumanoid;
firstPerson: IVRMFirstPerson;
blendShapeMaster: IVRMBlendShapeMaster;
secondaryAnimation: IVRMSecondaryAnimation;
materialProperties: IVRMMaterialProperty[];
}
/**
* extensions.VRM.meta
*/
export interface IVRMMeta {
title: string;
version: string;
author: string;
contactInformation?: string;
reference?: string;
texture?: number;
}
/**
* extensions.VRM.humanoid
*/
export interface IVRMHumanoid {
humanBones: IVRMHumanoidBone[];
armStretch?: number;
legStretch?: number;
upperArmTwist?: number;
lowerArmTwist?: number;
upperLegTwist?: number;
lowerLegTwist?: number;
feetSpacing?: number;
hasTranslationDoF?: boolean;
}
export interface IVRMHumanoidBone {
bone: string;
node: number;
useDefaultValues: boolean;
min?: IVRMVector3;
max?: IVRMVector3;
center?: IVRMVector3;
axisLength?: number;
}
export interface IVRMFirstPersonMeshAnnotation {
mesh: number;
firstPersonFlag: string;
}
export interface IVRMFirstPersonDegreeMap {
curve: number[];
xRange: number;
yRange: number;
}
/**
* extensions.VRM.firstPerson
*/
export interface IVRMFirstPerson {
firstPersonBone: number;
firstPersonBoneOffset: IVRMVector3;
meshAnnotations: IVRMFirstPersonMeshAnnotation[];
lookAtTypeName: 'Bone' | 'BlendShape';
lookAtHorizontalInner: IVRMFirstPersonDegreeMap;
lookAtHorizontalOuter: IVRMFirstPersonDegreeMap;
lookAtVerticalDown: IVRMFirstPersonDegreeMap;
lookAtVerticalUp: IVRMFirstPersonDegreeMap;
}
/**
* extensions.VRM.blendShapeMaster
*/
export interface IVRMBlendShapeMaster {
blendShapeGroups: IVRMBlendShapeGroup[];
}
export interface IVRMBlendShapeGroup {
name: string;
presetName: string;
binds: IVRMBlendShapeBind[];
materialValues: IVRMBlendShapeMaterialBind[];
isBinary: boolean;
}
export interface IVRMBlendShapeBind {
mesh: number;
index: number;
weight: number;
}
export interface IVRMBlendShapeMaterialBind {
materialName: string;
propertyName: string;
targetValue: number[];
}
export interface IVRMSecondaryAnimationSpring {
comment: string;
stiffiness: number;
gravityPower: number;
gravityDir: IVRMVector3;
dragForce: number;
center: number;
hitRadius: number;
bones: number[];
colliderGroups: number[];
}
export interface IVRMSecondaryAnimationCollider {
offset: IVRMVector3;
radius: number;
}
export interface IVRMSecondaryAnimationColliderGroup {
node: number;
colliders: IVRMSecondaryAnimationCollider[];
}
/**
* extensions.VRM.secondaryAnimation
*/
export interface IVRMSecondaryAnimation {
boneGroups: IVRMSecondaryAnimationSpring[];
colliderGroups: IVRMSecondaryAnimationColliderGroup[];
}
export declare enum IVRMMaterialPropertyShader {
VRM_USE_GLTFSHADER = "VRM_USE_GLTFSHADER",
VRMMToon = "VRM/MToon",
VRMUnlitTransparentZWrite = "VRM/UnlitTransparentZWrite"
}
export interface IVRMMaterialPropertyFloatProperties {
_Cutoff?: number;
_BumpScale?: number;
_ReceiveShadowRate?: number;
_ShadingGradeRate?: number;
_ShadeShift?: number;
_ShadeToony?: number;
_LightColorAttenuation?: number;
_IndirectLightIntensity?: number;
_RimLightingMix?: number;
_RimFresnelPower?: number;
_RimLift?: number;
_OutlineWidth?: number;
_OutlineScaledMaxDistance?: number;
_OutlineLightingMix?: number;
_UvAnimScrollX?: number;
_UvAnimScrollY?: number;
_UvAnimRotation?: number;
_DebugMode?: number;
_BlendMode?: number;
_OutlineWidthMode?: number;
_OutlineColorMode?: number;
_CullMode?: number;
_OutlineCullMode?: number;
_SrcBlend?: number;
_DstBlend?: number;
_ZWrite?: number;
[prop: string]: number | undefined;
}
export declare type IVRMVectorMaterialProperty = [number, number, number, number];
export interface IVRMMaterialPropertyVectorProperties {
_Color?: IVRMVectorMaterialProperty;
_ShadeColor?: IVRMVectorMaterialProperty;
_MainTex?: IVRMVectorMaterialProperty;
_ShadeTexture?: IVRMVectorMaterialProperty;
_BumpMap?: IVRMVectorMaterialProperty;
_ReceiveShadowTexture?: IVRMVectorMaterialProperty;
_ShadingGradeTexture?: IVRMVectorMaterialProperty;
_RimColor?: IVRMVectorMaterialProperty;
_RimTexture?: IVRMVectorMaterialProperty;
_SphereAdd?: IVRMVectorMaterialProperty;
_EmissionColor?: IVRMVectorMaterialProperty;
_EmissionMap?: IVRMVectorMaterialProperty;
_OutlineWidthTexture?: IVRMVectorMaterialProperty;
_OutlineColor?: IVRMVectorMaterialProperty;
_UvAnimMaskTexture?: IVRMVectorMaterialProperty;
[prop: string]: IVRMVectorMaterialProperty | undefined;
}
export interface IVRMMaterialPropertyTextureProperties {
_MainTex?: number;
_ShadeTexture?: number;
_BumpMap?: number;
_ReceiveShadowTexture?: number;
_ShadingGradeTexture?: number;
_RimTexture?: number;
_SphereAdd?: number;
_EmissionMap?: number;
_OutlineWidthTexture?: number;
_UvAnimMaskTexture?: number;
[prop: string]: number | undefined;
}
export interface IVRMMaterialPropertyKeywordMap {
_NORMALMAP?: boolean;
_ALPHATEST_ON?: boolean;
_ALPHABLEND_ON?: boolean;
_ALPHAPREMULTIPLY_ON?: boolean;
}
export interface IVRMMaterialPropertyTagMap {
RenderType?: 'Opaque' | 'TransparentCutout' | 'Transparent';
}
/**
* extensions.VRM.materialProperties
*/
export interface IVRMMaterialProperty {
name: string;
shader: IVRMMaterialPropertyShader;
renderQueue: number;
floatProperties: IVRMMaterialPropertyFloatProperties;
vectorProperties: IVRMMaterialPropertyVectorProperties;
textureProperties: IVRMMaterialPropertyTextureProperties;
keywordMap: IVRMMaterialPropertyKeywordMap;
tagMap: IVRMMaterialPropertyTagMap;
}