babylon-vrm-loader
Version:
babylon.js VRM Loader
66 lines (65 loc) • 2.1 kB
TypeScript
import type { Material } from '@babylonjs/core';
import type { IVRMBlendShapeMaterialBind } from './vrm-interfaces';
/**
* @see https://github.com/vrm-c/UniVRM/blob/4ffd97c2e9339683ce9bf21e73f510bd90c2a5b2/Assets/VRM/Runtime/BlendShape/MaterialValueBindingMerger.cs
*/
export declare class MaterialValueBindingMerger {
private readonly materialValues;
private readonly m_materialMap;
private readonly m_materialSetterMap;
private m_materialValueMap;
private m_used;
private readonly baseValueCache;
private materialValuesToApply;
/**
* @param materials VRMの全 Material
* @param materialValues
*/
constructor(materials: Material[], materialValues: IVRMBlendShapeMaterialBind[]);
/**
* UniVRM では Dictionary のキー用のクラスを定義しているが、文字列で代用する
* MaterialValueBinding.BaseValue は対応するプロパティの初期値なので無視できる
*/
private makeBindingKey;
/**
* UniVRM では Dictionary のキー用のクラスを定義しているが、文字列で代用する
*/
private makeTargetKey;
/**
* モーフィングを行う
* @param value 値(0〜1)
*/
morphing(value: number): void;
/**
* materialValue ごとに重みを計算する
*/
private accumulateValue;
/**
* Material のプロパティを更新する
*/
private apply;
/**
* マテリアルのテクスチャか色に対応する Vector4 を取得する
*/
private getMaterialProperty;
/**
* Texture を Vector4 に変換する
*/
private convertTextureIntoVector4WhenNotNull;
/**
* Color3 に alpha を加えて Vector4 に変換する
*/
private convertColorIntoVector4;
/**
* マテリアルのテクスチャか色を更新する
*/
private updateMaterialProperty;
/**
* Texture を Vector4 で更新する
*/
private updateTextureWhenNotNull;
/**
* Color3 を Vector4 で更新する
*/
private updateColor;
}