# `@pixiv/three-vrm` [![@pixiv/three-vrm on npm](https://img.shields.io/npm/v/@pixiv/three-vrm)](https://www.npmjs.com/package/@pixiv/three-vrm) Use [VRM](https://vrm.dev/) on [three.js](https://threejs.org/) ![three-vrm](https://github.com/pixiv/three-vrm/raw/dev/three-vrm.png) [GitHub Repository](https://github.com/pixiv/three-vrm/) [Examples](https://pixiv.github.io/three-vrm/packages/three-vrm/examples) [Guides](https://github.com/pixiv/three-vrm/tree/dev/guides) [API Reference](https://pixiv.github.io/three-vrm/docs/modules/three-vrm) ## 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](https://www.jsdelivr.com/). ```html ``` 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`](https://www.npmjs.com/package/three) and [`@pixiv/three-vrm`](https://www.npmjs.com/package/@pixiv/three-vrm) : ```sh npm install three @pixiv/three-vrm ``` ### Use with WebGPURenderer Starting from v3, we provide [WebGPURenderer](https://github.com/mrdoob/three.js/blob/master/examples/jsm/renderers/webgpu/WebGPURenderer.js) 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. ```js import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; import { MToonMaterialLoaderPlugin, VRMLoaderPlugin } from '@pixiv/three-vrm'; import { MToonNodeMaterial } from '@pixiv/three-vrm/nodes'; // ... Setup renderer, camera, scene ... // Create a GLTFLoader const loader = new GLTFLoader(); // Register a VRMLoaderPlugin loader.register((parser) => { // create a WebGPU compatible MToonMaterialLoaderPlugin const mtoonMaterialPlugin = new MToonMaterialLoaderPlugin(parser, { // set the material type to MToonNodeMaterial materialType: MToonNodeMaterial, }); return new VRMLoaderPlugin(parser, { // Specify the MToonMaterialLoaderPlugin to use in the VRMLoaderPlugin instance mtoonMaterialPlugin, }); }); // ... Load the VRM and perform the render loop ... ``` 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](../../CONTRIBUTING.md) ## LICENSE [MIT](../../LICENSE)