UNPKG

@memori.ai/memori-react

Version:

[![npm version](https://img.shields.io/github/package-json/v/memori-ai/memori-react)](https://www.npmjs.com/package/@memori.ai/memori-react) ![Tests](https://github.com/memori-ai/memori-react/workflows/CI/badge.svg?branch=main) ![TypeScript Support](https

56 lines (45 loc) 1.39 kB
import { Material, Object3D } from 'three'; import { LinearFilter } from 'three'; export interface Nodes { [name: string]: Object3D; } export interface Materials { [name: string]: Material; } export const clamp = (value: number, min: number, max: number) => { return Math.min(Math.max(value, min), max); }; export const lerp = (start: number, end: number, time: number = 0.05) => { return start * (1 - time) + end * time; }; export const mapRange = ( value: number, inMin: number, inMax: number, outMin: number, outMax: number ) => { value = clamp(value, inMin, inMax); return ((value - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin; }; export const hideHands = (nodes: Nodes) => { if (nodes.Wolf3D_Hands) { nodes.Wolf3D_Hands.visible = false; } if (nodes.RightHand && nodes.LeftHand) { nodes.RightHand.position.set(0, -2, 0); nodes.LeftHand.position.set(0, -2, 0); } }; export const correctMaterials = (materials: Materials) => { Object.values(materials).forEach((material: any) => { // applying LinearFilter to texture to avoid pixellization if (material.map) material.map.minFilter = LinearFilter; // support transparency if (material) material.depthWrite = true; }); }; const SkinnedMeshType = 'SkinnedMesh'; export const isSkinnedMesh = (node: Object3D) => { return node.type === SkinnedMeshType; };