vue-threejs

Three.js bindings for Vue

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
vue-threejs
0.2.0-alpha.15 years ago8 years agoMinified + gzip package size for vue-threejs in KB

Readme

vue-threejs
\WIP\] Three.jsthreejs bindings for Vuevue

Migrated from react-threejsreact-threejs
Demos: react-worldreact-world, vue-worldvue-world

import VueThreejs from 'vue-threejs'
Vue.use(VueThreejs)

<template>
  <renderer :size="{ w: 600, h: 400 }">
    <scene>
      <camera :position="{ z: 15 }"></camera>
      <mesh :obj="mesh" :position="{ y: -200 }"></mesh>
      <animation :fn="animate" :speed="3"></animation>
    </scene>
  </renderer>
</template>

Physics
<movement-system>
  <mass-object :rv0="{ x: 2, y: 2 }" :v0="{ x: 10 }"
      :f="{ x: -3, y: -2 }" :m="1">
    <cube texture="cobblestone" :size="1"></cube>
  </mass-object>
  <mass-object :rv0="{ x: 2, z: 2 }" :v0="{ z: 20 }"
      :f="{ y: -1, z: -8 }" :m="1.2">
    <cube texture="diamond" :size="1.2"></cube>
  </mass-object>
</movement-system>

<oimo-world :options="{ gravity: [0, -9.8, 0] }">
  <space-system :m-scale="10 ** 4">
    <space-object v-for="t in textures" :key="t">
      <oimo-body :options="{ move: true, density: 1 }">
        <cube :texture="t" :size="1"></cube>
      </oimo-body>
    </space-object>
  </space-system>
</oimo-world>

Roadmap
  • x Basic components
- x renderer/scene/camera/listener - x object3d/light/audio/controls/animation - x mesh/geometry/material/texture/obj-mtl
  • Watch for props change
- x position/rotation/obj - more
  • Animation
- x component/animate/speed/paused/blocked - global-control
  • Physical engine
- x movement(a/v/pos/ra/rv/rot)/mass(m/F) - x gravity(G/r)/collision/oimo - circular-motion/centripetal-force
  • Unit test
- x karma/mocha/phantom - avoriaz/ava
Study Notes
- cannot use <slot> as root element - lifecycle ready => mounted - template or render function not defined - avoid mutating a prop directly - this.$dispatch is not a function