@pixiv/three-vrm

Use VRM on three.js

GitHub Repository
Examples
Documentations
API Reference
How to Use
from HTML
You will need:
- Three.js build
- GLTFLoader
- A build of @pixiv/three-vrm
.module
ones are ESM, otherwise it's UMD and injects its modules into global THREE
.min
ones are minified (for production), otherwise it's not minified and it comes with source maps
You can import all the dependencies via CDN like jsDelivr.
<script type="importmap">
{
"imports": {
"three": "https://cdn.jsdelivr.net/npm/three@0.169.0/build/three.module.js",
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.169.0/examples/jsm/",
"@pixiv/three-vrm": "https://cdn.jsdelivr.net/npm/@pixiv/three-vrm@3/lib/three-vrm.module.min.js"
}
}
</script>
<script type="module">
import * as THREE from 'three';
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import { VRMLoaderPlugin } from '@pixiv/three-vrm';
const loader = new GLTFLoader();
loader.register((parser) => {
return new VRMLoaderPlugin(parser);
});
loader.load(
'/models/VRM1_Constraint_Twist_Sample.vrm',
(gltf) => {
const vrm = gltf.userData.vrm;
scene.add(vrm.scene);
console.log(vrm);
},
(progress) => console.log('Loading model...', 100.0 * (progress.loaded / progress.total), '%'),
(error) => console.error(error),
);
</script>
See the Three.js document if you are not familiar with Three.js yet: https://threejs.org/docs/#manual/en/introduction/Creating-a-scene
See the example for the complete code: https://github.com/pixiv/three-vrm/blob/release/packages/three-vrm/examples/basic.html
via npm
Install three
and @pixiv/three-vrm
:
npm install three @pixiv/three-vrm
Use with WebGPURenderer
Starting from v3, we provide WebGPURenderer compatibility.
To use three-vrm with WebGPURenderer, specify the WebGPU-compatible MToonNodeMaterial
for the materialType
option of MToonMaterialLoaderPlugin
.
MToonNodeMaterial
only supports Three.js r167 or later.
The NodeMaterial system of Three.js is still under development, so we may break compatibility with older versions of Three.js more frequently than other parts of three-vrm.
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import { MToonMaterialLoaderPlugin, VRMLoaderPlugin } from '@pixiv/three-vrm';
import { MToonNodeMaterial } from '@pixiv/three-vrm/nodes';
const loader = new GLTFLoader();
loader.register((parser) => {
const mtoonMaterialPlugin = new MToonMaterialLoaderPlugin(parser, {
materialType: MToonNodeMaterial,
});
return new VRMLoaderPlugin(parser, {
mtoonMaterialPlugin,
});
});
See the example for the complete code: https://github.com/pixiv/three-vrm/blob/release/packages/three-vrm/examples/webgpu-dnd.html
Contributing
See: CONTRIBUTING.md
LICENSE
MIT