TypeScript icon, indicating that this package has built-in type declarations

0.4.0 • Public • Published

three-icosa - Open Brush / Tilt Brush glTF Extensions for three.js

Latest NPM release Support us on Open Collective! Twitter Discord

Sample image showing a glTF file exported from Open Brush being rendered correctly in a three.js scene.

three-icosa provides glTF extensions for three.js that allow for the correct rendering and animation of glTFs exported from Open Brush and the now-discontinued Tilt Brush.

Specific extensions are required due to the shaders used to render Open Brush's unique brushes. These are currently implemented under the GOOGLE_tilt_brush_material extension originally written by Google.

This repository will also be home to extensions written by the Open Brush team for future brush enhancements, such as user-created brushes.


npm install --save three-icosa

You will also need a copy of the brushes directory from this repository. It is not distributed with this package through npm to save space. A GitHub hosted copy is available at the path:


Adding a new glTF extension is simple. our GLTFGoogleTiltBrushMaterialExtension only requires a path to a brushes directory (see above).

import { GLTFGoogleTiltBrushMaterialExtension } from './three-icosa.module.js';


const scene = new Scene();
const gltfLoader = new GLTFLoader();

gltfLoader.register(parser => new GLTFGoogleTiltBrushMaterialExtension(parser, 'path/to/brush/folder/'));

gltfLoader.load('your_creation.glb' (model) => {

After registering the extension, it will automatically replace any detected Open Brush brushes.


Currently, the model will respond to the main directional light color for shading. However, the angle of the light is incorrect. We hope to have this fixed shortly.

Package Sidebar


npm i three-icosa

Weekly Downloads






Unpacked Size

386 kB

Total Files


Last publish


  • icosa