All Projects → tengbao → Vanta

tengbao / Vanta

Licence: mit
Animated 3D backgrounds for your website

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Vanta

Roygbiv
A 3D engine for the Web
Stars: ✭ 499 (-57.06%)
Mutual labels:  3d, threejs, three-js
Threejs Sandbox
Set of experiments and extensions to THREE.js.
Stars: ✭ 163 (-85.97%)
Mutual labels:  3d, threejs, three-js
Glas
WebGL in WebAssembly with AssemblyScript
Stars: ✭ 278 (-76.08%)
Mutual labels:  3d, threejs, three-js
Vue Gl
Vue.js components rendering 3D WebGL graphics reactively with three.js
Stars: ✭ 434 (-62.65%)
Mutual labels:  3d, threejs, three-js
Trois
✨ ThreeJS + VueJS 3 + ViteJS ⚡
Stars: ✭ 648 (-44.23%)
Mutual labels:  3d, threejs, three-js
Von Grid
Hexagonal & square tile grid system with three.js
Stars: ✭ 336 (-71.08%)
Mutual labels:  3d, threejs
Hedron
Perform live shows with your three.js creations
Stars: ✭ 372 (-67.99%)
Mutual labels:  threejs, three-js
Sketchbook
3D playground built on three.js and cannon.js
Stars: ✭ 403 (-65.32%)
Mutual labels:  3d, threejs
Glmaps
Data visualization examples and tutorials from scratch. 数据可视化示例代码集与新手学习教程。
Stars: ✭ 288 (-75.22%)
Mutual labels:  3d, threejs
Lume
Create CSS3D/WebGL applications declaratively with HTML. Give regular DOM elements shadow and lighting.
Stars: ✭ 445 (-61.7%)
Mutual labels:  3d, threejs
Tensorspace
Neural network 3D visualization framework, build interactive and intuitive model in browsers, support pre-trained deep learning models from TensorFlow, Keras, TensorFlow.js
Stars: ✭ 4,515 (+288.55%)
Mutual labels:  3d, threejs
React Particles Webgl
🔆 A 2D/3D particle library built on React, Three.js and WebGL
Stars: ✭ 330 (-71.6%)
Mutual labels:  3d, threejs
React Postprocessing
📬 postprocessing for react-three-fiber
Stars: ✭ 311 (-73.24%)
Mutual labels:  3d, threejs
Aframe Forcegraph Component
Force-directed graph component for A-Frame
Stars: ✭ 60 (-94.84%)
Mutual labels:  3d, threejs
Three Mesh Bvh
A BVH implementation to speed up raycasting against three.js meshes.
Stars: ✭ 302 (-74.01%)
Mutual labels:  threejs, three-js
Harp.gl
harp.gl - web map rendering engine
Stars: ✭ 828 (-28.74%)
Mutual labels:  3d, threejs
Wave Simulator
A graphical 3D simulation of the wave and heat equations
Stars: ✭ 5 (-99.57%)
Mutual labels:  threejs, three-js
Three.js Pathtracing Renderer
Real-time PathTracing with global illumination and progressive rendering, all on top of the Three.js WebGL framework. Click here for Live Demo: https://erichlof.github.io/THREE.js-PathTracing-Renderer/Geometry_Showcase.html
Stars: ✭ 872 (-24.96%)
Mutual labels:  threejs, three-js
Livecodelab
a web based livecoding environment
Stars: ✭ 276 (-76.25%)
Mutual labels:  threejs, three-js
Solarsys
Realistic Solar System simulation with three.js
Stars: ✭ 49 (-95.78%)
Mutual labels:  threejs, three-js

Vanta JS

View demo gallery & customize effects at www.vantajs.com →

alt text

What is Vanta? / FAQs

  • Add 3D animated digital art to any webpage with just a few lines of code.
  • How it works: Vanta inserts an animated effect as a background into any HTML element.
  • Works with vanilla JS, React, Angular, Vue, etc.
  • Effects are rendered by three.js (using WebGL) or p5.js.
  • Effects can interact with mouse/touch inputs.
  • Effect parameters (e.g. color) can be easily modified to match your brand.
  • Total additional filesize is ~120kb minified and gzipped (mostly three.js), which is smaller than comparable background images/videos.
  • Vanta includes many pre-defined effects to try out. More effects will be added soon!

View demo gallery & customize effects at www.vantajs.com →

Basic usage with script tags:

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r121/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vanta.waves.min.js"></script>
<script>
  VANTA.WAVES('#my-background')
</script>

View fiddle →

More options:

VANTA.WAVES({
  el: '#my-background', // element selector string or DOM object reference
  color: 0x000000,
  waveHeight: 20,
  shininess: 50,
  waveSpeed: 1.5,
  zoom: 0.75
})
  • el: The container element.

    • The Vanta canvas will be appended as a child of this element, and will assume the width and height of this element. (If you want a fullscreen canvas, make sure this container element is fullscreen.)
    • This container can have other children. The other children will appear as foreground content, in front of the Vanta canvas.
  • mouseControls: (defaults to true) Set to false to disable mouse controls. Only applies to certain effects.

  • touchControls: (defaults to true) Set to false to disable touch controls. Only applies to certain effects.

  • gyroControls: (defaults to false) Set to true to allow gyroscope to imitate mouse. Only applies to certain effects.

  • NOTE: Each effect has its own specific parameters. Explore them all at www.vantajs.com!

Updating options after init:

const effect = VANTA.WAVES({
  el: '#my-background',
  color: 0x000000
})

// Later, when you want to update an animation in progress with new options
effect.setOptions({
  color: 0xff88cc
})

// Later, if the container changes size and you want to force Vanta to redraw at the new canvas size
effect.resize()

Cleanup:

const effect = VANTA.WAVES('#my-background')
effect.destroy() // e.g. call this in React's componentWillUnmount

Usage with React:

npm i vanta, then import a specific effect as follows. Make sure three.js or p5.js has already been included via <script> tag.

import React from 'react'
import BIRDS from 'vanta/dist/vanta.birds.min'
// Make sure window.THREE is defined, e.g. by including three.min.js in the document head using a <script> tag

class MyComponent extends React.Component {
  constructor() {
    super()
    this.vantaRef = React.createRef()
  }
  componentDidMount() {
    this.vantaEffect = BIRDS({
      el: this.vantaRef.current
    })
  }
  componentWillUnmount() {
    if (this.vantaEffect) this.vantaEffect.destroy()
  }
  render() {
    return <div ref={this.vantaRef}>
      Foreground content goes here
    </div>
  }
}

View fiddle →

Usage with React Hooks (requires React 16.8):

import React, { useState, useEffect, useRef } from 'react'
import BIRDS from 'vanta/dist/vanta.birds.min'
// Make sure window.THREE is defined, e.g. by including three.min.js in the document head using a <script> tag

const MyComponent = (props) => {
  const [vantaEffect, setVantaEffect] = useState(0)
  const myRef = useRef(null)
  useEffect(() => {
    if (!vantaEffect) {
      setVantaEffect(BIRDS({
        el: myRef.current
      }))
    }
    return () => {
      if (vantaEffect) vantaEffect.destroy()
    }
  }, [vantaEffect])
  return <div ref={myRef}>
    Foreground content goes here
  </div>
}

Usage with Vue 2 (SFC):

<template>
  <div ref='vantaRef'>
    Foreground content here
  </div>
</template>

<script>
import BIRDS from 'vanta/src/vanta.birds'
// Make sure window.THREE is defined, e.g. by including three.min.js in the document head using a <script> tag

export default {
  mounted() {
    this.vantaEffect = BIRDS({
      el: this.$refs.vantaRef
    })
  },
  beforeDestroy() {
    if (this.vantaEffect) {
      this.vantaEffect.destroy()
    }
  }
}
</script>

Using THREE or p5 from npm

For effects that use three.js, you can import three from npm, and pass it into the effect function.

import React from 'react'
import * as THREE from 'three'
import BIRDS from 'vanta/dist/vanta.birds.min'

...
  componentDidMount() {
    this.vantaEffect = BIRDS({
      el: this.vantaRef.current,
      THREE: THREE // use a custom THREE when initializing
    })
  }
...

For effects that use p5.js, you can import p5 from npm, and pass it into the effect function.

import React from 'react'
import p5 from 'p5'
import TRUNK from 'vanta/dist/vanta.trunk.min'

...
  componentDidMount() {
    this.vantaEffect = TRUNK({
      el: this.vantaRef.current,
      p5: p5 // use a custom p5 when initializing
    })
  }
...

Local dev:

Clone the repo, switch to the gallery branch, run npm install and npm run dev, and go to localhost:8080.

Credits

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].