A-Frame で VRM のモデルを動かすコンポーネントです.
<html>
<head>
<script src="https://cdn.jsdelivr.net/gh/aframevr/aframe@v1.0.4/dist/aframe-master.min.js"></script>
<script src="https://binzume.github.io/aframe-vrm/dist/aframe-vrm.js"></script>
</head>
<body style="background-color: black; color:white;">
<a-scene>
<a-entity vrm="src:assets/AliciaSolid/AliciaSolid.vrm;blink:true" vrm-anim="" rotation="0 180 0"></a-entity>
<a-camera position="0 1.6 2"></a-camera>
</a-scene>
</body>
</html>
npm: @binzume/aframe-vrm
Attributes:
name | type | default | desc |
---|---|---|---|
src | string | None | VRM model URL |
blink | boolean | false | Auto blink |
blinkInterval | number | 5 | Auto blink interval |
lookAt | selector | None | look at target element |
firstPerson | boolean | false | Hide head meshes |
Properties:
avatar : VRMAvatar
Events:
name | event.detail | desc |
---|---|---|
model-loaded | {format:'vrm', model: Object3D, avatar: VRMAvatar} | Loaded event |
model-error | {format:'vrm', src: URL, cause: object} | Error event |
Compatible with gltf-model component: https://aframe.io/docs/1.0.0/components/gltf-model.html
Pose editor.
Attributes:
name | type | default | desc |
---|---|---|---|
color | color | green | box color |
enableConstraints | boolean | true | Enable bone constraints |
Play bvh/vmd animation.
Attributes:
name | type | default | desc |
---|---|---|---|
src | string | '' | BVH file url |
format | string | '' | vmd or bvh (default: auto detect) |
convertBone | boolean | true | Convert bone name |
srcを空にすると待機アニメーションが再生されます(テスト用).
cd aframe-vrm
npm install
npm run lint
npm run build
See: avatar.ts
import {VRMLoader} from "./dist/aframe-vrm.module.js"
const scene = new THREE.Scene();
const avatar = await new VRMLoader().load("test.vrm");
scene.add(avatar.model);
Property:
Methods:
VRMAvatar.update(timeDelta)
VRMAvatar.dispose() : Dispose VRM avatar.
VRMAvatar.setBlendShapeWeight(name, value) : Set blend shape weight for name.
VRMAvatar.getBlendShapeWeight(name) : Returns blend shape values.
VRMAvatar.resetBlendShape() : Reset all blend shapes.
VRMAvatar.resetPose() : T-Pose
VRMAvatar.startBlink(intervalSec)
VRMAvatar.stopBlink()
VRMAvatar.setFirstPerson(firstPerson)
VRMAvatar.modules.physics.attach(world : CANNON.World) : Start physics.
VRMAvatar.modules.physics.detach() : Stop physics.
MIT License