Three.js & Vue.js Viewport Component for 3D App

Description:

This Vue.js component helps make it easier to use Three.js in your applications. The component creates its own camera and renderer (either perspective or orthographic), and uses a global Three.js scene in your Vuex store.

Basic usage:

// Libraries:
import Stats from "stats-js";
import Vue from "vue";
import Vuex from "vuex";
import * as Three from "three";

// Components:
import Frame from "./components/Frame.js";

// Data:
import Store from "./store";

let cube;

window.onload = function() {
  new Vue({
    el: "#v-wrapper",
    store: Store,
    data: function() {
      return {
        windowWidth: 0,
        windowHeight: 0
      };
    },
    render: h => h( Frame ),
    beforeMount() {
      window.addEventListener("resize", this.getWindowWidth );
      window.addEventListener("resize", this.getWindowHeight );
    },
    mounted: function() {
      this.$nextTick(function() {

        // Build the Three.js scene:
        let geometry = new Three.BoxGeometry( 1, 1, 1 );
        let material = new Three.MeshBasicMaterial({ color: 0x00ff00 });
        cube = new Three.Mesh( geometry, material );
        cube.name = "myCube";
        Store.state.scene.add( cube );

        setInterval( loop, 1000 / 60 );
      });
    },
    beforeDestroy() {
      window.removeEventListener("resize", this.getWindowWidth );
      window.removeEventListener("resize", this.getWindowHeight );
    },
    methods: {
      getWindowWidth: function( e ) {
        this.windowWidth = document.documentElement.clientWidth;
      },
      getWindowHeight: function( e ) {
        this.windowHeight = document.documentElement.clientHeight;
      }
    }
  });
};


// Deterministic loop:
function loop() {
  cube.rotation.z += 0.05;
}

Preview:

Three.js & Vue.js Viewport Component for 3D App

Download Details:

Author: ianpaschal

Live Demo: https://github.com/ianpaschal/three-vue-viewport/tree/master/example

Download Link: https://github.com/ianpaschal/three-vue-viewport/archive/master.zip

Official Website: https://github.com/ianpaschal/three-vue-viewport

Last Update: December 1, 2017

Views Total: 38

Install:

# NPM
$ npm install three-vue-viewport --save

Add Comment