Skip to content

useVRMBlink

Adds automatic blinking to a VRM model with configurable timing and double-blink support.

import { useVRMModel } from 'three-vrm-utils/use-vrm-model'
import { useVRMBlink } from 'three-vrm-utils/use-vrm-blink'
import { useFrame } from '@react-three/fiber'
function BlinkingVRM({ url }: { url: string }) {
const [, vrm] = useVRMModel(url)
useVRMBlink(vrm, {
minInterval: 2.5,
maxInterval: 5.5,
doubleBlinkChance: 0.12,
})
useFrame((_, delta) => {
vrm.update(delta)
})
return <primitive object={vrm.scene} />
}
OptionTypeDefaultDescription
minIntervalnumber2.5Minimum seconds between blinks
maxIntervalnumber5.5Maximum seconds between blinks
closeTimenumber0.1How long the eye takes to close (seconds)
holdTimenumber0.08How long the eye stays closed (seconds)
openTimenumber0.18How long the eye takes to open (seconds)
doubleBlinkChancenumber0.12Chance of a double blink (0-1)