Skip to content

Introduction

bash
npm install @tresjs/core three
bash
yarn add @tresjs/core three
bash
pnpm add @tresjs/core three

Typescript

TresJS is written in Typescript and it's fully typed. If you are using Typescript, you will get the full benefit of the typings. Just make sure you install the types for three.

bash
npm install @types/three -D
bash
yarn add @types/three -D
bash
pnpm add @types/three -D

Vite

If you are using Vite, you just need to import and add the templateCompilerOptions from TresJS to your vite.config.ts inside of the vue plugin:

vite.config.ts
ts
import { templateCompilerOptions } from '@tresjs/core'

export default defineConfig({
  plugins: [
    vue({
      // Other config
      ...templateCompilerOptions
    }),
  ],
})

This is required to make the template compiler work with the custom renderer so it does not throw warnings on the console. For more info check here.

Try it online

Playground

You can try TresJS online using the official playground. Check it out:

StackBlitz

We have a brand new StackBlitz starter to try TresJS online. Check it out:

Labs

We also have a showcase lab of examples made with TresJS. Check it out here.

Motivation

ThreeJS is a wonderful library to create awesome WebGL 3D websites. It's also a library, which is constantly updated, which makes it hard for wrapper maintainers like TroisJS to keep up with all the enhancements.

The React ecosystem has an impressive custom render solution called React-three-fiber that allows you build your scenes declaratively with re-usable, self-contained components that react to state.

In my search for something similar in the VueJS ecosystem, I found this amazing library called Lunchbox, which works with the same concept as R3F, it provides a custom Vue3 Renderer.

But none of them was actively maintained or had the same level of abstraction as R3F.

So I was inspired by both libraries to create a Vue custom renderer for ThreeJS. That's TresJS.